# Solving a third order ODE in MATLAB

32 次查看（过去 30 天）
Sergio Manzetti 2018-2-9

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 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 个评论显示 1更早的评论隐藏 1更早的评论
Karan Gill 2018-2-13
What do you mean by "other methods"?

### 更多回答（3 个）

Sergio Manzetti 2018-2-14
Wolfram alpha, it solves it without any problems.
##### 2 个评论显示 1更早的评论隐藏 1更早的评论
Karan Gill 2018-2-14

Is this what you tried? Didn't work for me.
Could you post your input to Wolfram?

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 个评论显示 2更早的评论隐藏 2更早的评论
Torsten 2018-2-15
... and I'm surprised that the solution does not depend on "a".

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 个评论显示 1更早的评论隐藏 1更早的评论
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?

### 类别

Help CenterFile Exchange 中查找有关 Common Operations 的更多信息

### Community Treasure Hunt

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

Start Hunting!

Translated by