Приближенное решение для пружинного демпфера массы с использованием обратного (неявного), улучшенного эйлера (предиктор-корректор), центральной разности и ступеньки-кутта - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь найти ответ для системы масса-пружина-демпфер, используя следующие приблизительные методы: Euler (обратная разница) улучшенный Euler (предиктор-корректор) Центральная разница Runge-Kutta Я уже разработал код, который выполняет прямую разницу, но я не знать, как изменить это, чтобы покрыть остальное, что упомянуто выше. Я был бы признателен, если бы вы помогли мне с помощью вышеуказанных методов уравнение движения для упомянутой системы: а мой код прикреплен

dz1dt=@(t,z1,z2) (z2); %coverting 2nd degree ode into 2 1st order 
dz2dt=@(t,z1,z2) (-2*Z*omegan*z2-omegan^2*z1);
z1_0=1; %initial condition
z2_0=0;
a=0; %time start
b=10;
h=0.01; %step size 
z1i=z1_0;
z2i=z2_0;
ti=a;
iter=1;
zout(1,1:2)=[z1i,z2i];
tout(1)=a;
while ti<b;
    z1ip1=z1i+h*dz1dt(ti,z1i,z2i) %solving used forwarde diff
    z2ip1=z2i+h*dz2dt(ti,z1i,z2i)
    tip1=a+iter*h;
    zout(iter+1,1:2)=[z1i,z2i];
    tout(iter+1,1)=tip1;
    iter=iter+1;
    ti=tip1;
    z1i=z1ip1;
    z2i=z2ip1;
end[enter image description here][1]
figure()
    plot(tout,zout(:,1))
...