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$
8
  • 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
    Commented Dec 17, 2017 at 23:11
  • $\begingroup$ f''[0] is unknown. The ODE is still with three boundary conditions $\endgroup$ Commented Dec 17, 2017 at 23:18
  • $\begingroup$ You have 3rd order ODE, and you have given 3 boundary conditions already. $\endgroup$
    – Nasser
    Commented Dec 17, 2017 at 23:21
  • $\begingroup$ Yes. BCs are enough to solve the ODE. However, f''[0] is also involved into the equation. $\endgroup$ Commented Dec 17, 2017 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
    Commented Dec 17, 2017 at 23:54

1 Answer 1

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 and acknowledge you have read our privacy policy.

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