MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

matrix diffential equations follow up

  • To: mathgroup at smc.vnet.net
  • Subject: [mg27727] matrix diffential equations follow up
  • From: "Martin Richter" <mrMICE.fi at cbs.dk>
  • Date: Tue, 13 Mar 2001 03:52:45 -0500 (EST)
  • Organization: UNI-C
  • References: <MDzp6.2242$96.11689@ralph.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi

Thanks to anyone who did come up with suggestions for defining matrix
differential equations. I haven't have the time to look at it before now.

I think it was Marc Harder who come up with the solution, I just have to
change one line.  I hav just paste my code, it straight forward to put in,
if anyone want to do it.

What I wanted to achieve was to solve the matrix equation
dPhi/dt = L(t)dt, L(s)=I (identity)

If L(t)==L the solution is Exp((t-s)*L)
If L(t) and L(s) commutes one get Exp(\int_0^t L(u)du)
But if the matrices doesn't commute (at all time) there is not in general a
close form solution. My case is such a case,
so my task was simply to compare the error from different approximations
methods of the equation. It turn out to be
a more complicated programming than expected (for a newbie in Mathematica),
and the problem didn't have a high priority for the project.

Martin


<< LinearAlgebra`MatrixManipulation`;

Clear[\[Alpha], \[Kappa], \[Lambda]P, \[Lambda]\[Delta], \[Lambda]v,
\[Sigma]\
\[Delta], \[Sigma]v, \[Nu], \[Nu]11, \[Nu]12, \[Nu]21, \[Nu]22]
\[Alpha] = 1.8952; \[Kappa] = 3.4648;
\[Lambda]P = 0.1108; \[Lambda]\[Delta] = -0.0233; \[Lambda]v = -0.0651;
\[Sigma]\[Delta] = 1.8387; \[Sigma]v = 0.6126;
\[Nu]11 = -0.5915; \[Nu]12 = -0.2511; \[Nu]21 = 0.1737; \[Nu]22 = 0.1880;

Clear[L, \[CapitalPhi], u]
\[Nu][t_] := \[Nu]11*Cos[2*Pi*t] + \[Nu]12*Sin[2*Pi*t] + \[Nu]21*
        Cos[4*Pi*t] + \[Nu]22*Sin[4*Pi*t];
L[t_] := {{0, -1, -1/2 + \[Lambda]P*
            Exp[1/2*\[Nu][
                  t]]}, {0, -\[Alpha], \[Lambda]\[Delta]*\[Sigma]\[Delta]*
          Exp[1/2*\[Nu][t]]}, {0, 0, -\[Kappa] + \[Lambda]v*\[Sigma]v}};
fSymbol[f_String, i_Integer, j_Integer] :=
    ToExpression[f <> ToString[i] <> ToString[j]];
\[CapitalPhi][t_] :=
    Table[fSymbol["\[CapitalPhi]", i, j][t], {i, 3}, {j, 3}];

(* Now come the extra line*)
\[CapitalPhi]Symbol := Table[fSymbol["\[CapitalPhi]", i, j], {i, 3}, {j,
3}];
eqns = Flatten[{MapThread[Equal, {\[CapitalPhi]'[u], L[u].\[CapitalPhi][u]},
          2], MapThread[Equal, {\[CapitalPhi][s], IdentityMatrix[3]}, 2]}];

Clear[s, t]
s = 1; (* starting point*)
t = 1.1; (* end point *)
(* a small change in the next line *)
Sol = NDSolve[eqns, Flatten[\[CapitalPhi]Symbol], {u, s, t}];

Plot[Evaluate[\[CapitalPhi]22[u] /. Sol], {u, s, t}];
Plot[Evaluate[MatrixNorm[Flatten[\[CapitalPhi][u]] /. Sol, 2]], {u, s, t},
    PlotRange -> {1, 2}];





  • Prev by Date: RE: Converting Fibonacci Table
  • Next by Date: Re: Question involving scope/recursion/arguments
  • Previous by thread: Re: ExtendGraphics LabelContour Error Message
  • Next by thread: Loading MultipleListPlot package