Witam.
Muszę rozwiązać równanie różniczkowe 2 rzędu w programie Mathematica, niestety nie znam programu. Równanie opisuje wystrzał pocisku z powierzchni Ziemi na który działa tylko siła grawitacji, mam policzyć na jaką wysokość doleci. Równanie : y''(x)=-g(0)((R2)/(R+x)2), gdzie: g(0)=9.81, R=6.37106. Zamieniam to równanie na układ równań pierwszego rzędu: y1'(x)-y2(x)=0, y2'(x)+g(0)*((R2)/(R+x)2)=0, y1(0)=0 , y2(0)=1500 (ma dać od razu 2 wyniki gdzie jeden z nich to będzie wysokość, drugim prędkość). W Mathematice próbowałem już na różne sposoby to policzyć ale nic nie wychodzi. Próbowałem funkcja DSolve:

eq4 = y1'[x] - y2[x] == 0;
eq5 = y2'[x] + 9.81* (40.57*12^12)/((6.37*10^6 + y1[x])^2) == 0;
DSolve[{eq4, eq5, y1[0] == 0, y2[0] == 1500}, {y1[x], y2[x]}`code>jeżeli nie poda się zagdadnień początkowych to liczy rozwiązanie ogólnie ,niestety po ich dodaniu zwraca błąd:"DSolve::bvnul: For some branches of the general solution, the given boundary conditions lead to an empty solution."  lub:`R = 6.37*10^6; 
g = 9.81;
eq1 = y1'[x] - y2[x] == 0;
eq2 = y2'[x] + g*((R^2)/(R + y1[x])^2) == 0;
rul = DSolve = [{eq1, eq2, y1[0] == 0, y2[0] == 1500}, {y1[x], y2[x]},x] 

wtedy błąd jest: Syntax::sntxf: "DSolve=" cannot be followed by "[{eq1,eq2,y1[0]==0,y2[0]==1500},{y1[x],y2[x]},x]", yntax::tsntxi: "[{eq1,eq2,y1[0]==0,y2[0]==1500},{y1[x],y2[x]},x]" is incomplete; more input is needed, Syntax::sntxi: Incomplete expression; more input is needed, lecz nie wiem czego tu brakuje.
Natomiast rozwiązanie numeryczne:

 nsol = NDSolve[{eq4, eq5, y1[0] == 0, y2[0] == 1500}, {y1[x], 
   y2[x]}, {x, -10,`code> przedstawiam na wykresie w ten sposób:`wyk1 = Table[{x, y1[x] /. nsol[[1]]}, {x, -10, 10, 0.5}];
wyk1 = Table[{x, y2[x] /. nsol[[1]]}, {x, -10, 10, 0.5}];
ListPlot[{wyk1, wyk2}] 

lecz otrzymuje tylko jeden wykres: jak zmniejsza sie prędkość od 1500m/s do 0, a potrzebuje wysokość na jaką doleciał pocisk.

Nie wiem co robię źle dlatego proszę o pomoc.

  • wyk.jpg (0,01 MB) - ściągnięć: 55