23 lines
707 B
Text
23 lines
707 B
Text
load("fourie")$
|
|
|
|
conj_t(mat) := transpose(conjugate(mat))$
|
|
|
|
is_hermitian(mat) := equalp(mat, conj_t(mat))$
|
|
is_normal(mat) := equalp(mat.conj_t(mat), conj_t(mat).mat)$
|
|
is_unitary(mat) := equalp(ident(length(mat)), mat.conj_t(mat))$
|
|
|
|
mat1: matrix([3, 2+%i], [2-%i, 1])$
|
|
|
|
mat2: matrix([1, 1, 0], [0, 1, 1], [1, 0, 1])$
|
|
|
|
s: sqrt(2)/2$
|
|
mat3: matrix([s, s, 0], [-s*%i, s*%i, 0], [0, 0, %i])$
|
|
|
|
conj_tests(mat) := block(
|
|
disp("Chosen matrix:", mat, "Conjugate transpose:", conj_t(mat)),
|
|
test_funs: [is_hermitian, is_normal, is_unitary],
|
|
queries: ["Hermitian? ", "Normal? ", "Unitary? "],
|
|
for i from 1 thru 3 do(print(sconcat(queries[i], test_funs[i](mat))))
|
|
)$
|
|
|
|
map(conj_tests, [mat1, mat2, mat3]);
|