Annotation of loncom/homework/mathresponse.idea, revision 1.2

1.1       albertel    1: <problem>
                      2: 
                      3: <script type="loncapa/perl">
                      4: $a1 = random(-5,5,2);
                      5: $a2 = random(-5,5,2);
                      6: $n1 = random(1,10,1);
                      7: $n2 = random(1,10,1);
                      8: $function = "$a1*cos($n1*x)+$a2*sin($n2*x)";
                      9: @cas_list = ($function);
                     10: </script>
                     11: 
                     12: <startouttext />
                     13: Give an example of a function which is
                     14: (1) orthogonal to <algebra>$function</algebra> with respect to the
                     15: scalar product
                     16: <m>$$\langle g \mid h \rangle =
                     17: \frac{1}{\pi} \int_{-\pi}^{\pi} g(x) \cdot h(x)$$</m>
                     18: and
                     19: (2) whose norm is 1.
                     20: <endouttext />
                     21: 
                     22: <mathresponse cas="maxima" args="@cas_list">
                     23:    <answer>
                     24:      f(x):= LONCAPALIST[1];
                     25:      overlap: integrate(f(x)*RESPONSE[1],x,-%pi,%pi)/%pi;
                     26:      norm: integrate(RESPONSE[1]*RESPONSE[1],x,-%pi,%pi)/%pi;
                     27:      grade: is(overlap=0 and norm=1);
                     28:      [grade];
                     29:    </answer>
                     30: 
                     31:    <textline />
                     32: 
                     33:    <hintgroup showoncorrect="no">
                     34:      <mathhint cas="maxima" args="@cas_list" name="ortho">
                     35:        <answer>
                     36:          f(x):= LONCAPALIST[1];
                     37:          overlap: integrate(f(x)*RESPONSE[1],x,-%pi,%pi)/%pi;
                     38: 	 [is(overlap != 0)];
                     39:        </answer>
                     40:      </mathhint>
                     41:      <mathhint cas="maxima" args="@cas_list" name="norm">
                     42:        <answer>
                     43:          f(x):= LONCAPALIST[1];
                     44:          norm: integrate(RESPONSE[1]*RESPONSE[1],x,-%pi,%pi)/%pi;
                     45:          [is(norm != 1)];
                     46:        </answer>
                     47:      </mathhint>
                     48: 
                     49: 
                     50:      <hintpart on="norm">
                     51:        <script type="loncapa/perl">
                     52:          $response = &EXT('user.resource.resource.0.submissiom');
                     53: 	 $norm = &cas('maxima',...); # get the norm
                     54: 	 $norm_display = &cas_tex_display($norm);
                     55:        </script>
                     56:        <startouttext />
                     57:          The function you have provided is not normal to
                     58:          <algebra>$function</algebra> its norm is
                     59:           <m eval="on">$norm_display</m>
                     60:        <endouttext />
                     61:      </hintpart>
                     62:      <hintpart on="ortho">
                     63:        <startouttext />
                     64:          The function you have provided is not orthognal.
                     65:        <endouttext />
                     66:      </hintpart>
                     67: 
                     68:    </hintgroup>
                     69: </mathresponse>
                     70: 
                     71: </problem>
