Difference between revisions of "FactoredPolynomial1"

From WeBWorK_wiki
Jump to navigation Jump to search
(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",
 
);
 
);
$factoredform = Compute("(x+$a)(x-$b)");
+
$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
The quadratic expression \( $vertexform \)
+
Write the quadratic expression \( $poly \)
is written in vertex form.
+
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>
Everything here is as usual. To help students understand how to format their answers, we give examples <code>ax^2+bx+c</code> and <code>k(ax+b)(cx+d)</code> of what the answers should look like.
+
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( $expandedform->cmp() );
+
ANS( $factored->cmp() );
ANS( $factoredform->cmp() );
 
   
 
</pre>
 
</pre>

Revision as of 15: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

Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"contextPolynomialFactors.pl",
"contextLimitedPowers.pl",
);

TEXT(beginproblem()); 

Initialization: We require additional contexts provided by contextPolynomialFactors.pl and contextLimitedPowers.pl

#
#  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 PolynomialFactors-Strict context and restrict the allowed powers to either 0 or 1 using the LimitedPowers::OnlyIntegers block of code. Note: restricting all exponents to 0 or 1 means that repeated factors will have to be entered in the form k(ax+b)(ax+b) instead of k(ax+b)^2. 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 reducible quadratic factors. There are no restrictions on the coefficients, i.e., the quadratic could have any nonzero leading coefficient. We set singleFactors=>0 so that repeated, non-simplified factors do not generate errors.

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 k(ax+b)(cx+d).

$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:

Templates by Subject Area