MathGroup Archive 2011

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

Search the Archive

Re: Replacements and NIntegrate

  • To: mathgroup at smc.vnet.net
  • Subject: [mg118607] Re: Replacements and NIntegrate
  • From: Giacomo <jackspam79 at gmail.com>
  • Date: Wed, 4 May 2011 06:34:34 -0400 (EDT)

Wonderful!

Simple idea but... I didn't have it! My bad...

Actually, I was also trying to crate a table with the NIntegrate 
function called with different value of the parameters, and run into the 
same problem (Mathematica trying to evaluate the function before the 
values of the parameters are assigned). This solution makes everything 
much easier!

Thanks!

Giacomo

On 03-May-11 17:15, DrMajorBob wrote:
> Here it is in TWO replacements:
>
> dummy[h[z] z/Sqrt[L^2 + z^2], {z, -L, L}] /. vals /.
>  dummy -> NIntegrate
>
> Bobby
>
> On Tue, 03 May 2011 15:36:34 -0500, Giacomo <jackspam79 at gmail.com> wrote:
>
>> On 03-May-11 13:41, DrMajorBob wrote:
>>> You answered your own question, since
>>>
>>> NIntegrate[ h[z] z / Sqrt[L^2 + z^2]  /.vals, {z, -L /.vals, L/.vals}]
>>>
>>> does the replacements before trying to integrate.
>>>
>>
>> I know, but having to specify three time the same replacement rule in 
>> the same expression doesn't look very elegant. :-)
>>
>>> Or, you could properly define h[z_,a_,b_....] as a function of its 
>>> arguments and parameters and L[a_,b_, ...] as a function of ITS 
>>> arguments, rather than leaving most of them out.
>>
>> Well, L is just a parameter by itself, whose numerical value is 
>> specified in the set of replacement rules "vals" defined at the very 
>> beginning of the notebook. h is indeed a function, but depends on may 
>> "parameters" that are not really "variables". I don't see it 
>> practical (nor clear from a logical point of view) to specify them as 
>> variables...
>>
>> Thanks anyway!
>>
>> Giacomo
>>
>>>
>>>
>>> It's generally a good idea to define functions with ALL their 
>>> dependencies obvious in the definition. It leads to less confusion.
>>>
>>> Bobby
>>>
>>> On Tue, 03 May 2011 04:44:43 -0500, Giacomo Ciani 
>>> <jackspam79 at gmail.com> wrote:
>>>
>>>> Hi all,
>>>>
>>>> I've been reading quite a bit in the Mathematica docs and in this
>>>> newsgroup, but didn't find (or didn't recognize...) an answer to my
>>>> problem.
>>>>
>>>> I want to evaluate the following expression:
>>>>
>>>> NIntegrate[h[z] z/Sqrt[L^2 + z^2], {z, -L, L}]
>>>>
>>>> where h[z] has a delayed value set previously in the notebook. Also, I
>>>> have previously defined a set of replacement rules in the form:
>>>>
>>>> vals = {a->1, b->2, ec....}
>>>>
>>>> to be used to specify the numerical values of the various parameters
>>>> (including those present in the delayed value of h[z]).
>>>>
>>>> As for now, the only (brute force) way I found to have my expression
>>>> correctly evaluated is to apply replacement rules separately to each
>>>> argument of NIntegrate (including integration limits):
>>>>
>>>> NIntegrate[ h[z] z / Sqrt[L^2 + z^2]  /.vals, {z, -L /.vals, L/.vals}]
>>>>
>>>> I think you agree with me that this does not look very elegant.
>>>> Instead, I would like to be able to write something like this:
>>>>
>>>> NIntegrate[h[z] z/Sqrt[L^2 + z^2], {z, -L, L}]/.vals
>>>>
>>>> I know this can't work, as Mathematica tries to evaluate NIntegrate
>>>> and then apply the replacement rules... but how can I ask Mathematica
>>>> to apply all the replacement rules and delayed values to an expression
>>>> without (or before) actually trying to evaluate it?
>>>>
>>>> I found a lot of commands to hold the function from evaluating the
>>>> arguments, while I need pretty much the opposite...
>>>>
>>>> Maybe there is something very simple I am overlooking...
>>>>
>>>> Thanks
>>>>
>>>> Giacomo
>>>>
>>>
>>>
>>
>
>



  • Prev by Date: Re: Replacements and NIntegrate
  • Next by Date: Re: Huge file for a several-line plot
  • Previous by thread: Re: Replacements and NIntegrate
  • Next by thread: Re: Replacements and NIntegrate