Solving a third order ODE in MATLAB

24 Ansichten (letzte 30 Tage)
Sergio Manzetti
Sergio Manzetti am 9 Feb. 2018
Bearbeitet: Sergio Manzetti am 15 Feb. 2018
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

Akzeptierte Antwort

Karan Gill
Karan Gill am 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 Kommentare
Sergio Manzetti
Sergio Manzetti am 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 am 13 Feb. 2018
What do you mean by "other methods"?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Sergio Manzetti
Sergio Manzetti am 14 Feb. 2018
Wolfram alpha, it solves it without any problems.
  2 Kommentare
Sergio Manzetti
Sergio Manzetti am 14 Feb. 2018
Thanks
Karan Gill
Karan Gill am 14 Feb. 2018
Bearbeitet: Karan Gill am 14 Feb. 2018
Is this what you tried? Didn't work for me.
Could you post your input to Wolfram?

Melden Sie sich an, um zu kommentieren.


Sergio Manzetti
Sergio Manzetti am 15 Feb. 2018
Bearbeitet: Sergio Manzetti am 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 Kommentare
Karan Gill
Karan Gill am 15 Feb. 2018
Thanks for catching that. I also noticed the third condition is different.
Torsten
Torsten am 15 Feb. 2018
... and I'm surprised that the solution does not depend on "a".

Melden Sie sich an, um zu kommentieren.


Sergio Manzetti
Sergio Manzetti am 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 Kommentare
Karan Gill
Karan Gill am 15 Feb. 2018
Thanks for the clarifications. I'll investigate. Note that cond3 is different in your two codes.
Sergio Manzetti
Sergio Manzetti am 15 Feb. 2018
Bearbeitet: Sergio Manzetti am 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?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by