Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.soft-sys.math.mathematica > #2082
| From | DrMajorBob <btreat1@austin.rr.com> |
|---|---|
| Newsgroups | comp.soft-sys.math.mathematica |
| Subject | Re: Replacements and NIntegrate |
| Date | 2011-05-04 10:33 +0000 |
| Organization | Steven M. Christensen and Associates, Inc and MathTensor, Inc. |
| Message-ID | <ipra26$sc$1@smc.vnet.net> (permalink) |
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@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@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
>>>
>>
>>
>
--
DrMajorBob@yahoo.com
Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread
Re: Replacements and NIntegrate DrMajorBob <btreat1@austin.rr.com> - 2011-05-04 10:33 +0000
csiph-web