Diese Frage hat hier bereits Antworten :
Kommentare
- @belisarius …! # @ * (& @ # ^%
- @ rm-rf Benötigen Sie Hilfe?
- Insbesondere benötigen Sie die Antwort Verwenden des Ergebnisses von Funktionen, die Ersetzungsregeln in der verknüpften Frage zurückgeben.
- Siehe auch: mathematica.stackexchange.com/q/9035/5
Antwort
Sie haben für einige der Parameter keine numerischen Werte angegeben, daher habe ich einige erfunden. Bei einigen erhalten Sie möglicherweise keine Lösungen oder komplexe Lösungen, sodass Sie diese untersuchen können, da ich die nicht kenne Physik s des Problems.
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]
gibt
(b t varx - m Log[m/(v0x - varx)] + m Log[b t - m/(-v0x + varx)])/b
Dann können Sie die Funktion verwenden 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 …
Antwort
Nasser folgen “ s Antwort, hier ist eine kleine 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}] ]
Dann können Sie es bewerten durch:
parms = {1, 2, 1, 1, 0}; x[4, parms] Plot[x[t, parms], {t, 0, 1}]
usw. Beachten Sie, dass die ODE für jeden Parametervektor nur einmal berechnet wird.