How to introduce a constraint and stop condition in ode45 ?
    32 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
There are two questions. The first question is how to introduce a constraint in ode45 for a variable. 
For example, the constraint of y(2) is 0<=y(2)<=2 in the following code,and how to introduce it?

The second question is how to introduce a  stop condition in ode45?
For example, how to stop the integration of  ode45 at two conditions when y(1)<-1 and y(2)<-2 in the following code?
Please give me help. Thanks.
y10=2;
y20=0;
Y0=[y10,y20];
[t, Y] = ode45(@fun,[0:0.1:20], Y0);
plot(t,Y(:,1),'-o',t,Y(:,2),'-o')
xlabel('Time t');
ylabel('Solution y');
legend('y_1','y_2')
function Dy=fun(t,y)
Dy=zeros(2,1);
Dy(1)=y(2);
Dy(2)=(1-y(1)^2)*y(2)-y(1)
end
2 Commenti
  Jan
      
      
 il 8 Giu 2022
				Note: [] is Matlab's operator for concatenations. [0:0.1:20] concates the vector 0:0.1:20 with nothing, so tzhe square brackets are a waste of time only.
Risposta accettata
  Torsten
      
      
 il 8 Giu 2022
        
      Modificato: Torsten
      
      
 il 8 Giu 2022
  
      First question:
You can't prescribe a constraint for a solution variable of an ODE. The ODE variable results automatically from the ODE equation, so you cannot influence it: either it respects your constraint or not.
Second question:
Use the "event" facility of the ODE integrators:
Più risposte (1)
  Jan
      
      
 il 8 Giu 2022
        Both is done by an event function. There you can check the values of the current trajectory and stop the integration. If the values should be limited only, you restart the integration from the current location setting the corresponding derivative to 0.
Vedere anche
Categorie
				Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


