       Re: How to solve the Blasius eq. in Mathematica?

• To: mathgroup at smc.vnet.net
• Subject: [mg14122] Re: How to solve the Blasius eq. in Mathematica?
• From: lawry at maths.ox.ac.uk (James Lawry)
• Date: Fri, 25 Sep 1998 03:15:46 -0400
• Organization: Oxford Centre for Industrial & Applied Mathematics
• References: <6ud20f\$16g@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Jason Krywicki <krywicki_NOSPAM_ at bucknell.edu> wrote:
>I was wondering what the best way would be to go about solving
>
>   2f''' + ff'' == 0  f==0, f'==0,f'[inf]==1
>
>in Mathematica would be? I guess NDSolve, but is there anything special
>i have to do?

Yes. First, because the equation is nonlinear and the boundary
conditions are not all imposed at one point, the built-in NDSolve
cannot do the whole problem for you and you will need to use something
like a shooting method using NDSolve in combination with FindRoot:
effectively you guess a value of f'', solve the differential
equation with the three conditions at 0, and then use FindRoot to vary
the value of f'' until it matches the boundary condition at the
other end.

Second, the boundary condition imposed at infinity causes difficulty to
Mathematica. Two ways around this are: either transform the independent
variable (e.g. with t = 1 - Exp[-x]) so that x=infinity corresponds to
a finite value in the new variable; or else (the quick and dirty way)
decide that some finite value is "far enough away" to be considered
infinity. In the case of your equation, x=10 is amply far enough away
for several digits precision.

A simple implementation of a shooting routine is available from my
webpage at http://users.ox.ac.uk/~chri0220/software/DShoot.m

Using it, the command to solve your equation is
soln = DShoot[{2 f'''[x] + f[x] f''[x] == 0, f == 0, f' == 0},
f' == 1, f, {x, 0, 10}, {f'', 0.3, 0.5}]

(where I have used 10 in place of infinity and given the range (0.3,
0.5) as two initial values for FindRoot to use to find the correct
value of f''. The solution returned is

{{f -> InterpolatingFunction[{{0., 10.}}, <>]}, f'' == 0.332058}

so the root for f'' satisfying the condition f' == 1 has been
found, and plotting f'[x] with

Plot[Evaluate[(f /. soln[])'[x]], {x, 0, 10}, PlotRange  -> {0, 1}]

shows the familar viscous boundary layer shape. (Always worth checking,
as using shooting and a finite boundary condition could produce
spurious results.)

James Lawry.

```

• Prev by Date: Bad error messages
• Next by Date: Re: Problem with WMF
• Previous by thread: How to solve the Blasius eq. in Mathematica?
• Next by thread: 3D Object from Listplot?