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
Das oben genannte ist mein Code, um die nichtlineare Differenzialgleichung zu lösen. Die Differentialgleichung als eine sich bewegende Singularität in der Zeit. Ich bekomme eine Warnung Warnung: Fehler bei t=1.466319e+00.
Ich bekomme eine Grafik, wenn Tspan auf [0 1] reduziert wird. Aber ich muss wissen, was seit langer Zeit passiert. Ich denke, eine if-for-Schleife auferlegt eine Bedingung, so dass für Werte von X weniger als 1, dX = 0
lösen wird. Aber die Art und Weise, wie ich das Gleiche umgesetzt habe, ist etwas falsch. Bitte helfen Sie mirHandhabungssingularität in MATLAB
Vielleicht versuchen Sie einen anderen Löser. Weitere Informationen finden Sie unter [Wählen Sie einen ODE-Solver] (https://uk.mathworks.com/help/matlab/math/choose-an-ode-solver.html) in der Dokumentation. – am304
Nur für das Interesse, da es den Charakter des Problems nicht beeinflusst, was genau berechnet 'X <-1' für ein Array' X'? – LutzL