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, 9 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_5_msu,
version_2_11_5,
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>