Re: nested SetDelayed
- To: mathgroup at smc.vnet.net
- Subject: [mg113382] Re: nested SetDelayed
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Tue, 26 Oct 2010 05:34:31 -0400 (EDT)
Numeric functions should be restricted to numeric arguments.
f[v_, k_] := Sin[v*k]
test[v_?NumericQ] :=
NIntegrate[f[v, k], {k, 0, Pi}]
FindRoot[test[x] == 1, {x, 1}]
{x -> 1.37697}
test[x] /. %
1.
Bob Hanlon
---- O <kakabomba at gmail.com> wrote:
=============
hello,
maybe somebody can explain what i'm doing wrong in this SIMPLE
example:
In[1] := f[v_, k_] := Sin[v*k]
In[2] := test[v_] := NIntegrate[f[v, k], {k, 0, Pi}]
In[3] := FindRoot[test[x] == 1, {x, 1}]
I have NIntegrate errors:
NIntegrate::inumr: The integrand Sin[k x] has evaluated to non-
numerical values for all sampling points in the region with boundaries
{{0,3.14159}}. >>
NIntegrate::inumr: The integrand k Cos[k x] has evaluated to non-
numerical values for all sampling points in the region with boundaries
{{0,3.14159}}. >>
NIntegrate::inumr: The integrand k Cos[k x] has evaluated to non-
numerical values for all sampling points in the region with boundaries
{{0,3.14159}}. >>
General::stop: Further output of NIntegrate::inumr will be suppressed
during this calculation. >>
and CORRECT answer:
Out[3] = {x -> 1.37697}
Why expression `test` is evaluated with nonnumerical arguments??
I guess my VisualBasic oriented brain can't understand how SetDelayed
work and how i should use it.
Thanks