File:  [LON-CAPA] / loncom / html / adm / help / tex / Math_Response_Problems.tex
Revision 1.3: download - view: text, annotated - select for diffs
Mon Aug 6 22:01:24 2012 UTC (11 years, 11 months ago) by www
Branches: MAIN
CVS tags: version_2_11_0_RC1, HEAD
Clearer description of limitations

\label{Math_Response_Problems}
Math Response is a way to have a problem graded based on an algorithm that is executed inside of a computer algebra system. 
It is extremely powerful, as it tests answers for conditions rather than agreement with a particular correct answer. An unfortunate
byproduct, however, is that it cannot be analyzed by several of the LON-CAPA statistics tools.

Which computer algebra system is to be used is specified in the cas argument of the mathresponse tag; currently, only Maxima is available.
LON-CAPA sets up two arrays inside the computer algebra system: RESPONSE and LONCAPALIST. RESPONSE contains the student input by component, for example, if "3,42,17" is entered, RESPONSE[2] would be 42. LONCAPALIST contains the arguments passed in the args of mathresponse.

The answerdisplay is what is displayed when the problem is in "Show Answer" mode.

The following example illustrates this.
\begin{verbatim}
<problem>
  <script type="loncapa/perl">
$a1 = random(-6,6,4);
$a2 = random(-6,6,4);
$n1 = random(3,11,2);
$n2 = random(2,10,2);
$function = "$a1*cos($n1*x)+$a2*sin($n2*x)";
$example=&xmlparse('An example would be <m eval="on">$(sin($n1\cdot x)+cos($n2\cdot x))/\sqrt{2}$</m>');
  </script>

<startouttext />
  Give an example of a function
  <ol>
    <li>
        which is orthogonal to <algebra>$function</algebra> with respect to the
        scalar product
        <m>
           \[<g \mid h> =
               \frac{1}{\pi} \int_{-\pi}^{\pi}dx g(x) \cdot h(x)\]
        </m>
    </li>
    <li>
        whose norm is 1.
    </li>
  </ol>
<endouttext />

<mathresponse answerdisplay="$example" cas="maxima" args="$function">
    <answer>
overlap:integrate((RESPONSE[1])*(LONCAPALIST[1]),x,-%pi,%pi)/%pi;
norm:integrate((RESPONSE[1])*(RESPONSE[1]),x,-%pi,%pi)/%pi;
is(overlap=0 and norm=1);
    </answer>
    <textline readonly="no" size="50" />
    <hintgroup showoncorrect="no">
        <mathhint name="ortho" args="$function" cas="maxima">
            <answer>
overlap: integrate((LONCAPALIST[1])*(RESPONSE[1]),x,-%pi,%pi)/%pi;
is(not overlap = 0);
            </answer>
        </mathhint>
        <mathhint name="norm" args="$function" cas="maxima">
            <answer>
norm: integrate((RESPONSE[1])*(RESPONSE[1]),x,-%pi,%pi)/%pi;
is(not norm = 1);
            </answer>
        </mathhint>
        <hintpart on="norm">
           <startouttext />
The function you have provided does not have a norm of one.
           <endouttext />
        </hintpart>
        <hintpart on="ortho">
            <startouttext />
The function you have provided is not orthogonal.
            <endouttext />
        </hintpart>
    </hintgroup>
</mathresponse>


<postanswerdate>
    <startouttext />
        <p>
Note that with respect to the above norm, <m>$\cos(nx)$</m> is perpendicular
to <m>$\sin(nx)$</m> and perpendicular to <m>$\cos(mx)$</m> for
<m>$n\ne m$</m>.
        </p>
    <endouttext />
</postanswerdate>
</problem>
\end{verbatim}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>