FindRoot with two equations
- To: mathgroup at smc.vnet.net
- Subject: [mg24885] FindRoot with two equations
- From: AES <siegman at stanford.edu>
- Date: Sat, 19 Aug 2000 04:45:57 -0400 (EDT)
- Organization: Stanford University
- Sender: owner-wri-mathgroup at wolfram.com
I'm working with a lengthy function fC that contains many variables x1,
x2, x3, . . ., all purely real, but with some explicit I's in the
formula (the "Sqrt[-1]" kind of I).
I want to set the variables x3, x4, and upward to fixed values, and then
solve for values of x1, x2 that make f=0.
I break fC into its real and imaginary parts that are functions of x1
and x2 only by creating a rule
myValues = {x3->x30, x4->x40, etc}
and then breaking fC into real and imaginary parts using [1]
fR[x1_, x2_] = ComplexExpand[Re[fC]] /. myValues
fI[x1_, x2_] = ComplexExpand[Im[fC]] /. myValues
At this point I should have two equations in two unknowns, so I try
FindRoot[{ fR[x1, x2] == 0, fI[x1, x2] == 0}, {x1, x10}, {x2, x20}]
Several hours of messing with different approaches to this produce
different variations on the error message
FindRoot :: "frnum": "Function is not a length 2 list of
numbers at (X1, x2) = (x10, x20)"
I've done all the checks on my formulas and expressions I can think of
-- is there some secret I'm missing here?
Thanks siegman at stanford.edu
[1] As a cranky side note, there must a special slot somewhere for
whoever thought up the ComplexExpand[Re[fC]] notation -- instead of the
much more intuitive syntax Re[ComplexExpand[fC]] -- and then (so far as
I can find) documented it nowhere in the Mathematica manual or Help messages.