Parent Directory
|
Revision Log
Cleaned problem code using convert-functions.pl
1 ## DESCRIPTION 2 ## Calculus 3 ## ENDDESCRIPTION 4 5 ## KEYWORDS('homogeneous' 'differential equation') 6 ## Tagged by tda2d 7 8 ## DBsubject('Calculus') 9 ## DBchapter('Second-Order Differential Equations') 10 ## DBsection('Second-Order Linear Equations') 11 ## Date('') 12 ## Author('') 13 ## Institution('Dartmouth') 14 ## TitleText1('Calculus') 15 ## EditionText1('5') 16 ## AuthorText1('Stewart') 17 ## Section1('18.1') 18 ## Problem1('') 19 20 DOCUMENT(); 21 loadMacros("PG.pl", 22 "PGbasicmacros.pl", 23 "PGchoicemacros.pl", 24 "PGanswermacros.pl", 25 "PGauxiliaryFunctions.pl", 26 ); 27 28 ##Hack around evaluation problem 29 sub calleval { 30 my ($ans_evaluator,$student_answer) = @_; 31 my $rh_ans_hash = ""; 32 if ( ref($ans_evaluator) eq 'AnswerEvaluator' ) { # new style 33 $rh_ans_hash = $ans_evaluator->evaluate($student_answer); 34 } elsif (ref($ans_evaluator) eq 'CODE' ) { #old style 35 $rh_ans_hash = &$ans_evaluator($student_answer); 36 } else { 37 warn "There is a problem using the answer evaluator"; 38 } 39 return $rh_ans_hash; 40 } 41 42 ## Do NOT show partial correct answers 43 $showPartialCorrectAnswers = 0; 44 45 46 $root1 = non_zero_random(-10,10); 47 $root2 = $root1 + random(1,5); 48 ## If $root2 is zero, then $root1 < 0 49 if ($root2 == 0) {$root2 = random(1,10);} 50 $function1 = "exp($root1*t)"; 51 $function2 = "exp($root2*t)"; 52 53 ## Ok, we are ready to begin the problem... 54 ## 55 TEXT(beginproblem()); 56 57 58 BEGIN_TEXT 59 $BR 60 Find the general solution to the homogeneous differential equation 61 \[ 62 \frac{d^2y}{dt^2} - \{$root1 + $root2\}\frac{dy}{dt} + \{$root1 * $root2\}y = 0 63 \] 64 $BR 65 The solution has the form 66 \[y = C_1 f_1(t) + C_2 f_2(t)\] 67 with 68 \(f_1(t) = \) \{NAMED_ANS_RULE(first_fcn,25)\} 69 and \(f_2(t) = \) \{NAMED_ANS_RULE(second_fcn,25)\} 70 $BR 71 72 Left to your own devices, you will probably write down the correct 73 answers, but in case you want to quibble, enter your answers so that 74 \(f_1, f_2\) are normalized with their value at \(t = 0\) equal to 75 1. 76 77 $PAR 78 END_TEXT 79 80 ($ans_eval1) = num_cmp(exp($root1)); ## Value of $function1 at t = 1 81 $firstAnswer = $inputs_ref->{first_fcn}; ## Grab the first answer entered by student 82 $firstAnswer = '' unless defined($firstAnswer); ## Make sure it is defined 83 $firstAnswer =~ s/t/(1)/g; ## Globally substitute (1) for t in $firstAnswer 84 $rh_ans_hash = &calleval($ans_eval1,$firstAnswer); ## Check first answer against given 85 86 87 ## Check answers accordingly 88 if ( $rh_ans_hash->{score} == 1 ) 89 { 90 NAMED_ANS(first_fcn, fun_cmp($function1, vars=>['t']) ); 91 NAMED_ANS(second_fcn, fun_cmp($function2, vars=>['t']) ); 92 } 93 else 94 { 95 NAMED_ANS(first_fcn, fun_cmp($function2, vars=>['t']) ); 96 NAMED_ANS(second_fcn, fun_cmp($function1, vars=>['t']) ); 97 } 98 99 ENDDOCUMENT(); 100 101 102 103
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |