NAME

contextCopmlesExtras.pl - Add conjugation to Complex contexts, and transpose, conjugate transpose, trace, and determinant to Complex-Matrix context.

DESCRIPTION

The contextComplexExtras.pl file adds the ability to include matrix transpose, conjugate transpose, trace, and determinants in student answers in the Complex-Matrix context, and adds conjugation to all Complex contexts.

Conjugation is represented by ~, as in ~z or ~M to conjugate a complex number or complex matrix. This can be used in both PG code as well as student answers. The transpose is represented by ^T, as in M^T, in student answers or parsed strings. The conjugate transpose is ^*, as in M^*, and is equivalent to ~M^T. The trace is given as tr(M), and the determinant by det(M). Thus you can do things like:

loadMacros("contextComplexExtras.pl");

Context("Complex-Matrix");
Context()->constants->add(
    A => Matrix([[pi+i,i/pi**2],[1+sqrt[2]*i,ln(pi)-2*i]]),  # an arbitrary matrix with no special properties
);

$F = Formula("det(~A) + tr(A^*)");

Context()->texStrings;
BEGIN_TEXT
\($F\) = \{ans_rule(20)\}
END_TEXT
Context()->normalStrings;

ANS($F->cmp);

You can also use the trace, det, and transpose methods of a Matrix object to compute these in PG code.

loadMacros("contextMatrixExtras.pl");

Context("Matrix");
$M = Matrix([[1,2],[3,4]]);

$Mt = $M->transpose;
$d  = $M->det;
$tr = $M->trace;
$Mc = ~$M;
$Ms = ~($M->transpose);

Note that the contextComplexExtras.pl file modifies the Complex, Complex-Point, Complex-Vector, and Complex-Matrix contexts, so be sure to load it before you set the Context.