Difference between revisions of "AlgebraicFractions"

This code shows how to format questions in which the answer is an algebraic fraction that has separate answer blanks for the numerator and denominator. This is useful for fractional answers that you want students to simplify as much as possible.

PG problem file Explanation
DOCUMENT();

"PGstandard.pl",
"PGunion.pl",
"MathObjects.pl",
"PGcourse.pl",
);

TEXT(beginproblem());

Initialization: We include the macros file PGunion.pl to be able to display the answer boxes on top of each other (as a fraction).

Context("Numeric");

$frac = "\frac{d}{dx} \left( \frac{-(x^2+4)}{(x^2-4)^2} \right)";$num = Formula("2 * x * (x**2 + 12)")->reduce;
$den = Formula("(x**2 - 4)**3")->reduce; # # Display the fraction and answer blanks nicely # if ($displayMode eq 'TeX') {
$displayfrac = "$frac = ".ans_rule(10).ans_rule(10)."$"; } else {$displayfrac =
ColumnTable(
"$$\displaystyle frac =$$",
ans_rule(20).$BR.$HR.ans_rule(20),
indent => 0, separation => 10, valign => "MIDDLE"
);
}

Setup: We define a string $frac that will be displayed in TeX mode. We define MathObjects formulas$num and $den that are the correct numerator and denominator for the answer. We define a mode-dependent string$displayfrac that will be the nicely formatted fraction and answer blanks. To display the fraction nicely in TeX mode, we use displaystyle math $...$ and append two concatenated answer blanks to the string $frac. In other modes (such as html), we use a ColumnTable from PGunion.pl macros to display the answer blanks as a fraction. For fractions over fractions, to keep the font size large use the display fraction \dfrac{}{} option in TeX. For example, $$\dfrac{ \dfrac{a}{b} }{ \dfrac{c}{d} }$$. Context()->texStrings; BEGIN_TEXT Calculate the indicated derivative. Simplify your answer as much as possible.$BR
$BR$BCENTER
$displayfrac$ECENTER

END_TEXT
Context()->normalStrings;

Main Text: Everything is as usual. Insert the fraction and answer blanks using $displayfrac.$showPartialCorrectAnswers = 1;

ANS($num->cmp); ANS($den->cmp);