help-octave
[Top][All Lists]
Advanced

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

RE: ode45 for coupled system (2nd order ODE)


From: Allen.Windhorn
Subject: RE: ode45 for coupled system (2nd order ODE)
Date: Fri, 9 Nov 2012 19:41:39 +0000

Joza,

> -----Original Message-----
> From: address@hidden [mailto:help-octave-
> 
> Here is my code anyway:
> 
> function du = f1(t, y)
           ^^ this should be dy
>       dy = zeros(2,1);
>       dy(1) = y(2);
>       dy(2) = -sin(y(1));
> end
> 
> ...
> 
> [t, y1] = ode45(@f1, [0, 100], [1, 0]);
> 
> This solves the system for y1. But I would like to also have
> dy1/dt .... how can I obtain that with ode45?

Well, dy1/dt IS y2, from the code above.  And you are really
computing y1 AND y2 (look at the value of "y1", it is actually

octave:11> y1(1:20,:)
ans =

   1.00000   0.00000
   0.97534  -0.20289
   0.90040  -0.40248
   0.77762  -0.58699
   0.61078  -0.74686
   0.40903  -0.86857
   0.21155  -0.93531
   0.02071  -0.95863
  -0.16367  -0.94481
  -0.34044  -0.89700
  -0.50747  -0.81692
  -0.66159  -0.70529
  -0.79795  -0.56192
  -0.90883  -0.38565
  -0.98170  -0.17496
  -0.99920   0.03680
  -0.96441   0.24332
  -0.87976   0.44054
  -0.74789   0.62101
  -0.57295   0.77460 ...

where the left column is y1 and the right is y2, which is dy1/dt
for the values of time in t).

If you also needed dy2/dt, after using ode45, you could just do

dy = f1(t, y1)

if f1 would handle a matrix input.  I know there's a way to do
that but I can't think what it is at the moment.

Regards,
Allen


reply via email to

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