用matlab解微分方程組 dx/dt=x-y-x(x^2+y^2) dy/dt=x+y-y(x^2+y^2) x(0)=2 y(0)1

用matlab解微分方程組 dx/dt=x-y-x(x^2+y^2) dy/dt=x+y-y(x^2+y^2) x(0)=2 y(0)1

[x,y]=dsolve('Dx=x-y-x*(x^2+y^2)','Dy=x+y-y*(x^2+y^2)','x(0)=2','y(0)=1')
得到的結果是解析解沒有找到.
用數值解.
在Matlab下輸入:edit,然後將下麵兩行百分號之間的內容,複製進去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=zhidao_rk4_5(t,x)
%x,y變數分別用x(1),x(2)表示
y=[x(1)-x(2)-x(1)*(x(1)^2+x(2)^2);x(1)+x(2)-x(2)*(x(1)^2+x(2)^2)];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下麵輸入:
t_end=10;
x0=[2;1];
[t,x]=ode45('zhidao_rk4_5',[0,t_end],x0);
plot(t,x);
legend('x','y');
xlabel('t');
figure;
plot(x(:,1),x(:,2));
xlabel('x');
ylabel('y');