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 ] ]-> ]->