## DESCRIPTION ## Trigonometry: trig functions in degrees ## ENDDESCRIPTION ## KEYWORDS('trigonometry', 'trig functions in degrees') ## DBsubject('WeBWorK') ## DBchapter('WeBWorK Tutorial') ## DBsection('Fort Lewis Tutorial 2011') ## Date('01/30/2011') ## Author('Paul Pearson') ## Institution('Fort Lewis College') ## TitleText1('') ## EditionText1('') ## AuthorText1('') ## Section1('') ## Problem1('') ########################### # Initialization DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "AnswerFormatHelp.pl", ); TEXT(beginproblem()); ########################### # Setup Context("Numeric"); ############################################## # Begin trig functions in degrees Context()->functions->remove("cos"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub cos { shift; my $x = shift; return CORE::cos($x*3.14159265358979/180); } package main; # Make it work on formulas as well as numbers # if uncommented, this next line will generate error messages #sub cos {Parser::Function->call('cos',@_)} # Add the new functions to the Context Context()->functions->add( cos => {class => 'NewFunc', TeX => '\cos'}, ); Context()->functions->remove("sin"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub sin { shift; my $x = shift; return CORE::sin($x*3.14159265358979/180); } package main; # Make it work on formulas as well as numbers # if uncommented, this next line will generate error messages #sub sin {Parser::Function->call('sin',@_)} # Add the new functions to the Context Context()->functions->add( sin => {class => 'NewFunc', TeX => '\sin'}, ); Context()->functions->remove("tan"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub tan { shift; my $x = shift; return CORE::sin($x*3.14159265358979/180)/CORE::cos($x*3.14159265358979/180); } package main; # Make it work on formulas as well as numbers sub tan {Parser::Function->call('tan',@_)} # Add the new functions to the Context Context()->functions->add( tan => {class => 'NewFunc', TeX => '\tan'}, ); Context()->functions->remove("sec"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub sec { shift; my $x = shift; return 1.0/CORE::cos($x*3.14159265358979/180); } package main; # Make it work on formulas as well as numbers sub sec {Parser::Function->call('sec',@_)} # Add the new functions to the Context Context()->functions->add( sec => {class => 'NewFunc', TeX => '\sec'}, ); Context()->functions->remove("csc"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub csc { shift; my $x = shift; return 1.0/CORE::sin($x*3.14159265358979/180); } package main; # Make it work on formulas as well as numbers sub csc {Parser::Function->call('csc',@_)} # Add the new functions to the Context Context()->functions->add( csc => {class => 'NewFunc', TeX => '\csc'}, ); Context()->functions->remove("cot"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub cot { shift; my $x = shift; return CORE::cos($x*3.14159265358979/180)/CORE::sin($x*3.14159265358979/180); } package main; # Make it work on formulas as well as numbers sub cot {Parser::Function->call('cot',@_)} # Add the new functions to the Context Context()->functions->add( cot => {class => 'NewFunc', TeX => '\cot'}, ); #sub asin {CORE::atan2($_[1],CORE::sqrt(1-$_[1]*$_[1]))} #sub acos {CORE::atan2(CORE::sqrt(1-$_[1]*$_[1]),$_[1])} #sub atan {CORE::atan2($_[1],1)} #sub acot {CORE::atan2(1,$_[1])} #sub asec {acos($_[0],1.0/$_[1])} #sub acsc {asin($_[0],1.0/$_[1])} Context()->functions->remove("acos"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub acos {CORE::atan2(CORE::sqrt(1-$_[1]*$_[1]),$_[1])*180/3.14159265358979} package main; # Make it work on formulas as well as numbers sub acos {Parser::Function->call('acos',@_)} # Add the new functions to the Context Context()->functions->add( acos => {class => 'NewFunc', TeX => '\arccos'}, ); Context()->functions->remove("asin"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub asin {CORE::atan2($_[1],CORE::sqrt(1-$_[1]*$_[1]))*180/3.14159265358979} package main; # Make it work on formulas as well as numbers sub asin {Parser::Function->call('asin',@_)} # Add the new functions to the Context Context()->functions->add( asin => {class => 'NewFunc', TeX => '\arcsin'}, ); Context()->functions->remove("atan"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub atan {CORE::atan2($_[1],1)*180/3.14159265358979} package main; # Make it work on formulas as well as numbers sub atan {Parser::Function->call('atan',@_)} # Add the new functions to the Context Context()->functions->add( atan => {class => 'NewFunc', TeX => '\arctan'}, ); Context()->functions->remove("asec"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub asec {CORE::atan2($_[1],CORE::sqrt(1-$_[1]*$_[1]))*180/3.14159265358979} #sub asec {acos($_[0],1.0/$_[1])} package main; # Make it work on formulas as well as numbers sub asec {Parser::Function->call('asec',@_)} # Add the new functions to the Context Context()->functions->add( asec => {class => 'NewFunc', TeX => '\arcsec'}, ); Context()->functions->remove("acsc"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub acsc {CORE::atan2(CORE::sqrt(1-$_[1]*$_[1]),$_[1])*180/3.14159265358979} #sub acsc {asin($_[0],1.0/$_[1])} package main; # Make it work on formulas as well as numbers sub acsc {Parser::Function->call('acsc',@_)} # Add the new functions to the Context Context()->functions->add( acsc => {class => 'NewFunc', TeX => '\arccsc'}, ); Context()->functions->remove("acot"); package NewFunc; # this next line makes the function a # function from reals to reals our @ISA = qw(Parser::Function::numeric); sub acot {CORE::atan2(1,$_[1])*180/3.14159265358979} package main; # Make it work on formulas as well as numbers sub acot {Parser::Function->call('acot',@_)} # Add the new functions to the Context Context()->functions->add( acot => {class => 'NewFunc', TeX => '\arccot'}, ); # End trig functions in degrees ################################################### ########################### # Main text Context()->texStrings; BEGIN_TEXT Enter \( \sin(30) \): \{ ans_rule(20) \} \{ AnswerFormatHelp("formulas") \} $BR Enter \( \arcsin(1/2) \): \{ ans_rule(20) \} \{ AnswerFormatHelp("formulas") \} $BR Caution: Enter \( \arcsin(x) \) as \( \arcsin(x) \) or \( \mathrm{asin}(x) \), but not \( \sin^{-1}(x) \). END_TEXT Context()->normalStrings; ########################### # Answer evaluation $showPartialCorrectAnswers = 1; ANS( Real(0.5)->cmp() ); ANS( Real(30)->cmp() ); ########################### # Solution Context()->texStrings; BEGIN_SOLUTION ${PAR}SOLUTION:${PAR} Solution explanation goes here. END_SOLUTION Context()->normalStrings; COMMENT("MathObject version. Redefines trig functions to be in degrees (not radians)."); ENDDOCUMENT();