1.2     ! www        72: 
        !            73: 
        !            74: * Maxima hat keinen echten Servermode.
        !            75: 
        !            76: Das Programm
        !            77: 
        !            78: /loncapa/loncom/lonmaxima
        !            79: 
        !            80: erzeugt fuenf Serverprozesse, die jeweils einen Maxima-Prozess am Laufen halten:
        !            81: 
        !            82: www       8506  0.0  0.5  8880 5324 ?        S    Dec04   0:00 lonmaxima: Parent process, sleeping Mon Dec  4 09:53:10 2006
        !            83: www       8507  0.0  0.5  9012 5380 ?        S    Dec04   0:00 lonmaxima: Accepting connections Mon Dec  4 10:23:24 2006
        !            84: www       8508  0.0  2.3 885900 24276 pts/2  S    Dec04   0:00 sbcl --core /usr/local/lib/maxima/5.9.2.99rc1/binary-sbcl/maxima.core --noinform --end-runtime-options --eval (cl-user::run) --end-toplevel-options
        !            85: www       8510  0.0  0.5  9012 5380 ?        S    Dec04   0:00 lonmaxima: Accepting connections Mon Dec  4 10:23:24 2006
        !            86: www       8512  0.0  0.5  9012 5380 ?        S    Dec04   0:00 lonmaxima: Accepting connections Mon Dec  4 10:23:30 2006
        !            87: www       8513  0.0  2.3 885900 24308 pts/4  S    Dec04   0:00 sbcl --core /usr/local/lib/maxima/5.9.2.99rc1/binary-sbcl/maxima.core --noinform --end-runtime-options --eval (cl-user::run) --end-toplevel-options
        !            88: www       8515  0.0  2.3 885900 24040 pts/5  S    Dec04   0:00 sbcl --core /usr/local/lib/maxima/5.9.2.99rc1/binary-sbcl/maxima.core --noinform --end-runtime-options --eval (cl-user::run) --end-toplevel-options
        !            89: www       8621  0.0  0.5  9012 5380 ?        S    Dec04   0:00 lonmaxima: Accepting connections Mon Dec  4 10:23:30 2006
        !            90: www       8622  0.0  2.3 885900 24312 pts/3  S    Dec04   0:00 sbcl --core /usr/local/lib/maxima/5.9.2.99rc1/binary-sbcl/maxima.core --noinform --end-runtime-options --eval (cl-user::run) --end-toplevel-options
        !            91: www       8648  0.0  0.5  9012 5380 ?        S    Dec04   0:00 lonmaxima: Accepting connections Mon Dec  4 10:23:19 2006
        !            92: www       8649  0.0  2.2 885900 22952 pts/6  S    Dec04   0:00 sbcl --core /usr/local/lib/maxima/5.9.2.99rc1/binary-sbcl/maxima.core --noinform --end-runtime-options --eval (cl-user::run) --end-toplevel-options
        !            93: 
        !            94: Dieser Daemon muss laufen, damit LON-CAPA mit Maxima reden kann.
        !            95: 
        !            96: Die Routinen, die dazu benutzt werden sollen, sind in
        !            97: 
        !            98: /loncapa/loncom/homework/lonmaxima.pm
        !            99: 
        !           100: * XML-Umgebung: wir haben zwei Perl-Umgebungen, wenn wir XML-Dateien abarbeiten, naemlich
        !           101:   - die Apache-Module-Umgebung: volle Privilegien
        !           102:   - die "Safeeval"-Umgebung: die interne Umgebung des Dokuments, in der zum Beispiel die <script>-Bloecke laufen. In dieser Umgebung existieren die Variablen des Problems.
        !           103:     Eingeschraenkte Opcodes (no I/O), kein direkter Zugriff auf die Apache-Umgebungen ausser mit "Safe Holes", z.B.,
        !           104:     $safehole->wrap(\&Apache::lonmaxima::maxima_check,$safeeval,'&maxima_check');
        !           105: 
        !           106: caparesponse.pm, response.pm, lonmaxima.pm, etc, laufen in der Apache-Umgebung
        !           107: default_homework.lcpm laueft in der Safeeval-Umgebung
        !           108: 
        !           109: * formularesponse: Erweiterung der "einfachen" Responsetypes: numerical, string, etc. Das haben wir vom alten CAPA-System geerbt und ist deshalb in
        !           110: 
        !           111: /loncapa/loncom/homework/caparesponse/caparesponse.pm
        !           112: 
        !           113: Alle einfachen Responses gehen in &check_submission(), wo dann sortiert wird, wer es bearbeitet. <formularesponse> ohne Samples soll von Maxima bearbeitet werden (auskommentiert in Production-Version). Ausgefuehrt wird das dann in
        !           114: 
        !           115: /loncapa/loncom/xml/run.pm
        !           116: 
        !           117: das den Uebergang in die Safeeval-Umgebung macht. In der Safeeval-Umgebung kuemmert sich
        !           118: 
        !           119: /loncapa/loncom/homework/default_homework.lcpm
        !           120: 
        !           121: in der Routine &caparesponse_check()
        !           122: 
        !           123:     if ($type eq '9') {
        !           124:       $result = &maxima_check(&maxima_cas_formula_fix($response),&maxima_cas_formula_fix($answer),\$reterror);
        !           125:     } else {
        !           126:         if ($type eq '8') { # fml type
        !           127:     ...
        !           128: 
        !           129: * <mathresponse>: neuer Antwork-Typ, aehnlich wie <customresponse>. Das Design ist beschrieben in
        !           130: 
        !           131: /loncapa/loncom/homework/mathresponse.idea
        !           132: 
        !           133: Das Tag ist definiert in
        !           134: 
        !           135: /loncapa/loncom/homework/response.pm
        !           136: 
        !           137: Die Routine
        !           138: 
        !           139: &start_mathresponse()
        !           140: 
        !           141: wird aufgerufen, wenn der Parser auf <mathresponse> trifft. Die Routine
        !           142: 
        !           143: &end_mathresponse()
        !           144: 
        !           145: wird aufgerufen, wenn der Parser auf </mathresponse> trifft. Beide Routinen muessen die verschiedenen Rendering-Targets bedienen:
        !           146: * web: Darstellung auf dem Web
        !           147: * tex: Darstellung im Druck
        !           148: * edit: Darstellung im bunten Editor
        !           149: * modified: Zurueckschreiben von Aenderungen im Editor (muss normalerweise nicht geaendert werden)
        !           150: * meta: Katalogdaten  (muss normalerweise nicht geaendert werden)
        !           151: * answer: Darstellung der richtigen Antwort
        !           152: * grade: Benotung der Studierendenantwort
        !           153: 
        !           154: Die Routinen &start_answer and &end_answer (<answer> und </answer>) sammeln nur die Scripts ein und werden von <mathresponse> und <customresponse> genutzt.

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