Difference between revisions of "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 11: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); |
Calling
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. |