ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.04.2021
Просмотров: 735
Скачиваний: 1
2.
Численное решение нелинейных уравне-
ний
2.1.
Постановка задачи
Пусть задана функция
f
(
x
)
и нам надо найти корни уравнения
f
(
x
) = 0
.
(9)
Мы ограничимся поиском только действительный корней. Решение на-
шей задачи можно разделить на два этапа:
1 – локализация корней, т.е. нахождение на оси
x
таких отрезков,
каждому из которых принадлежит не более одного корня;
2 – вычисление с требуемой точностью корня или корней, которые
принадлежат найденным на первом этапе отрезкам.
Выполнение этапа 1 проводится средствами математического анали-
за. Из компьютерных методов можно использовать построение таблицы
значений функции, построение графика и т.д.
Задача 2 этапа – вычисление с заданной точностью
ε
корня уравнения,
принадлежащего отрезку
[
a, b
]
. Тое есть, найденное значение корня
x
должно отличаться от точного
x
(
т
)
не более чем на
ε
:
|
x
−
x
(
т
)
|
6
ε.
(10)
2.2.
Метод деления отрезка пополам
Метод деления отрезка пополам также называют методом бисекции.
В качестве начального приближения к корню уравнения принимаем се-
редину отрезка
[
a, b
]
:
x
0
=
a
+
b
2
.
(11)
Далее исследуем знак функции в точках
a
,
b
и
x
0
. Тот из отрезков, на
концах которого функция имеет разные знаки, принимаем в качестве
нового отрезка
[
a
1
, b
1
]
. С новым отрезком поступаем аналогично, находим
его середину, которое принимаем за второе приближение к корню:
˜
x
1
=
a
1
+
b
1
2
,
(12)
в результате
n
-е приближение имеет вид
˜
x
n
=
a
n
+
b
n
2
,
(13)
6
причем
b
n
−
a
n
=
b
−
a
2
n
.
(14)
Рис. 1. Метод бисекции
С учетом (10) получаем, что вычис-
ления надо продолжать до тех пор,
пока не будет выполнено условие
b
n
−
a
n
<
2
ε.
(15)
На рис. 1 показан метод деления
отрезка пополам. Отличительными
особенностями данного метода явля-
ются:
–
метод всегда сходится, и получен-
ный ответ всегда будет иметь любую
наперед заданную точность;
–
метод весьма медленный, необхо-
димое число итераций
N >
log
2
b
−
a
2
ε
.
2.3.
Метод хорд
Метод хорд состоит в том, что в качестве приближений к корню урав-
нения принимаются точки пересечения хорд с осью абсцисс. Пусть для
определенности
f
(
a
)
>
0
,
f
(
b
)
<
0
(см. рис. 2).
Рис. 2. Метод хорд
Запишем уравнение хорды AB:
y
−
f
(
a
)
f
(
b
)
−
f
(
a
)
=
x
−
a
b
−
a
(16)
Найдем точку ее пересечения с осью
x
→
x
=
x
0
,
y
= 0
:
x
0
=
a
−
b
−
a
f
(
b
)
−
f
(
a
)
f
(
a
)
(17)
На следующем шаге сравниваем знаки
f
(
a
)
,
f
(
x
0
)
и
f
(
b
)
, делаем вывод, что ко-
рень принадлежит отрезку
[
a, x
0
]
. Стро-
им хорду
AB
1
, находим ее точку пересе-
чения с осью
x
, т.е. следующее приближение
x
1
, и т.д. Условие прекраще-
ния итераций – условие близости двух последовательных приближений:
x
n
−
x
n
−
1
< ε.
(18)
7
В общем случае выпуклость кривой определяется знаком второй произ-
водной. Нашему случаю соответствует
f
00
(
x
)
>
0
на отрезке
[
a, b
]
. Если
f
00
(
x
)
<
0
, то мы можем свести этот случай к нашему, рассматривая
уравнение
−
f
(
x
) = 0
. Если, как было выбрано выше,
f
(
a
)
>
0
,
f
(
b
)
<
0
,
то при последовательных приближениях конец
a
остается неподвижным,
а «движется» конец
b
, т.е. получаем
x
n
+1
=
x
n
−
x
n
−
a
f
(
x
n
)
−
f
(
a
)
f
(
x
n
)
.
(19)
Если же
f
(
a
)
<
0
,
f
(
b
)
>
0
, то «двигаться» будет уже конец
a
, и мы
получаем
x
n
+1
=
x
n
−
b
−
x
n
f
(
b
)
−
f
(
x
n
)
f
(
x
n
)
.
(20)
Замечание.
Уравнение хорды AB может быть переписано в виде
y
−
f
(
b
)
f
(
a
)
−
f
(
b
)
=
b
−
x
b
−
a
.
(21)
Метод хорд как правило обеспечивает более быструю сходимость по
сравнению с методом деления отрезка пополам. Поэтому можно сочетать
оба метода: после нескольких шагов метода бисекций, когда корень уже
в достаточной степени локализован, переходить к методу хорд.
2.4.
Метод Ньютона
Рис. 3. Метод Ньютона
Метод Ньютона также называ-
ют методом касательных. Он отли-
чается от метода хорд тем, что вме-
сто хорды к кривой проводится ка-
сательная в точке, абсцисса которой
является полученным приближени-
ем корня на предыдущем шаге. На-
чинается решение с выбора некото-
рого нулевого приближения
x
0
(см.
рис. 3).
Уравнение касательной, прове-
денной к кривой в точке
M
1
с коор-
динатами
(
x
0
, f
(
x
0
))
записывается в виде:
y
=
f
0
(
x
0
)(
x
−
x
0
) +
f
(
x
0
)
.
(22)
8
Следующее приближение – абсцисса точки пересечения касательной с
осью
x
:
y
= 0
⇒
x
1
=
x
0
−
f
(
x
0
)
f
0
(
x
0
)
.
Формула для
n
-го приближения имеет вид:
x
n
=
x
n
−
1
−
f
(
x
n
−
1
)
f
0
(
x
n
−
1
)
,
n
= 1
,
2
, ...
Условие прекращения итераций
x
n
−
x
n
−
1
< ε.
(23)
Самым существенным отличием метода Ньютона от предыдущих яв-
ляется необходимость вычисления производной функции.
2.5.
Метод простой итерации
Перепишем наше уравнение в виде
x
=
ϕ
(
x
)
.
Если у нас есть началь-
ное приближение
x
0
, то следующее приближение находим как
x
1
=
ϕ
(
x
0
)
и т. д. Условие прекращения итераций – такое как и в предыдущем ме-
тоде.
2.6.
Задания для самостоятельной работы
Найти все корни уравнения (или три корня, если в уравнении корней
больше трех)
f
(
x
) = 0
c точностью
ε
= 10
−
5
:
а) методом деления отрезка пополам;
б) методом хорд;
в) методом Ньютона.
1.
f
(
x
) = e
2
x
sin
x
−
cos
x
2.
f
(
x
) =
x
3
−
sin
x
3.
f
(
x
) =
x
3
e
x
cos
x
4.
f
(
x
) =
x
2
sin
x
+ ln
x
5.
f
(
x
) = ln
x
−
x
2
+ 3
6.
f
(
x
) = 3
x
−
x
3
−
sin
x
7.
f
(
x
) =
x
2
sin
x
+ cos
x
2
8.
f
(
x
) = cos
x
3
+
x
2
sin
x
+ 20
9.
f
(
x
) =
x
2
cos
x
2
+ e
x
ln
x
10.
f
(
x
) =
x
3
ln
x
+ cos
x
−
2
9
2.7.
Примеры процедур в среде Maple
2.7.1.
Метод деления отрезка пополам
> restart;
> mdp:=proc(eps,a,b)
# eps — точность, с которой необходимо вычислить корни уравнений;
# a,b — границы отрезка, в котором находится один корень
local i,x0,l,r;
# i — переменная цикла
# x0 — приближение к точному решению
# l,r — концы отрезка
l:=a; r:=b;
for i from 1 while abs(r-l)>=(2*eps) do
# вычисление очередного приближения к корню
x0:=(r+l)/2;
# переопределение границ отрезка
if f(l)*f(x0)<0 then r:=x0;
elif f(r)*f(x0)<0 then l:=x0;
else break;
end if;
end do;
print(evalf(x0));
end proc;
# задаем функцию корни которой необходимо найти
> f:=x1-> sin(x1)*x1ˆ 2+ln(x1);
# построение графика функции, для графической локализации корня
> plot(f(x),x=0..10);
Рис. 4. График функции
f
(
x
) =
x
1
2
sin
x
1
+ ln
x
1
Проверим работу процедуры
> mdp(0.000001,9.0,10.0);
9.449930191
10