MathGroup Archive 1999

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

Search the Archive

Re: Some problems with DSolve and NDSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg19769] Re: Some problems with DSolve and NDSolve
  • From: Paul Abbott <paul at physics.uwa.edu.au>
  • Date: Fri, 17 Sep 1999 01:36:33 -0400
  • Organization: University of Western Australia
  • References: <7rnjb1$ejs@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Chee Lim Cheung wrote:

> I was somewhat surprised that DSolve is unable to solve the following
> relatively innocuous system of 1st-order ODEs:
>
> DSolve[{2 i1[t] + 2 (i1'[t] - i2'[t]) == 80 t E^(-2t), 4 i2[t] + 2 (i2'[t]
> - i1'[t]) == 0, i1[0] == 0, i2[0] == 0}, {i1[t],i2[t]}, t]
>
> The normally reliable NDSolve also falls down on the following:
>
> NDSolve[{2 i1[t] + 2(i1'[t] - i2'[t]) == 80 t E^(-2t), 4 i2[t] + 2(i2'[t] -
> i1'[t]) == 0, i1[0] == 0, i2[0] == 0}, {i1[t], i2[t]}, {t, 0, 1}]
>
> What is wrong?

Not sure. Looks like a problem with Solve (not DSolve or NDSolve)
failing to correctly reduce the equations to simplest form.  Here follows a
Notebook which obtains the solution via Eliminate.

Notebook[{
Cell["Here are the equations,", "Text"],

Cell[BoxData[
    FormBox[
      RowBox[{
        RowBox[{"\[ScriptCapitalE]", "=",
          RowBox[{"{",
            RowBox[{
              RowBox[{
                RowBox[{\(2\ \(\(i\_1\)(t)\)\), "+",
                  RowBox[{"2", " ",
                    RowBox[{"(",
                      RowBox[{
                        RowBox[{
                          SubsuperscriptBox["i", "1", "\[Prime]",
                            MultilineFunction->None], "(", "t", ")"}], "-",
                        RowBox[{
                          SubsuperscriptBox["i", "2", "\[Prime]",
                            MultilineFunction->None], "(", "t", ")"}]}],
                      ")"}]}]}],
                "==", \(80\ t\ \[ExponentialE]\^\(\(-2\)\ t\)\)}], ",",
              RowBox[{
                RowBox[{\(4\ \(\(i\_2\)(t)\)\), "+",
                  RowBox[{"2", " ",
                    RowBox[{"(",
                      RowBox[{
                        RowBox[{
                          SubsuperscriptBox["i", "2", "\[Prime]",
                            MultilineFunction->None], "(", "t", ")"}], "-",
                        RowBox[{
                          SubsuperscriptBox["i", "1", "\[Prime]",
                            MultilineFunction->None], "(", "t", ")"}]}],
                      ")"}]}]}], "==", "0"}]}], "}"}]}], ";"}],
      TraditionalForm]], "Input"],

Cell["and the initial conditions,", "Text"],

Cell[BoxData[
    \(TraditionalForm\`\(ic = {\(i\_1\)(0) == 0, \(i\_2\)(0) ==
            0};\)\)], "Input"],

Cell[TextData[{
  "We can use ",
  StyleBox["Eliminate", "Input"],
  " to determine ",
  Cell[BoxData[
      \(TraditionalForm\`\(i\_2\)(t)\)]],
  ":"
}], "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    FormBox[
      RowBox[{"Eliminate", "[",
        RowBox[{"\[ScriptCapitalE]", ",",
          RowBox[{
            SubsuperscriptBox["i", "2", "\[Prime]",
              MultilineFunction->None], "(", "t", ")"}]}], "]"}],
      TraditionalForm]], "Input"],

Cell[BoxData[
    \(TraditionalForm\`2\ \(\(i\_2\)(t)\) ==
      40\ \[ExponentialE]\^\(\(-2\)\ t\)\ t - \(i\_1\)(t)\)], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`s\_2 =
      i\_2 -> Function[t,
          Evaluate[\(i\_2\)(t) /.
              First[Solve[%, \(i\_2\)(t)]]]]\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`i\_2 ->
      Function[t,
        1\/2\ \((40\ \[ExponentialE]\^\(\(-2\)\ t\)\ t - \(i\_1\)(
                t))\)]\)], "Output"]
}, Open  ]],

Cell["\<\
Substituting this back into the equations we see that they are \
consistent:\
\>", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`\[ScriptCapitalE] /. % // Simplify\)], "Input"],

Cell[BoxData[
    FormBox[
      RowBox[{"{",
        RowBox[{
          RowBox[{
            RowBox[{\(2\ \(\(i\_1\)(t)\)\), "+",
              RowBox[{"3", " ",
                RowBox[{
                  SubsuperscriptBox["i", "1", "\[Prime]",
                    MultilineFunction->None], "(", "t", ")"}]}]}],
            "==", \(40\ \[ExponentialE]\^\(\(-2\)\ t\)\)}], ",",
          RowBox[{\(40\ \[ExponentialE]\^\(\(-2\)\ t\)\), "==",
            RowBox[{\(2\ \(\(i\_1\)(t)\)\), "+",
              RowBox[{"3", " ",
                RowBox[{
                  SubsuperscriptBox["i", "1", "\[Prime]",
                    MultilineFunction->None], "(", "t", ")"}]}]}]}]}], "}"}],
      TraditionalForm]], "Output"]
}, Open  ]],

Cell[TextData[{
  "Now we can use ",
  StyleBox["DSolve", "Input"],
  " to determine ",
  Cell[BoxData[
      \(TraditionalForm\`\(i\_1\)(t)\)]],
  ":"
}], "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`DSolve[{First[%], First[ic]}, \(i\_1\)(t),
      t]\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`{{\(i\_1\)(
            t) -> \[ExponentialE]\^\(\(-2\)\ t\)\ \((\(-10\) +
                10\ \[ExponentialE]\^\(\(4\ t\)/3\))\)}}\)], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`s\_1 =
      i\_1 -> Function[t, Evaluate[\(i\_1\)(t) /. First[%]]]\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`i\_1 ->
      Function[t, \[ExponentialE]\^\(\(-2\)\ t\)\ \((\(-10\) +
              10\ \[ExponentialE]\^\(\(4\ t\)/3\))\)]\)], "Output"]
}, Open  ]],

Cell["\<\
We check to see that both equations and initial conditions are \
satisfied.\
\>", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
    \(TraditionalForm\`Join[\[ScriptCapitalE], ic] //. {s\_1, s\_2} //
      Simplify\)], "Input"],

Cell[BoxData[
    \(TraditionalForm\`{True, True, True, True}\)], "Output"]
}, Open  ]],

Cell["Here is a plot of the two solutions:", "Text"],

Cell[BoxData[
    \(TraditionalForm\`\(Plot[
        Evaluate[{\(i\_1\)(t), \(i\_2\)(t)} //. \[InvisibleSpace]{s\_1,
              s\_2}], {t, 0, 1},
        PlotStyle -> {Hue[0], Hue[1\/3]}];\)\)], "Input"],

Cell[TextData[{
  "Note the use of ",
  StyleBox["//.", "Input"],
  " because ",
  Cell[BoxData[
      \(TraditionalForm\`\(i\_2\)(t)\)]],
  " is expressed in terms of ",
  Cell[BoxData[
      \(TraditionalForm\`\(i\_1\)(t)\)]],
  "."
}], "Text"]
}
]

____________________________________________________________________
Paul Abbott                                   Phone: +61-8-9380-2734
Department of Physics                           Fax: +61-8-9380-1014
The University of Western Australia
Nedlands WA  6907                     mailto:paul at physics.uwa.edu.au
AUSTRALIA                            http://physics.uwa.edu.au/~paul

            God IS a weakly left-handed dice player
____________________________________________________________________




  • Prev by Date: Re: Mathematica can't win against Tiger Woods
  • Next by Date: Re: Some problems with DSolve and NDSolve
  • Previous by thread: Re: Some problems with DSolve and NDSolve
  • Next by thread: Re: Some problems with DSolve and NDSolve