how can i get the following figure using the for loop.
n=5
For[i=1,i<5,i++,For[j=1,j<n,j++,A=(i+j)]]
A//MatrixForm
The code I found is above but not working.where is the mistake?
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.
Sign up to join this communityWelcome to MMA SE! What the code above does is simply repeatedly overwrite the value of A
. In each iteration of the loop, it evaluates A = i + j
, so the A
at the end of the loop is simply i + j
for the last i
, j
in the loop.
You could do a For
loop where you initialize A
to a table, and then set different parts of A
, e.g. A[[i,j]] = "*"
. That's not advisable in Mathematica, but it would look like this:
n=6;
A = ConstantArray["", {n,n}];
For[i=1,i<=n,i++,For[j=1,j<=i,j++,A[[i,j]] = "*"]];
A // Grid
(Note an important change from the given code: we use j <= i
, not j <= n
.)
But it's far easier to simply use Table
(or Array
, for an alternative approach) to generate matrices, with a conditional statement in each entry that test if i < j
:
Table[If[i < j, "", "*"], {i, 6}, {j, 6}] // Grid
Another way: you could also use LowerTriangularize
on a 6 by 6 ConstantArray
of "*"
, and replace all the resulting 0
s in the upper triangle with ""
:
(LowerTriangularize[ConstantArray["*", {6, 6}]] /. (0 -> "")) // Grid