MathGroup Archive 2008

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

Search the Archive

Re: Two FindRoot questions

On 6/23/08 at 2:48 AM, aaronfude at (Aaron Fude) wrote:

>These are not FindRoot questions, per se...

>Here's a simple example which I want to ask three questions about:

>f[k_] := x /. FindRoot[x^2 + k, {x, 0, 10}]; f[-10] Plot[f[k],
>{k, -10, 10}]

>First, I want the plot to only show where there exists a root. Is
>the right solution to make f[] return Null?

=46or any continuous function, it is sufficient to show the
function is negative at some point and positive at some other
point to show a root exists. Rather than plot the function, I
would use FindInstant, i.e.

In[19]:= FindInstance[x^2 - 10 < 0, x]

Out[19]= {{x->0}}

In[20]:= FindInstance[x^2 - 10 > 0, x]

Out[20]= {{x->Sqrt[11]}}

which shows a root to x^2 -10 has to exist between x = 0 and x = Sqrt[11]

>How do I make f[] return Null? (Is there a way to "catch" the warnings?)

You can make any function return Null by simply defining the
arguments for which it should return Null. But this probably
isn't something you want to do.

Warning and error messages may be "caught" using the built-in
function Check. See the documentation for examples of how to use
this function.

>Finally, I need to solve my equations to 20 digits. How do I do
>that? I've read about Accuracy and Precision but it didn't help.

Simply setting WorkingPrecision to the number of digits you want
will do this when you provide exact numbers for arguments. For example

In[21]:= g[k_] :=
  x /. FindRoot[x^2 + k, {x, 0, 10}, WorkingPrecision -> 20]

In[22]:= g[-10]

Out[22]= 3.1622776601683793320

Note, this will generate an error message if you give k as a
machine precision number. This error message can be suppressed
using Quiet

  • Prev by Date: ParameterCITable vs. ParameterConfidenceRegion: rectangular vs.
  • Next by Date: Mathematica upgrade to 6.0.3
  • Previous by thread: Re: Re: Two FindRoot questions
  • Next by thread: Re: Two FindRoot questions