Difference between revisions of "Sage in WeBWorK"
Jump to navigation
Jump to search
Line 84: | Line 84: | ||
:: TEXT(<<'SAGE_CODE'); |
:: TEXT(<<'SAGE_CODE'); |
||
− | where <<'SAGE_CODE' tells perl not to |
+ | where <<'SAGE_CODE' tells perl not to interpret variables |
[[Category:Developers]] |
[[Category:Developers]] |
Revision as of 20:54, 4 January 2012
Sage is an open source, online symbolic mathematical system. Details on Sage can be found at http://www.sagemath.org .
For use within WebWork, a special "single-cell" version of Sage is located at http://sagemath.org:5467
## Template for calling Sage from within a WebWork pg file DOCUMENT(); loadMacros( "PGstandard.pl", "PGchoicemacros.pl", "MathObjects.pl", ); TEXT(beginproblem()); # Regular WebWork setup $funct = Compute("x**4"); $funct_diff = $funct->D('x'); TEXT(<<'SAGE_CODE'); <div id="singlecell-test"><script type="text/code"> # Example Sage Python var('x') @interact def _(f = (x^2)): df = diff(f,x,1) html('$f \prime (x) = %s$'%str(latex(df)) ) # End of Sage code - Start of scripts that call the Sage single-cell server </script></div> <script type="text/javascript" src="http://sagemath.org:5467/static/jquery-1.5.min.js"></script> <script type="text/javascript" src="http://sagemath.org:5467/embedded_singlecell.js"></script> <script type="text/javascript"> $(function() { // load only when the page is loaded var makecells = function() { singlecell.makeSinglecell({ inputLocation: "#singlecell-test", editor: "codemirror", hide: ["editor","computationID","files","messages","sageMode"], evalButtonText: "Start/Restart", replaceOutput: true}); } singlecell.init(makecells); // load Single Cell libraries and then // initialize Single Cell instances }); </script> SAGE_CODE # Continue pg file as normal BEGIN_TEXT $PAR Using Sage above, determine the derivative of \[ f(x) = $funct \]. $PAR \(f '(x) = \) \{ ans_rule(20) \} END_TEXT Context()->normalStrings; ANS($funct_diff->cmp() ); ENDDOCUMENT();
To pass perl variables to the sage block if you need to from the problem initialization use:
- TEXT(<<SAGE_CODE); Details on how to pass variables in to be added later ... under construction
where << SAGE_CODE allows interpolation
otherwise use:
- TEXT(<<'SAGE_CODE');
where <<'SAGE_CODE' tells perl not to interpret variables