Handling several variables at once during matrix multiplications
- To: mathgroup at smc.vnet.net
- Subject: [mg30913] Handling several variables at once during matrix multiplications
- From: Yasvir Tesiram <y.tesiram at pgrad.unimelb.edu.au>
- Date: Mon, 24 Sep 2001 01:49:17 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Dear Group,
Could someone point me in the right direction of a matrix multiplied by
a vector, where the matrix elements change with each increment of data
and the final vector becomes the initial vector.
I have 2x2 matrix,
mat = {{fxx,fxy},{fyx,fyy}};
where the elements of the matrix are defined as,
fxx[rfMax_, bwdth_, Tp_, t_, np_, s_] :=
Sin[\[Beta]]^2*Cos[\[Theta][rfMax, bwdth, Tp, t, np, s]] +
Cos[\[Beta]]^2*(Cos[\[Alpha][rfMax, bwdth, Tp, t, np, s]]^2 +
Sin[\[Alpha][rfMax, bwdth, Tp, t, np, s]]^2*
Cos[\[Theta][rfMax, bwdth, Tp, t, np, s]]);
fxy[rfMax_, bwdth_, Tp_, t_, np_,
s_] := -Sin[\[Alpha][rfMax, bwdth, Tp, t, np, s]]*
Sin[\[Theta][rfMax, bwdth, Tp, t, np, s]] -
Sin[2*\[Beta]]*(Cos[\[Alpha][rfMax, bwdth, Tp, t, np, s]]^2*
Sin[\[Theta][rfMax, bwdth, Tp, t, np, s]/2]^2);
fyx[rfMax_, bwdth_, Tp_, t_, np_, s_] :=
Sin[\[Alpha][rfMax, bwdth, Tp, t, np, s]]*
Sin[\[Theta][rfMax, bwdth, Tp, t, np, s]] -
Sin[2*\[Beta]]*(Cos[\[Alpha][rfMax, bwdth, Tp, t, np, s]]^2*
Sin[\[Theta][rfMax, bwdth, Tp, t, np, s]/2]^2);
fyy[rfMax_, bwdth_, Tp_, t_, np_, s_] :=
Cos[\[Beta]]^2*Cos[\[Theta][rfMax, bwdth, Tp, t, np, s]] +
Sin[\[Beta]]^2*(Cos[\[Alpha][rfMax, bwdth, Tp, t, np, s]]^2 +
Sin[\[Alpha][rfMax, bwdth, Tp, t, np, s]]^2*
Cos[\[Theta][rfMax, bwdth, Tp, t, np, s]]);
and a vector,
vec = {Ix, Iy}. (*vec = {0,1} say*)
I want the operation,
newvec = mat . vec.
But I want to do it in such a way that t is divided up into 100
increments. So starting with t = 1/100, I want to evaluate mat and
multiply it by vec. I then want to evaluate mat at t = 2/100 (next
increment) and multiply it by newvec to give a new newvec to which I
want to add vec (previous solution) (Some use of FoldList????)
In the above equations, Tp and bwdth are chosen and then there are two
conditions for s and rfMax. If I want to evaluate rfMax (let s = 0), how
do I go about incrementing rfMax whilst conducting the matrix
multiplication. The rest of the equations are given below.
Plots of Ix versus rfMax and Iy versus rfMax and s versus Ix and s
versus Iy will be helpful but I think I can manage that. Any comments
are welcome.
Thanks
Yas
b1[rfMax_, Tp_, t_, np_] := rfMax * Sech[(betaN/2) * (1 - (2t/Tp))];
dH[bwdth_, Tp_, t_, np_, s_] := (-bwdth/2) *
Tanh[(betaN/2) * (1 - (2t/Tp)) + s];
be[rfMax_, bwdth_, Tp_, t_, np_, s_] :=
Sqrt[b1[rfMax, Tp, t, np]^2 + dH[bwdth, Tp, t, np, s]^2];
\[Alpha][rfMax_, bwdth_, Tp_, t_, np_, s_] :=
ArcSin[dH[bwdth, Tp, t, np, s]/be[rfMax, bwdth, Tp, t, np, s]];
\[Theta][rfMax_, bwdth_, Tp_, t_, np_, s_] :=
2*Pi*be[rfMax, bwdth, Tp, t, np, s]*t;