Лабораторные работы / ЛР6
.pdfОтчет по лабораторной работе № 6 на тему: «Численное решение задачи Коши для ОДУ 1-го порядка»
по дисциплине «Вычислительные методы»
Постановка задачи
Найдите приближенное решение задачи Коши для обыкновенного дифференциального уравнения 1-го порядка:
y’ = f(t, y), t [t0, T] y(t0)=y0
и оцените погрешность решения задачи при разных значениях шага. Подберите шаг, при котором достигается точность ε=10-4.
f(t ,y) := −45 y + 10 t2 sin(t) − t3 + 5
t0 := 0 T := 3 y0 := 3
1. |
Программа, реализующая метод Эйлера-Коши: |
||||||||||
EylerK(f ,y0,t0,T,h) := |
|
y0 ← y0 |
|
|
|||||||
|
|
|
|||||||||
|
|
|
|
|
t0 ← t0 |
|
|
||||
|
|
|
|
|
n ← |
|
T − t0 |
|
|
|
|
|
|
|
|
|
|
h |
|
|
|||
|
|
|
|
|
for |
i 0..n − 1 |
|
|
|||
|
|
|
|
|
|
ti+1 ← ti + h |
h |
(f(ti,yi)+ f(ti+1,yi + h f(ti,yi))) |
|||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
yi+1 ← yi + |
|||||
|
|
|
2 |
||||||||
|
|
|
|
|
augment(t ,y) |
|
|
||||
Проверка правильности работы программы: |
|||||||||||
k(y ,t) := y + 3 t2 − t3 |
|
|
|
|
|
||||||
k1 := EylerK(k,0,0,3,0.3) |
|
|
|
|
|
||||||
|
0 |
0 |
|
|
|
|
|
|
|||
|
0.3 |
0.045 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
0.6 0.1890.9 0.491
1.2 1.171
k1 = 1.5 2.5131.8 1.463
2.1 2.555
2.4 1.0582.7 2.6543 0.719
2. Нахождение решения исходной задачи с шагом h0 = (T - t0) / 10:
h0 := T 10− t0 = 0.3
|
0 |
3 |
|
|
|
|
0.3 |
227.286 |
|
||
|
|
||||
|
|
|
4 |
|
|
|
0.6 |
1.786× |
10 |
|
|
|
0.9 |
1.404× |
6 |
|
|
|
10 |
|
|||
|
1.2 |
1.104× |
8 |
|
|
|
10 |
|
|||
|
8.682× 109 |
||||
y11 := EylerK(f ,y0,t0,T,h0) = |
1.5 |
|
|||
|
|
|
11 |
|
|
1.8 |
6.826× |
|
|||
10 |
|||||
|
|
5.367× |
13 |
|
|
2.1 |
10 |
|
|||
|
|
|
15 |
|
|
2.4 |
4.22× 10 |
|
|||
|
2.7 |
3.318× |
17 |
|
|
|
10 |
|
|||
|
3 |
2.609× |
19 |
|
|
|
10 |
|
3. Нахождение решения исходной задачи с шагом h1 = 2 × h0:
h1 := 2 h0 = 0.6
|
|
0 |
3 |
|
|
|
|
0.6 |
978.545 |
|
|
|
|
|
|
|
|
|
|
1.2 |
3.312× 105 |
||
y11 := EylerK(f ,y0,t0,T,h1) = |
|
|
|
8 |
|
|
|
1.121× |
|
||
|
|
1.8 |
1010 |
|
|
|
2.4 |
3.795× 10 |
|
||
|
|
3 |
1.285× |
13 |
|
|
|
10 |
|
Оценка погрешности по правилу Рунге:
N1 := T − t0
h1 i := 0..N1
delta1i := y12i,1 − y112 i,1
delta1 := delta1 22 − 1
R := max( delta1→ )= 8.695× 1018
2
4.Подбор шага h2, при котором погрешность по правилу Рунге не превосходит точности
ε=10-4:
y11 := EylerK(f ,y0,t0,T,0.00015) |
|
|
|
y12 := EylerK(f ,y0,t0,T,0.0003) |
|
|
|
i := 0.. T − t0 |
|
|
|
0.0003 |
|
|
|
delta1i := |
y12i,1 − y112 i,1 |
|
|
delta1 := delta1 |
|
|
|
|
22 − 1 |
|
|
R := max( |
delta1→ )= 9.553× 10− 5 |
|
|
График решения: |
|
|
|
3 |
|
|
|
2 |
|
|
|
y11i ,1 |
|
|
|
1 |
|
|
|
0 0 |
0.5 |
1 |
1.5 |
|
|
y11i ,0 |
|
3
5.Нахождение решения исходной задачи с шагом h0 = (T - t0) / 10 с помощью встроенной функции Mathcad rkfixed и оценка погрешности решения по правилу Рунге:
|
|
0 |
3 |
|
|
|
|
|
3.041× |
3 |
|
|
0.3 |
10 |
|
||
|
|
|
|
6 |
|
|
0.6 |
3.2 × 10 |
|
||
|
|
|
3.369× |
9 |
|
|
|
0.9 |
10 |
|
|
|
|
|
3.545× |
12 |
|
|
|
1.2 |
10 |
|
|
y21 := rkfixed(y0,t0,T,N0,f) = |
|
1.5 |
3.732× |
15 |
|
|
10 |
|
|||
|
|
1.8 |
3.928× |
18 |
|
|
|
10 |
|
||
|
|
4.134× 1021 |
|||
|
|
2.1 |
|
||
|
|
|
4.351× |
24 |
|
|
2.4 |
10 |
|
||
|
|
|
|
27 |
|
|
2.7 |
4.58× 10 |
|
||
|
|
3 |
|
30 |
|
|
|
4.82× 10 |
|
||
|
|
0 |
3 |
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
0.6 |
5.548× |
109 |
|
|
1.2 |
1.065× 10 |
|
||
y22 := rkfixed(y0,t0,T,N1,f) = |
|
2.045× |
13 |
|
|
|
1.8 |
10 |
|
||
|
|
2.4 |
3.928× |
17 |
|
|
|
10 |
|
||
|
|
3 |
7.541× |
21 |
|
|
|
10 |
|
i := 0..N1
delta2i := y22i,1 − y212 i,1
delta2 := delta2 24 − 1
R := max( delta2→ )= 3.213× 1029
6.Подбор шага h3, при котором погрешность по правилу Рунге не превосходит точности
ε=10-4:
y31 := |
rkfixed(y0,t0,T,544,f) |
|
||||||||
y32 := |
rkfixed(y0,t0,T,272,f) |
|
||||||||
i := 0.. |
272 |
|
|
|
|
|
|
|
|
|
delta3i := |
|
y32i,1 − y312 i,1 |
|
|
|
|||||
|
|
|
||||||||
delta3 := |
|
delta3 |
|
|
|
|||||
|
24 − 1 |
|
||||||||
R := max( |
|
delta3→ |
|
)= 9.932× 10− 5 |
4 |
|||||
|
|
h3 := T544− t0 = 5.515× 10− 3
7. Итоговая таблица:
|
Порядок точности |
Погрешность при |
Шаг, при котором |
Метод |
достигается точность |
||
|
метода |
шаге h0 |
ε=10-4 |
Метод Эйлера-Коши |
2 |
9×1018 |
0,000150 |
Метод Рунге-Кутты 4-го |
4 |
3×1029 |
0,005515 |
порядка |
|
|
|
8. Выводы:
Явные методы Эйлера-Коши и Рунге-Кутты 4-го порядка дали очень большое значение погрешности при решении задачи Коши для заданной в условии функции и выбранных отрезка, начального условия и шага. Погрешность метода Эйлера-Коши при шаге 0,3 была равна 9×1018, а погрешность метода Рунге-Кутты 4-го порядка - 3×1029; это говорит о том, что изначально поставленная задача плохо обусловлена относительно входных данных. Следовательно, эти методы не могут быть использованы для решения задачи Коши при заданных условиях.
Для достижения требуемой точности необходимо уменьшить шаг. При использовании метода Эйлера-Коши необходимо уменьшить шаг в 2000 раз, а при использовании метода РунгеКутты 4-го порядка - приблизительно в 54 раза.
Таким образом, метод Рунге-Кутты 4-го порядка позволяет достигнуть заданной точности ε=10-4 приблизительно в 37 раз быстрее, чем метод Эйлера-Коши 2-го порядка, то есть лучше подходит для решения задачи Коши.
5