Difference between revisions of "FactoredPolynomial1"
(Created page with '<h2>Polynomial Factoring</h2> <p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> This PG code shows how to require students to factor a polynomial. <ul> <l…') |
|||
Line 44: | Line 44: | ||
"PGstandard.pl", |
"PGstandard.pl", |
||
"MathObjects.pl", |
"MathObjects.pl", |
||
− | "contextLimitedPolynomial.pl", |
||
"contextPolynomialFactors.pl", |
"contextPolynomialFactors.pl", |
||
"contextLimitedPowers.pl", |
"contextLimitedPowers.pl", |
||
Line 55: | Line 54: | ||
<p> |
<p> |
||
<b>Initialization:</b> |
<b>Initialization:</b> |
||
− | We need all of these macros. |
||
+ | We require additional contexts provided by <code>contextPolynomialFactors.pl</code> and <code>contextLimitedPowers.pl</code> |
||
</p> |
</p> |
||
</td> |
</td> |
||
Line 69: | Line 68: | ||
# |
# |
||
Context("Numeric"); |
Context("Numeric"); |
||
− | $n = list_random(4,6); |
||
+ | $poly = Compute("8x^2+28x+12"); |
||
− | $a = random(2,4,1); |
||
− | $b = ($a+$n); |
||
− | $h = ($b-$a)/2; |
||
− | $k = $h**2+$a*$b; |
||
− | $vertexform = Compute("(x-$h)^2-$k"); |
||
− | |||
− | # |
||
− | # Expanded form |
||
− | # |
||
− | Context("LimitedPolynomial-Strict"); |
||
− | $p[0] = $h**2 - $k; |
||
− | $p[1] = 2*$h; |
||
− | $expandedform = Formula("x^2 - $p[1] x + $p[0]")->reduce; |
||
# |
# |
||
Line 93: | Line 79: | ||
message => "either 0 or 1", |
message => "either 0 or 1", |
||
); |
); |
||
− | $ |
+ | $factored = Compute("4(2x+1)(x+3)"); |
</pre> |
</pre> |
||
</td> |
</td> |
||
Line 99: | Line 85: | ||
<p> |
<p> |
||
<b>Setup:</b> |
<b>Setup:</b> |
||
− | To construct this quadratic, we choose a nice factored form <code>(x+$a)(x-$b)</code> and from it we construct its vertex form (a(x-h)^2+k) and expanded form (ax^2+bx+c). |
||
− | </p> |
||
− | <p> |
||
− | For the expanded form we use the <code>LimitedPolynomial-Strict</code> context, construct the coefficients <code>$p[0]</code> and <code>$p[1]</code> as Perl reals, and then construct <code>$expandedform</code> using these pre-computed coefficients. This is because the LimitedPolynomial-Strict context balks at answers that are not already simplified completely. |
||
− | </p> |
||
<p> |
<p> |
||
For the factored form we need to change to the <code>PolynomialFactors-Strict</code> context and restrict the allowed powers to either 0 or 1 using the <code>LimitedPowers::OnlyIntegers</code> block of code. Note: restricting all exponents to 0 or 1 means that repeated factors will have to be entered in the form <code>k(ax+b)(ax+b)</code> instead of <code>k(ax+b)^2</code>. Also, restricting all exponents to 0 or 1 means that the polynomial must factor as a product of linear factors (no irreducible quadratic factors can appear). Of course, we could allow exponents to be 0, 1, or 2, but then students would be allowed to enter <i>reducible</i> quadratic factors. There are no restrictions on the coefficients, i.e., the quadratic could have any nonzero leading coefficient. We set <code>singleFactors=>0</code> so that repeated, non-simplified factors do not generate errors. |
For the factored form we need to change to the <code>PolynomialFactors-Strict</code> context and restrict the allowed powers to either 0 or 1 using the <code>LimitedPowers::OnlyIntegers</code> block of code. Note: restricting all exponents to 0 or 1 means that repeated factors will have to be entered in the form <code>k(ax+b)(ax+b)</code> instead of <code>k(ax+b)^2</code>. Also, restricting all exponents to 0 or 1 means that the polynomial must factor as a product of linear factors (no irreducible quadratic factors can appear). Of course, we could allow exponents to be 0, 1, or 2, but then students would be allowed to enter <i>reducible</i> quadratic factors. There are no restrictions on the coefficients, i.e., the quadratic could have any nonzero leading coefficient. We set <code>singleFactors=>0</code> so that repeated, non-simplified factors do not generate errors. |
||
Line 117: | Line 98: | ||
Context()->texStrings; |
Context()->texStrings; |
||
BEGIN_TEXT |
BEGIN_TEXT |
||
− | + | Write the quadratic expression \( $poly \) |
|
− | + | in factored form |
|
+ | \( k(ax+b)(cx+d) \). |
||
$BR |
$BR |
||
− | $BR |
||
− | (a) Write the expression in expanded form |
||
− | \( ax^2 + bx + c \). |
||
− | $BR |
||
− | \{ ans_rule(30) \} |
||
− | $BR |
||
− | $BR |
||
− | (b) Write the expression in factored form |
||
− | \( k(ax+b)(cx+d) \). |
||
$BR |
$BR |
||
\{ ans_rule(30)\} |
\{ ans_rule(30)\} |
||
Line 137: | Line 109: | ||
<p> |
<p> |
||
<b>Main Text:</b> |
<b>Main Text:</b> |
||
− | + | We should explicitly tell students to enter answers in the form <code>k(ax+b)(cx+d)</code>. |
|
</p> |
</p> |
||
</td> |
</td> |
||
Line 149: | Line 121: | ||
$showPartialCorrectAnswers = 1; |
$showPartialCorrectAnswers = 1; |
||
− | ANS( $ |
+ | ANS( $factored->cmp() ); |
− | ANS( $factoredform->cmp() ); |
||
</pre> |
</pre> |
Revision as of 14:20, 1 December 2010
Polynomial Factoring
This PG code shows how to require students to factor a polynomial.
- Download file: File:FactoredPolynomial1.txt (change the file extension from txt to pg when you save it)
- File location in NPL:
NationalProblemLibrary/FortLewis/Authoring/Templates/Algebra/FactoredPolynomial1.pg
PG problem file | Explanation |
---|---|
Problem tagging: |
|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "contextPolynomialFactors.pl", "contextLimitedPowers.pl", ); TEXT(beginproblem()); |
Initialization:
We require additional contexts provided by |
# # Vertex form # Context("Numeric"); $poly = Compute("8x^2+28x+12"); # # Factored form # Context("PolynomialFactors-Strict"); Context()->flags->set(singleFactors=>0); LimitedPowers::OnlyIntegers( minPower => 0, maxPower => 1, message => "either 0 or 1", ); $factored = Compute("4(2x+1)(x+3)"); |
Setup:
For the factored form we need to change to the |
Context()->texStrings; BEGIN_TEXT Write the quadratic expression \( $poly \) in factored form \( k(ax+b)(cx+d) \). $BR $BR \{ ans_rule(30)\} END_TEXT Context()->normalStrings; |
Main Text:
We should explicitly tell students to enter answers in the form |
$showPartialCorrectAnswers = 1; ANS( $factored->cmp() ); |
Answer Evaluation: Everything is as expected. |
Context()->texStrings; BEGIN_SOLUTION ${PAR}SOLUTION:${PAR} Solution explanation goes here. END_SOLUTION Context()->normalStrings; COMMENT('MathObject version.'); ENDDOCUMENT(); |
Solution: |