Re: FindRoot[ NIntegrate[...] ...] works but generates
- To: mathgroup at smc.vnet.net
- Subject: [mg72494] Re: [mg72493] FindRoot[ NIntegrate[...] ...] works but generates
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Wed, 3 Jan 2007 00:50:59 -0500 (EST)
- Reply-to: hanlonr at cox.net
Restrict the definition of integralFunction to numeric arguments.
integralFunction[upperLimit_?NumericQ] :=
NIntegrate[x, {x, 0, upperLimit}];
Bob Hanlon
---- William McHargue <William at McHargue.Org> wrote:
> Hello,
>
> I wish to solve for an integration result to equal a given value while
> varying the upper limit of the integration. It seems a straightforward
> thing to do, and in fact it finds the numerical answer, but it
> generates an error message at the beginning of the root solving
> operation. I create a function to perform a numerical integration with
> a passed upper limit of integration:
>
> In[1]:= integralFunction[upperLimit_] := NIntegrate[x, {x, 0,
> upperLimit}]
>
>
> Then I create a function to find a result of this integration that
> equals a supplied value with the upper limit of integration as the
> independent variable:
>
> In[2]:= rootOfIntegralFunction[solveForValue_] :=
> FindRoot[integralFunction[u] == solveForValue, {u, 1},
> EvaluationMonitor :> Print[u]]
>
>
> (I use the EvaluationMonitor to print the value of "u" as it searches
> for the solution.)
>
> When I execute the following I get an error message, yet it finds the
> correct result:
>
> In[3]:= rootOfIntegralFunction[12.5]
>
> NIntegrate::nlim : x = u is not a valid limit of integration.
> More...
>
> 1.
>
> 13.
>
> 2.2
>
> 6.78182
>
> 4.3982
>
> 5.04117
>
> 5.00017
>
> 5.
>
> 5.
>
> Out[3]= {u->5.}
>
>
>
> If anyone has any insight into this behavior please let me know. Thank
> you!
>
> Bill.
>
--
Bob Hanlon
hanlonr at cox.net