Re: Why is FindRoot[] HoldAll?
- To: mathgroup at smc.vnet.net
- Subject: [mg81983] Re: [mg81957] Why is FindRoot[] HoldAll?
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 8 Oct 2007 00:08:25 -0400 (EDT)
- References: <200710070940.FAA20590@smc.vnet.net> <0933C647-E891-4BF9-9038-96CF5C192798@mimuw.edu.pl> <f831b3d60710070440n5c15ea19s9225fa118c162969@mail.gmail.com>
On 7 Oct 2007, at 20:40, Szabolcs Horv=E1t wrote:
> On 10/7/07, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
>> I am not sure from your message if you are aware of this:
>>
>> FindRoot[NIntegrate[Exp[a x], {x, 0, 1}] == 2, {a, 1}, Evaluated =
->
>> False]
>> {a -> 1.25643}
>>
>
> Thanks for the reply! I did not know about this option. It is a new
> option in Mathematica 6, but it seems to be undocumented (or at least
> I cannot find it anywhere in the documentation).
>
> These plotting functions accept this option too:
> {ContourPlot, ContourPlot3D, DensityPlot, FindRoot, ParametricPlot, \
> ParametricPlot3D, Plot, Plot3D, RegionPlot, RegionPlot3D}
>
> Most of them have the default setting Evaluated -> Automatic (which
> works with FindRoot too, though I have no idea how it decides whether
> to evaluate the argument or not).
>
>> No error messages. Of course, one would expect that using this option
>> will in most cases have a negative impact ton the performance.
>> Why the HoldAll attribute? Well, presumably without the HoldAll
>> attribute the function would always be evaluated irrespective of any
>> option settings so one could not use this approach. Not having the
>> HoldAll or HoldFirst argument means that it will always be evaluated,
>> before the function is applied. having it does not mean that the
>> argument will not be evaluated; it only means it will not be "pre-
>> evaluated". It may still be evaluated by the function itself.
>
> With the Evaluated option, it all makes sense.
>
>>
>> Andrzej Kozlowski
>
> Szabolcs
In version 5.* you could use:
Developer`SetSystemOptions["EvaluateNumericalFunctionArgument" -> False]
In Version 6 this still exists but seems to be overriden by the
setting of the option "Evaluated".
Andrzej
- References:
- Why is FindRoot[] HoldAll?
- From: Szabolcs Horvát <szhorvat@gmail.com>
- Why is FindRoot[] HoldAll?