X0=linspace(-.3,.3,10);
[T,X] = ode45(@difflossy,[0 10],X0);
plot(T,X,'-');
function dX = difflossy(T,X)
if X<-1
dX=0;
else
dX= X.*(1-X);
end
end
上記は私の非線形微分方程式を解くコードです。微分方程式は、時間の移動特異点として。 警告が表示されています。警告:失敗しました。t=1.466319e+00.
tspanが[0 1]に縮小されるとグラフが表示されます。しかし、私は何が起こっているのかを長い間知る必要があります。私はifとforループが1より小さいXの値に対してdX = 0
が解決するような条件を課すと思います。しかし、私が同じように実装した方法はやや間違っています。助けてくださいMATLABで特異点を扱う
多分、別のソルバーを試してみてください。詳細については、ドキュメントの[ODEソルバーの選択](https://uk.mathworks.com/help/matlab/math/choose-anode-solver.html)を参照してください。 – am304
問題の性質に影響しないので、 'X <-1'は配列' X'に対して正確に何を計算しますか? – LutzL