Dette spørsmålet har allerede svar her :
Kommentarer
- @belisarius …! # @ * (& @ # ^%
- @ rm-rf Trenger du litt hjelp?
- Spesielt trenger du svaret Ved å bruke resultatet av funksjoner som returnerer erstatningsregler i det tilknyttede spørsmålet.
- Se også: mathematica.stackexchange.com/q/9035/5
Svar
Du ga ikke numeriske verdier for noen av parametrene, så jeg fant på noen. For noen får du kanskje ikke løsninger, eller får en kompleks løsning, så det er noe du kan se på siden jeg ikke kjenner til fysikk s av problemet.
Clear[x, t, b, varx, m, v0x]; y[t_] = x[t] /. First@DSolve[{b varx^2 - 2 b varx x"[t] + b x"[t]^2 + m x""[t] == 0, x[0] == x0, x"[0] == v0x}, x[t], t]
gir
(b t varx - m Log[m/(v0x - varx)] + m Log[b t - m/(-v0x + varx)])/b
Deretter kan du bruke funksjonen y[t]
parms = {b -> 1, varx -> 2, m -> 1, x0 -> 1, v0x -> 0}; Plot[y[t] /. parms, {t, 0, 1}]
D[y[t] /. parms, t] Out[48]= 2 + 1/(-(1/2) + t)
etc …
Svar
Følger Nasser » s svar, her er en mindre variant:
x[tt_, {b_, varx_, m_, x0_, v0x_}] := Module[{}, x[t_, {b, varx, m, x0, v0x}] = Block[{x, t}, x[t] /. First@ DSolve[{b varx^2 - 2 b varx x"[t] + b x"[t]^2 + m x""[t] == 0, x[0] == x0, x"[0] == v0x}, x[t], t] ]; x[tt, {b, varx, m, x0, v0x}] ]
Så kan du evaluere det ved å:
parms = {1, 2, 1, 1, 0}; x[4, parms] Plot[x[t, parms], {t, 0, 1}]
etc. Merk at ODE beregnes bare én gang for hver parametervektor.