0
$\begingroup$

I want to find out for what value of n MatrixPower[u, n] == IdentityMatrix[3]

u = {{0, 0, I}, {-I, 0, 0}, {0, -1, 0}};
n = 1;
While[n < 10, 
 If[{MatrixPower[u, n] == IdentityMatrix[3]}, Print["TRUTH"]]; n++]

I chose n=10 because I know the answer is 6, but it doesn't print 6. What is the problem here?

$\endgroup$
2
$\begingroup$
u = {{0, 0, I}, {-I, 0, 0}, {0, -1, 0}};

soln = Solve[
   {MatrixPower[u, n] == IdentityMatrix[3],
    n > 0}, n][[1]]

(*  {n -> ConditionalExpression[-6 C[1], 
   C[1] ∈ Integers && C[1] <= -1]}  *)

Verifying the solution

Assuming[{Element[C[1], Integers], C[1] <= -1},
 MatrixPower[u, n] == IdentityMatrix[3] /. soln // FullSimplify]

(*  True  *)

Or for specific values

And @@ Table[
  MatrixPower[u, n] == IdentityMatrix[3],
  {n, 6, 72, 6}]

(*  True  *)
$\endgroup$
1
$\begingroup$

Consider this illustrative example:

x = 2;
If[{x > 0}, Print["positive"]]

If[{True}, Print["positive"]]

The thing is, the first argument of If should yield True or False; in the above example, it yields {True}, which due to the curly brackets is different than True. Hence one should type

If[x > 0, Print["positive"]]

positive


So the reason why the OP's syntax doesn't give anything are the brackets which should be removed:

u = {{0, 0, I}, {-I, 0, 0}, {0, -1, 0}};
n = 1;
While[n < 10, 
 If[MatrixPower[u, n] == IdentityMatrix[3], Print["TRUTH"]]; n++]

TRUTH

But "it doesn't print 6", so let's modify the Print part:

While[n < 10, 
 If[MatrixPower[u, n] == IdentityMatrix[3], 
  Print["TRUTH for n=" <> ToString[n]]]; n++]

TRUTH for n=6

The problem with the above syntax is that n = 1 has to be set at each evaluation of the While cell; if it's not, n is assigned a value of 10. To avoid this, use Block which makes n local for the While:

Block[{n = 1},
 While[n < 10, 
  If[MatrixPower[u, n] == IdentityMatrix[3], 
   Print["TRUTH for n=" <> ToString[n]]]; n++]
 ]

TRUTH for n=6

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.