[LON-CAPA-users] How to write a custom response problem with vector I/O?

Justin Gray jgray at math.sfu.ca
Tue Oct 27 14:49:01 EDT 2020


Perhaps you could do something with this:

<problem>
<script type="loncapa/perl">$ax=&random(1.0,10,0.1);
$ay=&random(1.0,10,0.1);
@args = ($ax, $ay);
$answer = "Many answers are possible";
</script>
<startouttext />
<p>Consider a vector <m eval="on">\( \vec{a} = $ax\hat{x} + $ay\hat{y}
\)</m>'.
  Provide a vector <m>\( \vec{b} \)</m>, orthogonal to <m>\( \vec{a} \)</m>.
</p>
Enter the coordinates of <m>\( \vec{b} \)</m> separated by a comma. That
is, answer in the form <font color="red"> <m>\( b_x, b_y \)</m></font>:
<endouttext />
<mathresponse cas="maxima" answerdisplay="$answer" args="@args">

<answer>is(abs([LONCAPALIST[1],LONCAPALIST[2]].[RESPONSE[1],RESPONSE[2]]) <
0.001);</answer>
    <textline readonly="no" spellcheck="none" />
</mathresponse>
</problem>

Best,
Justin

--

*Justin Gray*
Senior Lecturer | Department of Mathematics
Simon Fraser University | SCK 10531
8888 University Dr., Burnaby, B.C. V5A 1S6
Canada
Simon Fraser University is located on the Unceded Coast Salish Territories
of the xʷməθkʷəy̓əm (Musqueam), Səl̓ílwətaʔ/Selilwitulh (Tsleil-Waututh),
Kwikwitlem, and Skwxwú7mesh Úxwumixw (Squamish) Peoples


On Sat, Oct 24, 2020 at 4:15 AM Itay <itayf at nospammail.net> wrote:

