## Forum archive 2000-2006

### Michael Gage - PGmorematrixmacros.pl ### Michael Gage - PGmorematrixmacros.pl

by Arnold Pizer -
Number of replies: 0 PGmorematrixmacros.pl topic started 9/14/2004; 2:15:44 PMlast post 9/14/2004; 2:15:44 PM Michael Gage - PGmorematrixmacros.pl 9/14/2004; 2:15:44 PM (reads: 1274, responses: 0)

#### random_diag_matrix

This method returns a random nxn diagonal matrix.

### basis_cmp()

Compares a list of vectors by finding the change of coordinate matrix from the Prof's vectors to the students, and then taking the determinant of that to determine the existence of the change of coordinate matrix going the other way.

ANS( basis_cmp( vectors_as_array_ref_in_array_ref, options_hash ) );

    1. a reference to an array of correct vectors    2. a hash with the following keys (all optional):    mode        --  'basis' (default) (only a basis allowed)                'orthogonal' (only an orthogonal basis is allowed)                'unit' (only unit vectors in the basis allowed)                'orthonormal' (only orthogonal unit vectors in basis allowed)    zeroLevelTol    --  absolute tolerance to allow when answer is close                    to zero
    debug       --  if set to 1, provides verbose listing of                hash entries throughout fliters.
    help    --  'none' (default) (is quiet on all errors)            'dim' (Tells student if wrong number of vectors are entered)            'length' (Tells student if there is a vector of the wrong length)            'orthogonal' (Tells student if their vectors are not orthogonal)                (This is only in orthogonal mode)            'unit' (Tells student if there is a vector not of unit length)                (This is only in unit mode)            'orthonormal' (Gives errors from orthogonal and orthonormal)                (This is only in orthonormal mode)            'verbose' (Gives all the above answer messages)
    Returns an answer evaluator.

EXAMPLES:

    basis_cmp([[1,0,0],[0,1,0],[0,0,1]])                    --  correct answer is any basis for R^3.    basis_cmp([1,0,2,0],[0,1,0,0], 'mode'=>orthonormal )                    --  correct answer is any orthonormal basis                    for this space such as:                    [1/sqrt(3),0,2/sqrt(3),0],[0,1,0,0]

Made to keep the same format as num_cmp and fun_cmp.

#### compare_basis

    compare_basis( \$ans_hash,    %options    ra_student_ans  # a reference to the array of students answer vectors    rm_correct_ans, # a reference to the correct answer matrix    %options    )

This is a check_syntax type method (in fact I borrowed some of that method's code) for vector input. The student needs to enter vectors like: [1,0,0],[1,2,3],[0,9/sqrt(10),1/sqrt(10)] Each entry can contain functions and operations and the usual math constants (pi and e). The vectors, however can not be added or multiplied or scalar multiplied by the student. Most errors are handled well. Any error in an entry is caught by the PG_answer_eval like it is in num_cmp or fun_cmp. Right now the method basically ignores every thing outside the vectors. Also, an unmatched open parenthesis is caught, but a unmatched close parenthesis ends the vector, and since everything outside is ignored, no error is sent (other than the later when the length of the vectors is checked. In the end, the method returns an array of Matrix objects.

    This filter was created to get, format, and evaluate each entry of the ans_array      and ans_array_extension    answer entry methods. Running this filter is necessary to get all the entries      out of the answer    hash. Each entry is evaluated and the resulting number is put in the display      for student answer    as a string. For evaluation purposes an array of arrays of arrays is created      called ra_student_ans    and placed in the hash. The entries are [array_number][row_number][column_number].      The latex strings    for each entry are taken from the parser and put, as a matrix, into the previewer.      The preview text    string is also created, but this display method becomes confusing when large      matrices are used.
###### File path = /ww/webwork/pg/macros/PGmorematrixmacros.pl

<| Post or View Comments |>