Re: Not accepting function as parameter
- To: mathgroup at smc.vnet.net
- Subject: [mg71731] Re: Not accepting function as parameter
- From: "dimitris" <dimmechan at yahoo.com>
- Date: Tue, 28 Nov 2006 06:03:35 -0500 (EST)
- References: <ekbmj4$f87$1@smc.vnet.net><ekec3a$dm$1@smc.vnet.net>
Now I learn something!
There is Head Function!
Head[Sin]
Symbol
Head[Sin&]
Function
Head[Sin']
Function
Dimitris
dimitris wrote:
> Head Function???
>
> As far as I know there is not such a head.
>
> Maybe something like the following is more appropriate:
>
> Quit
>
> First here is a list of the Built-in symbols in Mathematica that have
> the the Attribute
> NumericFunction
>
> lst = ToExpression[Select[Names["System`*"],
> MemberQ[Attributes[#1], NumericFunction] & ]]
>
> {Abs, AiryAi, AiryAiPrime, AiryBi, AiryBiPrime, ArcCos, ArcCosh,
> ArcCot,
> ArcCoth, ArcCsc, ArcCsch, ArcSec, ArcSech, ArcSin, ArcSinh, ArcTan,
> ArcTanh, Arg, ArithmeticGeometricMean, BesselI, BesselJ, BesselK,
> BesselY,
> Beta, BetaRegularized, Binomial, Ceiling, ChebyshevT, ChebyshevU,
> Clip,
> Conjugate, Cos, Cosh, Cot, Coth, Csc, Csch, Divide, EllipticE,
> EllipticF,
> EllipticK, EllipticPi, Erf, Erfc, Erfi, Exp, ExpIntegralE,
> ExpIntegralEi,
> Factorial, Factorial2, Fibonacci, Floor, FractionalPart, Gamma,
> GammaRegularized, GegenbauerC, HermiteH, Hypergeometric0F1,
> Hypergeometric0F1Regularized, Hypergeometric1F1,
> Hypergeometric1F1Regularized, Hypergeometric2F1,
> Hypergeometric2F1Regularized, HypergeometricU, Im, IntegerPart,
> JacobiP,
> JacobiZeta, LaguerreL, LerchPhi, Log, LogGamma, LogIntegral,
> MathieuC,
> MathieuCharacteristicA, MathieuCharacteristicB,
> MathieuCharacteristicExponent, MathieuCPrime, MathieuS,
> MathieuSPrime, Max,
> Min, Minus, Mod, Multinomial, Plus, Pochhammer, PolyLog, Power,
> Quotient,
> Re, Rescale, RiemannSiegelTheta, RiemannSiegelZ, Round, Sec, Sech,
> Sign,
> Sin, Sinh, SphericalHarmonicY, Sqrt, Subtract, Tan, Tanh, Times,
> UnitStep,
> Zeta}
>
> (Head & ) /@ lst
>
> {Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol,
> Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol, Symbol,
> Symbol}
>
> Here is an example of function which if the given symbol is an element
> of the list lst.
>
> g[f_] := f[3] /; MemberQ[lst, f]
>
> g[Sin]
> Sin[3]
>
> g[a]
> g[a]
>
> g[Re]
> 3
>
> g[{Sin}]
> g[{Sin}]
>
> So for your function I would suggest the following definition
>
> happy[f_, a_Integer, b_Integer] := Module[{width = (b - a)/1000},
> f[width] /; MemberQ[lst, f]]
>
> happy[Sin, 1, 21]
> N[%]
> happy[Tan, 10, 30]
> N[%]
>
> Sin[1/50]
> 0.01999866669333308
> Tan[1/50]
> 0.020002667093402423
>
> Best Regards
> Dimitris
>
> wooks wrote:
> > This is a piece of experimental code. The function happy does not
> > evaluate whenever I pass f as a parameter as in the example below.
> >
> > Clear[happy]
> > happy[ f_Function, a_Integer, b_Integer] := Module[{width = (b -
> > a)/1000},
> > f[width]];
> >
> > happy[ Sin, 1, 21]
> >
> > I'd be grateful for help.