       Re: Find max of a Find root function

• To: mathgroup at smc.vnet.net
• Subject: [mg113761] Re: Find max of a Find root function
• From: Bob Hanlon <hanlonr at cox.net>
• Date: Thu, 11 Nov 2010 06:09:16 -0500 (EST)

```Your e-mail appears to have been garbled, but everything works after fixing that. Start with a fresh kernel.

f[a_?NumberQ] := x /.
Last[FindRoot[x  == Cos[a x],
{x, .4}]]

f

0.39004

Plot[f[x], {x, 2, 3}]

FindMaximum[{f[a], 2 <= a <= 3}, {a, 3}]

{0.514933, {a -> 2.}}

FindMaximum[{f[a], 2 <= a <= 3}, a]

{0.514933, {a -> 2.}}

NMaximize[{f[a], 2 <= a <= 3}, a]

{0.514933, {a -> 2.}}

I recommend that you use NumericQ rather than NumberQ

NumberQ /@ {Pi, E, GoldenRatio}

{False, False, False}

NumericQ /@ {Pi, E, GoldenRatio}

{True, True, True}

Bob Hanlon

---- "Van Peursem wrote:

=============
Can someone please assist me with the following sample problem.  Bottom line is that I'd like to use the FindRoot function to numerically solve an equation, that involves a parameter.  I'd then like to use the Findmax function that would yield the largest root for a specified range of the parameter.  Any help would be appreciated.  Thanks

Dan
I first define the function
f[a_?NumberQ]:=x/.Last[FindRoot[xSCos[a x],{x,.4}]]

and it evaluates nicely.

f
0.39004

It even graphs nicely.

Plot[f[x],{x,2,3}]
[cid:image002.png at 01CB8019.CA736910]

But it doesn't like me asking for a max...

FindMaximum[{f[a],2=A3a=A33},{a,3}]

The errors I get are the following

FindRoot::nlnum :  The function value {1. -1. Cos[1. a]} is not a list of numbers with dimensions {1} at {x} = {1.}. ?
ReplaceAll::reps :  {FindRoot[xSCos[a x],{x,1}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. ?
FindRoot::nlnum :  The function value {1. -1. Cos[1. a]} is not a list of numbers with dimensions {1} at {x} = {1.}. ?
ReplaceAll::reps :  {FindRoot[xSCos[a x],{x,1}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. ?
FindRoot::nlnum :  The function value {1. -1. Cos[1. a]} is not a list of numbers with dimensions {1} at {x} = {1.}. ?
General::stop :  Further output of FindRoot::nlnum will be suppressed during this calculation. ?
ReplaceAll::reps :  {FindRoot[xSCos[a x],{x,1}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. ?
General::stop :  Further output of ReplaceAll::reps will be suppressed during this calculation. ?
{-0.887727,{a=AE3.}}

```

• Prev by Date: Re: 2-D Fourier Transform?
• Next by Date: occasional problems with exporting to GIF, Unable to communicate
• Previous by thread: Find max of a Find root function
• Next by thread: Re: FindMinimum and Module