Constructing matrix elements using functions and looping

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