Re: Matrices as operators

*To*: mathgroup at smc.vnet.net*Subject*: [mg123077] Re: Matrices as operators*From*: Oliver Ruebenkoenig <ruebenko at wolfram.com>*Date*: Tue, 22 Nov 2011 07:23:08 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <201111221034.FAA27988@smc.vnet.net>

On Tue, 22 Nov 2011, Ray Koopman wrote: > On Nov 20, 2:34 am, Chris Young <c... at comcast.net> wrote: >> I'd like to be able to abbreviate matrices such as rotation matrices >> so that I don't have to repeat the argument. This way I can pass in >> more complicated arguments and it also shows the structure of the >> transformation more clearly. >> >> Through[( { >> {Cos, -Sin}, >> {Sin, Cos} >> } )[=CE=B8]] >> >> will get me partway there: >> >> Out: {{Cos, -Sin}[=CE=B8], {Sin, Cos}[=CE=B8]} >> >> I have to apply Thread and Through again to finally get what I want: >> >> In: Thread[Through[{{Cos, -Sin}[=CE=B8], {Sin, Cos}[=CE=B8]}]] >> >> Out: {{Cos[=CE=B8], (-Sin)[=CE=B8]}, {Sin[=CE=B8], Cos[=CE=B8]}} >> >> Is there a shortcut way to do this all in one step? >> >> Thanks very much for any help. >> >> Chris Young >> c... at comcast.net > > If you're worried about redundant calculations when the matrices > are bigger than 2 x 2 and the functions are more complicated than > Sin and Cos, try something like > > R[t_] := {{#1,-#2},{#2,#1}}&[Cos@t,Sin@t] > > You could have the expression optimizer even further optimize that Experimental`OptimizeExpression[{{#1, -#2}, {#2, #1}} &[Cos@t, Sin@t]] (That is what happens in Compile) Oliver

**References**:**Re: Matrices as operators***From:*Ray Koopman <koopman@sfu.ca>