- •Основы математического моделирования
- •Содержательные математические модели
- •Классификация содержательных моделей
- •Формальные математические модели
- •Законы сохранения
- •Вариационные принципы
- •Элементы теории размерностей
- •Контрольные вопросы
- •Основы работы с системой Maxima
- •Установка и запуск системы Maxima
- •Графический интерфейс wxMaxima
- •Справочная информация в wxMaxima
- •Сохранение данных и управление wxMaxima
- •Система компьютерной математики Maxima
- •Основные возможности системы Maxima
- •Скалярные выражения
- •Векторные и матричные выражения
- •Функции и управляющие структуры
- •Контрольные вопросы
- •Элементы вычислительной математики
- •Основы теории погрешностей
- •Абсолютная и относительная погрешности
- •Погрешности основных операций
- •Численное решение нелинейных уравнений
- •Локализация корней уравнения
- •Метод бисекции
- •Метод простой итерации
- •Метод касательных
- •Методы численного интегрирования
- •Метод прямоугольников
- •Метод трапеций
- •Метод парабол
- •Численное решение задачи Коши
- •Метод Эйлера
- •Метод Эйлера–Коши
- •Методы Рунге–Кутты
- •Контрольные вопросы
- •Моделирование в приложениях
- •Падение тела с учётом сопротивления воздуха
- •Колебания маятника с учётом силы трения
- •Полёт тела с учётом сопротивления воздуха
- •Листинги программ
32 |
3. Элементы вычислительной математики |
print("Приближенное решение x[", n, "]=",
round((a+b)/2/en)*en)$
Приближенное решение [11] = −0.2169
Начальные определения: «f(x)»––функция, соответствующая правой части уравнения (3.1); «e» –– допустимая погрешность определения корня уравнения (3.1); «a», «b» –– начальные значения абсцисс граничных точек отрезка локализации ¯ [ , ].
После инициализации переменных в цикле «for...while» запускается итерационный процесс бисекции. Условием выхода из цикла является снижение погрешности текущего приближения корня до
уровня − 6 .
2
По завершении вычислений на экран выводится искомое приближение корня нелинейного уравнения 11 = −0,2169 с предельной абсолютной погрешностью = 0,0001.
3.2.3. Метод простой итерации
При использовании метода простой итерации исходное уравнение (3.1) преобразуется к виду
= ( ), |
(3.2) |
где ( ) называется итерационной функцией. В таком случае итерационный процесс строится по формуле
+1 |
= ( ), |
для = 1,2, . . . , . |
(3.3) |
В качестве критерия остановки процесса простой итерации может быть использована апостериорная оценка погрешности в виде
| − |
− |
1 |
| < 1− · , |
где = |
max | ′( )|. |
(3.4) |
|
|
|
|
[ , ] |
|
|
|
|
|
|
|
Метод простой итерации сходится в области локализации со скоростью геометрической прогрессии со знаменателем < 1. Это означает,
что при < 1 метод простой итерации будет сходится быстрее, а при
2
> 1 –– медленнее метода бисекции.
2
Пример 3.3. Используя ранее полученные результаты локализации найти с помощью метода простой итерации отрицательный корень
нелинейного уравнения 1 |
− ( − 1 )3 = −3 2 с погрешностью, не пре- |
|
вышающей = 10−4. |
2 |
2 |
3.2. Численное решение нелинейных уравнений |
33 |
Для использования метода простой итерации приведём исходное
уравнение к виду (3.2) = 1 |
+( 1 |
− −3 2 ) 31 , а затем построим графики |
2 |
2 |
|
левой и правой частей полученного уравнения.
Рис. 3.2. Графики левой и правой частей уравнения = |
|
|
|
|
2 |
|
1 |
|
|
1 |
+ ( 1 |
− |
3 |
|
) 3 |
|
|||
2 |
2 |
|
|
= 0 |
|||||
(красные основные линии) и левой части уравнения |
1 −( − 1 )3 − 3 2 |
||||||||
2 |
|
2 |
|
|
|
|
|
|
|
(чёрная утолщённая линия)
С учётом монотонности итерационной функции ( ) на отрезке локализации [ , ] для оценки достаточно выбрать наибольшее
из значений = max | ′( )|.
={ , }
Листинг 3.3. Поиск корня методом простой итерации
(%i1) y(x):=1/2-(x-1/2)^3-exp(-3*x^2)$ f(x):=1/2+(1/2-exp(-3*x^2))^(1/3)$ p(x):=(2*x*exp(-3*x^2))/(1/2-exp(-3*x^2))^(2/3)$
(%i4) plot2d([x,f(x),y(x)], [x,-1/2,3/2], [y,-1/2,5/2])$
(%i5) a:-1/4$ b:0$ n:0$ en:1.E-4$ x0:(a+b)/2$ x1:float(f(x0))$ q:float(lmax(abs([p(a),p(b)])));
(%o11) 0.86972822962442
(%i12) if q>=1 then error("Сходимость отсутствует.") else
34 |
3. Элементы вычислительной математики |
for i:1 while abs(x1-x0)*q/(1-q) > en do (
x0:x1, n:i, x1:float(f(x0)))$
print("Приближенное решение x[", n, "]=",
round(x1/en)*en)$
Приближенное решение [30] = −0.2169
Начальные определения: «f(x)» –– итерационная функция, соответствующая правой части уравнения (3.2); «p(x)» –– первая производная итерационной функции; «q» –– оценка наибольшего значения модуля производной для правой части уравнения (3.2) на отрезке локализации [ , ]; «en» –– допустимая погрешность определения корня уравнения (3.2).
Далее выполняется инициализация переменных и проверяется наличие сходимости к решению, а при значении > 1 процесс завершается. Затем в цикле «for...while» запускается итерационный процесс, где «x0», «x1»–– предшествующее и текущее приближения −1,искомого корня уравнения; «n»–– счётчик выполненных итераций.
Условие остановки итераций состоит в достижении апостериорной оценкой погрешности текущего приближения заданного допусти-
мого уровня | − |
− |
1| · |
|
|
> . |
1− |
|||||
По завершении вычислений на экран выводится искомое прибли-
жение корня нелинейного уравнения 30 = −0.2169 с предельной абсолютной погрешностью = 0,0001.
Сравнение с предыдущим примером показывает, что в данном случае метод простой итерации примерно в 2,7 раза меньшую скорость сходимости по сравнению с методом бисекции. Это связано с тем, что скорость сходимости в методе простой итерации сильно зависит от максимального значения первой производной итерационной функции на отрезке локализации, которая в данном случае существенно
превышает одну вторую ≈ 0,87 > 1 .
2
3.2.4. Метод касательных
Метод касательных (метод Ньютона) относится к одним из наиболее эффективных методов решения нелинейных уравнений вида (3.1). С графической точки зрения метод Ньютона базируется на построении итераций путём решения задачи о пересечении с осью абсцисс
= 0 касательной к графику функции ( ) в точке ( , ( ))
= ( ) + ′( )( − ).
3.2. Численное решение нелинейных уравнений |
35 |
Принимая за новое приближение искомого корня (3.1) абсциссу указанной точки пересечения ( +1, 0) нетрудно получить итерационную формулу метода касательных
( ) |
|
+1 = − ′( ) . |
(3.5) |
При выборе начального приближения 0 из области сходимости корня ¯ уравнения (3.1) для метода Ньютона будет верна апостериорная оценка погрешности | − ¯| 6 | − −1|, дающая простой критерий окончания итераций
| − −1| < . |
(3.6) |
Пример 3.4. Используя ранее полученные результаты локализации найти с помощью метода касательных отрицательный корень нели-
нейного уравнения 1 |
− ( − 1 )3 = −3 2 с погрешностью, не превыша- |
|
ющей = 10−4. |
2 |
2 |
|
|
|
Для применения метода Ньютона найдём первую производную функции ( ), соответствующей заданной правой части уравнения
(3.1): ′( ) = −3( − 1 )2 + 6 −3 2 .
2
Листинг 3.4. Поиск корня методом касательных
(%i1) f(x):=1/2-(x-1/2)^3-exp(-3*x^2)$
p(x):=6*x*exp(-3*x^2)-3*(x-1/2)^2$
w(x):=x-f(x)/p(x)$
(%i4) a:-1/4$ b:0$ n:0$ en:1.E-4$
x0:(a+b)/2$ x1:float(w(x0))$
(%i10) for i:1 while abs(x1-x0) > en do (
x0:x1, n:i, x1:float(w(x0)))$
print("Приближенное решение x[", n, "]=",
round(x1/en)*en)$
Приближенное решение [3] = −0.2169
Начальные определения: «f(x)», «p(x)» –– функция ( ), соответствующая правой части уравнения (3.1) и её первая производная ′( ); «w(x)»–– итерационная функция метода касательных (3.5); «a,b» –– границы отрезка локализации корня ¯ [ , ]; «en» –– допустимая погрешность определения корня ¯ уравнения (3.1).
