Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы математического моделирования в системе Maxima. Учебное пособие для студентов агроинженерного факультета по направлению 35.03.06 - «Агроинженер.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
805 Кб
Скачать

44 3. Элементы вычислительной математики

стью = 106.

Сравнивая полученные результаты отметим, что из приведённых примеров формула парабол даёт наилучший по точности результат. Для достижения заданной погрешности аппроксимации при использовании формулы парабол (3.11) в приведённом примере шаг узлов

сокращается до значения 3 = ( 1 )3 = 1 , которое достигается всего за

2 8

три итерации. Однако, с точки зрения трудоёмкости, аппроксимация

параболами требует вычисления почти вдвое большего числа значений подынтегральной функции.

3.4. Численное решение задачи Коши

Дифференциальное уравнение называется обыкновенным, если оно связывает независимую переменную , искомую функцию и её производные , ′′, . . . , ( ) до -го порядка включительно:

( , , , ′′, . . . , ( )) = 0,

(3.12)

где порядок старшей производной ( ) соответствует порядку дифференциального уравнения.

Общим решением обыкновенного дифференциального уравнения называется явная функция

= ( , 1, 2, . . . , ),

(3.13)

связывающая независимую переменную и постоянных интегрирования 1, 2, . . . , и обращающая уравнение (3.12) в тождество. Определение постоянных интегрирования 1, 2, . . . , с помощью

системы начальных условий:

0 = ( 0, 1, 2, . . . , ),

 

=

(

 

 

 

 

 

 

 

 

 

 

0

,

1

,

2

, . . . ,

 

),

 

0

 

 

 

 

 

(3.14)

 

. . . =

. . . ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0( 1) = ( 1)( 0, 1, 2, . . . , ),

 

приводит к получению частного решения обыкновенного дифференциального уравнения:

= 0( ),

(3.15)

Совокупность обыкновенного дифференциального уравнения (3.12) и начальных условий (3.14) образует задачу Коши.

3.4. Численное решение задачи Коши

45

3.4.1. Метод Эйлера

Запишем задачу Коши для обыкновенного дифференциального уравнения первого порядка в виде:

= ( , ),

[ , ],

( ) = .

(3.16)

Для численного решения задачи (3.16) в области определения[ , ] искомой функции 3.15 введём сетку = 0 < 1 < . . . < < = . Для простоты будем считать сетку равномерной, а шаг

сетки = 1 –– постоянной величиной = .

В основе рассматриваемых численных методов лежит замена исходного дифференциального уравнения его дискретным конечно-раз- ностным аналогом. Для построения конечно-разностного уравнения разложим искомую функцию в окрестности узла сетки в ряд Тейлора по степеням :

 

 

=

 

+

+

2

′′

+ . . .

(3.17)

 

1

2!

 

 

1

 

1

 

 

Сохранив в (3.17) первые два слагаемых и подставив вместо производной известную из (3.16) функцию = ( , ) получим основную формулу метода Эйлера (формулу ломаных)

= 1 + · ( 1, 1) или 1 = ( 1, 1). (3.18)

Последнее выражение формально соответствует заданному дифференциальному уравнению, производная из левой части которого заменена своим конечно-разностным аналогом. Поскольку для вычисления значения сеточной функции в текущей точке в формуле (3.18) используется лишь одно её значение в предшествующей точ-

ке 1, то конечно-разностный метод Эйлера относится к семейству

явных одношаговых методов

.

Пример 3.8. Решить задачу Коши для обыкновенного дифферен-

циального уравнения

= − с начальным условием (0) = 1 ,

используя метод Эйлера на отрезке [0, 8

2

] для равномерных се-

 

 

 

5

 

ток с шагами 1 = 2 , 2

= 1

и 3 =

1

, и сопоставить полученные

 

5

5

 

10

 

 

аппроксимации с точным решением.

 

 

 

 

Для решения поставленной задачи в листинге 3.8 : (%i1)–(%o5) задаются границы интервала «a:0», «b:1.6» и начальное значение

46

3. Элементы вычислительной математики

