version 1.1, 2001/05/19 00:24:39
|
version 1.4, 2001/06/01 14:17:04
|
Line 31
|
Line 31
|
</p> |
</p> |
<ul> |
<ul> |
<li> |
<li> |
|
<b><responseparam></b> if it appears it should be |
|
inside of a <*response> tag, defines an externally |
|
adjustable parameter for this question. Arguments: |
|
<ul> |
|
<li> |
|
<i>default</i> required, specifies a default value for |
|
the parameter |
|
</li> |
|
<li> |
|
<i>name</i> required, specifies an internal name for |
|
the parameter |
|
</li> |
|
<li> |
|
<i>type</i> required specifies the type of parameter, |
|
one of "tolerance", "int", "float", "string", "date" |
|
(configuration of paramters is handled by |
|
lonparmset.pm and parameter.html) |
|
</li> |
|
<li> |
|
<i>description</i> a string describing the parameter, |
|
this is what is used to talk about a parameter outside |
|
of a problem |
|
</li> |
|
</ul> |
|
</li> |
|
<li> |
<b><numericalresponse></b> implements a numerical |
<b><numericalresponse></b> implements a numerical |
answer, it needs an internal <b><textline></b> for |
answer, it needs an internal <b><textline></b> for |
the response to go in. It checks all styles of numerical |
the response to go in. It checks all styles of numerical |
Line 275
|
Line 301
|
<p> |
<p> |
A list of functions that have been written that are available in |
A list of functions that have been written that are available in |
the Safe space scripting environment inside a problem. The eventual |
the Safe space scripting environment inside a problem. The eventual |
goal is to provide all of the functions available in CAPA |
goal is to provide all of the functions available in CAPA. Detailed |
|
descriptions of each function and comparison with CAPA is given in |
|
<a href="homework6.html">CAPA to LON-CAPA Functions</a>. |
</p> |
</p> |
<ul> |
<ul> |
|
<li>sin(x), cos(x), tan(x)</li> |
|
<li>asin(x), acos(x), atan(x), atan2(y,x)</li> |
|
<li>log(x), log10(x)</li> |
|
<li>exp(), pow(x,y), sqrt(x)</li> |
|
<li>abs(x), sgn(x)</li> |
|
<li>erf(x), erfc(x)</li> |
|
<li>ceil(x), floor(x)</li> |
|
<li>min(...), max(...)</li> |
|
<li>factorial(n)</li> |
|
<li>N%M</li> |
|
<li>sinh(x), cosh(x), tanh(x)</li> |
|
<li>asinh(x), acosh(x), atanh(x)</li> |
|
<li>roundto(x,n)</li> |
|
<li>web("a","b","c") or web(a,b,c)</li> |
|
<li>html("a") or html(a)</li> |
|
<li>j0(x), j1(x), jn(n,x), jv(y,x)</li> |
|
<li>y0(x), y1(x), yn(n,x), yv(y,x)</li> |
<li>random</li> |
<li>random</li> |
<li>tan</li> |
|
<li>atan</li> |
|
<li>acos</li> |
|
<li>asin</li> |
|
<li>log10</li> |
|
<li>pow</li> |
|
<li>ceil</li> |
|
<li>floor</li> |
|
<li>format</li> |
|
<li>map</li> |
|
<li>choose</li> |
<li>choose</li> |
|
<li>tex("a","b") or tex(a,b)</li> |
|
<li>var_in_tex(a)</li> |
|
<li>to_string(x), to_string(x,y)</li> |
|
<li>class(), section()</li> |
|
<li>name(), student_number()</li> |
|
<li>open_date(), due_date(), answer_date()</li> |
|
<li>sub_string()</li> |
|
<li>array_moments(array)</li> |
|
<li>format(x,y)</li> |
|
<li>map(...)</li> |
<li>caparesponse_check</li> |
<li>caparesponse_check</li> |
<li>caparesponse_check_list</li> |
<li>caparesponse_check_list</li> |
</ul> |
</ul> |
|
|
|
<table border=1> |
|
<tr> |
|
<td valign="top"><b>CAPA Functions</b</td> |
|
<td valign="top"><b>LON-CAPA</b</td> |
|
<td valign="top"><b>Descriptions</b</td> |
|
<td valign="top"><b>Differences (if any)</b</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sin(x), cos(x), tan(x)</td> |
|
<td valign="top">&sin($x), &cos($x), &tan($x)</td> |
|
<td valign="top">Trigonometric functions where x is in radians. $x |
|
can be a pure number, i.e., you can call &sin(3.1415)</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sin(x), cos(x), tan(x)</td> |
|
<td valign="top">&sin($x), &cos($x), &tan($x)</td> |
|
<td valign="top">Trigonometric functions where x is in radians. $x |
|
can be a pure number, i.e., you can call &sin(3.1415)</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">asin(x), acos(x), atan(x), atan2(y,x)</td> |
|
<td valign="top">&asin($x), &acos($x), &atan($x), &atan2($y,$x)</td> |
|
<td valign="top">Inverse trigonometric functions. Return value is |
|
in radians. For asin and acos the value of x must be between -1 and 1. |
|
The atan2 returns a value between -pi and pi the sign of which is determined |
|
by y. $x and $y can be pure numbers</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">log(x), log10(x)</td> |
|
<td valign="top">&log($x), &log10($x)</td> |
|
<td valign="top">Natural and base-10 logarithm. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">exp(x), pow(x,y), sqrt(x)</td> |
|
<td valign="top">&exp($x), &pow($x,$y), &sqrt($x)</td> |
|
<td valign="top">Exponential, power and square root, i.e.,e<sup>x</sup>, x<sup>y</sup> and /x. $x and $y can be pure numbers</td> |
|
|
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">abs(x), sgn(x)</td> |
|
<td valign="top">&abs($x), &sgn($x)</td> |
|
<td valign="top">Abs takes the absolute value of x while sgn(x) returns |
|
1, 0 or -1 depending on the value of x. For x>0, sgn(x) = 1, for x=0, sgn(x) |
|
= 0 and for x<0, sgn(x) = -1. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">erf(x), erfc(x)</td> |
|
<td valign="top">&erf($x), &erfc($x)</td> |
|
<td valign="top">Error function. erf = 2/sqrt(pi) integral (0,x) e<sup>t-sq</sup> and <i> erfx(x)</i> = 1.0 - <i>erf(x)</i>. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">ceil(x), floor(x)</td> |
|
<td valign="top">&ceil($x), &floor($x)</td> |
|
<td valign="top">Ceil function returns an integer rounded up whereas |
|
floor function returns and integer rounded down. If x is an integer than |
|
it returns the value of the integer. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">min(...), max(...)</td> |
|
<td valign="top">&min(...), &max(...)</td> |
|
<td valign="top">Returns the minimum/ maximum value of a list of |
|
arguments if the arguments are numbers. If the arguments are strings then |
|
it returns a string sorted according to the ASCII codes</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">factorial(n)</td> |
|
<td valign="top">&factorial($n)</td> |
|
<td valign="top">Argument (n) must be an integer else it will round |
|
down. The largest value for n is 170. $n can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">N%M</td> |
|
<td valign="top">$N%$M</td> |
|
|
|
<td valign="top">N and M are integers and returns the remainder (in |
|
integer) of N/M. $N and $M can be pure numbers</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sinh(x), cosh(x), tanh(x)</td> |
|
<td valign="top">&sinh($x), &cosh($x), &tanh($x)</td> |
|
<td valign="top">Hyperbolic functions. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">asinh(x), acosh(x), atanh(x)</td> |
|
<td valign="top">&asinh($x), &acosh($x), &atanh($x)</td> |
|
<td valign="top">Inverse hyperbolic functions. $x can be a pure number</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">roundto(x,n)</td> |
|
<td valign="top">&roundto($x,$n)</td> |
|
<td valign="top">Rounds a real number to n decimal points. $x and |
|
$n can be pure numbers</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">web("a","b","c") or web(a,b,c)</td> |
|
<td valign="top">&web("a","b","c") or &web($a,$b,$c)</td> |
|
<td valign="top">Returns either a, b or c depending on the output |
|
medium. a is for plain ASCII, b for tex output and c for html output</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">html("a") or html(a)</td> |
|
<td valign="top">&html("a") or &html($a)</td> |
|
<td valign="top">Output only if the output mode chosen is in html |
|
format</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">jn(m,x)</td> |
|
<td valign="top">&j0($x), &j1($x), &jn($m,$x), &jv($y,$x)</td> |
|
<td valign="top">Bessel functions of the first kind with orders 0, |
|
1 and m respectively. For jn(m,x), m must be an integer whereas for jv(y,x), |
|
y is real. $x can be a pure number. $m must be an integer and can be a |
|
pure integer number. $y can be a pure real number</td> |
|
<td valign="top">In CAPA, j0, j1 and jn are contained in one function, |
|
jn(m,x) where m takes the value of 0, 1 or 2. jv(y,x) was not implemented</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">yn(m,x)</td> |
|
<td valign="top">&y0($x), &y1($x), &yn($m,$x), &yv($y,$x)</td> |
|
<td valign="top">Bessel functions of the second kind with orders |
|
0, 1 and m respectively. For yn(m,x), m must be an integer whereas for |
|
yv(y,x), y is real. $x can be a pure number. $m must be an integer and |
|
can be a pure integer number. $y can be a pure real number</td> |
|
<td valign="top">In CAPA, y0, y1 and yn are contained in one function, |
|
yn(m,x) where m takes the value of 0, 1 or 2. yv(y,x) was not implemented</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">random(l,u,d)</td> |
|
<td valign="top">&random($l,$u,$d)</td> |
|
<td valign="top">Returns a uniformly distributed random number between |
|
the lower bound, l and upper bound, u in steps of d. $l, $u and $d can |
|
be pure numbers</td> |
|
<td valign="top">In CAPA, all the 3 arguments must be of the same |
|
type. However, now you can mix the type</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">choose(i,...)</td> |
|
<td valign="top">&choose($i,...)</td> |
|
<td valign="top">Choose the ith item from the argument list. i must |
|
be an integer greater than 0 and the value of i should not exceed the number |
|
of items. $i can be a pure integer</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">tex(a,b), tex("a","b")</td> |
|
<td valign="top">&tex($a,$b), &tex("a","b")</td> |
|
<td valign="top">Returns a if the output mode is in tex otherwise |
|
returns b</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">var_in_tex(a)</td> |
|
<td valign="top">&var_in_tex($a)</td> |
|
<td valign="top">Equivalent to tex("a","")</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">to_string(x), to_string(x,y)</td> |
|
<td valign="top">&to_string($x), &to_string($x,$y)</td> |
|
<td valign="top">If x is an integer, returns a string. If x is real |
|
than the output is a string with format given by y. For example, if x = |
|
12.3456, &to_string(x,".3F") = 12.345 and &to_string(x,".3E") = |
|
1.234E+01.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">capa_id(), class(), section(), set(), problem()</td> |
|
<td valign="top">&class(), &section()</td> |
|
<td valign="top">Returns null string, class descriptive name, section |
|
number, set number and null string.</td> |
|
<td valign="top">capa_id(), set() and problem() are no longer used. |
|
Currently, they return a null value.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">name(), student_number()</td> |
|
<td valign="top">&name(), &student_number()</td> |
|
<td valign="top">Return the full name in the following format: lastname, |
|
firstname initial. Student_number returns the student 9-alphanumeric string. |
|
If undefined, the functions return null.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">open_date(), due_date(), answer_date()</td> |
|
<td valign="top">&open_date(), &due_date(), &answer_date()</td> |
|
<td valign="top">Problem open date, due date and answer date. The |
|
time is also included in 24-hr format.</td> |
|
<td valign="top">Output format for time is changed slightly. If pass |
|
noon, it displays ..pm else it displays ..am. So 23:59 is displayed as |
|
11:59 pm.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">get_seed(), set_seed()</td> |
|
<td valign="top">Not implemented</td> |
|
<td valign="top">Get and set the random seed.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">sub_string(a,b,c)</td> |
|
<td valign="top">&sub_string($a,$b,$c) <br>perl substr function. |
|
However, note the differences</td> |
|
<td valign="top">Retrieve a portion of string a starting from b and |
|
length c. For example, $a = "Welcome to LON-CAPA"; |
|
$result=&sub_string($a,4,4); then $result is "come"</td> |
|
<td valign="top">Perl intrinsic function, substr(string,b,c) starts |
|
counting from 0 (as opposed to 1). In the example to the left, substr($a,4,4) |
|
returns "ome ".</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">array[xx]</td> |
|
<td valign="top">@arrayname <br>Array is intrinsic in perl. |
|
To access a specific element use $arrayname[$n] where $n |
|
is the $n+1 element since the array count starts from 0</td> |
|
<td valign="top">"xx" can be a variable or a calculation.</td> |
|
<td valign="top">In LON-CAPA, an array is defined by @arrayname. |
|
It is not necessary to specify the dimension of the array. </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">array_moments(B,A)</td> |
|
<td valign="top">@B=&array_moments(@A)</td> |
|
<td valign="top">Evaluates the moments of an array A and place the |
|
result in array B[i] where i = 0 to 4. The contents of B are as follows: |
|
B[0] = number of elements, B[1] = mean, B[2] = variance, B[3] = skewness |
|
and B[4] = kurtosis.</td> |
|
<td valign="top"> </td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">array_max(Name), array_min(Name)</td> |
|
<td valign="top">&min(@Name), &max(@Name)</td> |
|
<td valign="top">In LON-CAPA to find the maximum value of an array, use |
|
&max(@arrayname) and to find the minimum value of an array, use |
|
&min(@arrayname)</td> |
|
<td valign="top">Combined with the min and max functions defined |
|
earlier.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">init_array(Name)</td> |
|
<td valign="top">undef @name</td> |
|
<td valign="top">To destroy the contents of an array, use</td> |
|
<td valign="top">Use perl intrinsic undef function.</td> |
|
</tr> |
|
|
|
<tr> |
|
<td valign="top">random_norma(...), random_beta(...), random_gamma(...), |
|
random_exponential(...), random_poisson(...), random_chi(...), random_noncentral(...)</td> |
|
<td valign="top">Not yet implemented.</td> |
|
<td valign="top"> </td> |
|
<td valign="top"> </td> |
|
</tr> |
|
</table> |
|
|
|
|
<h2><script> Variables</h2> |
<h2><script> Variables</h2> |
<ul> |
<ul> |
<li> |
<li> |
Line 316
|
Line 660
|
seed the random number generator |
seed the random number generator |
</li> |
</li> |
<li>$pi - set to PI </li> |
<li>$pi - set to PI </li> |
|
<li>$rad2deg - converts radians to degrees </li> |
|
<li>$deg2rad - converts degrees to radians </li> |
</ul> |
</ul> |
|
|
<hr> |
<hr> |
<address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address> |
<address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address> |
<!-- Created: Thu May 17 15:05:35 EDT 2001 --> |
<!-- Created: Thu May 17 15:05:35 EDT 2001 --> |
<!-- hhmts start --> |
<!-- hhmts start --> |
Last modified: Fri May 18 18:12:27 EDT 2001 |
Last modified: Fri May 18 21:29:39 EDT 2001 |
<!-- hhmts end --> |
<!-- hhmts end --> |
</body> |
</body> |
</html> |
</html> |
<ul> |
|
<li> |
|
<b><></b> |
|
</li> |
|
</ul> |
|
|
|