- •Пояснительная записка
- •Содержание
- •Введение
- •1 Решение нелинейных уравнений методом Ньютона
- •2 Разработка меню
- •3 Приложение
- •5 Заключение в результате выполнения данной курсовой работы на Visual Basic я разработал программу в которой вычисляются корни нелинейного уравнения
- •Список использованных источников
1 Решение нелинейных уравнений методом Ньютона
В методе Ньютона решается уравнение F(x)=0. На рис. 4.3
показана геометрическая интерпретация метода Ньютона для решения
нелинейных уравнений.
Рис. 4.3 Геометрическая интерпретация метода Ньютон
решения нелинейного уравнения F(x)=0
Алгоритм метода Ньютона для поиска корней уравнения F(x)=0 состоит
в следующем.
1. Выберем произвольную точку x0 на оси x и погрешность eps определения корня.
2. Проведем касательную к функции F(x) в точке (x0,F(x0)).
Определим точку, в которой касательная пересекает линию y=0.
Обозначим эту точку x1.
3. Вычислим значение функции F(x) в точке x1. Если |F(x1)|>eps
или |x0-x1|>eps, тогда в качестве новой точки x0 выберем x1 (т.е. x0=x1)
и перейдем к пункту 2. Если |F(x1)|<eps и |x0-x1|<eps - считаем ,
что корень найден с требуемой погрешностью eps и выходим из программы.
Уравнение касательной к функции F(x) в точке (x0,F(x0)) имеет вид
Решая уравнение y(x1)=0 получим
Блок-схема программы для решения нелинейного уравнения методом Ньютона
Figure 4. Блок- схема программы для решения нелинейного упавнения F(x)=0 методом Ньютона
Рис. 4.4 Блок- схема программы для решения нелинейного уравнения F(x)=0 методом Ньютона
2 Разработка меню
Я разрабатывал меню следующим образом : щелкнул правой кнопкой мыши на форму и выбрал Menu Editor . Заполнял Menu Editor так:
После закрытия Menu Editor появляется меню (выделено)
Когда кликаем левой кнопкой мыши на «Файл» поя
Когда кликаем левой кнопкой мыши на «Решение лин. ур-я» появляются 3-и команды «Вычисление корня», «График ур-я с касательными», «График точности» .Первая команда открывает форму ,где выполняются вычисления(П.3) . Вторая команда открывает форму, где выполняется графическая визуализация данного метода(П.4). Третья команда открывает форму ,где показана зависимость точности от числа касательных(П.5).
3 Приложение
П.1.Титульный лист .При нажатии кнопки «ОК» титульный лист закрывается и открывается Форма меню.
П.2. Форма меню. При нажатии кнопки «Вычислить корни» открывается форма ,где выполняются вычисления .В случае если необходимо выйти жмем на кнопку «Выход» или кликнем на «Фаил» ® «Выход».
П.3.Форма ,где выполняются вычисления . При нажатии кнопки «Вычислить» выполняются вычисления . При нажатии кнопки «График» открывается форма графической визуализации данного метода(П.4.). При нажатии кнопки «Точность» открывается форма ,где показана зависимость точности от числа касательных(П.5.).
П.4.График функции с тремя касательными .
П.5.График зависимости точности от числа касательных.
4 Коды
На форме 1
Private Sub Command1_Click()
Form2.Show
Form1.Hide
End Sub
На форме 2
Private Sub Command1_Click()
Load Form3
Form3.Show 1, Form2
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub mnuDiff_c_Click()
Load Form3
Form3.Show 1
End Sub
Private Sub mnuDiff_g_Click()
Load Form4
Form4.Show 1
End Sub
Private Sub mnuExit_Click()
End
End Sub
Private Sub mnuFileSave_Click()
Form6.Show 1
End Sub
Private Sub mnuInt_b_Click()
Load Form4
Form4.Show 1
End Sub
Private Sub mnuInt_g_Click()
Load Form5
Form5.Show 1
End Sub
На форме 3
Private Sub Command1_Click()
a = Val(Text1)
b = Val(Text2)
c = Val(Text3)
Picture1.Cls
Picture2.Cls
x0 = b
If (3 - 4 / x0) * (4 / x0 ^ 2) > 0 Then
X1 = x0 - (3 * x0 - 4 * Log(x0) - 5) / (3 - 4 / x0)
s = Abs(X1 - x0)
x0 = X1
Picture2.Print X1
End If
For Xk = a To b Step 0.1
If (3 * Xk - 4 * Log(Xk) - 5) * (3 - 4 / Xk) > 0 Then
Do While s > c
Xk1 = Xk - (3 * Xk - 4 * Log(Xk) - 5) / (3 - 4 / Xk)
s = Abs(Xk1 - Xk)
Xk = Xk1
y = (3 * Xk1 - 4 * Log(Xk1) - 5)
Loop
Picture1.Print Xk1, " ", y
End If
Next Xk
End Sub
Private Sub Command2_Click()
Load Form4
Form4.Show 1
End Sub
Private Sub Command4_Click()
Load Form5
Form5.Show 1
End Sub
На форме 4
Private Sub Form_Load()
Dim x As Byte
Picture1.Scale (-11, 1.1)-(11, -1.1)
MsgBox "Установите значения параметров и" _
& " щелкните в графическом окне", vbInformation, "Начало работы"
End Sub
Private Sub Picture1_Click()
For x = 1 To 10 Step 0.001
Picture1.PSet (x, 3 * x - 4 * Log(x) - 5), BackColor
Picture1.PSet (x, 1 - 4 * Log(2) + (x - 2)), BackColor
Picture1.PSet (x, 4 - 4 * Log(3) + (3 - 4 / 3) * (x - 3)), BackColor
Picture1.PSet (x, 7 - 4 * Log(4) + 2 * (x - 4)), BackColor
Next x
Picture1.DrawWidth = 2
Picture1.Line (-11, 0)-(11, 0)
Picture1.Line (0, 1.1)-(0, -1.1)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 2 'Пунктир
For x = -10 To 10 Step 1 'Вертикальные оси
Picture1.Line (x, -1)-(x, 1)
Next x
For x = 1 To -1.1 Step -0.1 'Горизонтальные оси
Picture1.Line (-10, x)-(10, x)
Next x
Picture1.DrawWidth = 1
For x = 0.001 To 10 Step 0.001
Picture1.PSet (x, (3 * x - 4 * Log(x) - 5) / 10), vbYellow
Picture1.PSet (x, (1 - 4 * Log(2) + (x - 2)) / 10), vbRed
Picture1.PSet (x, (4 - 4 * Log(3) + (3 - 4 / 3) * (x - 3)) / 10), vbRed
Picture1.PSet (x, (7 - 4 * Log(4) + 2 * (x - 4)) / 10), vbRed
Next x
End Sub
На форме 5
Private Sub Form_Load()
Dim x As Byte
Picture1.Scale (-11, 1.1)-(11, -1.1)
MsgBox "Установите значения параметров и" _
& " щелкните в графическом окне", vbInformation, "Начало работы"
End Sub
Private Sub Picture1_Click()
For x = 1 To 2 Step 0.001
Picture1.PSet (x, 1), BackColor
Next x
Picture1.DrawWidth = 2
Picture1.Line (-11, 0)-(11, 0)
Picture1.Line (0, 1.1)-(0, -1.1)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 1 'Пунктир
For x = -10 To 10 Step 1 'Вертикальные оси
Picture1.Line (x, -1)-(x, 1)
Next x
For x = 1 To -1.1 Step -0.1 'Горизонтальные оси
Picture1.Line (-10, x)-(10, x)
Next x
Picture1.DrawWidth = 4
For x = 1 To 2.6 Step 0.001
Picture1.PSet (x, 3 / 10), vbBlue
Next x
For y = 2.6 To 6 Step 0.001
Picture1.PSet (y, 1), BackColor
Next y
Picture1.DrawWidth = 1
Picture1.Line (-11, 0)-(11, 0)
Picture1.Line (0, 1.1)-(0, -1.1)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 1 'Пунктир
For y = -10 To 10 Step 1 'Вертикальные оси
Picture1.Line (y, -1)-(y, 1)
Next y
For y = 1 To -1.1 Step -0.1 'Горизонтальные оси
Picture1.Line (-10, y)-(10, y)
Next y
Picture1.DrawWidth = 4
For y = 2.6 To 6 Step 0.001
Picture1.PSet (y, 4 / 10), vbBlue
Next y
For z = 6 To 10 Step 0.001
Picture1.PSet (x, 1), BackColor
Next z
Picture1.DrawWidth = 2
Picture1.Line (-11, 0)-(11, 0)
Picture1.Line (0, 1.1)-(0, -1.1)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 1 'Пунктир
For z = -10 To 10 Step 1 'Вертикальные оси
Picture1.Line (x, -1)-(x, 1)
Next z
For z = 1 To -1.1 Step -0.1 'Горизонтальные оси
Picture1.Line (-10, x)-(10, x)
Next z
Picture1.DrawWidth = 4
For z = 6 To 10 Step 0.001
Picture1.PSet (z, 5 / 10), vbBlue
Next z
For q = 2.6 To 2.6 Step 0.001
Picture1.PSet (q, 1), BackColor
Next q
Picture1.DrawWidth = 2
Picture1.Line (-11, 0)-(11, 0)
Picture1.Line (0, 1.1)-(0, -1.1)
Picture1.DrawWidth = 1
Picture1.DrawStyle = 1 'Пунктир
For q = -10 To 10 Step 1 'Вертикальные оси
Picture1.Line (q, -1)-(q, 1)
Next q
For q = 1 To -1.1 Step -0.1 'Горизонтальные оси
Picture1.Line (-10, q)-(10, q)
Next q
Picture1.DrawWidth = 4
For q = 2.6 To 2.6 Step 0.001
Picture1.PSet (q, 3.3 / 10), vbBlue
Next q