Matlab 非线性微分方程有问题。结果是非常大的。我想用数值方法来解决它

Matlab 非线性微分方程有问题。结果是非常大的。我想用数值方法来解决它,matlab,Matlab,我想解一个非线性微分方程,我尝试了很多方法,比如ode45,ode15s,但都失败了。你能帮我个忙吗。方程式是 x+0.01x'+x+2x'-0.55x^3=sin0.1t%我将在我的程序中扩展它。 我已经在Matlab中编写了ode方法,请看一看 %system governing function function xdot=ForcedOscillator1(t,x,dummy,zeta,a,b,c,d,Omega,Xo) xdot=[x(2);-zeta*x(2)-x(1)-a*x(2

我想解一个非线性微分方程,我尝试了很多方法,比如ode45,ode15s,但都失败了。你能帮我个忙吗。方程式是 x+0.01x'+x+2x'-0.55x^3=sin0.1t%我将在我的程序中扩展它。 我已经在Matlab中编写了ode方法,请看一看

%system governing function
function xdot=ForcedOscillator1(t,x,dummy,zeta,a,b,c,d,Omega,Xo) 
xdot=[x(2);-zeta*x(2)-x(1)-a*x(2)^3-b*x(2)^2*x(1)-c*x(2)*x(1)^2-d*x(1)^3+Xo*sin(Omega*t)];
    %ode program
    clear all
    clc
    zeta=0.01; 
    a=2; 
    b=-3.3; 
    c=1.815; 
    d=-0.3328;
    Omega=0.1; Xo=1;
    tspan=[0 100]
    options=odeset('RelTol',1e-8,'AbsTol',[1e-8 1e-8]);
    for m=1:1
    [t,x]=ode15s('ForcedOscillator1',tspan,[0 0]',options,zeta,a(m),b(m),c(m),d    (m),Omega,Xo);
        plot(t,zeta.*x(:,2)+x(:,1)+a.*x(:,2).^3+b.*x(:,2).^2.*x(:,1)+c.*x(:,2).*x(:,1).^2+d.*x(:,1).^3); 
        grid on
        xlabel('t(s)');
        ylabel('F_t(N)');
        title('Response of a nonlinear system');
    hold on
end
如您所见,当我运行此文件时,输出将非常大,将达到大约10^49。我想一定是我的程序出了问题,或者系统不稳定。
你能帮我用数值方法解决这个问题吗。或者证明这个方程是不稳定的。

你的系统就是不稳定的


如果你需要证据,我建议你找一本好的ode教科书

嗨,拉斯曼,谢谢你的回复。为什么你认为这是一个不稳定的系统,虽然这是我希望的结果。顺便问一下,你能告诉我一些好的网站,可能有助于证明它是不稳定的。再次感谢。