I am trying to solve a second order differential equation using the code below, but whenever I insert the additional condition of diff(y(0),t,2) == g (g is a negative value by the way) into the equation, Matlab says: "Explicit solution could not be found." I know that this has a real, exact solution containing constants of c and g only. Should I be using another method? Thanks in advance.
syms c g y(t);
eqn = diff(y(t),t,2)== g+(c*(diff(y(t),t))*(diff(y(t),t)));
cond = [y(0) == 1000, diff(y(0),t) == 0];
ySol(t) = dsolve(eqn, cond)
v(t) = diff(ySol(t),t)
a(t) = diff(v(t),t)

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 28 Okt. 2017

0 Stimmen

syms c positive
syms g negative
eqn = diff(y(t),t,2)== g+(c*(diff(y(t),t))*(diff(y(t),t)));
cond = [y(0) == 1000, diff(y(0),t) == 0];
ySol(t) = dsolve(eqn, cond)
MATLAB finds four solutions.

3 Kommentare

Jay
Jay am 29 Okt. 2017
Thanks for this, but the goal is to produce a single exact solution, so that I can follow this up with a plot command from the live script. The exact solution has no additional constants, and results in diff(y(0),t,2)==g.
There was a boundary condition expression problem.
syms y(t)
syms c positive
syms g negative
eqn = diff(y(t),t,2)== g+(c*(diff(y(t),t))*(diff(y(t),t)));
cond = [y(0) == 1000, subs(diff(y,t),t,0) == 0];
ySol(t) = dsolve(eqn, cond)
ySol(0)
v(t) = diff(ySol(t),t);
a(t) = diff(v(t),t);
a(0)
back_subs = simplify(subs(eqn,y,ySol))
isAlways(back_subs, 'Unknown', 'false')
Jay
Jay am 29 Okt. 2017
Perfect! Thanks again.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Physics finden Sie in Hilfe-Center und File Exchange

Gefragt:

Jay
am 28 Okt. 2017

Kommentiert:

Jay
am 29 Okt. 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by