Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы (пособие).pdf
Скачиваний:
84
Добавлен:
16.05.2015
Размер:
965.85 Кб
Скачать

43

2.Повторение понятия точного и приближенного сеточного решения задачи Коши, схем Эйлера и Рунге-Кутта 4-го порядка как для одного уравнения, так и для системы уравнений.

3.Повторение многошаговых методов Адамса.

4.Повторение метода пристрелки и разностного метода решения краевых задач.

5.Решение примеров.

6.Консультирование студентов по выполнению домашней

работы.

Рассматриваемые примеры:

1. Составить алгоритм для вычисления приближённого решения задачи Коши

u′ = f ( x,u), x [a;b], u(a) =u

методом Рунге-Кутта четвертого порядка точности (число отрезков разбиения N считается заданным). Записать его на алгоритмическом языке.

Решение:

Исходными данными для алгоритма являются: N, a, b, u , а также функция f (x , u). Результаты: un - приближенные значения u( xn ) . Здесь xn = a + hn , h = (b a) N , n = 0,1, , N .

Вычислительная схема метода Рунге-Кутта 4-го порядка точности записывается в виде

 

 

 

 

 

 

 

u0 =

u

,

 

 

 

 

 

 

éK1 = f ( xn ,un ) ,

 

 

 

 

 

 

 

 

 

 

ê

= f ( xn

+ h 2, un + hK1 2) ,

 

 

 

 

êK2

 

 

 

 

êK3 = f ( xn + h 2 , un + hK2 2) ,

 

 

 

 

ê

= f ( xn

+ h , un + hK3 ) ,

 

 

 

 

ëK4

u

n+1

= u

n

+ h [K + 2K

2

+ 2K

3

+ K

4

], n = 0,1, , N −1.

 

 

6

1

 

 

 

 

Поскольку значение N может быть достаточно велико и заранее не известно, в алгоритме мы не будем использовать табличные переменные xn , un . Для текущих расчетов мы введем простые переменные x и u, а результаты будем записывать в файл вывода в следующей последовательности:

x0 u0

x1 u1

………

xN uN

44

Кроме того, мы используем в качестве результата в заголовке алгоритма величину z = uN . Нам это понадобится в дальнейшем при записи алгоритма повторного счета в примере 3. Для записи в файл значения любой величины p мы введем команду запись (p), а для перевода строки – команду перевод.

Запишем теперь алгоритм вычисления приближенного решения задачи Коши.

алг Метод Рунге-Кутта для 1 уравнения и с заданным шагом (арг вещ a, b, u , цел N, рез вещ z)

нач вещ x, u, h, K1, K 2 , K3 , K 4 ; цел n x:=a; u:= u ; h := (b a) N ;

запись(x); запись(u); перевод | Запись в файл вывода x0 , u0 нц для n от 0 до N-1 | Начало цикла метода Рунге-Кутта.

K1 := f ( x ,u)

| K1 := f ( xn ,un )

x := x +h 2

| x := xn + h 2

K2 := f ( x, u + hK12) |K2 := f ( xn + h2, un + hK12)

K3 := f ( x , u + hK2 2) | K3 := f ( xn + h2 , un + hK2 2)

x := x +h 2

|

x := xn + h 2 + h 2 = xn + h = xn+1

K4 := f ( x , u + hK3 )

|

K4 := f ( xn + h, un + hK3 )

u := u + h6 [K1 + 2K2 + 2K3 + K4 ]

запись(x); запись(u) | Запись в файл вывода xn+1, un+1 перевод | Переменные x и u здесь уже приняли значения,

| необходимые для выполнения следующего | шага цикла.

кц | Конец цикла метода Рунге-Кутта. z := u

кон

2. Составить алгоритм для вычисления приближённого решения задачи Коши

u′ = f ( x,u), x [a;b], u(a) =u

методом Рунге-Кутта четвертого порядка точности с погрешностью, не превышающей заданного положительного числа ε (число отрезков разбиения N вычисляется методом повторного счета). Записать его на алгоритмическом языке.

Решение:

Исходными данными для алгоритма являются: ε , a, b, u , а

N :=1
45

также функция

f (x , u). Результаты: un

− приближенные значения

u( xn ) . Здесь

xn = a + hn , h = (b a) N ,

n = 0,1, , N . Значение N

вычисляется методом повторного счета.

 

