help-octave
[Top][All Lists]

Re: System of ODE's

 From: Orsila Heikki Subject: Re: System of ODE's Date: Thu, 27 Sep 2001 22:31:59 +0300 (EET DST)

On Wed, 26 Sep 2001, Dennis Bayrock wrote:
>     I am a research scientist involved in modeling yeast fermentations
> for the production of alcohol. I have a system of ODE's to model and am
> wondering if Octave is capable of handling such a system. For eg.
>
>         dX/dt= 1+ dS/dt
>         dS/dt = -2.5 * dX/dt
>         dP/dt = 5 * dS/dt - 3 * dX/dt

Well, that kind of trivial equation sets can be solved easily with little
handwork..

Assume we have equation set:

x1 = a10 + a11 * x1 + a12 * x2 + ... + a1n * xn
x2 = a20 + a21 * x1 + a22 * x2 + ... + a2n * xn
...
xn = an0 + an1 * x1 + an2 * x2 + ... + ann * xn

Denote x = [x1,x2,...,xn]' and b=[a10,a20,...,an0]'

And aij is item from matrix A row i column j.. We get equation:

x = A*x + b
=>
(I-A)*x = b
=>
x = inv(I-A) * b = (say) = c

Now we have that:

x1 = c(1)*t + C1
x2 = c(1)*t + C2
...
xn = c(n)*t + Cn

Parameters C1-Cn must be solved from initial-value information. Let that
be vector C, then C = x(0).

To apply this to your example problem: Let dX/dt = x1, dS/dt = x2
and dP/dt = x3 ...

b=[1;0;0]
A=[0,1,0;-2.5,0,0;-3,5,0]

A =

0.00000   1.00000   0.00000
-2.50000   0.00000   0.00000
-3.00000   5.00000   0.00000

I=eye(3)

c = inv(I-A)*b

c =

0.28571
-0.71429
-4.42857

=>

X = x1 =  0.28571 * t + X(0)
S = x2 = -0.71429 * t + S(0)
P = x3 = -4.42857 * t + P(0)

I don't have any experience with ODEs so if this is wrong, please tell
me..

Heikki Orsila                   32 bittiä - entä sitten?
http://www.ee.tut.fi/~orsila    - Petteri Järvinen (1992)

-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------

reply via email to