Deze vraag heeft hier al antwoorden :
Reacties
- @belisarius …! # @ * (& @ # ^%
- @ rm-rf Heeft u hulp nodig?
- In het bijzonder heb je het antwoord nodig Het resultaat gebruiken van functies die vervangingsregels retourneren in de gekoppelde vraag.
- Zie ook: mathematica.stackexchange.com/q/9035/5
Antwoord
Je hebt geen numerieke waarden gegeven voor sommige parameters, dus ik heb er een paar bedacht. Voor sommige krijg je misschien geen oplossingen, of krijg je een complexe oplossing, dus dat is iets waar je naar kunt kijken, omdat ik de fysica s van het probleem.
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]
geeft
(b t varx - m Log[m/(v0x - varx)] + m Log[b t - m/(-v0x + varx)])/b
Dan kun je de functie gebruiken 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 …
Antwoord
Nasser volgen ” s antwoord, hier is een kleine variatie:
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}] ]
Dan kun je het evalueren door:
parms = {1, 2, 1, 1, 0}; x[4, parms] Plot[x[t, parms], {t, 0, 1}]
enz. Merk op dat ODE slechts één keer wordt berekend voor elke parametervector.