Message Boards Message Boards

0
|
5323 Views
|
1 Reply
|
0 Total Likes
View groups...
Share
Share this post:

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

POSTED BY: hbar omega

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
POSTED BY: David Reiss
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract