0

標準のode45メソッドを使用して複素係数を持つOdesのシステムを解いていますが、望ましい結果が得られません。以下は私のM.ファイルです

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

Google を使用している場合は、次のような投稿が見つかります。

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

  • 「2010 年 7 月 26 日の MathWorks サポート チームによる回答: MATLAB 5 (R12) 以降のリリースの ODE ソルバーは、複雑な値のシステムを適切に処理します。」
于 2015-03-22T14:37:05.757 に答える