MathGroup Archive 2000

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

Search the Archive

Re: using FindRoot with a list of starting values

In a message dated 10/21/2000 3:34:44 PM, SLu at writes:

>Here is the problem.  I need to solve a simultaneous equation system using
>FindRoot.  For example, there are 3 equations and 3 unknowns,
>FindRoot[{eq1, eq2, eq3},{x,x0},{y,y0},{z,z0}]
>However, when I have many unknowns, it is awkward to type in all the
>starting values by hand.  Also, if I need to change the starting values
>the middle of the program, or even change the number of unknowns to solve
>for, I need to find out a more elegant way to provide inputs to FindRoot.
>I tried the following.  First, I built a list,
>Then, I use the command
>It did not work because start is a Table.
>Can someone teach me a trick to make it work?

start = {#, 1.0} & /@ {x, y, z};

eqn1 = 5x + 3y - 6z == 0;

eqn2 = 2x + 3y^2 - 7 == 0;

eqn3 = 7x - 5y + 2z == 0;

soln = FindRoot[{eqn1, eqn2, eqn3}, Evaluate[Sequence @@ start]]

{x -> 0.6375724203514085, y -> 1.3814069107613853, z -> 1.2220138056735332}

And @@ ((Chop[#[[1]] /. soln] == 0) & /@ {eqn1, eqn2, eqn3})


Bob Hanlon

  • Prev by Date: Re: TableForm vs. Slot
  • Next by Date: Re: Fourier Question
  • Previous by thread: using FindRoot with a list of starting values
  • Next by thread: Help, Please Help: Laplace Transform