0

我试图预测正弦波形下一个时间步的值。为此,我使用了在此网页中找到的三次样条外推法。

http://mathworld.wolfram.com/CubicSpline.html

以下是我使用的 Matlab 代码。

clear all;close all
 V0_mag=230*sqrt(2/3);
 t1=0;dt=50e-6;
 h=dt;
 H=[4 1 0;1 4 1;0 4 1];
 invH=inv(H);
 Y = zeros(3,1);
 w0=2*pi*60;a=0;b=0;c=0;d=0;
 t=1;
for m=1:0.2/dt
    t11(m)=t1;
    y(m,1)=V0_mag*(1-exp(-20*t11(m)))*sin(w0*t11(m));
    %Cubic splines method for n=3
    if m>5
        Y(3,1)=3*(y(m-2)-y(m-3));
    end
    if m>4
        Y(3,1)=3*(y(m-1)-y(m-2));
    end
    if m>3
        Y(3,1)=3*(y(m)-y(m-1));
    end
    D=(invH*Y);
    ax(m)=a;
    if m>1
        a=y(m-1);b=D(2);
        c=3*(y(m)-y(m-1))-(2*D(2)+D(3));
        d=2*(-y(m)+y(m-1))+D(2)+D(3);
    end
    prey1(m,1)=d*(t)^3+c*(t)^2+b*(t)+a;
    t1=t1+dt;
end

figure(1)
plot(t11,prey1)
hold on
plot(t11,y,'r')
legend

此代码适用于0<t<1(插值)。但是,为了推断,我必须使 t>1。当我输入 t=2 (这意味着我试图在下一个时间步找到值)时,波形不匹配。任何人都可以帮助我如何使用此代码进行推断。

4

0 回答 0