0
$\begingroup$

I am trying to solve a ODE related to its boundary value with NDSolve

NDSolve[
  {f'''[x] + 1/2*f[x]*f''[x] + f''[0] == 0, 
   f'[0] == 0, f[0] == 0, f'[1000] == 1}, 
  f, {x, 0, 10}]

The error message is:

NDSolve::litarg: To avoid possible ambiguity, the arguments of the dependent variable in {(f^′′)[0]+1/2 f[η] (f^′′)[η]+(f^(3))[η]==0} should literally match the independent variables.

I guess the issue is that I cannot define the boundary value within the equation in this way. How could I add this term into equation and solve it?

$\endgroup$
  • 1
    $\begingroup$ Your ode do not make too much sense. What is f''[0] doing in the ODE itself? This is a constant. So you could just as well write NDSolve[{f'''[x]+1/2*f[x]*f''[x]+c==0..... or may be you meant to have it in the B.C. but then you have too many boundary conditions $\endgroup$ – Nasser Dec 17 '17 at 23:11
  • $\begingroup$ f''[0] is unknown. The ODE is still with three boundary conditions $\endgroup$ – silentdragon Dec 17 '17 at 23:18
  • $\begingroup$ You have 3rd order ODE, and you have given 3 boundary conditions already. $\endgroup$ – Nasser Dec 17 '17 at 23:21
  • $\begingroup$ Yes. BCs are enough to solve the ODE. However, f''[0] is also involved into the equation. $\endgroup$ – silentdragon Dec 17 '17 at 23:25
  • 1
    $\begingroup$ Your ODE is equivalent to $f'''(x)+f(x)f''(x)/2+c=0$ with the boundary conditions $f'(0)=f(0)=0$, $f'(1000)=1$ and $f''(0)=0$. So it is equivalent to a third ODE with four BCs. I don't think there is a solution for an arbitrary $c$. Even if there were, you cannot solve numerically a problem with an unspecified BC (and thus not your equivalent problem either). $\endgroup$ – anderstood Dec 17 '17 at 23:54
1
$\begingroup$

You get a solution when searching for f''[0]==c

g[y_?NumericQ, c_?NumericQ] := f[y] /. First@
     NDSolve[{f'''[x] + 1/2*f[x]*f''[x] + c == 0, f'[0] == 0, f[0] == 0,
              f''[0] == c}, f, {x, 0, 1000}]

h[y_?NumericQ, c_?NumericQ] := f'[y] /. First@
     NDSolve[{f'''[x] + 1/2*f[x]*f''[x] + c == 0, f'[0] == 0, f[0] == 0,
              f''[0] == c}, f, {x, 0, 1000}]

cfr = c /. First@FindRoot[h[1000, c] == 1, {c, -.03}, WorkingPrecision -> 20, 
                     AccuracyGoal -> 8, PrecisionGoal -> 8]

(*    -0.025783801817875997941    *)

h[1000, cfr]

(*    1.    *)

Plot[g[y, cfr], {y, 0, 10}, GridLines -> Automatic, PlotStyle -> Red]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.