Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Ітерації припиняють, коли задовольняється нерівність

(1.14)

Метод Ньютона гарантує збіжність тільки за таких умов:

1) на інтервалі пошуку кореня витримується (1.4), тобто функція y=y(x) монотонна;

2) на інтервалі пошуку кореня друга похідна не змінює знак:

, (1.15)

тобто функція y=y(x) не має точок перетину;

3) нульове наближення X0 вибране так, що

. (1.16)

На рис. 9 зображено блок-схему алгоритму визначення кореня рівняння (1.1) за методом Ньютона. Тут також уведено лічильник циклу, щоб забезпечитися на випадок зациклення, якщо не витримуються умови збіжності чи у програмі допущена помилка.

Метод Ньютона на відміну від двох попередніх вимагає обчислення на кожній ітерації не тільки функції y = y(x) – лівої частини рівняння (1), але і похідної . Ця похідна може обчислюватися за формулою, якщо функція диференціюється аналітично, або наближено чисельним методом.

 

 

Рис.9. Блок-схема методу Ньютона

 

При складанні програми для обчислення y(x) та можна задати підпрограми - функції.

 

Исходные данные:

 

а0 =1.25

а1 =0.07

а2 = 2.17

а3 =1.8

а4 =0.01

а5 =0.04

Ее =25 В

Re =10 Ом

 

 

Внешний вид экранной формы:

Внешний вид экранной формы состоит из четырех закладок, содержащих результаты расчетов.

 

Закладка «Общая часть»

 

 

 

Закладка «Метод простых итераций»

Закладка «Метод Ньютона»

Закладка «Сравнение результатов»

 

 

 

 

Назвние объекта Имя Название подпрограммы
  РГР Рожко Виталий UserForm1 -----
  Общая часть Page1 -----
  Метод половинного деления Page2 -----
  Метод Простых итераций Page3 -----
  Сравнение результатов Page4 -----
  Значение коэффициентов CommandButton1 Private Sub CommandButton1_Click()
  Расчет CommandButton2 Private Sub CommandButton2_Click()
  Очистка CommandButton3 Private Sub CommandButton3_Click()
  Выход CommandButton4 Private Sub CommandButton4_Click()
  Схема CommandButton5 Private Sub CommandButton5_Click()
  График CommandButton6 Private Sub CommandButton6_Click()
  Метод половинного деления OptionButton1 -----
  Метод Простых итераций OptionButton2 -----
  Результат: Frame1 -----
  Исходные данные: Frame2 -----
  Метод расчёта: Frame3 -----
  Половинного деления: Frame4 -----
  Ньютона: Frame5 -----
  Графический метод Frame6 -----
  Исходные лданные: Frame7 -----
  Погрешность: Frame8 -----
  Результат: Frame9 -----
  Значения: Frame10 -----
  a0 = Label 3 -----
  a1 = Label 4 -----
  a2 = Label 5 -----
  a3 = Label 6 -----
  a4 = Label 7 -----
  a5 = Label 8 -----
  Ee = Label 9 -----
  Re = Label 10 -----
  x0 = Label 18 -----
  jmax= Label 19 -----
  Eps = Label 20 -----
  C = Label 21 -----
  а = Label 12 -----
  b = Label 13 -----
  j = Label 16 -----
  Eps = Label 14 -----
  I = Label 15 -----
  U = Label 16  
  I = Label 30  
  U = Label 31  
  I = Label 24  
  U = Label 25 -----
  I = Label 26 -----
  U = Label 27 -----
  I = Label 28 -----
  U = Label 29 -----
  Поле ввода TextBox1 -----
  Поле ввода TextBox2 -----
  Поле ввода TextBox3 -----
  Поле ввода TextBox4 -----
  Поле ввода TextBox5 -----
  Поле ввода TextBox6 -----
  Поле ввода TextBox7 -----
  Поле ввода TextBox8 -----
  Поле ввода TextBox9 -----
  Поле ввода TextBox10 -----
  Поле ввода TextBox11 -----
  Поле ввода TextBox12 -----
  Поле ввода TextBox13 -----
  Поле ввода TextBox14 -----
  Поле ввода TextBox15 -----
  Поле ввода TextBox16 -----
  Поле ввода TextBox18 -----
  Поле ввода TextBox19 -----
  Поле ввода TextBox20 -----
  Поле ввода TextBox21 -----
  Поле ввода TextBox22 -----
  Поле ввода TextBox23 -----
  Картинка Image1 -----
  Картинка Image2 -----

Тексты всех подпрограмм:

Dim a0, a1, a2, a3, a4, a5 As Single

