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>