Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
23.11.2018
Размер:
120.77 Кб
Скачать

Титул

Задание

1. Найдите решение системы дифференциальных уравнений

удовлетворяющее начальным условиям на промежутке [0, 1] с шагом h=0,01:

а) методом Эйлера;

б) методом Рунге-Кутта;

2. Построить графики функций.

3. Сравнить результаты и сделать вывод.

№ варианта

Задания

a

m

7

0,7

2,3

Решение

а) метод Эйлера

Создайте файл Eiler_14.m, содержащий описание функции, возвращающей решение системы дифференциальных уравнений методом Эйлера.

function [T,P1,P2,P3,P4]=Eiler_14(t0,t1,p10,p20,p30,p40,N)

dt=(t1-t0)/N;

t(1)=t0;

p1(1)=p10;

p2(1)=p20;

p3(1)=p30;

p4(1)=p40;

for i=1:N

t(i+1)=t(1)+dt*i;

p1(i+1)=p1(i)+dt*F1_14(t(i),p1(i),p2(i),p3(i),p4(i));

p2(i+1)=p2(i)+dt*F2_14(t(i),p1(i),p2(i),p3(i),p4(i));

p3(i+1)=p3(i)+dt*F3_14(t(i),p1(i),p2(i),p3(i),p4(i));

p4(i+1)=p4(i)+dt*F4_14(t(i),p1(i),p2(i),p3(i),p4(i));

end;

T=t;

P1=p1;

P2=p2;

P3=p3;

P4=p4;

function z=F1_14(t,p1,p2,p3,p4)

z=-0.7*p1+2.3*p2;

function z=F2_14(t,p1,p2,p3,p4)

z=0.7*p1+1.8*p2+4.6*p3;

function z=F3_14(t,p1,p2,p3,p4)

z=0.7*p2+1.8*p3+6.9*p4;

function z=F4_14(t,p1,p2,p3,p4)

z=0.7*p3-6.9*p4;

Выполняем следующую последовательность команд:

>> [T,P1,P2,P3,P4]=Eiler_14(0,1,1,0,0,0,100);

>> plot(T,P1,['B','*'],T,P2,['M','>'],T,P3,['C','^'],T,P4,['G','<'])

б) метод Рунге-Кутта

Создаем файл RungeKutta_14.m, содержащий описание функции, возвращающей решение системы дифференциальных уравнений методом Рунге-Кутты.

function [T,P1,P2,P3,P4]=RungeKutta_14(t0,t1,p10,p20,p30,p40,N)

dt=(t1-t0)/N;

t(1)=t0;

p1(1)=p10;

p2(1)=p20;

p3(1)=p30;

p4(1)=p40;

for i=1:N

t(i+1)=t(1)+dt*i;

kp11=dt*F1_14(t(i),p1(i),p2(i),p3(i),p4(i));

kp21=dt*F2_14(t(i),p1(i),p2(i),p3(i),p4(i));

kp31=dt*F3_14(t(i),p1(i),p2(i),p3(i),p4(i));

kp41=dt*F4_14(t(i),p1(i),p2(i),p3(i),p4(i));

kp12=dt*F1_14(t(i)+dt/2,p1(i)+kp11/2,p2(i)+kp21/2,p3(i)+kp31/2,p4(i)+kp41/2);

kp22=dt*F2_14(t(i)+dt/2,p1(i)+kp11/2,p2(i)+kp21/2,p3(i)+kp31/2,p4(i)+kp41/2);

kp32=dt*F3_14(t(i)+dt/2,p1(i)+kp11/2,p2(i)+kp21/2,p3(i)+kp31/2,p4(i)+kp41/2);

kp42=dt*F4_14(t(i)+dt/2,p1(i)+kp11/2,p2(i)+kp21/2,p3(i)+kp31/2,p4(i)+kp41/2);

kp13=dt*F1_14(t(i)+dt/2,p1(i)+kp12/2,p2(i)+kp22/2,p3(i)+kp32/2,p4(i)+kp42/2);

kp23=dt*F2_14(t(i)+dt/2,p1(i)+kp12/2,p2(i)+kp22/2,p3(i)+kp32/2,p4(i)+kp42/2);

kp33=dt*F3_14(t(i)+dt/2,p1(i)+kp12/2,p2(i)+kp22/2,p3(i)+kp32/2,p4(i)+kp42/2);

kp43=dt*F3_14(t(i)+dt/2,p1(i)+kp12/2,p2(i)+kp22/2,p3(i)+kp32/2,p4(i)+kp42/2);

kp14=dt*F1_14(t(i)+dt,p1(i)+kp13,p2(i)+kp23,p3(i)+kp33,p4(i)+kp43);

kp24=dt*F2_14(t(i)+dt,p1(i)+kp13,p2(i)+kp23,p3(i)+kp33,p4(i)+kp43);

kp34=dt*F3_14(t(i)+dt,p1(i)+kp13,p2(i)+kp23,p3(i)+kp33,p4(i)+kp43);

kp44=dt*F4_14(t(i)+dt,p1(i)+kp13,p2(i)+kp23,p3(i)+kp33,p4(i)+kp43);

p1(i+1)=p1(i)+1/6*(kp11+2*kp12+2*kp13+kp14);

p2(i+1)=p2(i)+1/6*(kp21+2*kp22+2*kp23+kp24);

p3(i+1)=p3(i)+1/6*(kp31+2*kp32+2*kp33+kp34);

p4(i+1)=p4(i)+1/6*(kp41+2*kp42+2*kp43+kp44);

end;

T=t;

P1=p1;

P2=p2;

P3=p3;

P4=p4;

function z=F1_14(t,p1,p2,p3,p4)

z=-0.7*p1+2.3*p2;

function z=F2_14(t,p1,p2,p3,p4)

z=0.7*p1+1.8*p2+4.6*p3;

function z=F3_14(t,p1,p2,p3,p4)

z=0.7*p2+1.8*p3+6.9*p4;

function z=F4_14(t,p1,p2,p3,p4)

z=0.7*p3-6.9*p4;

Выполняем следующую последовательность команд:

>> [T,P1,P2,P3,P4]=RungeKutta_14(0,1,1,0,0,0,100);

>> plot(T,P1,['B','*'],T,P2,['M','>'],T,P3,['C','^'],T,P4,['G','<'])

Соседние файлы в папке 14