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