# AskSage

Line 97: | Line 97: | ||

<pre> | <pre> | ||

$sageReply1 = AskSage($SageCode1,{seed=>$problemSeed}); | $sageReply1 = AskSage($SageCode1,{seed=>$problemSeed}); | ||

− | $M = Matrix($ | + | $M = Matrix($sageReply1); |

$sageReply2 = AskSage($SageCode2); | $sageReply2 = AskSage($SageCode2); |

## Revision as of 12:27, 19 November 2013

## Using the Sage Cell Server

This PG code shows how to embed a call to the Sage Cell Server from within a problem.

PG problem file | Explanation |
---|---|

loadMacros( "PGstandard.pl", "MathObjects.pl", ); |
No additional macros are needed to use the |

############################################### ## ## pg initializations and regular WeBWorK code Context("Matrix"); my $rows = random(3,4); my $columns = random(4,5); my $rank = random(2,3); |
The WeBWorK set up for the problem is the same. |

$SageCode1=<<END; print random_matrix(QQ,$rows,$columns,algorithm='echelonizable',rank=$rank).rows() END $SageCode2 =<<END; print matrix(QQ,$sageReply1).rref().rows() END |
$SageCode = <<END;
denotes the beginning of a block of Sage python code. This will be paired at the end with and ending END which must be left-justified. This portion will create a perl scalar variable |

$sageReply1 = AskSage($SageCode1,{seed=>$problemSeed}); $M = Matrix($sageReply1); $sageReply2 = AskSage($SageCode2); $ans = Matrix($sageReply2); |
The first argument to AskSage() must be sage code. After that, you may optionally send a Notice that we convert sage's replies to a MathObjects so that we can take advantage of WeBWorK's built in answer checking, display capbilities, etc. |

Context()->texStrings; BEGIN_TEXT Row reduce \( $M \) $BR \{ $ans->ans_array\} END_TEXT Context()->normalStrings; ANS($ans->cmp()); ENDDOCUMENT(); |
Now we display the problem and check the answer as in a typical WeBWorK problem. |