MATLAB Answers

Solving a third order ODE in MATLAB

73 views (last 30 days)
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

  0 Comments

Sign in to comment.

Accepted Answer

Karan Gill
Karan Gill on 12 Feb 2018
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 Comments

Sergio Manzetti
Sergio Manzetti on 13 Feb 2018
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 on 13 Feb 2018
What do you mean by "other methods"?

Sign in to comment.

More Answers (3)

Sergio Manzetti
Sergio Manzetti on 14 Feb 2018
Wolfram alpha, it solves it without any problems.

Sergio Manzetti
Sergio Manzetti on 15 Feb 2018
Edited: Sergio Manzetti on 15 Feb 2018
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 Comments

Torsten
Torsten on 15 Feb 2018
You used
eqn = a.*D3Y -0.5*x^2*Y == Y
instead of
eqn = a.*D3Y -0.5*x^2*Y == abs(Y)
Best wishes
Torsten.
Karan Gill
Karan Gill on 15 Feb 2018
Thanks for catching that. I also noticed the third condition is different.
Torsten
Torsten on 15 Feb 2018
... and I'm surprised that the solution does not depend on "a".

Sign in to comment.


Sergio Manzetti
Sergio Manzetti on 15 Feb 2018
It doesn't matter, abs(Y) did not yield results with either methods, while the former, Y, yielded result only in wolfram.

  2 Comments

Karan Gill
Karan Gill on 15 Feb 2018
Thanks for the clarifications. I'll investigate. Note that cond3 is different in your two codes.
Sergio Manzetti
Sergio Manzetti on 15 Feb 2018
Yes, I am aware of that.
Torsten, are there alternative ways to solve:
D3y - x^2y = ay, where a is some constant?

Sign in to comment.

Sign in to answer this question.