Difference between revisions of "DigitsTolType"
(change explanation of how digits tolType is supposed to work) |
(Edit explanation of sample code) |
||
Line 49: | Line 49: | ||
<pre> |
<pre> |
||
Context("Numeric") |
Context("Numeric") |
||
− | Context()->flags->set(tolType=>'digits', tolerance=>3, tolTruncation=>1); |
+ | Context()->flags->set(tolType => 'digits', tolerance => 3, tolTruncation => 1); |
$answer = Real("pi"); |
$answer = Real("pi"); |
||
Line 59: | Line 59: | ||
<b>Setup:</b> |
<b>Setup:</b> |
||
<ul> |
<ul> |
||
− | <li>The <code>tolType=>'digits'</code> switches from the default 'relative' tolerance type to the 'digits' tolerance type.</li> |
+ | <li>The <code>tolType => 'digits'</code> switches from the default 'relative' tolerance type to the 'digits' tolerance type.</li> |
− | <li>The <code>tolerance=>3</code> sets the number of digits to 3. The default value is the default for other tolerance types, 0.001, but any tolerance that is between 0 and 1 is converted via log10 and rounding to an integer (in this case, to 3).</li> |
+ | <li>The <code>tolerance => 3</code> sets the number of digits to check to 3. The default value is acutally the default for other tolerance types, 0.001, but any tolerance that is between 0 and 1 is converted via log10 and rounding to an integer (in this case, to 3).</li> |
− | <li>The <code>tolTruncation</code> parameter is either 1 (true) or 0 (false). Details are explained below.</li> |
+ | <li>The <code>tolTruncation</code> parameter is either 1 (true) or 0 (false). Its default is 1. Details are explained below.</li> |
− | <li>The <code>tolExtraDigits</code> parameter sets the number of extra digits |
+ | <li>The <code>tolExtraDigits</code> parameter sets the number of extra digits to examine beyond the first <code>tolerance</code> digits. Its default value is 1. This is explained below.</li> |
</ul> |
</ul> |
||
</p> |
</p> |
||
Line 69: | Line 69: | ||
</p> |
</p> |
||
<p> |
<p> |
||
− | If the student enters additional digits, the first additional <code>tolExtraDigits</code> digits |
+ | If the student enters additional digits, the first additional <code>tolExtraDigits</code> digits are examined in the same manner. For example, if the correct answer is pi=3.1415926... and default flag values are used, the student can answer with 3.14, 3.141, 3.142, 3.1415, and even 3.1418 since that 8 is beyond the extra digits checking. But for example 3.143 is not accepted, since the first extra digit is not right. (And if <code>tolTruncation</code> is false, 3.141 would not be accepted either.) |
+ | </p> |
||
+ | <p> |
||
+ | <b>Warning:</b> this tolerance type also applies to formula comparisons. For example if the answer is 2^x and a student enters e^(0.69x), this will probably not be accepted. Random test values will be used for x to make that comparison. For example if one of the test values is x=2, the correct output is 4 and the student's output would be 3.9749... and this would be declared as not a match, since the first three digits to not agree. |
||
</p> |
</p> |
||
Line 90: | Line 90: | ||
<td style="background-color:#ffcccc;padding:7px;"> |
<td style="background-color:#ffcccc;padding:7px;"> |
||
<p> |
<p> |
||
− | <b>First Section:</b> This tests the default |
+ | <b>First Section:</b> This tests the default conditions for this tolerance type. It should accept 3.14, 3.141 and 3.142 as correct, but not 3.15. |
</p> |
</p> |
||
</td> |
</td> |
||
Line 100: | Line 100: | ||
Context("Numeric"); |
Context("Numeric"); |
||
− | Context()->flags->set(tolType=>'digits', tolerance=>3, tolTruncation=>0); |
+ | Context()->flags->set(tolType => 'digits', tolerance => 3, tolTruncation => 0); |
$answer2 = Real("pi"); |
$answer2 = Real("pi"); |
||
Line 107: | Line 107: | ||
<td style="background-color:#ffffcc;padding:7px;"> |
<td style="background-color:#ffffcc;padding:7px;"> |
||
<p> |
<p> |
||
− | <b>Second block explanation: </b> First, reset the context with <code>Context("Numeric")</code> and then the |
+ | <b>Second block explanation: </b> First, reset the context with <code>Context("Numeric")</code> and then the same flags are set as before except for <code>tolTruncation => 0</code>. |
</td> |
</td> |
||
Line 125: | Line 125: | ||
<td style="background-color:#ffcccc;padding:7px;"> |
<td style="background-color:#ffcccc;padding:7px;"> |
||
<p> |
<p> |
||
− | <b>Second Section:</b> This tests |
+ | <b>Second Section:</b> This tests when [|tolTruncation|] is false. It should accept 3.14, 3.142 as correct, but not 3.141. |
</p> |
</p> |
||
</td> |
</td> |
||
Line 134: | Line 134: | ||
<pre> |
<pre> |
||
Context("Numeric"); |
Context("Numeric"); |
||
− | Context()->flags->set(tolType=>'digits', tolerance=>3, tolTruncation=>0,tolExtraDigits=>2); |
+ | Context()->flags->set(tolType => 'digits', tolerance => 3, tolTruncation => 0,tolExtraDigits => 2); |
$answer3 = Real("3.14"); |
$answer3 = Real("3.14"); |
||
</pre> |
</pre> |
||
Line 140: | Line 140: | ||
<td style="background-color:#ffffcc;padding:7px;"> |
<td style="background-color:#ffffcc;padding:7px;"> |
||
<p> |
<p> |
||
− | <b>Second block explanation: </b> First, reset the context with <code>Context("Numeric")</code> and then the |
+ | <b>Second block explanation: </b> First, reset the context with <code>Context("Numeric")</code> and then the same flags are set except |
− | for <code>tolTruncation=>0</code> as well as the <code>tolExtraDigits=>2</code>. |
+ | for <code>tolTruncation => 0</code> as well as the <code>tolExtraDigits => 2</code>. |
</td> |
</td> |
||
Line 151: | Line 151: | ||
BEGIN_PGML |
BEGIN_PGML |
||
− | + | This section is with [|tolTruncation|] set to false (0) and [|tolExtraDigits|] set to 2. Enter 3.1415, 3.1416, 3.1417, 3.14888, 3.14, and 3.1415888 to see if it accepts the answer. |
|
− | Enter [`\pi`] to the first 2 decimal places after the decimal point [_]{$answer3} |
||
+ | [`\pi=`][_]{$answer3} |
||
END_PGML |
END_PGML |
||
Line 161: | Line 161: | ||
<td style="background-color:#ffcccc;padding:7px;"> |
<td style="background-color:#ffcccc;padding:7px;"> |
||
<p> |
<p> |
||
− | <b>Third Section:</b> This allows only to the given number of digits (3). It should accept only 3.14 as correct. |
||
+ | <b>Third Section:</b> This additionally tests when [|tolExtraDigits|] is larger than its default. It should accept 3.1416, 3.14, and 3.1415888. It should reject 3.1415 because [|tolTruncation|] is false. It should reject 3.1417 and 3.14888 because the student chose to use extra digits and the first two of those are not correct. |
||
</p> |
</p> |
||
</td> |
</td> |
Revision as of 13:52, 30 April 2021
Digits TolType
This describes an alternative way for determining the tolerance type based on the number of digits.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "PGML.pl" ); TEXT(beginproblem()); |
Initialization: The tolType of type digits is built-in to MathObjects. |
Context("Numeric") Context()->flags->set(tolType => 'digits', tolerance => 3, tolTruncation => 1); $answer = Real("pi"); |
Setup:
The goal is that the student must enter at least the first
If the student enters additional digits, the first additional Warning: this tolerance type also applies to formula comparisons. For example if the answer is 2^x and a student enters e^(0.69x), this will probably not be accepted. Random test values will be used for x to make that comparison. For example if one of the test values is x=2, the correct output is 4 and the student's output would be 3.9749... and this would be declared as not a match, since the first three digits to not agree. |
BEGIN_PGML This section is with [|tolTruncation|] set to true (1). The exact answer is [`\pi`]. Enter 3.14, 3.15, 3.141, 3.142 to see if it accepts the answer. [`\pi=`][_]{$answer} END_PGML |
First Section: This tests the default conditions for this tolerance type. It should accept 3.14, 3.141 and 3.142 as correct, but not 3.15. |
Context("Numeric"); Context()->flags->set(tolType => 'digits', tolerance => 3, tolTruncation => 0); $answer2 = Real("pi"); |
Second block explanation: First, reset the context with |
BEGIN_PGML This section is with [|tolTruncation|] set to false (0). The exact answer is [`\pi`]. Enter 3.14, 3.15, 3.141, 3.142 to see if it accepts the answer. [`\pi=`][_]{$answer2} END_PGML |
Second Section: This tests when [|tolTruncation|] is false. It should accept 3.14, 3.142 as correct, but not 3.141. |
Context("Numeric"); Context()->flags->set(tolType => 'digits', tolerance => 3, tolTruncation => 0,tolExtraDigits => 2); $answer3 = Real("3.14"); |
Second block explanation: First, reset the context with |
BEGIN_PGML This section is with [|tolTruncation|] set to false (0) and [|tolExtraDigits|] set to 2. Enter 3.1415, 3.1416, 3.1417, 3.14888, 3.14, and 3.1415888 to see if it accepts the answer. [`\pi=`][_]{$answer3} END_PGML |
Third Section: This additionally tests when [|tolExtraDigits|] is larger than its default. It should accept 3.1416, 3.14, and 3.1415888. It should reject 3.1415 because [|tolTruncation|] is false. It should reject 3.1417 and 3.14888 because the student chose to use extra digits and the first two of those are not correct. |