Re: FindRoot/NDSolve problem in VS5
- To: mathgroup at smc.vnet.net
- Subject: [mg54848] Re: FindRoot/NDSolve problem in VS5
- From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
- Date: Fri, 4 Mar 2005 05:07:44 -0500 (EST)
- Organization: Uni Leipzig
- References: <d060tf$kpt$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, a) this is not a multiple shooting solution, this is a simple shooting because a multiple shooting would have additional inner points. b) Try deq = y''[x] - x^2 y[x] == x + x^3; Remove[eqsol] eqsol[s_?NumericQ] := (y[x] /. NDSolve[{deq, y[-1] == 0, y'[-1] == s}, y[x], {x, -1, 1}][[1]]) eqsol[s_?NumericQ, endp_?NumericQ] := eqsol[s] /. x -> endp ss = FindRoot[eqsol[s, 1] == 0, {s, 0, 10}] ysol[x_] = eqsol[s /. ss] Regards Jens "Dr A.H. Harker" <a.harker at ucl.ac.uk> schrieb im Newsbeitrag news:d060tf$kpt$1 at smc.vnet.net... > > Can anybody explain why the following simple illustration of a multiple > shooting solution works under Mathematica V4, but fails under V5.0? > > deq = y''[x] - x^2 y[x] == x + x^3; > eqsol[s_] := NDSolve[{deq, y[-1] == 0, y'[-1] == s}, y[x], {x, -1, 1}] > y[x] /. eqsol[1][[1]] /. x -> 1; > ss = FindRoot[((y[x] /. eqsol[s][[1]] ) /. x -> 1) == 0, {s, 0, 10}] > ysol[x_] = y[x] /. eqsol[s /. ss][[1]] > > To add to the confusion, the following is fine in both versions. > > ch[k_] = y''[x] - k Sqrt[1 + y'[x]^2] == 0 > guess[s_] := NDSolve[{ch[.35], y[0] == 0, y'[0] == s}, y[x], {x, 0, 10}] > ssol = FindRoot[((y[x] /. guess[s][[1]]) /. x -> 10) == 0, {s, -1, -10}] > soln[x_] = y[x] /. guess[s /. ssol][[1]] > > Tony Harker > Department of Physics and Astronomy > University College London > Gower Street > LONDON > WC1E 6BT > (44)(0)207 679 3404 > a.harker at ucl.ac.uk > > >