[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: can i do ODE2 problems with lsode ?
From: |
Ian Searle |
Subject: |
Re: can i do ODE2 problems with lsode ? |
Date: |
Thu, 30 Nov 1995 13:05:27 -0800 |
> Hi gang;
>
> I have been trying to do some neural-net and dynamical systems
> stuff that i have been assigned as homework.
>
> This means i need to solve ODE's and sytems of ODE's. Octave has
> dassl and lsode for this purpose. I am not sure how i need to pre process
> my equations to get them into a form that lsode or dassl would be willing
> to digest.
>
> The example in the manual for lsode is pretty good, the entry for
> dassl does not have an example, but the description seems pretty complete.
>
> Here is the function that i want to try and solve first, since i
> think it is a "simple" example of what comes in the real stuff.
>
> d^2 x dx
> ----- + lambda*( x^2 - 1 )* -- + x = 0
> dt^2 dt
>
> so we can plunk 3 in for lambda, this is supposedly an equation from a
> matlab demo, but i dont have matlab, so i dont know.
Looks like Van der Pol's equation.
>
> my problem is that this is a 2nd order eq and lsode looks like it only
> wants 1rst order eq's.
>
> Now, i *thought* that any nOrder ode can be represented as an
> Nsystem of 1rst order diffeq's. I starting to think that i hallucinated
> this fact because i cant seem to find any example of this in either
> Boyce/DiPrima or Jordan/Smith, which are the two textbooks on the subject
> of ode's that i have at my disposal.
>
> So, did i hallucinate this? If not, can anybody provide any
> suggestions as to how i might implement this?
>
> tks folks, please feel free to tell me if u think this was an
> inapropriate use of the list.
Seems appropriate?, as long as you are not using this list to do your
homework :-) Anyways, it is a little coincidental that I have been
working on this very same example for an article. So, here it is. This
is rlab, but you ought to be able to translate easily.
vdpol = function ( t , x )
{
global (mu)
xd[1] = x[1] * mu*(1-x[2]^2) - x[2];
xd[2] = x[1];
return xd;
};
(I'll try...)
function xd = vdpol(t,x)
xd(1) = x(1) * mu*(1-x(2)^2) - x(2);
xd(2) = x(1);
The jist is to create 2N 1st order equations from N 2nd order
equations. Most linear systems theory books cover this. Chen's is one
of my favorites (mostly because I suffered through it in Alexandro's
class). The variable substition that gets you there is (hope you can
read TeX):
\begin{minipage}{8in}
Most often structural systems of equations are expressed in $2^{nd}$
order differential equation format:
\[ \left[ M \right] \left\{ \ddot{x} \right\} + \left[ K \right]
\left\{ x \right\} = \left\{ F \right\} \]
A State Space model is an equivilent representation in $1^{st}$
order differential equation format. The equations are derived via
a simple coordinate transformation:
\[ x_1 = x \]
\[ \dot{x}_1 = \dot{x} = x_2 \]
To generate a $2N$ set of $1^{st}$ order equations:
\[ \left\{ \begin{array}{c} \dot{x}_1 \\ \dot{x}_2 \end{array} \right\}
= \left[ \begin{array}{cc} 0 & I \\ -M^{-1} K & -M^{-1} C \\
\end{array} \right]
\left\{ \begin{array}{c} x_1 \\ x_2 \end{array} \right\} +
\left[ \begin{array}{c} 0 \\ M^{-1} \\
\end{array} \right]
\left\{ \begin{array}{c} F_1 \\ F_2 \end{array}\right\} \]
where:
\[ \begin{array}{ll} x_1 & position \\
\dot{x}_1 & velocity \\
x_2 & velocity \\
\dot{x}_2 & acceleration \\ \end{array} \]
\end{minipage}
I would highly recommend working through this variable subsititution
until you are very comfortable with it. There is a good chance you
will need it _many_ times in the future.
-ian