0
|
5404 Views
|
|
0 Total Likes
View groups...
Share
GROUPS:

# Constructing matrix elements using functions and looping

Posted 10 years ago
 Hi I'm trying to construct a tridiagonal matrix which contains a function f(x,y)=2(cos x+cosy). My code is: Nmax = 2; For[iw = 1, iw <= 5, iw++, A[x_, y_] := Normal[SparseArray[{{i_, j_} /; j == i :> iw + 2 (Cos[x] + Cos[y]), {i_, j_} /; j - i == 1 :> 1, {i_, j_} /; i - j == 1 :> 1}, {Nmax, Nmax}]]; Print["Testing A-matrix at (x,y)=(\[Pi]/2,\[Pi]/2)"]; MatrixForm[A[Pi/2, Pi/2]] // N ] MatrixForm[A[Pi/2, Pi/2]] // N  Why does it fail to show the matrix inside the For-loop? Thanks
 A For loop, like a Do loop, does not produce an output--it simply executes the code within. So you could get what you are wishing for by adding a Print statement to the MatrixForm expression that you want to see as in: Nmax = 2; For[iw = 1, iw <= 5, iw++, A[x_, y_] := Normal[SparseArray[{{i_, j_} /; j == i :> iw + 2 (Cos[x] + Cos[y]), {i_, j_} /; j - i == 1 :> 1, {i_, j_} /; i - j == 1 :> 1}, {Nmax, Nmax}]]; Print["Testing A-matrix at (x,y)=(\[Pi]/2,\[Pi]/2)"]; Print@MatrixForm[A[Pi/2, Pi/2]] // N] MatrixForm[A[Pi/2, Pi/2]] // N