MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Using FindRoot on a numerical vector-valued function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg41140] Re: [mg41123] Using FindRoot on a numerical vector-valued function
  • From: Bobby Treat <drmajorbob+MathGroup3528 at mailblocks.com>
  • Date: Mon, 5 May 2003 02:43:10 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Here are some examples:

f[a_, b_, c_] := Cross[{a, b, c}, {-1, 1, -1}]
Thread[f[a, b, c] - {0, 0, 0}]
FindRoot[%, {a, -2}, {b, -2}, {c, -2}]
FindRoot[%%, {a, {-1, 1}}, {b, {-1, 1}}, {c, {-1, 1}}]
FindRoot[%%%, {a, -1, 1}, {b, -1, 1}, {c, -1, 1}]

{-b - c, a - c, a + b}
{a -> -2., b -> 2., c -> -2.}
{a -> -1., b -> 1., c -> -1.}
{a -> -1., b -> 1., c -> -1.}

The third call to FindRoot uses an undocumented form of the arguments 
so, although it works, I don't recommend it.

Bobby

-----Original Message-----
From: Randall Beer <beer at eecs.cwru.edu>
To: mathgroup at smc.vnet.net
Subject: [mg41140] [mg41123] Using FindRoot on a numerical vector-valued function

Suppose I have a function F that takes N arguments and returns a
length-N vector: F[1,2,3] => {-1.1,2.08,0.03}.  This function involves
numerically computing an object and then returning certain components 
of
that object, so it cannot be expanded with symbolic arguments (e.g.,
F[x,y,z] will not work).

I need to find the arguments that make F return a vector of all 0s.
That is, I would like to do something like:

FindRoot[F[y1, y2, y3], {y1, -1, 1}, {y2, -1, 1}, {y3, -1, 1}]

Unfortunately, this doesn't work because FindRoot wants 3 things, not a
function returnning a vector of 3 things

I could do

FindRoot[{F1[y1, y2, y3] == 0, F2[y1, y2, y3] == 0, F3[y1, y2, y3] ==
0}, . . .]

but then I would have to numerically recompute the object 3 times.


Any suggestions would be greatly appreciated.


  • Prev by Date: Re: Using InterpolateRoot Function in Mathematica
  • Next by Date: Re: Using FindRoot on a numerical vector-valued function
  • Previous by thread: Using FindRoot on a numerical vector-valued function
  • Next by thread: Re: Using FindRoot on a numerical vector-valued function