Метод повторного счета представляет собой цикл, в котором вычисляются приближенные сеточные решения задачи Коши. На каждом шаге этого цикла величина N увеличивается в два раза. Для записи приближенных решений мы будем использовать один и тот же файл вывода. При этом каждый раз мы будем решение записывать с начала файла. Таким образом, каждое новое приближенное решение будет автоматически стирать в файле решение старое (новое приближенное решение вдвое длиннее старого). Когда заданная точность будет достигнута и цикл повторного счета свою работу закончит, в файле будет записано последнее приближенное решение, имеющее заданную точность.

При реализации метода повторного счета мы будем использовать алгоритм из примера 1.

Введем в алгоритмический язык цикл с постусловием, аналогичный циклу repeat в языке Паскаль:

нц повторять

Команды, повторяемые в цикле кц пока не Условие окончания цикла

Запишем теперь алгоритм вычисления приближенного решения задачи Коши.

алг Метод Рунге-Кутта для 1 уравнения с автоматическим выбором шага (арг вещ a, b, u , ε )

нач вещ z1, z2 ; цел n, N

| Задание начального значения параметра N

Метод Рунге-Кутта для 1 уравнения и с заданным шагом (a,

b, u , N, z2 )

нц повторять | Начало цикла метода повторного счета z1 := z2 ; | Передача значения z2 с предыдущего шага

| цикла или начального значения. N := 2N ; | Удвоение значения параметра N.

Метод Рунге-Кутта для 1 уравнения и с заданным шагом (a, b, u , N, z2 )

кц пока не z2 z1 ≤ ε | Конец цикла метода

15

| повторного счета

кон

46

3. Составить алгоритм для вычисления приближённого решения задачи Коши для системы дифференциальных уравнений:

ìu1

= f1( x,u1 ,u2 , ,um ) ,

ï

=

f2 ( x,u1 ,u2

, ,um ),

ïu2¢

í

 

 

x [a ,b];

ï...............

 

ï ¢

 

fm ( x,u1 ,u2 , ,um ),

îum =

ìu1(a) = u1 ,

ïïu2 (a) = u2 ,

í...............

ï

ïîum (a) = um

методом Рунге-Кутта четвертого порядка точности (число отрезков разбиения N считается заданным). Записать его на алгоритмическом языке.

Решение:

Исходными данными для алгоритма являются: N, m, a, b, u1 , u2 , … , um , а также функции f1( x ,u1 ,u2 , ,um ) , f2 ( x ,u1 ,u2 , ,um ) , … , fm ( x ,u1 ,u2 , ,um ) . Результаты: un p - приближенные значения u p ( xn ) . Здесь xn = a + hn , h = (b a) N , n = 0,1, , N , p =1,2, , m .

Вычислительная схема метода Рунге-Кутта 4 порядка точности в координатах записывается в виде:

u0 p = u p , p =1,2, , m

47

ìéK1 p = f p (xn ,un1,un 2 , ,un m ),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïê

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïê p = 1,2, , m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 ),

ïêK

2 p

= f

p

(x

n

+ h 2, u

n1

+ hK

11

2 , u

n 2

+ hK

12

2 , ,u

n m

+ hK

1m

ïê

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïê p = 1,2, , m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïê

K

 

= f

 

(x

 

+ h 2, u

 

+ hK

 

2 , u

 

+ hK

 

2 , ,u

 

+ hK

 

2 ),

ï

3 p

p

n

n1

21

n 2

22

n m

2m

íê

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïê p = 1,2, , m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

),

 

 

 

ïêK

4 p

= f

p

