
- •Лабораторная работа
- •"Решение нелинейных уравнений"
- •Постановка задачи нахождения корней нелинейных уравнений
- •Общий подход к решению нелинейных уравнений
- •Методы уточнения корней
- •Метод дихотомии
- •Текст функции VBA, реализующей алгоритм метода дихотомии.
- •Метод хорд
- •Метод простых итераций
- •Метод Ньютона (метод касательных)
- •VBA реализация метода Ньютона
- •Список рекомендуемой литературы

Для завершения вычислительного процесса выделяем ячейки 26-й строки от А26 до Н26 и протягиваем вниз по строкам до достижения решения.
На рис. 9 показан фрагмент таблицы и некоторые формулы, записываемые в её ячейки.
Рис. 9.
На рис. 10 показана полная таблица решения уравнения методом дихотомии. В строке 34 этой таблицы приведены результаты решения, полученные после применения функции, в которой метод дихотомии реализован на языке Visual Basic. Текст этой функции приведён ниже.
Рис. 10. Результаты уточнения корня методом дихотомии
Текст функции VBA, реализующей алгоритм метода дихотомии.
Function Dixotomia(a As Double, b As Double, delta As Double, alfa As Double, beta As Double)
Dim i As Integer ' i - счётчик числа итераций
Dim c As Double
If Fsin(alfa, beta, a) * Fsin(alfa, beta, b) > 0 Then MsgBox ("Интервал [a, b] выбран неправильно") Exit Function
End If i = 0 Do
c = (a + b) / 2
If Fsin(alfa, beta, a) * Fsin(alfa, beta, c) < 0 Then b = c Else a = c i = i + 1
Loop Until Abs(b - a) < delta
9

Dixotomia = (a + b) / 2
End Function
Метод хорд
Метод хорд [5] так же, как и метод дихотомии, предназначен для уточнения корня на интервале, определённом при проведении процедуры отделения корней. На концах этого интервала [a, b] исследуемая функция имеет значения F(a) и F(b) с разными знаками. Очередное приближение, определяемое в методе хорд, находится в точке пересечения оси абсцисс прямой, соединяющей точки F(a) и F(b).
Рис. 11. Диаграмма алгоритма метода хорд
Координата этой точки определяется из уравнения прямой, соединяющей точки F(a) и F(b). Определив уравнение прямой как функцию
Y(X) = kX+D,
координата точки пересечения прямой с осью абсцисс определяется из решения системы уравнений
F(a)=ka+D,
F(b)=kb+D.
Решая эту систему, определим значения параметров k и D
k = |
F(b) −F(a) |
, D = F(a) −ka |
|
b −a |
|||
|
|
При условии Y(c)= kc+D=0 определяем значение с:
|
b −a |
|
|
b −a |
|
(7) |
|
с = a − F (b) −F (a) F(a) |
или c =b − |
F (b) −F(a) F(b) |
|||||
|
Блок-схема алгоритма метода хорд приведена на рис. 12.
Результаты применения метода хорд для уточнения значения корня в выделенном интервале [2,00; 2,25] приведены на рис. 13 Решение получено после выполнения трёх итераций.
10

|
|
|
|
|
Function Horda(a,b,δ) |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ввод |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
параметров |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a, b,δ |
|
|
|
||
|
|
|
|
|
|
22 |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
Fa=F(a) |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fb=F(b) |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
да |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
FaFb>0? |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b −a |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
с = a − |
|
|
|
|
|
|
F(a) |
|
||||||||||
|
|
|
|
|
F(b) −F(a) |
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fc = F (c) |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
нет |
|
|
|
6 |
|
|
FaFc>0? |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
7 |
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
b:=c |
|
|
|
|
|
|
|
|
a:=c |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
Fb:=Fc |
|
|
|
|
|
|
|
|
|
|
|
|
|
Fa:=Fc |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9
| b-a | > δ
нет
10 Horda:=c
11
вывод с,F(с),dx
конец
4
Ошибка !
Exit
Рис. 12. Блок-схема алгоритма метода хорд
Ниже приводится текст функции VBA, реализующей алгоритм метода хорд.
11

Public Function Horda(a As Double, b As Double, delta As Double, alfa As Double, beta As Double)
Dim С As Double, Fa As Double, Fb As Double, Fс As Double Fa = Fsin(alfa, beta, a)
Fb = Fsin(alfa, beta, b) If Fa * Fb > 0 Then
MsgBox ("Интервал [a, b] выбран неправильно") Exit Function
End If Do
С = a - (b - a) / (Fb - Fa) * Fa Fс = Fsin(alfa, beta, С)
If Fс * Fa > 0 Then b = С: Fb = Fс Else a = С: Fa = Fс Loop Until Abs(b - a) < delta
Horda = С End Function
Рис. 13. Результаты применения метода хорд для уточнения корня функции
F(x)=5*sin(x+α)-β*x2
Метод простых итераций
Витерационных методах, которые иначе называют методами последовательных приближений, многократно повторяется - "итерируется" (от латинского "итерацио" - повторение) некоторый единообразный вычислительный процесс. В результате каждой итерации получаются всё более точные приближения к искомому решению.
Вобщем виде итерационная формула определяется приведением уравнения
(1) к равносильной форме
Х=φ(X). |
(8) |
После записи уравнения (1) в виде (8) определяется начальное значение Х0 - "нулевое приближение". Последующие приближения вычисляются по формулам Х1=φ(X0), Х2=φ(X1),…, или в общем виде
Хi+1 =φ(Xi ). |
(9) |
Возможны два варианта поведения итерационного процесса.
В первом случае итерационный процесс сходится, последовательные приближения Хi стремятся к некоторому конечному пределу, который и является решением уравнения (1). Во втором варианте процесс расходится, конечного предела приближений не существует. Из расходимости процесса
12