функции «ya:0.5». Затем определяются вектор значения шага сетки «h:[0.4,0.2,0.1]» и функция, соответствующая значениям первой производной в заданных точках «f(x,y)». Далее в 3.8 : (%i6)– (%o7) задаются формулы для нахождения абсцисс «x[i,j]» и ординат «y[i,j]» сеточной функции в зависимости от номера узла «i» и шага сетки «j». После применения начальных условий в 3.8 : (%i8)–(%o11) генерируются списки координат сеточных функций, соответствующих каждому из значений шага сетки «dots1», «dots2» и «dots3». Для сопоставления качества построенных аппроксимаций в 3.8 : (%i14)–(%o15) находится точное решение исходной задачи Коши в символьном виде.

Листинг 3.8 Решение задачи Коши методом Эйлера

(%i1)

a:0$ b:1.6$ ya:0.5$

 

h:[0.4,0.2,0.1]$

 

f(x,y):=y-x;

(%o5)

( , ) :=

(%i6)

x[i,j]:=a+h[j]*i;

 

y[i,j]:=y[i-1,j]+h[j]*f(x[i-1,j],y[i-1,j]);

(%o6)

, := +

(%o7)

, := 1, + ( 1, , 1, )

(%i8)

y[0,1]:ya$ y[0,2]:ya$ y[0,3]:ya$

 

dots1:makelist([x[i,1],y[i,1]],i,0,(b-a)/h[1]);

 

dots2:makelist([x[i,2],y[i,2]],i,0,(b-a)/h[2])$

 

dots3:makelist([x[i,3],y[i,3]],i,0,(b-a)/h[3])$

(%o11)

[[0, 0.5],[0.4, 0.7],[0.8, 0.82],[1.2, 0.828],[1.6, 0.6792]]

(%i14)

ode2(’diff(y,x)=f(x,y),y,x);

 

ic1(%,x=a,y=ya);

(%o14) = (% (− − 1)% )%

rat: replaced -0.5 by -1/2 = -0.5

(%o15) = % 22 2

На рис.3.6 показана аппроксимация решения задачи Коши лома-

ными Эйлера на отрезке [0, 8

] на регулярных сетках при 1 = 2 ,

 

5

 

5

2 = 1

и 3 =

1

. Чёрная утолщённая линия соответствует графи-

 

5

10

 

 

+ + 1, красные сплошные

ку точного частного решения =

 

 

 

 

2

 

3.4. Численное решение задачи Коши

47

линии –– аппроксимирующим ломаным, а красные символы «» различного размера –– узлам сеточной функции ( , ) на сетках с различным шагом .

Рис. 3.6. Аппроксимация решения задачи Коши ломаными Эйлера на

отрезке [0,

8 ]

с шагами сеток

1 = 2

,

2 = 1

и

3 = 1

5

5

5

 

10

Нетрудно заметить, что решение поставленной задачи Коши по методу Эйлера даёт лишь одностороннее приближение и порождает систематическую ошибку при аппроксимации решения сеточной функцией. Из рис.3.6 видно, что уменьшение шага сетки в два и в четыре раза приводит к аналогичному сокращению погрешности, что говорит о первом порядке точности ( ) метода Эйлера.

Для улучшения аппроксимации решения задачи Коши можно использовать конечно-разностные методы второго порядка точности, например, методы типа предиктор-корректор.

3.4.2. Метод Эйлера–Коши

Разностная схема типа предиктор-корректор, построенная на основе явного метода Эйлера, получила название метода Эйлера–Коши и основана на формуле:

= 1 + ·

(

1,

1) + ( , )

,

(3.19)

 

 

2

48 3. Элементы вычислительной математики

где второе слагаемое в правой части содержит полусумму значений функции ( , ) в предшествующей ( 1) и искомой точках. Поскольку искомое значение в точке ( 1) не известно, то в общем случае это приводит к появлению на каждом шаге нелинейного уравнения вида = ( 1, , 1, ), для решения которого в разностной схеме Эйлера–Коши используется описанный в разделе 3.2.3 метод простой итерации.

В результате схема Эйлера–Коши разбивается на две стадии. На стадии предиктора оценка искомого значения вычисляется по явно-

му методу Эйлера * =

1 + · (

1,

1). На стадии корректора

 

 

 

 

 

 

 

 

 

 

полученная оценка *

подставляется в правую часть (3.19) и нахо-

 

 

 

 

 

 

 

 

 

 

 

 

 

дится искомое значение . В результате получается формула явного

двухшагового метода Эйлера–Коши:

 

 

 

=

