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)

 채택된 답변

Walter Roberson
Walter Roberson 2017년 10월 28일

0 개 추천

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

Jay
Jay 2017년 10월 29일
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 2017년 10월 29일
Perfect! Thanks again.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Physics에 대해 자세히 알아보기

질문:

Jay
2017년 10월 28일

댓글:

Jay
2017년 10월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by