       Re: matrix of vectors - super slow

• To: mathgroup at smc.vnet.net
• Subject: [mg88043] Re: matrix of vectors - super slow
• From: David Bailey <dave at Remove_Thisdbailey.co.uk>
• Date: Wed, 23 Apr 2008 04:05:36 -0400 (EDT)
• References: <fukeuf\$s67\$1@smc.vnet.net>

```baaarnes at gmail.com wrote:
> I have an matrix of vectors where each element has to go through
> various transformations, that is each element has to be multiplied by
> a few different matrices.  Is there a more efficient way of doing that
> from what I am currently doing?
>
> n = 128*1;
> m = 128*1;
> R = 1;
> BeamIn = Table[( {
>      {Sqrt/2},
>      {Sqrt/2}
>     } ), {i, n}, {j, m}];
> PBeam = Table[0, {i, n}, {j, m}];
> SBeam = Table[0, {i, n}, {j, m}];
> PInt = Table[0, {i, n}, {j, m}];
> SInt = Table[0, {i, n}, {j, m}];
>
> HalfWave[\[Theta]_] = ( {
>      {Cos[-\[Theta]], Sin[-\[Theta]]},
>      {-Sin[-\[Theta]], Cos[-\[Theta]]}
>     } ).( {
>      {1, 0},
>      {0, Exp[-I \[Pi]]}
>     } ).( {
>      {Cos[\[Theta]], Sin[\[Theta]]},
>      {-Sin[\[Theta]], Cos[\[Theta]]}
>     } );
> QuarterWave[\[Theta]_] = ( {
>      {Cos[-\[Theta]], Sin[-\[Theta]]},
>      {-Sin[-\[Theta]], Cos[-\[Theta]]}
>     } ).( {
>      {1, 0},
>      {0, Exp[-I \[Pi]/2]}
>     } ).( {
>      {Cos[\[Theta]], Sin[\[Theta]]},
>      {-Sin[\[Theta]], Cos[\[Theta]]}
>     } );
> PPol = ( {
>     {1, 0},
>     {0, 0}
>    } );
> SPol = ( {
>     {0, 0},
>     {0, 1}
>    } );
> LaserRod[TT_, \[Theta]_, Q_] = ( {
>      {Cos[-\[Theta]], Sin[-\[Theta]]},
>      {-Sin[-\[Theta]], Cos[-\[Theta]]}
>     } ).( {
>      {Exp[-I *2.8 *TT^2*Q], 0},
>      {0, Exp[I *0.4 *TT^2* Q]}
>     } ).( {
>      {Cos[\[Theta]], Sin[\[Theta]]},
>      {-Sin[\[Theta]], Cos[\[Theta]]}
>     } );
>
> For[i = 1, i <= n, i++,
>   For[j = 1, j <= m, j++,
>     x = R ((2 i - n) - 1);
>     y = R ((2 j - m) - 1);
>     r = Sqrt[x^2 + y^2];
>     \[Theta] = ArcTan[y/x];
>     PBeam[[i, j]] =
>      PPol.LaserRod[r, \[Theta], 1*10^-3].QuarterWave[\[Pi]/
>        2].LaserRod[r, \[Theta], 1*10^-3].PPol.BeamIn[[i, j]];
>     SBeam[[i, j]] =
>      SPol.LaserRod[r, \[Theta], 1*10^-3].QuarterWave[\[Pi]/
>        2].LaserRod[r, \[Theta], 1*10^-3].PPol.BeamIn[[i, j]];
>     PInt[[i, j]] = Norm[PBeam[[i, j]][[1, 1]]]^2;
>     SInt[[i, j]] = Norm[SBeam[[i, j]][[2, 1]]]^2;
>     ];
>   ];
> ListDensityPlot[PInt]
> ListDensityPlot[SInt]
>
> Cheers
>
Make absolutely sure your matrices are composed of Real or Complex
numbers by applying N[..] as necessary. Otherwise there is a danger of
performing arithmetic on exact expressions composed of surds, fractions
and factors of Pi. This can generate extremely complicated expressions
which then collapse silently to real numbers as you plot them!

David Bailey
http://www.dbaileyconsultancy.co.uk

```

• Prev by Date: Re: matrix of vectors - super slow
• Next by Date: Re: Wolfram User Interface Research?
• Previous by thread: Re: matrix of vectors - super slow
• Next by thread: Create array of data files