请问我的绘图代码哪里错了

我想用matlab 四阶龙格库塔公式 模拟振动模型

img

这里还没有设置碰撞条件,绘制x-v图,最后绘图应该得到椭圆,但是我得到

img

用四阶龙格库塔公式的matlab代码为


```bash
zeta=0;
omega=2;
h=0.01;
tau=0;
t=0;

X_last=[-1,0];  % 初始二维向量
x_list = zeros(1,314);    
v_list = zeros(1,314);

% 计算相空间轨道
for i=1:314
    X_next = next_point(X_last, t, zeta, omega, tau, h);
    x_list(i) = X_next(1);
    v_list(i) = X_next(2);
    X_last = X_next;
    t = t + h;
end

plot(x_list,v_list); 

% 求导式,X,DX为二维向量形式
% 这个函数被next_piont调用
function DX=f(X, t, zeta, omega, tau)
DX(1)=X(2); 
DX(2)=-X(1) - 2*zeta*X(2) + sin(omega*t + tau);
end

% 单步龙格库塔公式,从上一个点计算下一个点
% 这个函数调用函数f
function X_next = next_point(X_last, zeta, omega, t, tau, h)
K1 = f(X_last, t, zeta, omega, tau);
K2 = f(X_last + h*K1/2,  t + h/2, zeta, omega, tau);
K3 = f(X_last + h*K2/2,  t + h/2, zeta, omega, tau);
K4 = f(X_last + h*K3,  t+h, zeta, omega, tau);
X_next = X_last + h*(K1 + 2*K2 + 2*K3 + K4)/6;
end

```