[LON-CAPA-users] coding a customresponse problem using &cas()
Peter Dencker
dencker at math.uni-luebeck.de
Tue May 26 11:46:05 EDT 2015
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">
<answer type="loncapa/perl">
for ($submission) { s{\s}{}gxms; s{\Amatrix}{}gxms; }
return 'BAD_FORMULA'
if $submission !~ /\A[(]\[(.+)\][)]\z/xms;
my @given
= map { [ split /,/xms, $_ ]; } split /\],\[/xms, $1;
for (map { @{$_}; } @given) {
return 'BAD_FORMULA' if !/\A[-+]?\d+\z/xms;
}
my $n = @{ $given[0] };
for my $row (@given) { return 'BAD_FORMULA' if @{$row} != $n }
my $m = @given;
return 'INCORRECT' if $m != $n;
return 'BAD_FORMULA' if is_true_but_diagonal(@given);
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';
return 'BAD_FORMULA';
</answer>
<customhint id="0r0h0">
<answer type="loncapa/perl">
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;
}
</answer>
</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
More information about the LON-CAPA-users
mailing list