Unreasonable ODE45 results

2 visualizaciones (últimos 30 días)
Arjun Iyer
Arjun Iyer el 29 de Dic. de 2015
Respondida: Josh Meyer el 6 de En. de 2016
I have been seeing some weird behavior when using the ODE45 solver to solve a system of coupled differential equations. There is strange behavior around t=0, after which it converges to the required steady state values, since I am interested in the transient behavior, I would like to know what is going wrong. This behavior seems to pretty much independent of the initial values I choose. The system of equations are laser rate equations. I am attaching the solution recovered and the code.
if true
-------calling the solver-----------
paramfile='laser_param_1';
eval(paramfile);
global R A_fr del_om;
A_fr= sqrt(( J-(gamma_n*N_th))/gamma_p);
R=db2mag(-12.055);
del_om=1.7e9*2*pi;
options = odeset('RelTol',1e-7,'AbsTol',[1e-5,1e-5]);
[t,Y] = ode45(@leqn_solver_fun2,[0 5e-9],[A_fr N_th],options);
--------------defining the system of equations--------------
function [dY] = leqn_solver_fun2(t,Y)
paramfile='laser_param_1';
eval(paramfile);
% A simple function to simulate laser rate equations.
global R A_fr del_om;
dY=zeros(2,1);
dY(1)=0.5*g*(Y(2)-N_th)*(1+1i*3.5)*Y(1)+k*(R)*A_fr-1i*del_om*Y(1);
dY(2)= J-gamma_n*Y(2)-(gamma_p+g*(Y(2)-N_th))*abs(Y(1))^2;
end

Respuestas (1)

Josh Meyer
Josh Meyer el 6 de En. de 2016
This looks to me as if ODE45 is initially taking big steps which only coarsely capture the behavior, but it quickly recovers and takes appropriately sized steps.
Some things to try to fix this:
  1. The initial step taken by the solver appears too large. Set the 'InitialStep' option of ODESET to restrict this initial step size.
  2. Alternatively you can set the 'MaxStep' option so that the solver does not step over this behavior. Your solution appears periodic so a good value would be the length of a period (or perhaps half a period).

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by