*** nonlinear system of ODE + Runge Kutta ?!!!! ***
- To: mathgroup at smc.vnet.net
- Subject: [mg26658] *** nonlinear system of ODE + Runge Kutta ?!!!! ***
- From: suvad at tfh-berlin.de (Suvad Sahovic)
- Date: Wed, 17 Jan 2001 00:47:14 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi, I have some problems with my nonlinear system. It was everything OK til Runge-Kutta, I don´t know how to solve it? With NDSolve it wasn't problems, but how to solve it with Runge Kutta?? Please, help me. Thanks a lot. That´s the NB. \!\(y\_tt = \ \[PartialD]\_\(t, t\)\((A[t] x[t])\)\) \!\(\* RowBox[{ RowBox[{"2", " ", RowBox[{ SuperscriptBox["A", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(x[t]\), " ", RowBox[{ SuperscriptBox["A", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(A[t]\), " ", RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}]}]\) \!\(y\_tt\ = %\ /. \ \ {\(\(A'\)'\)[t]\ \[Rule] \ \(-A[t]\)}\) \!\(\* RowBox[{\(\(-A[t]\)\ x[t]\), "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["A", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(A[t]\), " ", RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}]}]\) \!\(\(gl1\ = \n\ \(\(y'\)'\)[t]\ == \ \(-\(\(\[Mu]\ \((y[t] - \ b\_1)\)\)\/\((D\_2)\)\^3\)\) - \(\[Mu]'\ \((y[t] - \ b\_2)\)\)\/\((D\_1)\)\^3; \)\) \!\(gl2\ \ = \ %\ /. \ {y[t] \[Rule] A[t]\ x[t], \ \(\(y'\)'\)[t] \[Rule] y\_tt, \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ b\_1 \[Rule] A[t]\ a\_1, \ \ b\_2 \[Rule] A[t] a\_2\ }\) \!\(\* RowBox[{ RowBox[{\(\(-A[t]\)\ x[t]\), "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["A", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(A[t]\), " ", RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}]}], "==", RowBox[{ \(-\(\(\[Mu]\ \((\(-A[t]\)\ a\_1 + A[t]\ x[t])\)\)\/D\_2\%3\)\), "-", FractionBox[ RowBox[{\((\(-A[t]\)\ a\_2 + A[t]\ x[t])\), " ", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], \(D\_1\%3\)]}]}]\) Map[Simplify,Map[ ((1/A[t])#)&, gl2]] /. {A[t] \[Rule] 1/Inverse[A[t]]} \!\(\* RowBox[{ RowBox[{\(-x[t]\), "+", RowBox[{"2", " ", \(Inverse[A[t]]\), " ", RowBox[{ SuperscriptBox["A", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], "==", RowBox[{ \(\(\[Mu]\ a\_1\)\/D\_2\%3\), "-", \(\(\[Mu]\ x[t]\)\/D\_2\%3\), "+", FractionBox[ RowBox[{\((a\_2 - x[t])\), " ", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], \(D\_1\%3\)]}]}]\) \!\(\(\ Map[\((\ Collect[#, {D\_2, D\_1}])\)&, %]\)\) \!\(\* RowBox[{ RowBox[{\(-x[t]\), "+", RowBox[{"2", " ", \(Inverse[A[t]]\), " ", RowBox[{ SuperscriptBox["A", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], "==", RowBox[{\(\(\[Mu]\ a\_1 - \[Mu]\ x[t]\)\/D\_2\%3\), "+", FractionBox[ RowBox[{\((a\_2 - x[t])\), " ", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], \(D\_1\%3\)]}]}]\) gl3 = Map[( Collect[#,{\[Mu],\[Mu]'}])&,%,{3}] \!\(\* RowBox[{ RowBox[{\(-x[t]\), "+", RowBox[{"2", " ", \(Inverse[A[t]]\), " ", RowBox[{ SuperscriptBox["A", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], "==", RowBox[{\(\(\[Mu]\ \((a\_1 - x[t])\)\)\/D\_2\%3\), "+", FractionBox[ RowBox[{\((a\_2 - x[t])\), " ", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], \(D\_1\%3\)]}]}]\) \!\(\* RowBox[{ RowBox[{\(A[t_]\), " ", "=", " ", RowBox[{"(", GridBox[{ {\(Cos[t]\), \(-Sin[t]\)}, {\(Sin[t]\), \(Cos[t]\)} }], ")"}]}], ";"}]\) \!\(Simplify[Inverse[A[t]].\[PartialD]\_t\ A[t]]\) {{0,-1},{1,0}} \!\(\* RowBox[{ RowBox[{\(x[t_]\), "=", " ", RowBox[{"(", "\[NegativeThinSpace]", GridBox[{ {\(x\_1[t]\)}, {\(x\_2[t]\)} }], "\[NegativeThinSpace]", ")"}]}], ";", " ", RowBox[{\(a\_1\), " ", "=", " ", RowBox[{"(", "\[NegativeThinSpace]", GridBox[{ {\(\[Mu]'\)}, {"0"} }], "\[NegativeThinSpace]", ")"}]}], ";", " ", RowBox[{\(a\_2\), " ", "=", " ", RowBox[{"(", "\[NegativeThinSpace]", GridBox[{ {\(-\[Mu]\)}, {"0"} }], "\[NegativeThinSpace]", ")"}]}], ";"}]\) \!\(\* RowBox[{"gl4", " ", "=", " ", "\n", "\t", RowBox[{ RowBox[{\(-x[t]\), " ", "+", RowBox[{"2", " ", RowBox[{ RowBox[{"(", GridBox[{ {"0", \(-1\)}, {"1", "0"} }], ")"}], ".", \(\(x'\)[t]\)}]}], " ", "+", " ", \(\(\(x'\)'\)[t]\)}], " ", "==", " ", \(Last[gl3]\)}]}]\) \!\(\* RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{\(-x\_1[t]\), "-", RowBox[{"2", " ", RowBox[{ SubsuperscriptBox["x", "2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SubsuperscriptBox["x", "1", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{\(-x\_2[t]\), "+", RowBox[{"2", " ", RowBox[{ SubsuperscriptBox["x", "1", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{ SubsuperscriptBox["x", "2", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], "}"}]}], "}"}], "==", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ FractionBox[ RowBox[{ SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None], " ", \((\(-\[Mu]\) - x\_1[t])\)}], \(D\_1\%3\)], "+", FractionBox[ RowBox[{"\[Mu]", " ", RowBox[{"(", RowBox[{ SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None], "-", \(x\_1[t]\)}], ")"}]}], \(D\_2\%3\)]}], "}"}], ",", RowBox[{"{", RowBox[{\(-\(\(\[Mu]\ x\_2[t]\)\/D\_2\%3\)\), "-", FractionBox[ RowBox[{ SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None], " ", \(x\_2[t]\)}], \(D\_1\%3\)]}], "}"}]}], "}"}]}]\) \!\(\(\ ode\ = \n\t\ Table[\(\(x\_i'\)'\)[t]\ == \ \ First[\(( \(\(x\_i'\)'\)[t]\ /. Solve[\ gl4[\([1, i, 1]\)] == \ gl4[\([2, i, 1]\)], \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(\(x\_i'\)'\)[t]\ ])\)], \ {i, 1, 2}]\)\) \!\(\* RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SubsuperscriptBox["x", "1", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}], "==", RowBox[{ FractionBox[ RowBox[{ SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None], " ", \((\(-\[Mu]\) - x\_1[t])\)}], \(D\_1\%3\)], "+", FractionBox[ RowBox[{"\[Mu]", " ", RowBox[{"(", RowBox[{ SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None], "-", \(x\_1[t]\)}], ")"}]}], \(D\_2\%3\)], "+", \(x\_1[t]\), "+", RowBox[{"2", " ", RowBox[{ SubsuperscriptBox["x", "2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}], ",", RowBox[{ RowBox[{ SubsuperscriptBox["x", "2", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}], "==", RowBox[{\(x\_2[t]\), "-", \(\(\[Mu]\ x\_2[t]\)\/D\_2\%3\), "-", FractionBox[ RowBox[{ SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None], " ", \(x\_2[t]\)}], \(D\_1\%3\)], "-", RowBox[{"2", " ", RowBox[{ SubsuperscriptBox["x", "1", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}]}], "}"}]\) \!\(Clear[x, y]\n x\_1[t_]\ = x[t]; \ \nx\_2[t_]\ = y[t]; \) ode \!\(\* RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}], "==", RowBox[{\(x[t]\), "+", FractionBox[ RowBox[{\((\(-\[Mu]\) - x[t])\), " ", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], \(D\_1\%3\)], "+", FractionBox[ RowBox[{"\[Mu]", " ", RowBox[{"(", RowBox[{\(-x[t]\), "+", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], ")"}]}], \(D\_2\%3\)], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["y", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["y", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}], "==", RowBox[{\(y[t]\), "-", \(\(\[Mu]\ y[t]\)\/D\_2\%3\), "-", FractionBox[ RowBox[{\(y[t]\), " ", SuperscriptBox["\[Mu]", "\[Prime]", MultilineFunction->None]}], \(D\_1\%3\)], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}]}], "}"}]\) \!\(\(D\_1 = \@\(\((x[t] + \[Mu])\)\^2\ + \ y[t]\^2\)\ ; \ \ (*\ Entfernung\ zur\ Erde\ *) \n D\_2 = \@\(\((x[t] - \[Mu]')\)\^2\ + \ y[t]\^2\); \ \ (*\ Entfernung\ zum\ Mond\ *) \)\) \[Mu]=0.012277471; (* Masse vom Mond *) \[Mu]'=1-\[Mu]; (* Masse der Erde *) ode \!\(\* RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["x", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}], "==", RowBox[{\(x[t]\), "+", FractionBox[ RowBox[{ StyleBox["0.0122774709999999998`", StyleBoxAutoDelete->True, PrintPrecision->8], " ", \((\(0.987722529000000015`\[InvisibleSpace]\) - x[t])\)}], \(\((\((\(-0.987722529000000015`\) + x[t])\)\^2 + y[t]\^2)\)\^\(3/ 2\)\)], "+", FractionBox[ \(0.987722529000000015`\ \((\(-0.0122774709999999998`\) - x[t])\)\), SuperscriptBox[ RowBox[{"(", RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{ RowBox[{ StyleBox["0.0122774709999999998`", StyleBoxAutoDelete->True, PrintPrecision->8], "\[InvisibleSpace]"}], "+", \(x[t]\)}], ")"}], "2"], "+", \(y[t]\^2\)}], ")"}], \(3/2\)]], "+", RowBox[{"2", " ", RowBox[{ SuperscriptBox["y", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["y", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}], "==", RowBox[{ \(y[t]\), "-", \(\(0.0122774709999999998`\ y[t]\)\/\(( \((\(-0.987722529000000015`\) + x[t])\)\^2 + y[t]\^2) \)\^\(3/2\)\), "-", FractionBox[\(0.987722529000000015`\ y[t]\), SuperscriptBox[ RowBox[{"(", RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{ RowBox[{ StyleBox["0.0122774709999999998`", StyleBoxAutoDelete->True, PrintPrecision->8], "\[InvisibleSpace]"}], "+", \(x[t]\)}], ")"}], "2"], "+", \(y[t]\^2\)}], ")"}], \(3/2\)]], "-", RowBox[{"2", " ", RowBox[{ SuperscriptBox["x", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}]}]}], "}"}]\) init2 = {x[0] ==0.994, y[0] == 0, x'[0] == 0, y'[0]==-2.00158510637908252240537862224}; t2 =17.0652165601579625588917206249; ode2 = ode\[Union]init2; soln2=NDSolve[ ode2, {x,y}, {t,0,t2}] {{x\[Rule]InterpolatingFunction[{{0.,17.0652}},"<>"], y\[Rule]InterpolatingFunction[{{0.,17.0652}},"<>"]}}