Корни находятся в два этапа: первый – отделение корней, т.е. нахождение отрезка [a, b], содержащего один корень уравнения; второй
– уточнение значения корней на найденных отрезках с заданной точ-
ностью . |
|
Если функция F(x) |
непрерывна и принимает на концах отрезка |
[a, b] разные знаки, т.е. |
F(a)* F(b) 0 и сохраняет на этом отрезке |
знак первой производной, то внутри этого отрезка находится один корень уравнения. Отделение корней можно осуществить различными способами.
1.Составляют таблицу значений функции y F(x) на выбранном отрезке изменения аргумента. Для отделения корня необходимо, чтобы на концах выделенного отрезка функция имела разные знаки и была монотонна. В качестве признака монотонности функции можно воспользоваться условием знакопостоянства первой производной. От заданной функции F(x) найдем F (x) и вычислим ее
значения на концах отрезка [a, b], если F (a)*F (b) 0, функция F(x) монотонна.
2.Строят график функции y F(x) на отрезке изменения x; точка пересечения графика с осью ox даст нам корень уравнения. Для последующего уточнения корня возьмем окрестности корня и обозначим их [a, b].
3.Уравнение F(x) 0 заменяют равносильным ему F1(x) F2(x), строят два графика y1 F1(x) и y2 F2 (x). Абсцисса точки пересечения этих графиков, спроецированная на ось x, даст нам отрезок [a, b], внутри которого находится корень уравнения F(x) 0.
2.Методы решения нелинейных уравнений
2.1.Метод деления пополам (метод бисекций)
Задача. Найти решение нелинейного уравнения F(x) 0 с точностью .
Метод состоит в следующем: в результате отделения корня найден отрезок [a, b], в котором расположено искомое значение корня. В качестве начального приближения корня возьмем значение co=(b+a)/2. Далее исследуем значения F(x) на концах отрезков [a, co] и [co, b]. Тот из них, на концах которого F(x) примет значения разных знаков, содержит искомый корень. Поэтому его принимают в качестве нового
21
отрезка (см. полученный знаков. F(a)
рис. 1, здесь корень находится на отрезке [co, b]). Затем отрезок делим пополам и вновь производим проверку
0, F(b) 0, F(c0 ) 0.
Рис. 1
Теперь корень находим на отрезке [c0, c1]. Затем находим
с2 с0 с1 и т.д. Итерационный процесс продолжается до тех пор,
2
пока F(x) не станет меньше заданного числа : F(сn) . Рабочая формула для нахождения корня имеет вид
сi 1 сi сi 1 .
2
Число итераций в этом методе зависит от предварительно задаваемой точности и длины отрезка [a, b] и не зависит от вида функции
F(x).
Метод медленный, всегда сходится, можно получить решение с заданной точностью, широко применяется на практике [5].
Блок-схема алгоритма метода половинного деления представлена на рис. 2, где [a, b] – отрезок, в котором находится корень уравнения; с – корень уравнения; n – число итераций; F(x) - значение функции в соответствующей точке.
2.2. Метод хорд
Задача. Отыскать корень уравнения F(x) 0 с точностью . Пусть имеем отрезок [a0, b0], на концах которого F(x) меняет свой знак, где F(x) - монотонная функция. Пусть F(a0 ) 0, F(b0 ) 0.
На рис. 3 задача отыскания корня методом хорд представлена графически. Любая точка отрезка [a0, b0] может быть первым приближе-
22
нием корня. Соединим точки А и В прямой, т.е. проведем хорду. Таким образом, получим b1, которое является приближением корня.
Воспользуемся уравнением пучка прямых, проходящих через точ-
ку B(b0, F(b0)).
y–y0=k(x–x0), y–F(b0)=k(x–b0).
Хорда должна проходить через точку A(a0, F(a0)), т.е.
k F(a0) F(b0) . a0 b0
Запишем уравнение прямой
y F(b0 ) F(a0 ) F(b0 )(x b0 ). a0 b0
Начало
Ввод a, b, i = 0, ε
Вычисле-
ниеF(a)
i = i +1
с a b
2
|
F(c) |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
b = c |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
Нет |
|
|||||
|
|
|
|
|
|
|
|
||||||
|
F(c) |
|
|
|
|
F(c)*F(a) 0 |
|
||||||
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
Да |
|
|
|
|
|
|
Да |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывод c, i |
|
|
|
а = c |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Конец
Рис. 2
23
Рис. 3
Проведенная прямая пересекает ось ох
y F(b0) |
|
x b0 |
|||||
|
|
|
|
|
|
. |
|
F(a |
0 |
) F(b ) |
a |
0 |
b |
||
|
0 |
|
|
0 |
|
||
Найдем х при у=0
x b |
F(b0)(a0 b0) |
, |
x b b |
F(b0)(a0 b0) |
. |
||||
|
|
||||||||
0 |
F(a |
0 |
) F(b ) |
1 0 |
F(a |
0 |
) F(b ) |
||
|
|
0 |
|
|
|
0 |
|
||
Далее, сравнивая знаки F(b1) и F(b0), найдем новый отрезок [b1, a0]. Соединим новой хордой точки А и В1, таким образом найдем новое приближение корня. Итерационный процесс продолжается до тех пор, пока F(bi) не станет по модулю меньше числа : F(bi ) . При решении этим методом потерять корень невозможно.
Рабочая формула метода хорд:
b |
b |
|
F(bi)(a0 bi) |
или b |
b |
b |
, |
||
|
|||||||||
i 1 |
i |
|
F(a |
0 |
) F(b ) |
i 1 |
i |
i |
|
|
|
|
|
i |
|
|
|
|
|
где b – начало отрезка, а – конец ( точка а неподвижна). Неподвижен тот конец, для которого знак функции F(x) совпадает
со знаком ее второй производной F (x).
Блок–схема алгоритма метода хорд представлена на рис. 4, где [a, b] – отрезок, в котором находится корень уравнения; b – корень уравнения; n – число итераций; F(bi) – значения функции в соответствующей точке.
2.3. Метод Ньютона (метод касательных)
Как и ранее, находим |
корень F(x) 0. Имеем точность |
и |
отрезок [a, b], в котором |
находится изолированный корень. В |
|
|
24 |
|
качестве начального приближения принимается тот конец отрезка [a, b], для которого выполняется условие F(x)F (x) 0. Обратимся к рис. 5, на котором представлено графическое решение задачи. Из точки А0 проведена касательная к функции. Точка пересечения касательной с осью ох является первым приближением корня, на рис. 5 она обозначена как а1. Затем из точки а1 проводим прямую, перпендикулярно оси ох. Точку пересечения этой прямой с функцией обозначим через А1 и т.д.
Начало
Ввод b,
i = 0
|
|
|
|
bi 1 bi bi |
|
i = i+1 |
|
|
|
Да |
|
|
|
||
F(bi)
Нет
Вывод b, i
Конец
Рис. 4
Запишем уравнение прямой, касательной к F(x):
y-y0=k(x-x0), |
y=0 |
, |
F(a0) |
|
|
где k F (a0), |
x a0 |
|
, |
||
|
|||||
|
|
|
F (a0) |
||
|
25 |
|
|
|
|