An Improved Shooting Method Applied
to the Blasius Problem
Author's Data: Housam Binous
Department of Chemical Engineering
National Institute of Applied Sciences and Technology
Tunis, TUNISIA
Email: binoushousam@yahoo.com

Classic Approach of Professor Brian Higgins, U C Davis

MyODE[ξ_] := 
      NDSolve[{D[
              f[η], {η, 3}] ==  -1/
                2 f[η] f''[η], 
f[
              0] ==  0, f'[0] ==  
            0, f''[0] ==  ξ}, 
        f[η], {η, 0, 7}]
bc[ξ_?NumericQ] := 
      First[D[f[η] /. MyODE[ξ], {η, 1}] /. η ->  
            7]
FindRoot[bc[ξ] ==  1, {ξ, 0.001}] // Timing

D[f[η] /. MyODE[0.33209637030937`], {η, 1}]

Plot[%, {η, 0, 7}, 
      PlotStyle ->  RGBColor[1, 0, 0]]

New Approach of Dr. Housam Binous, INSAT, is, depending on computer you are using, more than two times faster. Using NDSolve`Reinitialize economises computational time. Indeed, one needs to solve the same differential equation for many different initial conditions in the shooting method for boundary value problems.

state =  
        First[NDSolve`ProcessEquations[{D[
                  f[η], {η, 3}] ==  -1/
                    2 f[η] f''[η], 
f[
                  0] ==  0, f'[0] ==  
                0, f''[0] ==  0.1}, 
            f[η], η]];
newstate[ξ_] := 
      Module[{state1, sol1}, 
        state1 = 
          First[NDSolve`Reinitialize[
              state,  {f[0] ==  0, f'[0] ==  
                  0, f''[0] ==  ξ}]]; 
        NDSolve`Iterate[state1,  7]; 
        sol  =  NDSolve`ProcessSolutions[state1]]
bc[ξ_?NumericQ] := 
      D[f[η] /. newstate[ξ], {η, 1}] /. η ->  
          7
FindRoot[ bc[ξ] ==  1, {ξ, 0.2}] // Timing

D[f[η] /. newstate[0.33209637030937`], {η, 1}]

Plot[%, {η, 0, 7}, 
      PlotStyle ->  RGBColor[1, 0, 0]]