Re: FindRoot question (number of variables)
- To: mathgroup at smc.vnet.net
- Subject: [mg15761] Re: [mg15743] FindRoot question (number of variables)
- From: BobHanlon at aol.com
- Date: Sun, 7 Feb 1999 02:03:45 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 2/5/99 5:40:57 AM, D_Webb at prodigy.net writes:
> This is a simplified example of I problem I have run into with
>FindRoot. Does anybody have any idea why it's doing what it is? And if
>so, how I can make it do what I want, or some other work around? Thanks
>for any info. Here's the example:
>
>define a function that takes one input, and outputs two results:
>
>r[x_] := {x, x^2}
>
>It does what's expected:
>
>r[4]
>{4,16}
>
>Now, find a solution using FindRoot:
>
>FindRoot[ r[x] == {5, 25}, {x, 2}]
>
>returns an error (rather than the obvious answer of x->5):
>
>FindRoot::"frnum":
> "Function {{-3., -21.}} is not a length 1 list of numbers at {x} =
>{2.}."
>
>It seems that FindRoot REQUIRES you to solve for as many variables as
>your function returns. Even though when entered seperatly, r[5] == {5,
>25} returns "true". Why? Any ideas? Or any ideas how to get around this
>"feature" of FindRoot? Thanks for any input.
>
Doug,
r[x_] := {x, x^2};
FindRoot[r[x][[1]] == 5, {x,2}]
{x\[Rule]5.}
FindRoot[r[x][[2]] == 25, {x,2}]
{x\[Rule]5.}
s[x_, y_] := {x+y, x*y};
FindRoot[{s[x,y][[1]] == 11, s[x,y][[2]] == 30}, {x, 2}, {y,3}]
{x\[Rule]5.,y\[Rule]6.}
FindRoot[Evaluate[Thread[
s[x,y] == {11,30}]], {x,2},{y,3}]
{x\[Rule]5.,y\[Rule]6.}
Solve[r[x][[1]] == 5, x]
{{x\[Rule]5}}
Solve[r[x][[2]] == 25, x]
{{x\[Rule]-5},{x\[Rule]5}}
Solve[{s[x,y][[1]] == 11, s[x,y][[2]] == 30},
{x, y}]
{{x\[Rule]5,y\[Rule]6},{x\[Rule]6,y\[Rule]5}}
Solve[Evaluate[Thread[
s[x,y] == {11,30}]], {x,y}]
{{x\[Rule]5,y\[Rule]6},{x\[Rule]6,y\[Rule]5}}
Bob Hanlon