![]() |
|
|
Реферат: НАХОЖДЕНИЕ ВСЕХ ДЕЙСТВИТЕЛЬНЫХ КОРНЕЙ АЛГЕБРАИЧЕСКОГО МНОГОЧЛЕНА МЕТОДОМ ДЕЛЕНИЯ ОТРЕЗКА ПОПОЛАМ (БИСЕКЦИИ) И МЕТОДОМ ХОРД И КАСАТЕЛЬНЫХ С УКАЗАННОЙ ТОЧНОСТЬЮ И УЧЕТОМ ВОЗМОЖНОЙ КРАТНОСТИ КОРНЕЙ6. ПРИЛОЖЕНИЯ 6.1. Пример алгебраического многочлена и нахождения его корней Многочлен F(x) = 3x2+5x-8 График представлен на рис. 6.1
Найденные корни x = -2,66666669921875 метод
Найденные корни x = -2,66667654214111 метод x= 0,99981915025 хорд и касательных
рис. 6.1 6.2. Блок-схема алгоритма половинного деления A = левая граница В = правая граница C – середина F(x) - функция
6.3. Блок-схема алгоритма поиска корней методом хорд и касательных A = левая граница В = правая граница F(x) - функция
6.4 Руководство пользователя. После запуска программы перед Вами появится Главное меню, включающее в себя следующие пиктограммы:
Ввод коэффициентов осуществляется следующим образом: в появившемся окне имеются 2 поля – одно для указания степени, другое для ввода собственно коэффициента. Если Вы уже вводили некоторую функцию, то для ее удаления нажмите кнопку “очистить”, для запоминания коэффициента нажмите “Ок”, для завершеня ввода – “завершить”. Поиск корней упрощен до предела. Вам достаточно указать неоюходимую точность и выбрать метод поиска: бисекционый или комбинированный. 6.5. Исходный текст программы UNIT1 Dim curcell As Range Dim ma As Double Dim Ao As Double Public Function F(x As Variant) F = (x ^ 20 * Range("a20").Value) + (x ^ 19 * Range("a19").Value) + (x ^ 18 * Range("a18").Value) + (x ^ 17 * Range("a17").Value) + (x ^ 16 * Range("a16").Value) + (x ^ 15 * Range("a15").Value) + (x ^ 14 * Range("a14").Value) + (x ^ 13 * Range("a13").Value) + (x ^ 12 * Range("a12").Value) + (x ^ 11 * Range("a11").Value) + (x ^ 10 * Range("a10").Value) + (x ^ 9 * Range("a9").Value) + (x ^ 8 * Range("a8").Value) + (x ^ 7 * Range("a7").Value) + (x ^ 6 * Range("a6").Value) + (x ^ 5 * Range("a5").Value) + (x ^ 4 * Range("a4").Value) + (x ^ 3 * Range("a3").Value) + (x ^ 2 * Range("a2").Value) + (x * Range("a1").Value) + Range("a21").Value End Function Public Function F1(x As Variant) F1 = (x ^ 20 * Range("j20").Value) + (x ^ 19 * Range("j19").Value) + (x ^ 18 * Range("j18").Value) + (x ^ 17 * Range("j17").Value) + (x ^ 16 * Range("j16").Value) + (x ^ 15 * Range("j15").Value) + (x ^ 14 * Range("j14").Value) + (x ^ 13 * Range("j13").Value) + (x ^ 12 * Range("j12").Value) + (x ^ 11 * Range("j11").Value) + (x ^ 10 * Range("j10").Value) + (x ^ 9 * Range("j9").Value) + (x ^ 8 * Range("j8").Value) + (x ^ 7 * Range("j7").Value) + (x ^ 6 * Range("j6").Value) + (x ^ 5 * Range("j5").Value) + (x ^ 4 * Range("j4").Value) + (x ^ 3 * Range("j3").Value) + (x ^ 2 * Range("j2").Value) + (x * Range("j1").Value) + Range("j21").Value End Function Public Function F2(x As Variant) F2 = (x ^ 20 * Range("m20").Value) + (x ^ 19 * Range("m19").Value) + (x ^ 18 * Range("m18").Value) + (x ^ 17 * Range("m17").Value) + (x ^ 16 * Range("m16").Value) + (x ^ 15 * Range("m15").Value) + (x ^ 14 * Range("m14").Value) + (x ^ 13 * Range("m13").Value) + (x ^ 12 * Range("m12").Value) + (x ^ 11 * Range("m11").Value) + (x ^ 10 * Range("m10").Value) + (x ^ 9 * Range("m9").Value) + (x ^ 8 * Range("m8").Value) + (x ^ 7 * Range("m7").Value) + (x ^ 6 * Range("m6").Value) + (x ^ 5 * Range("m5").Value) + (x ^ 4 * Range("m4").Value) + (x ^ 3 * Range("m3").Value) + (x ^ 2 * Range("m2").Value) + (x * Range("m1").Value) + Range("m21").Value End Function Public Sub Gra() Sheets("Лист1").Select Range("e1").Select For i = -10 To 10 ActiveCell.Value = F(i) ActiveCell.Cells(2).Select Next i End Sub Public Function DetectBorders() ' Функция определения границ действительных корней ma = 0 For Each curcell In Range("Koeffs") If curcell.Value > ma Then ma = curcell.Value If curcell.Value <> 0 Then Ao = curcell.Value Next curcell DetectBorders = 1 + (ma * Ao) End Function UNIT2 Sub auto_open() Sheets("Лист1").Select Form_Main.Show End Sub FORM_ABOUT Private Sub CommandButton1_Click() Form_About.Hide End Sub FORM_KOEFF Private Sub CommandButton1_Click() ko = TextBox1.Value st = TextBox2.Value Select Case st Case 0 Range("A21").Value = ko Case 1 Range("A1") = ko Case 2 Range("A2") = ko Case 3 Range("A3") = ko Case 4 Range("A4") = ko Case 5 Range("A5") = ko Case 6 Range("A6") = ko Case 7 Range("A7") = ko Case 8 Range("A8") = ko Case 9 Range("A9") = ko Case 10 Range("A10") = ko Case 11 Range("A11") = ko Case 12 Range("A12") = ko Case 13 Range("A13") = ko Case 14 Range("A14") = ko Case 15 Range("A15") = ko Case 16 Range("A16") = ko Case 17 Range("A17") = ko Case 18 Range("A18") = ko Case 19 Range("A19") = ko Case 20 Range("A20") = ko Case Else MsgBox ("Выход за пределы допустимых значений") st = st - 1 End Select TextBox1.Value = 0 TextBox2.Value = st + 1 End Sub Private Sub CommandButton2_Click() Form_Koeff.Hide End Sub Private Sub CommandButton3_Click() Range("a1").Value = 0 Range("a2").Value = 0 Range("a3").Value = 0 Range("a4").Value = 0 Range("a5").Value = 0 Range("a6").Value = 0 Range("a7").Value = 0 Range("a8").Value = 0 Range("a9").Value = 0 Range("a10").Value = 0 Range("a11").Value = 0 Range("a12").Value = 0 Range("a13").Value = 0 Range("a14").Value = 0 Range("a15").Value = 0 Range("a16").Value = 0 Range("a17").Value = 0 Range("a18").Value = 0 Range("a19").Value = 0 Range("a20").Value = 0 Range("a21").Value = 0 End Sub Private Sub UserForm_initialize() st = 0 ko = 0 TextBox1.Value = ko TextBox2.Value = st End Sub FORM_KORNI Private Sub CommandButton1_Click() ListBox1.Clear TextBox1.Value = 0 Form_Korni.Hide End Sub Private Sub CommandButton2_Click() Range("Toc").Value = TextBox1.Value Call FindKor 'Call Perenos End Sub Sub FindKor() Range("Curright") = Range("Right").Value Range("Curleft") = -Range("Right").Value - 0.333 'Range("right").Value = DetectBorders Range("Stepleft").Value = Range("right").Value * (-1) - 0.333 Do nashli = False Call MoveLe If Sgn(F(Range("curleft").Value)) = Sgn(F(Range("curright").Value)) Then End If If Sgn(F(Range("curleft").Value)) <> Sgn(F(Range("curright").Value)) Then Do ' nashli = True Range("Curcenter").Value = ((Range("curleft").Value) + (Range("curright").Value)) / 2 If Abs(F(Range("Curcenter").Value)) > Range("toc").Value Then If Sgn(F(Range("curleft").Value)) <> Sgn(F(Range("curcenter").Value)) Then Range("curright").Value = Range("curcenter").Value Else: Range("curleft").Value = Range("curcenter").Value If Abs(F(Range("Curcenter").Value)) <= Range("toc").Value Then ListBox1.AddItem (Range("Curcenter").Value) Range("Koren").Value = Range("Curcenter").Value Loop Until Abs(F(Range("Curcenter").Value)) <= Range("toc").Value
End If Loop Until Range("Stepleft").Value > Range("right").Value Or nashli = True End Sub Sub Horda_Kas() 'Sub FindKor() Range("Curright") = Range("Right").Value Range("Curleft") = -Range("Right").Value - 0.333 'Range("right").Value = DetectBorders Range("Stepleft").Value = Range("right").Value * (-1) - 0.333 Do MoveLe If Sgn(F(Range("curleft").Value)) <> Sgn(F(Range("curright").Value)) Then Do ' nashli = True If F1(Range("curleft").Value) * F2(Range("curleft").Value) > 0 Then Range("curleft").Value = Range("curleft").Value - ((Range("curright").Value - Range("curleft").Value) * (F(Range("Curleft").Value) / (F(Range("Curright").Value - F(Range("Curleft").Value))))) Range("Curright").Value = Range("curright").Value - F(Range("curright").Value) / F1(Range("curright").Value) End If
If F1(Range("curleft").Value) * F2(Range("curleft").Value) < 0 Then Range("curright").Value = Range("curleft").Value - ((Range("curright").Value - Range("curleft").Value) * (F(Range("Curleft").Value) / (F(Range("Curright").Value - F(Range("Curleft").Value))))) Range("Curleft").Value = Range("curright").Value - F(Range("curright").Value) / F1(Range("curright").Value) End If
If Abs(Abs(F(Range("Curright").Value))) - Abs(F(Range("Curleft").Value)) <= Range("toc").Value Then 'MsgBox (Range("curleft").Value) ListBox1.AddItem (Range("Curright").Value) 'If ((Range("Curleft").Value) + (Range("Curright").Value)) > 0 Then ListBox1.AddItem (((Range("Curleft").Value) + (Range("Curright").Value)) / 2) 'If ((Range("Curleft").Value) + (Range("Curright").Value)) < 0 Then ListBox1.AddItem (((Range("Curleft").Value) + (Range("Curright").Value)) / 2) Range("Koren").Value = Range("Curleft").Value End If
Loop Until Abs(F(Range("Curright").Value)) - Abs(F(Range("Curleft").Value)) <= Range("toc").Value
End If Loop Until Range("Stepleft").Value > Range("right").Value Or nashli = True End Sub Sub MoveLe() Range("stepleft").Value = Range("stepleft").Value + 0.333 Range("curLeft").Value = Range("stepleft").Value Range("Curright").Value = Range("Curleft").Value + 0.333 Range("Curcenter").Value = ((Range("curleft").Value) + (Range("curright").Value)) / 2 End Sub Private Sub CommandButton3_Click() Horda_Kas End Sub Private Sub UserForm_Deactivate() ListBox1.Clear TextBox1.Value = 0 End Sub Sub Perenos() Range("a1").Value = Range("L1").Value Range("a2").Value = Range("L2").Value Range("a3").Value = Range("L3").Value Range("a4").Value = Range("L4").Value Range("a5").Value = Range("L5").Value Range("a6").Value = Range("L6").Value Range("a7").Value = Range("L7").Value Range("a8").Value = Range("L8").Value Range("a9").Value = Range("L9").Value Range("a10").Value = Range("L10").Value Range("a11").Value = Range("L11").Value Range("a12").Value = Range("L12").Value Range("a13").Value = Range("L13").Value Range("a14").Value = Range("L14").Value Range("a15").Value = Range("L15").Value Range("a16").Value = Range("L16").Value Range("a17").Value = Range("L17").Value Range("a18").Value = Range("L18").Value Range("a19").Value = Range("L19").Value End Sub FORM_MAIN Private Sub CommandButton1_Click() Form_Koeff.Show End Sub Private Sub CommandButton2_Click() Form_Mnogo.Show End Sub Private Sub CommandButton3_Click() Gra Form_Main.Height = 84 Sheets("D1").Select Form_WP.Show Form_Main.Height = 360 Sheets("Лист1").Select End Sub Private Sub CommandButton4_Click() Form_Korni.Show End Sub Private Sub CommandButton5_Click() Application.Quit End Sub Private Sub CommandButton7_Click() Form_About.Show End Sub Private Sub CommandButton8_Click() ActiveWorkbook.Save End Sub Private Sub UserForm_initialize() Sheets("Лист1").Select Form_Main.Height = 360 End Sub FORM_MNOGO Dim mn As String Private Sub CommandButton1_Click() Form_Mnogo.Hide End Sub Private Sub UserForm_activate() mn = "F(x)=" If Range("a20") > 0 Then mn = mn + Range("a20").Text + "X^20" If Range("a20") < 0 Then mn = mn + Range("a20").Text + "X^20" If Range("a19") > 0 Then mn = mn + " + " + Range("a19").Text + "X^19" If Range("a19") < 0 Then mn = mn + Range("a19").Text + "X^19" If Range("a18") > 0 Then mn = mn + " + " + Range("a18").Text + "X^18" If Range("a18") < 0 Then mn = mn + Range("a18").Text + "X^18" If Range("a17") > 0 Then mn = mn + " + " + Range("a17").Text + "X^17" If Range("a17") < 0 Then mn = mn + Range("a17").Text + "X^17" If Range("a16") > 0 Then mn = mn + " + " + Range("a16").Text + "X^16" If Range("a16") < 0 Then mn = mn + Range("a16").Text + "X^16" If Range("a15") > 0 Then mn = mn + " + " + Range("a15").Text + "X^15" If Range("a15") < 0 Then mn = mn + Range("a15").Text + "X^15" If Range("a14") > 0 Then mn = mn + " + " + Range("a14").Text + "X^14" If Range("a14") < 0 Then mn = mn + Range("a14").Text + "X^14" If Range("a13") > 0 Then mn = mn + " + " + Range("a13").Text + "X^13" If Range("a13") < 0 Then mn = mn + Range("a13").Text + "X^13" If Range("a12") > 0 Then mn = mn + " + " + Range("a12").Text + "X^12" If Range("a12") < 0 Then mn = mn + Range("a12").Text + "X^12" If Range("a11") > 0 Then mn = mn + " + " + Range("a11").Text + "X^11" If Range("a11") < 0 Then mn = mn + Range("a11").Text + "X^11" If Range("a10") > 0 Then mn = mn + " + " + Range("a10").Text + "X^10" If Range("a10") < 0 Then mn = mn + Range("a10").Text + "X^10" If Range("a9") > 0 Then mn = mn + " + " + Range("a9").Text + "X^9" If Range("a9") < 0 Then mn = mn + Range("a9").Text + "X^9" If Range("a8") > 0 Then mn = mn + " + " + Range("a8").Text + "X^8" If Range("a8") < 0 Then mn = mn + Range("a8").Text + "X^8" If Range("a7") > 0 Then mn = mn + " + " + Range("a7").Text + "X^7" If Range("a7") < 0 Then mn = mn + Range("a7").Text + "X^7" If Range("a6") > 0 Then mn = mn + " + " + Range("a6").Text + "X^6" If Range("a6") < 0 Then mn = mn + Range("a6").Text + "X^6" If Range("a5") > 0 Then mn = mn + " + " + Range("a5").Text + "X^5" If Range("a5") < 0 Then mn = mn + Range("a5").Text + "X^5" If Range("a4") > 0 Then mn = mn + " + " + Range("a4").Text + "X^4" If Range("a4") < 0 Then mn = mn + Range("a4").Text + "X^4" If Range("a3") > 0 Then mn = mn + " + " + Range("a3").Text + "X^3" If Range("a3") < 0 Then mn = mn + Range("a3").Text + "X^3" If Range("a2") > 0 Then mn = mn + " + " + Range("a2").Text + "X^2" If Range("a2") < 0 Then mn = mn + Range("a2").Text + "X^2" If Range("a1") > 0 Then mn = mn + " + " + Range("a1").Text + "X" If Range("a1") < 0 Then mn = mn + Range("a8").Text + "X" If Range("a21") > 0 Then mn = mn + " + " + Range("a21").Text If Range("a21") < 0 Then mn = mn + Range("a21").Text TextBox1.Value = mn End Sub FORM_WP Private Sub Label1_Click() Call Gra End Sub Private Sub CommandButton1_Click() Sheets("D1").Print End Sub Private Sub CommandButton2_Click() Form_WP.Hide Call Gra End Sub Private Sub UserForm_Click() Form_WP.Hide End Sub ____________________________ VoID InVaSiON HG © VI Function 2.0 beta[1] Этот факт был доказан известными математиками Абелеи и Галуа. |
Страницы: 1, 2
![]() |
||
НОВОСТИ | ![]() |
![]() |
||
ВХОД | ![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |