RE: FindRoot can NOT handle mixed real and complex variables
- To: mathgroup at smc.vnet.net
- Subject: [mg79966] RE: [mg79899] FindRoot can NOT handle mixed real and complex variables
- From: "Tony Harker" <a.harker at ucl.ac.uk>
- Date: Thu, 9 Aug 2007 06:26:42 -0400 (EDT)
One way is to fudge it so that the number of unknowns and the number of
equations LOOKS right:
FindRoot[{u*BesselJ[1, u]*BesselK[0, w] -
w*BesselK[1, w]*BesselJ[0, u], u^2 + w^2 - g,
Re[g] + 200 + I Re[w]}, {{u, 2.39 + .17 I}, {w,
14.34 I}, {g, -200 + .8 I}}]
Unfortunately, the sneakier trick of creating a new variable z whose real
part is the imaginary part of g, and whose imaginary part is the imaginary
part of w:
FindRoot[{u*BesselJ[1, u]*BesselK[0, w] -
w*BesselK[1, w]*BesselJ[0, u], u^2 + w^2 - g} /. {w -> I Im[z],
g -> -200. + I Re[z]}, {{u, 2.39 + .17 I}, {z, 0.8 + 14.34 I}}]
does not quite work:
FindRoot::lstol: The line search decreased the step size to within \
tolerance specified by AccuracyGoal and PrecisionGoal but was unable \
to find a sufficient decrease in the merit function. You may need \
more than MachinePrecision digits of working precision to meet these \
tolerances.
Perhaps a little tweaking of the options might get this going?
Dr A.H. Harker
Department of Physics and Astronomy
University College London
Gower Street
London
WC1E 6BT
Tel: (44)(0) 2076793404
E: a.harker at ucl.ac.uk
]-> -----Original Message-----
]-> From: AES [mailto:siegman at stanford.edu]
]-> Sent: 08 August 2007 09:53
]-> To: mathgroup at smc.vnet.net
]-> Subject: [mg79899] FindRoot can NOT handle mixed real and
]-> complex variables
]->
]-> I'm (re)posting this as an assertion, not a question,
]-> hoping to rouse a little more interest, since it appears to
]-> be a significant weakness in FindRoot, and a previous post,
]-> rather unusually, brought no satisfactory resolution;
]->
]-> The problem is to find the roots of two complex equations
]->
]-> u * BesselJ[1, u] * BesselK[0, w] == w * BesselK[1, w] *
]-> BesselJ[0, u]
]->
]-> u^2 + w^2 == g
]->
]-> with constraints
]->
]-> Re[g] == <an input value, DN>
]->
]-> Re[w] == 0
]->
]-> So that's two complex (or four real) equations; four real
]-> numbers in the desired output; and at least one solution
]-> exists in general for any choice of DN and can be found
]-> using other methods -- but there appears to be NO WAY (no
]-> straightforward way, anyway) to find it using FindRoot,
]-> -- or even to get FindRoot to tackle the basic problem.
]->
]-> Right????????
]->
]-> ------
]->
]-> [For testing purposes, a sample starting point close to but
]-> not exactly one particular solution, would be DN = -200,
]-> g0 = DN + 0.8 I = -200 +
]-> 0.8 I, u0 = 2.39 + 0.17 I, w0 = 0 + 14.34 I ]
]->
]->