$point1[0] = closed_circle(n_vec[0],$alpha_re[0], 'red');
which give a syntax error I cannot find. The vectors n_vec and alpha_re are defined and used elsewhere.
commenting those lines out, I get an error at line 137
136 $graph_re[$j] -> stamps($point1[0],$point1[1]); 137 $fig_re[$j] = image(insertGraph($graph_re[$j]),width => 240,height => 180,tex_size => 200);
a divide by zero. I thought this would be problems with the computed limits. But I'm having difficulty displaying the limits, since program bombs. How do I find the offending values?
Thanks
DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"AnswerFormatHelp.pl",
"PGgraphmacros.pl",
"unionTables.pl",
"PGanswermacros.pl",
"PGchoicemacros.pl",
"PGgraphmacros.pl",
"extraAnswerEvaluators.pl",
"parserCustomization.pl",
"PGcourse.pl"
);
TEXT(beginproblem());
$refreshCachedImages = 1;
Context("Complex");
Context()->variables->are(
n=>"Real",
t=>"Real"
);
Context()->flags->set(
tolerance => 0.001,
tolType => "absolute",
);
$Tover2 = random(5,10,1);
$T = 2*$Tover2;
$d0 = random(2,$T-4,1);
$t0 = -$Tover2 + $d0;
$d1 = random(1, $Tover2-$t0-2, 1);
$t1 = $t0 + $d1;
$d2 = random(1,$Tover2-$t1-1,1);
$t2 = $t1 + $d2;
$w0 = 2*pi/$T;
$a1 = non_zero_random(-6, 6, 1);
do {$a2 = non_zero_random(-6, 6, 1);} until ($a2 != $a1);
$FSeries = Formula("(1/$T)*(i*($a1/($w0*n))*(exp((-1)*i*$w0*$t1*n) - exp((-1)*i*$w0*$t0*n)) + i*($a2/($w0*n))*(exp((-1)*i*$w0*$t2*n) - exp((-1)*i*$w0*$t1*n)) ) ")->reduce;
$N = 6;
$indx = -1;
for ($k=-$N, $k<= $N,$k++) {
$indx++;
if ($k == 0) {$alpha[$indx] = Compute(($d1*$a1 + $d2*$a2)/$T); }
else {
$alpha[$indx] = $FSeries -> eval(n=>$k);
};
$alpha_mag[$indx] = abs($alpha[$indx] );
$alpha_ph[$indx] = arg($alpha[$indx] );
$alpha_re[$indx] = Re($alpha[$indx] );
$alpha_im[$indx] = Im($alpha[$indx] );
$n_vec[$indx] = $k;
};
#$alpha0m = Compute(abs($alpha0));
#$alpha0p = Compute(0);
#if ($alpha0 < 0) {$alpha0p = pi;}
# check back for adding pi for correct quadrant
#$f_approx = Formula(" $alpha0 + 2*$alphap1m*cos($w0*t + $alphap1p) + 2*$alphap2m*cos($w0*2*t + $alphap2p) ")->reduce;
### generate graphics
$a = random(1,9,1);
$b = random(2,1,9);
$c = random(2,1,9);
$n_min = -($N+1);
$n_max = ($N+1);
$grid_n = $n_max - $n_min;
$Fmag_min = Compute(min(@alpha_mag));
$Fph_min = (-1)*pi;
$Fmag_max = Compute(max(@alpha_mag));
$Fph_max = pi;
$Fre_min = Compute(min(@alpha_re));
$Fim_min = Compute(min(@alpha_im));
$Fre_max = Compute(max(@alpha_re));
$Fim_max = Compute(max(@alpha_im));
$grid_mag = $Fmag_max - $Fmag_min; # limits are same for real and imag parts
$grid_ph = $Fph_max - $Fph_min; # limits are same for real and imag parts
$grid_re = $Fre_max - $Fre_min; # limits are same for real and imag parts
$grid_im = $Fim_max - $Fim_min; # limits are same for real and imag parts
#$orig = image(insertGraph($gr),width => 400,height => 300,tex_size => 600);
# generate functions
# insert functions into graph
for ($j = 0; $j <=5; $j++) {
$graph_re[$j] = init_graph($n_min,$Fre_min,$n_max,$Fre_max,'axes'=>[0,0],'grid'=>[$grid_n,$grid_re] );
$graph_im[$j] = init_graph($n_min,$Fim_min,$n_max,$Fim_max,'axes'=>[0,0],'grid'=>[$grid_n,$grid_im] );
};
# set labels in graphs
for ($j = 0; $j <=5; $j++) {
$graph_re[$j]->lb('reset');
$graph_re[$j]->lb(new Label(-0.5,0,0,'black','right','middle'));
$graph_re[$j]->lb(new Label(-0.5,($Fre_max-1),($Fre_max-1),'black','right','middle'));
for ($i = 0; $i <= ($n_max-1); $i++) { if ($i != 0) {
$graph_re[$j]->lb(new Label($i,-.5,$i,'black','center','top')) }};
$graph_re[$j]->lb(new Label(-.5,($Fre_max/2),"Fre",'black','right','top'));
$graph_re[$j]->lb(new Label(($n_max/2),-0.5,"n",'black','right','bottom'));
#plot_functions( $graph_re[$j], $real[$j]);
#$point1[0] = closed_circle(n_vec[0],$alpha_re[0], 'red');
#$point1[1] = closed_circle(n_vec[1],$alpha_re[1], 'red');
$point1[0] = closed_circle(-1,1, 'red');
$point1[1] = closed_circle(1,2, 'red');
$graph_re[$j] -> stamps($point1[0],$point1[1]);
$fig_re[$j] = image(insertGraph($graph_re[$j]),width => 240,height => 180,tex_size => 200);
$graph_im[$j]->lb('reset');
$graph_im[$j]->lb(new Label(-0.5,0,0,'black','right','middle'));
$graph_im[$j]->lb(new Label(-0.5,($Fim_max-1),($Fim_max-1),'black','right','middle'));
for ($i = 0; $i <= ($w_max-1); $i++) { if ($i != 0) {
$graph_im[$j]->lb(new Label($i,-.5,$i,'black','center','top')) }};
$graph_im[$j]->lb(new Label(-.5,($Fim_max/2),"Im(F)",'black','right','top'));
$graph_im[$j]->lb(new Label(($n_max/2),-0.5,"n",'black','right','bottom'));
#plot_functions( $graph_im[$j], $imag[$j]);
#$point2[0] = closed_circle(n_vec[0],$alpha_im[0], 'blue');
#$point2[1] = closed_circle(n_vec[1],$alpha_im[1], 'blue');
$point1[0] = closed_circle(-1,1, 'red');
$point1[1] = closed_circle(1,2, 'red');
$graph_im[$j] -> stamps($point2[0],$point2[1]);
$fig_im[$j] = image(insertGraph($graph_im[$j]),width => 240,height => 180,tex_size => 200);
};
$mc = new_multiple_choice();
$mc->qa('Sketch accurate graphs of the real and imaginary parts of this function, \( Real(F(n)) \) and \( Imag(F(n) )\) , for integers \( n \in [-$N, $N] \). Which (if any) of the graphs below matches the graph you drew?','Real $fig_re[0] Imag $fig_im[0] $BR $BITALIC(click on image to enlarge)$EITALIC ');
$mc->extra('Real $fig_re[1] Imag $fig_im[1] $BR $BITALIC(click on image to enlarge)$EITALIC',
'Real $fig_re[2] Imag $fig_im[2] $BR $BITALIC(click on image to enlarge)$EITALIC',
'Real $fig_re[3] Imag $fig_im[3] $BR $BITALIC(click on image to enlarge)$EITALIC',
'Real $fig_re[4] Imag $fig_im[4] $BR $BITALIC(click on image to enlarge)$EITALIC',
'Real $fig_re[5] Imag $fig_im[5]$BR $BITALIC(click on image to enlarge)$EITALIC');
$mc->makeLast('None of the above');
Context()->texStrings;
BEGIN_TEXT
Graphing discrete complex functions, e.g., Fourier series
$PAR
Consider the periodic function with period \( $T \) given by
$BR
\[ f(t) = \left\lbrace \begin{array}{ l l } 0 & \mbox{ if } -$Tover2 \leq t < $t0 \\ $a1 & \mbox{ if } $t0 \leq t < $t1 \\
$a2 & \mbox{ if } $t1 \leq t < $t2 \\
0 & \mbox{ if } $t2 \leq t < $Tover2. \end{array} \right. \]
$PAR
Find and plot the first $N coefficients of the exponential Fourier Series for \( f(t) \), i.e., \( F(n) \) for \( n = -$N, ... 0, ... $N.\)
$BR
\{ $mc->print_q() \} $BR
\{ $mc->print_a() \}
END_TEXT
Context()->normalStrings;
ANS(radio_cmp($mc->correct_ans));
## force a refresh of the image after changes
ENDDOCUMENT(); # This should be the last executable line in the problem.