Matlab解非线性微分方程组的问题

1个回答

  • 没解析解你肯定得用数值解.以下是步骤.

    第一步,在Matlab里写m-file,命名微分方程对应的函数:

    function f=myfun(t,x)

    f = [-x(1)+x(2)^2; -2*x(2)+x(1)^2];

    这里的x(1)就是你这儿的x, x(2)就是你这儿的y.写完后自动保存,不要对保存目录做任何修改,文件名就叫myfun.m.

    第二步,在Matlab命令窗口里写命令:

    s=[0:0.01:10];x0=[1,1];

    [t,x]=ode45('myfun',s,x0);

    plot(x(:,1),x(:,2))

    就完了.第一行是在设置画图的范围,s就是画图的区间,0.01是步长,0和10是t的起点和终点,这些你都可以自行设定(步长越小图形越精确),x0是初始值;第二行是在解微分方程,t为自变量(注意在上一步定义函数的时候一定要把t也定义进去,不然matlab不会认为这是个微分方程);第三行就是画相图了. 方程的解就保存在变量t和x里,s里面有多少个点你就会得到多少个x和y.