Re: check if a square matrix is diagonal
- To: mathgroup at smc.vnet.net
- Subject: [mg115329] Re: check if a square matrix is diagonal
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Fri, 7 Jan 2011 04:13:36 -0500 (EST)
m = DiagonalMatrix[Range[3]]
{{1, 0, 0}, {0, 2, 0}, {0, 0, 3}}
Note that Dimensions[m] is a list not a number
d = Dimensions[m]
{3, 3}
Select a part
d = Dimensions[m][[1]]
3
You can simplify your Table build
Table[Table[0, {i, 1, d}], {i, 1, d}] ==
Table[0, {i, 1, d}, {i, 1, d}] ==
Table[0, {d}, {d}]
True
An If statement is not needed if you are just going to return the boolean
You should also use SetDelayed ( := ) rather than Set ( = )
Clear[checkIfDiagonalMatrix]
checkIfDiagonalMatrix[m_] := Module[{d, mtemp},
d = Dimensions[m][[1]];
mtemp = DiagonalMatrix[Diagonal[m]] - m;
mtemp == Table[0, {d}, {d}]]
checkIfDiagonalMatrix[m]
True
Bob Hanlon
---- benyaya <xiaochu at gmail.com> wrote:
=============
What I try to do is extract the diagonal, subtract if from the matrix,
then compare the new matrix with 0.
My code doesn't work out though, can anyone help? thanks a lot.
checkIfDiagonalMatrix[m_] = Module[{d, mtemp},
d = Dimensions[m];
mtemp = DiagonalMatrix[Diagonal[m]] - m;
If[mtemp == Table[Table[0, {i, 1, d}], {i, 1, d}],
True,
False]
]