> Hi
>
> (Sorry for miswriting Justin's name in my previous message.)
> I finally was able to get a working minimal example (see below).
>
> This modest success bring up a few follow-up questions that I hope that
> list members could answer.
> 1. How to test responder's input, e.g., for non-numeric submission?
>     Should I use the $submission variable with the initial <script> block?
> 2. If the test should be done inside R : how to deliver the test results
> to LC?
>
> I ask this because when I tested the ME below with various inputs that do
> not follow the expected format (non-numeric values, missing input, etc.) I
> got only one kind of warning 'Unable to understand formula'.
>
> I would like to be able to give a more granular feedback to the students,
> in the spirit of the original ME.
>
> Thanks
> Itay
>
> <problem>
>   <script type="loncapa/perl">
>     $ax = &random(1.0, 10, 0.1); # Coordinates of \vec{a}
>     $ay = &random(1.0, 10, 0.1);
>     @avec = ($ax, $ay);
>     $answer="Chose b such that the scalar product with a is zero.";
>   </script>
>
>   <startouttext />
>   Consider a vector <m eval="on">\( \vec{a} = $ax\hat{x} + $ay\hat{y}
> \)</m>'.
>   Provide a vector <m>\( \vec{b} \)</m>, orthogonal to <m>\( \vec{a}
> \)</m>.
>   <br />
>   <endouttext />
>
> <mathresponse answerdisplay="$answer" cas="R" args="@avec">
>     <answer>
>         a <- c(LONCAPALIST[1],LONCAPALIST[2]);
>         b <- c(RESPONSE[1],RESPONSE[2]) ;
>          abs(sum(a*b))<0.001
>     </answer>
>     <textline readonly="no" size="20" />
> </mathresponse>
> </problem>
>
>
>
>
> On Sat, 24 Oct 2020, at 13:35, Itay wrote:
>
> Just,
> Thank you for your reply.
> Following your suggestion I tried to create a minimal example based on the
> template
> Math Response using Computer Algebra System R
> Here, too, I am having difficulties.
> The minimal example is enclosed below.
> Typing the correct answer for vector b (ay, -ax)
> provokes the response
> Unable to understand formula.
>
> Note : the command delegated to R was tested directly with R.
>
> Thank you
> Itay
>
>
> <problem>
>
>   <script type="loncapa/perl">
>     $ax = &random(1.0, 10, 0.1); # Coordinates of \vec{a}
>     $ay = &random(1.0, 10, 0.1);
>     @avec = ($ax, $ay);
>     $answer="Chose b such that the scalar product with a is zero.";
>   </script>
>
>
>   <startouttext />
>   Consider a vector <m eval="on">\( \vec{a} = $ax\hat{x} + $ay\hat{y}
> \)</m>'.
>   Provide a vector <m>\( \vec{b} \)</m>, orthogonal to <m>\( \vec{a}
> \)</m>.
>   <br />
>   <endouttext />
>
> <mathresponse answerdisplay="$answer" cas="R" args="@avec">
>     <answer>
>     abs(sum(LONCAPALIST * RESPONSE))<0.001
>     </answer>
>     <textline readonly="no" size="20" />
> </mathresponse>
>
> </problem>
>
>
>
>
> On Fri, 23 Oct 2020, at 23:36, Justin Gray wrote:
>
> I'm afraid I do not have an answer to your question, but have you
> considered coding this problem as a mathresponse problem?
>
> Best regards,
> Justin
>
> --
>
>
> *Justin Gray*
> Senior Lecturer | Department of Mathematics
> Simon Fraser University | SCK 10531
> 8888 University Dr., Burnaby, B.C. V5A 1S6
> Canada
>
>
> Simon Fraser University is located on the Unceded Coast Salish Territories
> of the xʷməθkʷəy̓əm (Musqueam), Səl̓ílwətaʔ/Selilwitulh (Tsleil-Waututh),
> Kwikwitlem, and Skwxwú7mesh Úxwumixw (Squamish) Peoples
>
>
> On Fri, Oct 23, 2020 at 1:18 PM Itay <itayf at nospammail.net> wrote:
>
>
> Hi
>
> I am trying to develop a custom response problem in which the student
> submission is a vector.
> A minimal example is provided below.
> Regardless of what I typed in the either of the two input fields I get the
> response:
> 'This question expects a numeric answer.'
>
> Please advise what am I doing wrong?
>
> Thanks in advance.
> Itay
>
>
> <problem>  <!-- begin minimal -->
>   <script type="loncapa/perl">
>     $ax = &random(1.0, 10, 0.1); # Coordinates of \vec{a}
>     $ay = &random(1.0, 10, 0.1);
>   </script>
>
>   <startouttext />
>   Consider a vector <m eval="on">\( \vec{a} = $ax\hat{x} + $ay\hat{y}
> \)</m>'.
>   Provide a vector <m>\( \vec{b} \)</m>, orthogonal to <m>\( \vec{a}
> \)</m>.
>   <br />
>   <endouttext />
>
>   <customresponse id="dotProd">
>     <answer type="loncapa/perl">
>       for ($i=0; $i<2; $i++) {                # Test input sanity.
>         if ($submission[i] =~ /^\d+\s+\w+$/) { return 'UNIT_NOTNEEDED'; }
>         if ($submission[i] !~ /^[\d\.]+$/)   { return 'WANTED_NUMERIC'; }
>       }
>
>       # Is submission correct?
>       $dotProd = $ax * $submission[0] + $ay * $submission[1];
>       if (abs($dotProd) < 1.0e-3) { return 'APPROX_ANS'; }  # Can't expect
> EXACT_ANS.
>       return 'INCORRECT';
>     </answer>
>
>     <startouttext /><m>\( b_x = \)</m><endouttext />
>     <textline size="10" readonly="no" spellcheck="none" />
>     <startouttext /><br /><endouttext />
>
>     <startouttext /><m>\( b_y = \)</m><endouttext />
>     <textline size="10" readonly="no" spellcheck="none" />
>     <startouttext /><br /><endouttext />
>   </customresponse>
> </problem>  <!-- end minimal -->
>
>
> _______________________________________________
> LON-CAPA-users mailing list
> LON-CAPA-users at mail.lon-capa.org
> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>
>
> _______________________________________________
> LON-CAPA-users mailing list
> LON-CAPA-users at mail.lon-capa.org
> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.lon-capa.org/pipermail/lon-capa-users/attachments/20201027/b9ad0fa2/attachment-0001.html>


More information about the LON-CAPA-users mailing list