Re: Matrices as operators
- To: mathgroup at smc.vnet.net
- Subject: [mg123217] Re: Matrices as operators
- From: Chris Young <cy56 at comcast.net>
- Date: Sun, 27 Nov 2011 04:12:40 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jaal4e$12d$1@smc.vnet.net> <jaqjn9$oj7$1@smc.vnet.net>
On 2011-11-26 11:48:57 +0000, Ray Koopman said: > This won't try to interpret a number as a function: > > In[1]:= op[mat_, t_] := Map[If[NumericQ@#, #, #@t] &, mat, {-1}] > > In[2]:= op[{{Sin, Cos}, Tan, {Cos, 0, 1}}, t] > > Out[2]= {{Sin[t], Cos[t]}, Tan[t], {Cos[t], 0, 1}} Just discovered a notation I like a lot for pure functions: the standard "tee-arrow" notation can be used wherever a pure function can be used! This is explained on the Help page for "Function", in the "More Information" section. Function[x, body] or # body & can always be converted to the "tee-arrow" form, I believe. The tee-arrow is entered by typing Escape fn Escape. So the matrix-operator function Ix had earlier, op[arr_, t_] := Map[ If[! (NumericQ[#] || StringQ[#]), #[t], # ] &, arr, {-1} ] would become (in input form) op[arr_, t_] := Map[ x \[Function] If[! (NumericQ[x] \[Or] StringQ[x]), x[t], x], arr, {-1} ] Applying this to the test array arr = {{Sin, Cos}, Tan, {Cos, Cos[Cos], 1}, "string"}, we get In[100]:= op2[arr, t] Out[100]= {{Sin[t], Cos[t]}, Tan[t], {Cos[t], Cos[Cos[t]], 1}, "string"} I can't type out the tee-arrow in text form, but it goes where "\[Function]" appears above.