User:Malcolm/wip/Sage WW Notes

From WeBWorK_wiki
< User:Malcolm‎ | wip
Revision as of 15:58, 12 June 2012 by Malcolm (talk | contribs)
Jump to navigation Jump to search

Notes on embedding Sage into WW problems using the Sage cell server - May/June 2012

When passing functions to Sage, if the function is defined as a math object problems can occur since it can happen that none of <source lang="perl"> $f $f->string() $f->stringify() $f->TeX() </source> return the orginal string used to define the function.

For example with the set up: <source lang="perl"> Context("Numeric"); $f = Compute("(x-(-2))*(x-2)*(x-4)"); </source> then

  • $f->string() produces [x-(-2)]*(x-2)*(x-4)
  • $f->TeX() produces \left(x-\left(-2\right)\right)\!\left(x-2\right)\!\left(x-4\right)
  • $f->stringify() produces:
    • [x-(-2)]*(x-2)*(x-4) in normalStrings
    • \left(x-\left(-2\right)\right)\!\left(x-2\right)\!\left(x-4\right) in texStrings

None of theses are suitable for passing to Sage.

Possible solution:

  1. Use a construction like
    <source> $f_raw = "(x-(-2))*(x-2)*(x-4)";</source>
    <source> $f = Compute($f_raw); </source>

And use $f_raw to pass to Sage and $f to work with in WW.

  1. TODO investigate using string(), but setting some flags noparen
  • After
    <source> Context("Numeric"); </source>
    <source> $g = Compute("(x-(-2))*(x-2)*(x-4)"); </source>
    $g->with(showExtraParens=>0)->string() produces [x-(-2)]*(x-2)*(x-4)
    $g->with(showExtraParens=>0)->stringify() produces [x-(-2)]*(x-2)*(x-4) in normalStrings
  • But after
    <source>Context()->flags->set(showExtraParens=>0);</source>
    $g->stringify() produces (x--2)*(x-2)*(x-4) which is in the right direction.