# [LON-CAPA-users] coding a customresponse problem using &cas()

Justin Gray jgray at math.sfu.ca
Tue May 26 20:32:21 EDT 2015

```Hi Peter,

Thank you very much for this. I tested it out and it works beautifully.

I agree that, more generally, a diagonal idempotent matrix could be
regarded as a trivial example. The purpose of the exercise that I have in
mind is to draw to students' attention that operations on matrices are much
different than operations with real numbers. For real numbers, the equation
x^2 = x is satisfied only by x = 0 and x = 1, but for matrices the equation
A^2 = A has solutions other than the additive and multiplicative identities.

Thanks,
Justin

Justin Gray | Senior Lecturer
Department of Mathematics | Simon Fraser University
8888 University Drive, Burnaby | V5A 1S6 | Canada
Tel: +1 778.782.4237

On Tue, May 26, 2015 at 8:46 AM, Peter Dencker <dencker at math.uni-luebeck.de>
wrote:

>
> Hi Justin,
>
> in my example a diagonal idempotent matrix will be regarded as too trivial.
>
> - Peter
>
>
> <problem>
>
> <script type="loncapa/perl">
>
>     sub is_true_but_diagonal {
>         my @given = @_;
>         # is the matrix diagonal?
>         for my \$i ( 0 .. \$#given ) {
>             for my \$j ( 0 .. \$#{ \$given[\$i] } ) {
>                 if ( \$i != \$j && \$given[\$i][\$j] != 0 ) {
>                     return 0;
>                 }
>             }
>         }
>         # is the diagonal matrix idempotent?
>         for my \$i ( 0 .. \$#given ) {
>             if ( \$given[\$i][\$i] != 0 && \$given[\$i][\$i] != 1 ) {
>                 return 0;
>             }
>         }
>         return 1;
>     }
>
>     \$hint = q{};
>
> </script>
>
> Give a nontrivial example of an idempotent matrix (whose entries are all
> integers). <br />
>
>
> <customresponse id="0r0">
>
>        for (\$submission) { s{\s}{}gxms; s{\Amatrix}{}gxms; }
>
>             if \$submission !~ /\A[(]\[(.+)\][)]\z/xms;
>         my @given
>           = map { [ split /,/xms, \$_ ]; } split /\],\[/xms, \$1;
>         for (map { @{\$_}; } @given) {
>         }
>
>         my \$n = @{ \$given[0] };
>         for my \$row (@given) { return 'BAD_FORMULA' if @{\$row} != \$n }
>         my \$m = @given;
>         return 'INCORRECT' if \$m != \$n;
>
>
>         my \$matrix      = "matrix\$submission";
>         my \$maxima_in
>           = "is(rank(rat(\$matrix.\$matrix-\$matrix))=0)"
>           . q{;};
>         my \$maxima_out = cas( 'maxima', \$maxima_in );
>         return 'EXACT_ANS'
>             if \$maxima_out eq 'true';
>         return 'INCORRECT'
>             if \$maxima_out eq 'false';
>
>     <customhint id="0r0h0">
>
>           for (\$submission) { s{\s}{}gxms; s{\Amatrix}{}gxms; }
>           if ( \$submission !~ /\A[(]\[(.+)\][)]\z/xms ) {
>               \$hint = '<b>Give a matrix in the required form.</b>';
>               return;
>           }
>           my @given
>             = map { [ split /,/xms, \$_ ]; } split /\],\[/xms, \$1;
>           for ( map { @{\$_}; } @given ) {
>               if ( !/\A[-+]?\d+\z/xms ) {
>                   \$hint
>                     = '<b>Use integer entries for this submission.</b>';
>                   return;
>               }
>           }
>           my \$n = @{ \$given[0] };
>           for my \$row (@given) {
>               if ( @{\$row} != \$n ) {
>                   \$hint
>                     = '<b>All rows must be the same length.<b>';
>                   return;
>               }
>           }
>           my \$m = @given;
>           if ( \$m != \$n ) {
>               \$hint
>                 = '<b>An idempotent matrix must necessarily'
>                 . 'be a square matrix!</b>';
>               return;
>           }
>           if ( is_true_but_diagonal(@given) ) {
>               \$hint
>                 = '<b>Correct, well, but choose'
>                 . 'a less trivial example.</b>';
>               return;
>           }
>
>     </customhint>
> </customresponse>
>
> <textline /> <br />
> \$hint <br />
>
> </problem>
>
>
>
>
> Am 05/26/2015 um 03:49 AM schrieb Justin Gray:
>
>> I would appreciate it if someone could assist me with coding the following
>> problem.
>>
>> Give an example of an idempotent matrix.
>>
>> Ideally, I would like students to input their answer using the format
>> (row_1,...,row_m) using a matrix of any size, so that ([1,1],[0,0]) and
>> ([2,-2,-4],[-1,3,4],[1,-2,-3]) would both be acceptable answers.
>> (A matrix *A* is *idempotent* if *A*^2=*A*.)
>>
>> If I understand correctly, using a mathresponse problem is problematic in
>> this case because there is some preprocessing of the students submission
>> that makes it difficult to use in the answer algorithm, but one way around
>> this is to use customresponse combined with the &cas() function.
>>
>> In order that Maxima understands the students submission, the expression
>> 'matrix' needs to be appended to the front. Also, matrix exponentiation is
>> denoted by A^^n in Maxima. If it is easier to test a numerical condition,
>> one could verify that rank(A^^2 - A) = 0.
>>
>> Thanks,
>> Justin
>>
>> P.S. Ideally, I would like to stipulate that students provide a nontrivial
>> example (excluding the zero matrix and the identity matrix) but that is
>> the
>> topic of another discussion.
>>
>>
>>
>> Justin Gray | Senior Lecturer
>> Department of Mathematics | Simon Fraser University
>> 8888 University Drive, Burnaby | V5A 1S6 | Canada
>> Tel: +1 778.782.4237
>>
>>
>>
>> _______________________________________________
>> LON-CAPA-users mailing list
>> LON-CAPA-users at mail.lon-capa.org
>> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>>
>>
>
> --
> Dr. Peter Dencker
>     wissenschaftl. Mitarbeiter
>
> UNIVERSITÄT ZU LÜBECK
>     INSTITUT FÜR MATHEMATIK
>
>     Ratzeburger Allee 160
>     23562 Lübeck
>
>     Tel +49 451 500 4254
>     Fax +49 451 500 3373
>     dencker at math.uni-luebeck.de
>
>     www.math.uni-luebeck.de
>
> _______________________________________________
> LON-CAPA-users mailing list
> LON-CAPA-users at mail.lon-capa.org
> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.lon-capa.org/pipermail/lon-capa-users/attachments/20150526/3785fae5/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SFU_2012_email_sig.jpg
Type: image/jpeg
Size: 8910 bytes
Desc: not available
URL: <http://mail.lon-capa.org/pipermail/lon-capa-users/attachments/20150526/3785fae5/attachment-0001.jpg>
```