Cannot find solution Of 4th order ODE using dsolve: Warning: Unable to find explicit solution.

1 回表示 (過去 30 日間)
Below is the Code I used to solve 4th order differential equation
but I am gitting warning regarding
clc;
clear all;
syms x v(x) a0 a1 a2 a3 a4 L I E q
assume(L>0)
assume(E>0)
assume(I>0)
ode = I*E*diff(v,x,4) - q == 0
v(x) = a0+ a1*x + a2*(x^2) + a3*(x^3) + a4*(x^4)
Dv = diff(v,x);
D2v = diff(v,x,2);
D3v = diff(v,x,3);
cond1 = v(0) == 0
cond2 = Dv(0) == 0
cond3 = D2v(L) == 0,a2
cond4 = D3v(L) == 0,a3
conds = [cond1 cond2 cond3 cond4]
tSol(x) = dsolve(ode,conds)
Outpt:
Warning: Unable to find explicit solution.
ode(x) =
v(x) =
cond1 =
cond2 =
cond3 =
a2 =
cond4 =
a3 =
conds =
Warning: Unable to find explicit solution.
tSol(x) =
[ empty sym ]
  1 件のコメント
Star Strider
Star Strider 2019 年 8 月 13 日
The problem is most likely your initial conditions, since:
Vsol = dsolve(ode)
produces:
Vsol =
(q*x^4)/(24*E*I) + (C8*x^3)/6 + (C9*x^2)/2 + C10*x + C11
Consider that:
L = solve(cond3, L)
produces:
Warning: Solutions are valid under the following conditions: (3*a3 + 3^(1/2)*(3*a3^2 - 8*a2*a4)^(1/2))/a4 < 0;
(3*a3 - 3^(1/2)*(3*a3^2 - 8*a2*a4)^(1/2))/a4 < 0. To include parameters and conditions in the solution, specify the
'ReturnConditions' value as 'true'.
> In solve>warnIfParams (line 482)
In solve (line 357)
L =
-(3*a3 + 3^(1/2)*(3*a3^2 - 8*a2*a4)^(1/2))/(12*a4)
-(3*a3 - 3^(1/2)*(3*a3^2 - 8*a2*a4)^(1/2))/(12*a4)

サインインしてコメントする。

採用された回答

Jyothis Gireesh
Jyothis Gireesh 2019 年 8 月 19 日
I am assuming here that you want to form an analytical solution to the given 4th order ODE. It may not be considered a good practice to provide a closed form solution for v(x) prior to calling dsolve(). This may also interfere with the solver thereby raising an ‘no explicit solution’ warning.  
You may make use of the modified code attached below
clc;
clear;
syms x v(x) L I E q 
assume(L>0)
assume(E>0)
assume(I>0)
ode = I*E*diff(v,x,4) - q == 0;
Dv = diff(v,x);
D2v = diff(v,x,2);
D3v = diff(v,x,3);
cond1 = v(0) == 0;
cond2 = Dv(0) == 0;
cond3 = D2v(L) == 0;
cond4 = D3v(L) == 0;
  
conds = [cond1 cond2 cond3 cond4];
tSol(x) = dsolve(ode,conds)
  I obtained the solution as
tSol(x) =    
(q*L^2*x^2)/(4*E*I) - (q*L*x^3)/(6*E*I) + (q*x^4)/(24*E*I)
You may also make use of the following documentation if you need any further clarification about the same.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeUtilities for the Solver についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by