Annotation of loncom/homework/templates/extreme.problem, revision 1.2

1.1       www         1: <problem>
                      2:     <parameter name="ordered" type="string_yesno" description="Show Parts One-at-a-Time" default="yes" />
                      3: 
                      4: <script type="loncapa/perl">
                      5: $location=&random(4,10,1);
                      6: $example="(x-$location)^2";
                      7: if (&random(0,1,1)) {
                      8:    $text='minimum';
                      9:    $factor=1;
                     10: } else {
                     11:    $text='maximum';
                     12:    $factor=-1;
                     13:    $example='-'.$example;
                     14: }
                     15: 
                     16: # Get user input, run through function that adds "*" to 3x, etc
                     17: $userfunction=&implicit_multiplication(&submission(1,11));
                     18: if ($userfunction) {
                     19: # Determine value at extreme point
                     20:    $extremevalue=&cas('maxima',"float(at($userfunction,x=$location))");
                     21:    if ($extremevalue=~/^(error|incorrect)/i) {
                     22: # cas could not evaluate the function
                     23:       $userfunction='0';
                     24:       $extremevalue=0;
                     25:       $remark='Your function could not be evaluated.';
                     26:    } else {
                     27:       $remark='Your function is plotted.';
                     28:       $example=$userfunction;
                     29:    }
                     30: } else {
                     31:    $userfunction='0';
                     32:    $extremevalue=0;
                     33:    $remark='';
                     34: }
                     35: # Plot boundaries
                     36: $minx=$location-5;
                     37: $maxx=$location+5;
                     38: $miny=$extremevalue-5;
                     39: $maxy=$extremevalue+5;
                     40: @args=($location,$factor);
                     41: </script>
                     42: 
                     43: <part id="1">
                     44: <gnuplot width="400" solid="0" plotcolor="monochrome" gridlayer="off" bmargin="default" font="9" alttag="Plot" bgcolor="xffffff" texfont="22" transparent="off" plottype="Cartesian" rmargin="default" gridtype="Cartesian" minor_ticscale="0.5" fontface="sans-serif" grid="on" align="middle" texwidth="93" height="300" border="on" samples="100" fgcolor="x000000" major_ticscale="1" tmargin="default" lmargin="default" fillstyle="empty">
                     45:     <curve 
                     46:          linestyle="lines"
                     47:          color="x000000"
                     48:          pointtype="1"
                     49:          linetype="solid"
                     50:          linewidth="1"
                     51:          name=""
                     52:          limit="closed"
                     53:          pointsize="1" >
                     54:         <function>$userfunction</function>
                     55:         
                     56:         
                     57:     </curve>
                     58:     <axis yzero="off" xformat="on" xmin="$minx" yformat="on" color="x000000" xmax="$maxx" xzero="off" ymax="$maxy" ymin="$miny" />
                     59:     
                     60: </gnuplot>
                     61: 
                     62: <startouttext />
                     63: <p>$remark</p>
                     64: Give a differentiable real function <m>$f(x)$</m> that has a $text at <m eval="on">$x=$location$</m>.<br />
                     65: <m>$f(x)=$</m>
                     66: <endouttext />
                     67: 
                     68: <mathresponse answerdisplay="$example" cas="maxima" args="@args" id="11">
                     69:     <answer>y(x):=RESPONSE[1];
                     70: hasextreme:is(at(diff(y(x),x,1),x=LONCAPALIST[1])=0);
                     71: isrightkind:false;
                     72: k:0;
                     73: s:0;
1.2     ! www        74: if hasextreme then for i:2 while s=0 and not is(diff(y(x),x,i)=0) do (s:at(diff(y(x),x,i),x=LONCAPALIST[1]),k:i);
1.1       www        75: if evenp(k) and is(LONCAPALIST[2]*s>0) then isrightkind:true;
                     76: hasextreme and isrightkind;</answer>
                     77:     <textline readonly="no" size="50" />
                     78: </mathresponse>
                     79: </part>
                     80: <part id="2">
1.2     ! www        81: <script type="loncapa/perl">$previous=&maxima_cas_formula_fix($example);
        !            82: $value=&cas('maxima',"float(at($previous,x=$location))");</script>
1.1       www        83: <startouttext />
                     84: What is the value of your function at this $text?
                     85: <endouttext />
                     86: <numericalresponse answer="$value">
                     87: <responseparam type="tolerance" default="5%" name="tol" description="Numerical Tolerance" />
                     88: 
                     89:     <textline readonly="no" />
                     90:     
                     91: </numericalresponse>
                     92: </part>
                     93: </problem>

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