(x

n

+ h , u

n1

+ hK

31

 

, u

n 2

+ hK

32

, , u

n m

+ hK

3m

 

 

 

ïê

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ê

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïë p = 1,2, , m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ï

 

 

 

 

 

 

+ h [K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

], p = 1,2, , m

 

 

 

ïu

n+1 p

= u

n p

1 p

+ 2K

2 p

+ 2K

3 p

+ K

4 p

 

 

 

ï

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

î

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n =0 ,1, , N −1.

Так же, как и в алгоритме из первого примера, мы не будем использовать табличные переменные xn , un p . Для текущих расчетов мы введем простую переменную x и одномерный массив u p , а результаты будем записывать в файл вывода в следующей последовательности:

x0

u01 u0 2 u0 m

x1

u11 u12 u1m

………

xN

uN 1 u N 2 u N m

Кроме того, в качестве дополнительного результата в заголовке алгоритма используем массив z [1:m], такой, что z[ p] =uN p, , p =1, 2, , m . Это может понадобиться в дальнейшем при записи алгоритма повторного счета.

Для записи в файл значения любой величины p мы введем команду запись (p), а для перевода строки – команду перевод.

Значения u p мы будем брать из файла ввода. Они должны быть записаны в файл ввода до начала исполнения алгоритма в следующей последовательности:

u 1 u 2 u m .

Для чтения очередного значения из файла ввода и присвоения

его переменной p мы введем команду чтение (p).

 

 

 

Чтобы

описать

множество

функций

fk ( x ,u1 ,u2 , ,um )

k =1,2, m c

(m +1) аргументом,

мы введем

функцию

трех

аргументов:

f (k, x,u) ,

где u = ( u1 ,u2 , ,um )

массив

с m

K1[1: m],

48

компонентами.

Запишем теперь алгоритм вычисления приближенного решения задачи Коши.

алг Метод Рунге-Кутта для m уравнений и с заданным шагом (арг вещ a, b, цел m, цел N, рез вещ таб z[1: m])

нач вещ x, h, вещ таб u[1: m], v[1: m],

K2 [1: m], K3 [1: m], K4 [1: m]; цел n, p x:=a; h := (b a) N ;

нц для p от 1 до m

чтение(u[ p]) ; | Чтение из файла ввода начальных

| данных: u[ p] := u0 p =

u

p ,

p =1,2, , m

кц

 

 

 

 

запись(x); перевод | Запись в файл вывода x0

нц для p от 1 до m

 

 

 

 

запись(u[ p]) | Запись в файл вывода

u01 u0 2 u0 m

кц

 

 

 

 

перевод

 

 

 

 

нц для n от 0 до N-1

| Начало цикла метода Рунге-Кутта

нц для p от 1 до m

 

 

 

 

K1[ p] := f ( p, x ,u) | K1 p := f p (xn ,un1, un 2 , , un m )

кц

| x := xn + h 2

 

x := x +h 2

 

нц для p от 1 до m

 

 

 

 

v[ p] := u[ p] + h × K1[ p] / 2

|

v1 = un1 + hK11 2 , ,vm = un m +hK1m 2

кц

 

нц для p от 1 до m

K 2[ p] := f ( p, x , v)

| K2 p = f p (xn +h2, un1 + hK11 2 , ,un m + hK1m 2)

кц

нц для p от 1 до m

v[ p] :=u[ p] +hK 2[ p] / 2

| v1 = un1 + hK21 2 , , vm = un m + hK2m 2

кц

нц для p от 1 до m

K 3[ p] := f ( p, x , v)

| K3 p = f p (xn +h2, un1 + hK21 2 , ,un m + hK2 m 2)

кц

x := x +h2 | x := xn + h2 + h2 = xn + h = xn+1

49

нц для p от 1 до m

v[ p] :=u[ p] +hK 3[ p]

| v1 =un1 +hK31, , vm = un m +hK3m

кц

нц для p от 1 до m

K 4[ p] := f ( p, x , v)

| K4 p = f p (xn + h, un1 + hK31, ,un m + hK3m )

кц

запись(x); перевод | Запись в файл вывода xn+1

нц для p от 1 до m

u[ p] := u[ p] + h6 [K1[ p] + 2K 2[ p] + 2K3[ p] + K 4[ p]]

|u[ p]:= un p + h6 [K1 p + 2K2 p + 2K3 p + K4 p ] = un+1 p

запись(u[ p]) | Запись в файл вывода

| un+11 un+12 un+1m

кц

перевод | Переменная x и массив u здесь уже

| приняли значения, необходимые для | выполнения следующего шага цикла

кц | Конец цикла метода Рунге-Кутта.

нц для p от 1 до m

z[ p] :=u[ p] | z[ p] =uN p, , p =1, 2, , m

кц

кон

5. КОНТРОЛЬНАЯ РАБОТА № 2

Контрольные мероприятия по темам 4 − 5 «Численное

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

Для студентов специальности «Математическое обеспечение и администрирование информационных систем» отведено 5 часов практических занятий, а для студентов специальности «Программное обеспечение вычислительной техники и

автоматизированных систем» − 3 часа.

План занятий: