Solving a third order ODE in MATLAB

조회 수: 22 (최근 30일)
Sergio Manzetti
Sergio Manzetti 2018년 2월 9일
편집: Sergio Manzetti 2018년 2월 15일
Hi, MATLAB is quite about this command:
syms a h Y(x) g x B E T
D3Y = diff(Y, 3)
eqn = a.*D3Y -0.5*x^2*Y == (abs(Y))
D2Y = diff(Y, 2)
DY = diff(Y)
cond1 = Y(0) == 1;
cond2 = DY(0) == 0;
cond3 = D2Y(0) == 0
Y(x) = dsolve(eqn, cond1, cond2, cond3)
latex(Y(x))
Is there a limit here for solving it? Thanks

채택된 답변

Karan Gill
Karan Gill 2018년 2월 12일
Do you not get this warning? If you got it, was the warning clear?
Warning: Unable to find explicit solution.
> In dsolve (line 201)
Y(x) =
[ empty sym ]
Try solving numerically using ode45 or similar.
  댓글 수: 2
Sergio Manzetti
Sergio Manzetti 2018년 2월 13일
Yes I did, but I was surprised, because it is readily solved using other methods. I will check out ode45, however I am not sure it will give an analytical solution.
Karan Gill
Karan Gill 2018년 2월 13일
What do you mean by "other methods"?

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

추가 답변 (3개)

Sergio Manzetti
Sergio Manzetti 2018년 2월 14일
Wolfram alpha, it solves it without any problems.
  댓글 수: 2
Sergio Manzetti
Sergio Manzetti 2018년 2월 14일
Thanks
Karan Gill
Karan Gill 2018년 2월 14일
편집: Karan Gill 2018년 2월 14일
Is this what you tried? Didn't work for me.
Could you post your input to Wolfram?

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


Sergio Manzetti
Sergio Manzetti 2018년 2월 15일
편집: Sergio Manzetti 2018년 2월 15일
I tried this on wolfram, which is the equivalent of this:
syms a h Y(x) g x B E T
D3Y = diff(Y, 3)
eqn = a.*D3Y -0.5*x^2*Y == Y
D2Y = diff(Y, 2)
DY = diff(Y)
cond1 = Y(0) == 1;
cond2 = DY(0) == 0;
cond3 = D2Y(0) == 1;
Y(x) = dsolve(eqn, cond1, cond2, cond3)
latex(Y(x))
and I got a result,Z = 1/3*(exp(x) + 2*exp(-x/2)*cos((sqrt(3)*x)/2)) , however, the result is now non-visible because of std computation time exceeded.
  댓글 수: 3
Karan Gill
Karan Gill 2018년 2월 15일
Thanks for catching that. I also noticed the third condition is different.
Torsten
Torsten 2018년 2월 15일
... and I'm surprised that the solution does not depend on "a".

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


Sergio Manzetti
Sergio Manzetti 2018년 2월 15일
It doesn't matter, abs(Y) did not yield results with either methods, while the former, Y, yielded result only in wolfram.
  댓글 수: 2
Karan Gill
Karan Gill 2018년 2월 15일
Thanks for the clarifications. I'll investigate. Note that cond3 is different in your two codes.
Sergio Manzetti
Sergio Manzetti 2018년 2월 15일
편집: Sergio Manzetti 2018년 2월 15일
Yes, I am aware of that.
Torsten, are there alternative ways to solve:
D3y - x^2y = ay, where a is some constant?

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

Community Treasure Hunt

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

Start Hunting!

Translated by