Я пытаюсь найти ответ для системы масса-пружина-демпфер, используя следующие приблизительные методы: 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))