# 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)=1This 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 conditionsOut[1]={}
4 months ago
10 Replies
 I suggest you try solving it without the initial and boundary conditions and then apply them to the solution you get.
4 months ago
 Michael Rogers 1 Vote You have four conditions and three degrees of freedom. There may not be a solution.
4 months ago
 Frank Kampas 1 Vote 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)}} 
4 months 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.
4 months 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.
4 months 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} *) 
4 months ago
 Ok, I will try that, thank you