I tried to capture this error once before, but must not have done it correctly. I'm trying again.
When I write a polynomial with complex coefficient and I use reduce to simplify it, if there is a negative before the constant term, reduce eliminates the parenthesis around the constant term but does not negate the imaginary part. So that
z - (1 + i) is displayed as z - 1 + i.
Last night I had to debug two problems for students because my seed did not cause a problem, but they got seeds that did.
The code is below. A file with screen shots is attached, with images of what happens with and without reduce.
Thanks.
## DESCRIPTION
## Complex Variables
## ENDDESCRIPTION
## KEYWORDS('Complex')
## Tagged by mewaggoner
## DBsubject('Complex Analysis')
## DBchapter('Functions')
## DBsection('Limits')
## Date('14Jun2014')
## Author('Murphy Waggoner')
## Institution('Simpson')
DOCUMENT(); # This should be the first executable line in the problem.
######################################
# Preamble
loadMacros(
"PG.pl",
"PGbasicmacros.pl",
"MathObjects.pl",
"PGchoicemacros.pl",
"PGanswermacros.pl",
"PGauxiliaryFunctions.pl",
"PGcomplexmacros.pl"
);
TEXT(beginproblem());
######################################
# Setup
Context("Complex");
# Create two different exponents in the range of 2 to 5
# These will be the exponents in the denominators
$exp1 = Real(random(2, 5, 1));
do { $exp2 = random(2,5,1); } until ( $exp2 != $exp1 );
# Create an exponent for numerator that is less than the denominator
$exp3 = $exp1 - random(1,$exp1- 1,1);
$exp4 = $exp2 - random(1,$exp2,1);
# Generate some random complex numbers to use below
# Choose all coefficients to be non-zero
$a = Complex(random( -5, 5, 1 ) , non_zero_random( -5, 5, 1 ) );
$b = Complex( non_zero_random( -5, 5, 1 ) , random( -5, 5, 1 ) );
$c = Complex( non_zero_random( -5, 5, 1 ), 0);
$d = Complex( 0, non_zero_random( -5, 5, 1) );
# Create the expressions to take limits of
# The reduce eliminates 0 exponents, combines constants, etc.
# The TeX makes the fractions horizontal and eliminates * by
# creating TeX commands for the formulas
$f1 = Compute("($a z^$exp1 + $b)/($b z^$exp3 + $d )")->reduce->TeX;
$f2 = Compute("($c z^$exp2 + $b)/($d z^$exp4 + $a )")->reduce->TeX;
######################################
# Calculate Solutions
# reciprocate both the function and the variable
$soln1 = Formula("($b z^(-$exp3) + $d )/($a z^(-$exp1) + $b)");
$soln2 = Formula("($d z^(-$exp4) + $a )/($c z^(-$exp2) + $b)");
######################################
# Question text
BEGIN_TEXT
Using the formal theorems for evaluating limits at and of infinity, fill in the blank with the appropriate function.
$PAR
$PAR
\(\text{Question 1: }\ \ \ \displaystyle\lim_{z \to \infty}$f1 \ = \infty\ \ \text{if and only if}\)$BR$BR
\(\ \ \ \ \ \ \displaystyle\lim_{z \to 0}\ \)\{ans_rule(30)\} \(\ = \ 0\)
$PAR
\(\text{Question 2: }\ \ \ \displaystyle\lim_{z \to \infty}$f2 \ = \infty\ \ \text{if and only if}\)$BR$BR
\(\ \ \ \ \ \ \displaystyle\lim_{z \to 0}\ \)\{ans_rule(30)\} \(\ = \ 0\)
$PAR
END_TEXT
$showHint=2;
BEGIN_HINT
Beware of negative signs in front of the fraction.
END_HINT
######################################
# End game
#Checking solutions
ANS($soln1->cmp);
ANS($soln2->cmp);
#Show the students which answers were correct
$showPartialCorrectAnswers = 1;
######################################
# Done
ENDDOCUMENT(); # This should be the last executable line in the problem.