FormattingDecimals: Difference between revisions
No edit summary |
(added historical tag and gave updated problem link) |
||
| (5 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
<h2>Formatting Decimals: PG Code Snippet</h2> | {{historical}} | ||
<p style="font-size: 120%;font-weight:bold">This problem has been replaced with [https://openwebwork.github.io/pg-docs/sample-problems/problem-techniques/FormattingDecimals.html a newer version of this problem]</p> | |||
<h2>Formatting Decimals and Using Logarithms: PG Code Snippet</h2> | |||
<!-- Header for these sections -- no modification needed --> | <!-- Header for these sections -- no modification needed --> | ||
<p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> | <p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> | ||
<em>We show how to format decimals | <em>We show how to use format decimals, and, conveniently also how to use logarithmic functions in PG problems.</em> | ||
</p> | </p> | ||
| Line 78: | Line 81: | ||
<p> | <p> | ||
<b>Setup:</b> | <b>Setup:</b> | ||
Since the domain of logarithmic | Since the domain of a logarithmic function is all positive real numbers, we should set the domain of function evaluation to <code>[2,4]</code> in order to avoid vertical asymptotes and places where a logarithmic function takes values close to zero. | ||
</p> | </p> | ||
<p> | <p> | ||
| Line 88: | Line 91: | ||
<p> | <p> | ||
Note: If we load <code>MathObjects.pl</code>, then <code>log</code> and <code>ln</code> are both defined to be the natural logarithm (base e, not base 10). If we had loaded the older <code>PGauxiliaryFunctions.pl</code> macro instead, then <code>log</code> would be defined as the natural logarithm (base e, not base 10), and <code>ln</code> would be undefined. | Note: If we load <code>MathObjects.pl</code>, then <code>log</code> and <code>ln</code> are both defined to be the natural logarithm (base e, not base 10). If we had loaded the older <code>PGauxiliaryFunctions.pl</code> macro instead, then <code>log</code> would be defined as the natural logarithm (base e, not base 10), and <code>ln</code> would be undefined. | ||
</p> | |||
<p> | |||
It is possible to set a context flag that will use the base 10 log via <code>Context()->flags->set(useBaseTenLog=>1);</code> The default is that this is set to zero. | |||
</p> | </p> | ||
<p> | <p> | ||
Latest revision as of 13:47, 28 June 2023
This problem has been replaced with a newer version of this problem
Formatting Decimals and Using Logarithms: PG Code Snippet
We show how to use format decimals, and, conveniently also how to use logarithmic functions in PG problems.
| PG problem file | Explanation |
|---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl" ); TEXT(beginproblem()); |
Initialization: Standard. |
Context("Numeric");
Context()->variables->set(x=>{limits=>[2,4]});
#
# both ln and log are natural log (base e)
#
$a = 6; # or $a = random(3,7,1);
#
# log base e
#
$b = sprintf("%0.3f", ln($a) ); # or log($a)
$solution1 = Real("$b");
$f = Formula("ln(x)"); # or log(x)
$solution2 = $f->eval(x=>$a);
#
# log base 10 is log10, logten,
# ln(x)/ln(10), or log(x)/log(10)
#
$c = sprintf("%0.3f", ln($a)/ln(10) ); # or log($a)/log(10)
$solution3 = Real("$c");
$g = Formula("ln(x)/ln(10)"); # or log(x)/log(10)
$solution4 = $g->eval(x=>$a);
|
Setup:
Since the domain of a logarithmic function is all positive real numbers, we should set the domain of function evaluation to
Use perl's We used the logarithm change of base formula log10(a) = log(a) / log(10) = ln(a) / ln(10) to get a logarithm base 10.
Note: If we load
It is possible to set a context flag that will use the base 10 log via If you would like to define log base 2 (or another base) see AddingFunctions for how to define and add a new function to the context so that students can enter it in their answers. |
Context()->texStrings;
BEGIN_TEXT
Notice the formatting and rounding differences
between \( $solution1 \) and \( $solution2 \).
$BR
$BR
Try entering \( \ln($a), \log($a),
\ln($a)/\ln(10), \log($a)/\log(10),
\mathrm{logten}($a), \mathrm{log10}($a) \).
$BR
$BR
\( \ln($a) = \) \{ ans_rule(20) \}
$BR
\( \ln($a) = \) \{ ans_rule(20) \}
$BR
\( \log_{10}($a) = \) \{ ans_rule(20) \}
$BR
\( \log_{10}($a) = \) \{ ans_rule(20) \}
END_TEXT
Context()->normalStrings;
|
Main Text: Notice the difference in decimal formatting when "Show Correct Answers" is checked and you click "Submit Answers". |
ANS( $solution1->cmp() ); ANS( $solution2->cmp() ); ANS( $solution3->cmp() ); ANS( $solution4->cmp() ); ENDDOCUMENT(); |
Answer Evaluation: Standard. |