1 +

·

( 1, 1) + ( , 1

+ · ( 1, 1))

. (3.20)

 

 

 

 

 

 

 

2

 

 

 

Пример 3.9. Решить задачу Коши для обыкновенного дифферен-

циального уравнения = с начальным условием (0) = 1 , ис-

пользуя метод Эйлера–Коши на отрезке [0, 8

2

] для равномерных

 

 

 

5

 

сеток с шагами 1 = 2

, 2 = 1

и 3 =

1

, и сопоставить полученные

10

5

5

 

 

 

аппроксимации с точным решением.

 

 

 

Для решения поставленной задачи в листинге 3.9 : (%i1)–(%o5) задаются границы интервала «a:0», «b:1.6» и начальное значение функции «ya:0.5». Затем определяются вектор значения шага сетки «h:[0.4,0.2,0.1]» и функция, соответствующая значениям первой производной в заданных точках «f(x,y)». Далее в 3.9 : (%i6)– (%o8) задаются формулы для нахождения абсцисс «x[i,j]» и ординат «y[i,j]», «z[i,j]» сеточных функций в зависимости от номера узла «i» и шага сетки «j». После применения начальных условий в 3.9 : (%i9)–(%o15) генерируются списки координат сеточных функций, соответствующих значениям шага сетки «dots1», «dots2» и «dots3». Для контроля качества построенных аппроксимаций в 3.9 : (%i18)–(%o19) находится точное решение исходной задачи Коши в символьном виде.

Листинг 3.9 Решение задачи Коши методом Эйлера–Коши

(%i1) a:0$ b:1.6$ ya:0.5$

h:[0.4,0.2,0.1]$

f(x,y):=y-x;

 

3.4. Численное решение задачи Коши

49

(%o5)

( , ) :=

 

 

 

 

 

 

(%i6)

x[i,j]:=a+h[j]*i;

 

 

 

 

 

 

 

y[i,j]:=y[i-1,j]+h[j]*f(x[i-1,j],y[i-1,j]);

 

 

z[i,j]:=z[i-1,j]+h[j]*(f(x[i-1,j],z[i-1,j])+

 

 

 

 

 

f(x[i,j],y[i,j]))/2;

 

(%o6)

, := +

 

 

 

 

 

 

 

(%o7)

, := 1, + ( 1, , 1, )

 

(%o8)

, := 1, +

( (

1, ,

1, ) + ( , , , ))

 

 

 

2

 

 

 

 

 

 

 

 

 

 

(%i9)

y[0,1]:ya$ y[0,2]:ya$ y[0,3]:ya$

 

z[0,1]:ya$ z[0,2]:ya$ z[0,3]:ya$

dots1:makelist([x[i,1],z[i,1]],i,0,(b-a)/h[1]);

dots2:makelist([x[i,2],z[i,2]],i,0,(b-a)/h[2])$

dots3:makelist([x[i,3],z[i,3]],i,0,(b-a)/h[3])$

(%o15) [[0,0.5],[0.4,0.66],[0.8,0.716],[1.2,0.6248],[1.6,0.3256]] (%i18) ode2(’diff(y,x)=f(x,y),y,x);

ic1(%,x=a,y=ya);

(%o18) = (% (− − 1)% )%

rat: replaced -0.5 by -1/2 = -0.5

(%o19) = % 22 2

На рис.3.7 показана аппроксимация решения задачи Коши лома-

ными Эйлера–Коши на отрезке [0, 8

] на регулярных сетках при

 

 

 

5

 

1

= 2

, 2 = 1

и 3 =

1

. Чёрная утолщённая линия соответствует

 

 

5

5

10

 

 

графику точного частного решения = + + 1, красные сплош-

2

ные линии –– аппроксимирующим ломаным, а красные символы «»

различного размера –– узлам сеточной функции ( , ) на сетках с различным шагом .

Сопоставление решений поставленной задачи Коши методами Эйлера и Эйлера–Коши на рис. 3.6 и 3.7 наглядно демонстрирует, что переход к методам второго порядке точности ( 2) обеспечивает существенно меньшую ошибку аппроксимации при одних и тех же значениях шага сетки.

Для дальнейшего улучшения аппроксимации решения задачи Коши можно использовать конечно-разностные методы более высоких порядков точности, например, методы Рунге–Кутты.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]