Dette spørgsmål har allerede svar her :
Kommentarer
- @belisarius …! # @ * (& @ # ^%
- @ rm-rf Har du brug for hjælp?
- Specifikt har du brug for svaret Brug af resultatet af funktioner, der returnerer erstatningsregler i det linkede spørgsmål.
- Se også: mathematica.stackexchange.com/q/9035/5
Svar
Du gav ikke numeriske værdier for nogle af parametrene, så jeg lavede nogle. For nogle får du muligvis ikke løsninger eller får en kompleks løsning, så det er noget, du kan se på, da jeg ikke kender fysiske s af 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]
giver
(b t varx - m Log[m/(v0x - varx)] + m Log[b t - m/(-v0x + varx)])/b
Så kan du bruge funktionen 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)
osv …
Svar
Efter Nasser ” s svar, her er en mindre variation:
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}]
osv. Bemærk, at ODE beregnes kun én gang for hver parametervektor.