From WeBWorK

Jump to: navigation


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.