0

我正在使用标准 ode45 方法求解具有复系数的 Odes 系统,但没有得到理想的结果。下面是我的 M.file

function dy=tarak(t,y)

g0=.1;

t0=200;

s=90;

g=g0*exp(-((t-t0)/s).^2);

G=sqrt(10);

dy=zeros(5,1);

dy(1)=-2*2*y(1)+1i*G*conj(y(3))+1i*g*conj(y(4))-1i*G*y(3)-1i*conj(g)*y(4);

dy(2)=2*y(1)+1i*G*y(3)-1i*G*conj(y(3));

dy(3)=-2*y(3)+1i*G*y(2)+1i*g*conj(y(5))-1i*G*y(1);

dy(4)=-2*y(4)+1i*G*y(5)+1i*g*(1-y(1)-y(2))-1i*g*y(1);

dy(5)=1i*G*y(4)-1i*g*conj(y(3));

和命令 t=0:500;

[T,Y] = ode45(@tarak,t,[0 0 0 0 0 ]);

结果我得到一些 Y(1) 和 y(2) 的负值。但它应该总是积极的

我的方法有什么问题吗?

谢谢

4

1 回答 1

2

如果你使用谷歌,你会发现类似的帖子

https://www.mathworks.com/matlabcentral/answers/102582-do-the-ode-functions-from-matlab-ie-ode23-ode24-handle-complex-numbers-properly

  • “ MathWorks 支持团队 2010 年 7 月 26 日的回答:MATLAB 5 (R12) 和更高版本中的 ODE 求解器可以正确处理复值系统。”
于 2015-03-22T14:37:05.757 回答