File:  [LON-CAPA] / loncom / homework / mathresponse.idea
Revision 1.2: download - view: text, annotated - select for diffs
Tue Dec 5 15:20:22 2006 UTC (17 years, 5 months ago) by www
Branches: MAIN
CVS tags: version_2_9_X, version_2_9_99_0, version_2_9_1, version_2_9_0, version_2_8_X, version_2_8_99_1, version_2_8_99_0, version_2_8_2, version_2_8_1, version_2_8_0, version_2_7_X, version_2_7_99_1, version_2_7_99_0, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_99_1, version_2_2_99_0, version_2_12_X, version_2_11_X, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, version_2_10_0_RC2, version_2_10_0_RC1, version_2_10_0, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, bz6209-base, bz6209, bz5969, bz2851, PRINT_INCOMPLETE_base, PRINT_INCOMPLETE, HEAD, GCI_3, GCI_2, GCI_1, BZ5971-printing-apage, BZ5434-fox, BZ4492-merge, BZ4492-feature_horizontal_radioresponse, BZ4492-feature_Support_horizontal_radioresponse, BZ4492-Support_horizontal_radioresponse
Gesundheit ... might as well add this.

    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>
   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>