NDSolve, FindRoot and shooting method
- To: mathgroup at smc.vnet.net
- Subject: [mg57430] NDSolve, FindRoot and shooting method
- From: <topolog at gazeta.pl>
- Date: Fri, 27 May 2005 04:58:03 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Dear Mathematica Users!
In Mathematica 4.0 I was able to implement the shooting method to
solve the following equation:
EQJ = J1(W,z)*v(z) + J2(W,z)*v(z) + J3(W,z)*v(z) == 0,
where v(z) is the function to be found, and J1, J2, J3 are
coefficients dependent of z-coordinate and a parameter W.
In Mathematica 5.1 valid lines of the code should be modified and
look like:
dYdX[W_?NumberQ] := EQJ; (* the equation *)
Y1X1 = {v[z1] == BCV1, v'[z2] == BCV2}; (* boundary conditions *)
eqset = Join[{dYdX[W] == 0.}, Y1X1]; (* the set of the above *)
(* function that solves eqset for the specified W *)
ndsolut[W_?NumberQ] := NDSolve[eqset, v, {z, z1, z2}][[1, 1, 2]];
(* searching for W that satisfies another boundary condition *)
FindRoot[ndsolut[W][z2] == BCV3, {W, W1, W2}]
Unfortunately I get messages of sort
SetDelayed::write: Tag Plus in [...] is Protected.
NDSolve::ndode: Input is not an ordinary differential equation.
And I am confused ... Could you help me, please?
Thank you and kind regards.
Rafal Kosinski