Re: Partial evaulation of function terms
- To: mathgroup at smc.vnet.net
- Subject: [mg53256] Re: [mg53230] Partial evaulation of function terms
- From: yehuda ben-shimol <benshimo at bgu.ac.il>
- Date: Mon, 3 Jan 2005 04:29:32 -0500 (EST)
- References: <200501020912.EAA27721@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Erich, Since Mathematica works with expressions of the form Head[Body] the ParFun[{1,1/2},220] is only the head. I couldn't figure out how to get the desired effect elegantly without entering t to the list of argument or remove it totally from the list of argument (both yield the same result). Try to enter t a an argument ParFun[amps_, freq_, t_] := Sum[amps[[i]]*Sin[2*Pi*freq* i*t], {i, Length[amps]}] Then ParFun[{1, 1/2}, 220, t] // InputForm Will yield Sin[440*Pi*t] + Sin[880*Pi*t]/2 For the second possibility omit t from the list of arguments ParFun[amps_,freq_]:=Sum[amps[[i]] Sin[2 Pi freq i t],{i,Length[amps]}] will do the same but here you must avoid defining or using t prior to this definition yehuda Erich Neuwirth wrote: >I have the following function definition > >ParFun[amps_, freq_] := Function[t, Sum[amps[[i]]*Sin[2*Pi*freq*i*t], { > i, Length[amps]}]] > >Then, the following works: > >ParFun[{1,1/2},220][t]//InputForm >Sin[440*Pi*t] + Sin[880*Pi*t]/2 > >but >ParFun[{1,1/2},220]//InputForm > yields >Function[t$, Sum[{1, 1/2}[[i]]*Sin[2*Pi*220*i*t$], {i, Length[{1, 1/2}]}]] > >Is there a way to force Mathematica to evaluate all >subterms which already can be evaluated? >This function will be called in Play very often, so it would make things >much faster if you could assign the function with all possible >constants evaluated to a local variable and do the many calls to the >function for producing numerical values with the "partially >preevaluated" expression. > > >
- References:
- Partial evaulation of function terms
- From: Erich Neuwirth <erich.neuwirth@univie.ac.at>
- Partial evaulation of function terms