我可以在matlab中解决复系数的颂歌吗?

时间:2015-03-22 11:54:43

标签: matlab ode coefficients

我正在使用标准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)的负值。但它应该总是积极的

我的方法有问题吗?

谢谢

1 个答案:

答案 0 :(得分:2)

如果你使用谷歌,你会找到像

这样的帖子

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

  • " MathWorks支持团队于2010年7月26日回答:MATLAB 5(R12)和更高版本中的ODE解算器正确处理复杂的系统。"