WeBWork using PGML
Update: November 2024
Links
Reduction Rules
[WeBWork Formula][WeBWork Context]
Context()->noreduce("(-x)-y","(-x)+y");
Format Numbers
Context()->{format}{number} = "%.9f";
If Condition
if ( $a > 0 ) { $ans = "increasing, concave up"; } else { $ans = "decreasing, concave down"; }
Do Loop
$a = non_zero_random(-9, 9, 1); do {$b = non_zero_random(-9, 9, 1);} until ($b != $a);
Aternative Correct Answers
$x1 = Formula("A * cos($w*t) + B * sin($w*t)")->reduce; $x2 = Formula("A * sin($w*t) + B * cos($w*t)")->reduce; $ans = $x1->cmp( checker => sub { my ( $correct, $student, $ansHash ) = @_; return ($student == $x1) || ($student == $x2); } ); BEGIN_PGML [___]{@ans} END_PGML
Multianswer
loadMacros("parserMultiAnswer.pl"); $fac1 = Formula("(1 - x)"); $fac2 = Formula("(1 + x)"); $multians = MultiAnswer($fac1, $fac2)->with( singleResult => 1, checker => sub { my ( $correct, $student, $self ) = @_; my ( $f1stu, $f2stu ) = @{$student}; my ( $f1, $f2 ) = @{$correct}; if (($f1stu==$f1 && $f2stu==$f2) || ($f1stu==$f2 && $f2stu==$f1)) {return 1;} else {return 0;} } ); BEGIN_PGML Factor >>[` (1-x^2) = \Big(`] [___]{$multians} [`\Big)\cdot \Big(`] [___]{$multians} [`\Big)`]<< END_PGML
Name Pattern and Variable Limits
Context()->variables->{namePattern} = qr/[a-z][a-z0-9_]*'*/i; Context()->variables->are( "x" => ["Real", limits => [1,100]], "y" => "Real", "y'" => "Real", "y''" => "Real", "C" => "Real", "C1" => ["Real", TeX=>"C_1"], xk => ["Real",TeX=>"x_k"], xk1 => ["Real",TeX=>"x_{k+1}"]);
Set function domains (for answer checker)
$soln =Formula("sqrt(x**2 -$a**2)") -> reduce(); $soln -> {limits}=[abs($a),2*abs($a)];
Answer Help
[@ AnswerFormatHelp("formulas") @]* [@ AnswerFormatHelp("numbers") @]* [@ AnswerFormatHelp("matrices") @]*
Add Hyperlinks
_[@ htmlLink("https://www.jirka.org/diffyqs/html/laplacelist_appendix.html", "Table of Laplace Transforms", "TARGET='_blank'") @]*_
PGML Solution
BEGIN_PGML_SOLUTION END_PGML_SOLUTION
Enter a matrix answer
Context("Matrix"); $x = Matrix([[1,4],[2,3]]); BEGIN_PGML Enter the matrix [`[$x]`] by entries: >>[___]*{$x}<< Enter the matrix [`[$x]`] as [` [[1,4],[2,3]] `]: >>[___]{$x}<< END_PGML