Just to point out for those that need a guide through the above, Craig
is basically creating a list of equations from each entry in the matrix.
He doesn't show it, but I suppose that N is a matrix of the variables.
You could also do:
solve([ e == 0 for e in C.list() ], C.variables())
That said, I think it would be a great thing if solve could recognize
matrices and that two matrices are equal if each entry is equal. I
believe MMA does this (but it's easier there; matrices are nothing more
than nested lists). It'd certainly make certain things I do more
natural if I could do:
solve(matrixA==matrixB)
and that was equivalent to:
solve([i==j for i,j in zip(matrixA.list(), matrixB.list())])
if the matrices were of the same dimensions.
Okay, so now that I've written my piece, I suppose the next step is to
open a trac ticket, write a patch to implement it, and post it for
review :).
The ticket is http://trac.sagemath.org/sage_trac/ticket/5201
I won't cry if someone submits a patch before I get to it :).
Jason