Message Boards Message Boards

Solve third order non-linear differential equation?

GROUPS:

I am trying to find the analytical solution of the following 3rd order non-linear differential equation in Mathematica but I get the error message:

DSolve::bvfail: For some branches of the general solution, unable to solve the conditions.

Differential equation: a*(f'(x))^2+f'''(x)=0 with initial and boundary conditions f(0)=0, f'(0)=0, f(1)=1, f''(1)=1

This how I input it in Mathematica and the output. Please any suggestions how to make it work.

In[1]: DSolve[{a (f'[x])^2+f'''[x]==0, f[0]=0, f'[0]==0,f[1]=1,f''[1]=0},f[x],x]

... DSolve: For some branches of the general solution, unable to solve for the conditions

Out[1]={}

POSTED BY: Georgios Pasias
Answer
1 month ago

I suggest you try solving it without the initial and boundary conditions and then apply them to the solution you get.

POSTED BY: Frank Kampas
Answer
1 month ago

You have four conditions and three degrees of freedom. There may not be a solution.

POSTED BY: Michael Rogers
Answer
27 days ago
In[10]:= DSolve[a f'[x]^2 + f'''[x] == 0, f[x], x]

Out[10]= {{f[x] -> 
   C[3] - (6^(2/3)
      WeierstrassZeta[((-a)^(1/3) (x + C[1]))/6^(
      1/3), {0, C[2]}])/(-a)^(2/3)}}
POSTED BY: Frank Kampas
Answer
26 days ago

Thank you for your answer. I need to find the constants a,C[1],C[2],C[3] though, otherwise I cant use the solution.

I will input the solution in matlab and find f(x) from zero to one. I did it numerically but I need to find the exact solution for more accuracy.

Any suggestions of how to find the constants will be appreciated.

Thank you again for your help.

POSTED BY: Georgios Pasias
Answer
26 days ago

You have four boundary conditions but, as Michael Rogers said, there are only 3 constants of integration. I suggest that you try DSolve with only 3 boundary conditions.

POSTED BY: Frank Kampas
Answer
26 days ago

Can you say what the constants from the numerical solution are approximately?

....

OK, I found some right away using RandomComplex with FindRoot:

{a -> 56.22778029126074` + 3.740551142700798`*^-14 I, 
 c[1] -> -0.7096774193548387` - 0.11174521339154064` I, 
 c[2] -> -95.41801151976168` + 129.84673071733812` I, 
 c[3] -> 0.7096774193548386` - 0.11174521339154053` I}

Assuming these are close to what you want (there may be many solutions), then the following can be used to increase their precision:

{dsol} = DSolve[a f'[x]^2 + f'''[x] == 0, f, x, GeneratedParameters -> c];
bcsys = {f[0] == 0, f'[0] == 0, f[1] == 1, f''[1] == 0} /. dsol;  (* BC system *)
vars = {a, c[1], c[2], c[3]};
init = {a -> 56.22778029126074` + 3.740551142700798`*^-14 I, 
   c[1] -> -0.7096774193548387` - 0.11174521339154064` I, 
   c[2] -> -95.41801151976168` + 129.84673071733812` I, 
   c[3] -> 0.7096774193548386` - 0.11174521339154053` I};
prec = 32;   (* desired precision *)
nparam = FindRoot[bcsys, Thread@{vars, vars /. init}, WorkingPrecision -> prec]
bcsys /. Equal -> Subtract /. nparam // Abs
(* 
  new roots:
  {a -> 56.227780291260753368416425986923 - 
     1.6078204829418050036920493892578*10^-29 I, 
   c[1] -> -0.70967741935483870967741935483880 - 
     0.11174521339154047055015782848423 I, 
   c[2] -> -95.418011519761677541078344370704 + 
     129.84673071733781256688742233049 I, 
   c[3] -> 0.70967741935483870967741935483878 - 
     0.11174521339154047055015782848427 I}

  residuals:
  {0.*10^-29, 0.*10^-27, 0.*10^-29, 0.*10^-26}
*)
POSTED BY: Michael Rogers
Answer
26 days ago

Ok, I will try that, thank you

POSTED BY: Georgios Pasias
Answer
26 days ago

If you redefine your function, you might be able to move a into the third boundary condition

POSTED BY: Frank Kampas
Answer
24 days ago

Thank you for all the help so far. I tried the previous solution but I didn't get the expected results so far.

What exactly do you mean by redefining the function?

POSTED BY: Georgios Pasias
Answer
24 days ago

I'm assuming that a is an adjustable parameter needed to fit all the boundary conditions. If you define a function g(x) such that a*f'[x]^2 is g'[x]^2, that should move a to the non-zero boundary condition.

POSTED BY: Frank Kampas
Answer
24 days ago

Group Abstract Group Abstract