Re: supressing argument evaluation by function Part
- To: mathgroup at yoda.ncsa.uiuc.edu
- Subject: Re: supressing argument evaluation by function Part
- From: uunet!einstein.tamu.edu!phil (Philip B. Yasskin)
- Date: Thu, 19 Apr 90 14:52:47 CDT
The reason you get error messages from
lhs = { { -(k^2 + lamsq[[n]]), lamsq[[n]] },
{ lamsq[[n]], -(k^2 + lamsq[[n]]) } }
rhs = { { -(k^2 + lamsq[[n]]) u1[[n]], lamsq[[n]] u1[[n]] },
{ lamsq[[n]] u2[[n]], -(k^2 + lamsq[[n]]) u2[[n]] } }
cmatrix[k_,n_] = Inverse[lhs] . rhs
is that n is not defined as a number when you define lhs and rhs. The
errors should dissappear if you insert the expressions for lhs and rhs
into the formula for cmatrix. However, the following should be much
faster since you don't have to recompute the n-th component
repeatedly:
In[1]:= cmatrix[k_,n_] :=
Block[{lamsqn=lamsq[[n]], u1n=u1[[n]], u2n=u2[[n]]},
lhs = { { -(k^2 + lamsqn), lamsqn },
{ lamsqn, -(k^2 + lamsqn) } };
rhs = { { -(k^2 + lamsqn) u1n, lamsqn u1n },
{ lamsqn u2n, -(k^2 + lamsqn) u2n } };
Inverse[lhs] . rhs
]
In[2]:= lamsq = {1,2,3,4}
Out[2]= {1, 2, 3, 4}
In[3]:= u1 = {2,4,6,8}
Out[3]= {2, 4, 6, 8}
In[4]:= u2 = {1,3,5,7}
Out[4]= {1, 3, 5, 7}
In[5]:= cmatrix[1,2]
24 6 6 11
Out[5]= {{--, -(-)}, {-, --}}
5 5 5 5
Phil Yasskin phil at einstein.tamu.edu