Файл: Вычислительный эксперимент и методы вычислений.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.04.2021

Просмотров: 735

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

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


background image

причем

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


background image

В общем случае выпуклость кривой определяется знаком второй произ-
водной. Нашему случаю соответствует

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


background image

Следующее приближение – абсцисса точки пересечения касательной с
осью

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


background image

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