Dim a, b, c, Eps, I, U, Fa, Fb, Fc As Double

Dim x0, jmax As Integer

' Объявление функции

Private Function F(x)

F = a5 * x ^ 5 + a4 * x ^ 4 + a3 * x ^ 3 + a2 * x ^ 2 + a1 * x + a0

End Function

' Объявление производной

Private Function Fpr(x)

Fpr = 5 * a5 * x ^ 4 + 4 * a4 * x ^ 3 + 3 * a3 * x ^ 2 + 2 * a2 * x + a1

End Function

' Ввод

Private Sub CommandButton1_Click()

TextBox1.Value = "1.8"

TextBox2.Value = "0.07"

TextBox3.Value = "0.3"

TextBox4.Value = "0.08"

TextBox5.Value = "0.03"

TextBox6.Value = "0.02"

TextBox7.Value = "1.5"

TextBox8.Value = "1000"

TextBox9.Value = "0.001"

TextBox12.Value = "3"

TextBox13.Value = "0.001"

TextBox14.Value = "10000000"

TextBox35.Value = "0.01"

End SubEnd Sub

' Расчёт

Private Sub CommandButton2_Click()

a = Val(TextBox10.Value)

b = Val(TextBox9.Value)

c = Val(TextBox17.Value)

Eps = Val(TextBox11.Value)

a0 = Val(TextBox1.Value)

a1 = Val(TextBox2.Value)

a2 = Val(TextBox3.Value)

a3 = Val(TextBox4.Value)

a4 = Val(TextBox5.Value)

a5 = Val(TextBox6.Value)

Eps = Val(TextBox16.Value)

jmax = Val(TextBox15.Value)

x0 = Val(TextBox14.Value)

Ee = 25

Re = 10

 

' простые итерации

If OptionButton1.Value = True Then

x = x0

j = 0

xn = c * F(x) + x0

j = 0

j = j + 1

If j > jmax Then

MsgBox "Достигнуто максимальное количество итераций"

GoTo Z1

If Abs(xn - x0) < Epsi Then

x = xn

Else

Z1: xn = c * F(x) + x0

End If

End If

U = Ee - Re * x

TextBox10.Value = Str(x)

TextBox11.Value = Str(U)

TextBox17.Value = Str(x)

TextBox18.Value = Str(U)

MsgBox (xn)

MsgBox (U)

End If

 

' метод Ньютона

If OptionButton2.Value = True Then

x = x0

j = 0

xn = c * F(x) + x0

For j = 0 To jmax

If j > jmax Then

MsgBox "fgh"

Else

If Abs(xn - x0) < Eps Then

x = xn

TextBox18.Text = Str(x)

TextBox22.Text = Str(x)

Else

TextBox18.Text = xn

TextBox22.Text = xn

End If

End If

Next j

U = Ee - Re * x

TextBox19.Text = Str(U)

TextBox23.Text = Str(U)

End If

End Sub

' Очистка

Private Sub CommandButton3_Click()

TextBox1.Value = ""

TextBox2.Value = ""

TextBox3.Value = ""

TextBox4.Value = ""

TextBox5.Value = ""

TextBox6.Value = ""

TextBox7.Value = ""

TextBox8.Value = ""

TextBox9.Value = ""

TextBox10.Value = ""

TextBox11.Value = ""

TextBox12.Value = ""

TextBox13.Value = ""

TextBox14.Value = ""

TextBox15.Value = ""

TextBox16.Value = ""

TextBox17.Value = ""

TextBox18.Value = ""

TextBox19.Value = ""

TextBox20.Value = ""

TextBox21.Value = ""

TextBox22.Value = ""

TextBox23.Value = ""

TextBox24.Value = ""

TextBox25.Value = ""

End Sub

' Выход

Private Sub CommandButton4_Click()

UserForm1.Hide

End Sub

' Схема

Private Sub CommandButton5_Click()

Image1.Visible = True

Image2.Visible = False

End Sub

' График

Private Sub CommandButton6_Click()

Image2.Visible = True

Image1.Visible = False

TextBox24.Value = "1.5"

TextBox25.Value = "10"

End Sub

 

Результаты графического решения нелинейного уравнения в Microsoft Excel:

Вывод:

 

В расчётно-графической работе необходимо было рассчитать нелинейное уравнение тремя предложенными методами: метод половинного деления, метод простых итераций, графический метод. Выполнив расчёты по данным методам, оказалось, что самым легким и точным является графический метод решения.

 

 


Дата добавления: 2015-10-13; просмотров: 63 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Метод половинного деления| Внешняя скоростная характеристика двигателя.

mybiblioteka.su - 2015-2024 год. (0.023 сек.)