Evaluate and HoldAll
- To: mathgroup at smc.vnet.net
- Subject: [mg24219] Evaluate and HoldAll
- From: Andre Heinemann <andre at aflo4.ifw-dresden.de>
- Date: Sat, 1 Jul 2000 03:21:50 -0400 (EDT)
- Organization: IFW
- Sender: owner-wri-mathgroup at wolfram.com
Hi mathgroup
Attributes[NIntegrate] gives: {HoldAll, Protected}
In THE BOOK (or online Help) one can find:
*****************************************************************************
*You can use Evaluate to evaluate the arguments of a HoldAll function in
a controlled way. *
*****************************************************************************
So I built:
rseq = Sequence[a1, a2, a3]
lseq = Sequence[a1_?NumericQ, a2_?NumericQ, a3_?NumericQ]
My Function f[r, rseq]
gives the output: (e.g.) a1 Exp[a2 - a3 r]
(I know that I can use Integrate here, instead of Nintegrate but it is
for testing)
Clear[test]
test[q_, lseq] := NIntegrate[Evaluate[f[r, rseq]], {r, 0, 10^5}]
test[0.1, 1, 0.2, 0.5 ] presented:
NIntegrate::"inum" : ... Integrand ... is not numerical at r = .... and
so on
NIntegrate[f[r, rseq],{r, 0, 10^5}]
Ok, I can see that the integrand is not numerical and so I tried:
Clear[test]
test[q_, lseq] := NIntegrate[a1 Exp[a2 - a3 r] , {r, 0, 10^5}] and
test[0.1, 1, 0.2, 0.5 ] works very well and finds: 2.442805516320 as the
answer !
What is the point here ? I think my understanding of Evaluate[] is false
but
how can I solve the problem ?
I would be glad to have an explanation or a hint.
Andre
--
+-----------------------------------+-----------------------------+
| mobil tel. -------------- | Andre Heinemann |
| priv. tel. (0351) 25 23 574 | Institut fuer Festkoerper- |
| Tel.: (++49) (351) 4659 - 686 | und Werkstofforschung |
| Fax: (++49) (351) 4659 - 452 | Helmholtzstr. 20, R2.140 |
| email: a.heinemann at ifw-dresden.de | Postfach 27 00 16 |
| | D-01171 Dresden (Germany) |
+-----------------------------------+-----------------------------+