help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Matlab-ode45 vs Octave-lsode for a nonlinear ODE


From: Torquil Macdonald Sørensen
Subject: Matlab-ode45 vs Octave-lsode for a nonlinear ODE
Date: Fri, 08 Aug 2008 23:19:49 +0200
User-agent: Mozilla-Thunderbird 2.0.0.16 (X11/20080724)

Hi, I'm getting very different results when solving the following initial value ODE problem in Matlab and Octave:

dy/dt=1/sqrt(y^2 + 1)+y-y^2  on  t \in [0,10] with y(0) = 0

From looking at the equation, I believe that the Matlab solution is the correct one, so I'm wondering if I have not converted the Matlab-file correctly to Octave? Or does the Octave algorithm not work in this situation? It does not change when I lower the values for the absolute and relative tolerances with lsode_options, so maybe I have done something wrong and I'm solving a different ODE in Octave.

Here are the Octave and Matlab programs that I thought were solving the same equation:


*** Octave version ***

function nonlinear_de

% Time span
t = linspace(0,10,100);

% Initial condition
y0=[0];

% Solve the DE
lsode_options('absolute tolerance', 0.0001);
[y, istate, msg] = lsode("ode",y0,t);

istate
msg

% Plot the solution
plot(t,y(:,1),'-')

% Differential equation
function dydt = ode(t,y)
dydt = [ 1/sqrt(y(1)^2 + 1)+y(1)-y(1)^2];


*** Matlab version ***

function nonlinear_de

% Time span
tspan=[0 10];

% Initial condition
y0=[0];

% Solve the DE
[t,y] = ode45(@ode,tspan,y0);

% Plot the solution
plot(t,y(:,1),'-')

% Differential equation
function dydt = ode(t,y)
dydt = [ 1/sqrt(y(1)^2 + 1)+y(1)-y(1)^2];


reply via email to

[Prev in Thread] Current Thread [Next in Thread]