MLTutorBeispielerstellung
Inhaltsverzeichnis
Beispiel2
Projektverzeichnissname:
andrej.sommer2005.aufgabe2a
Weis nicht ob es so gedacht war, aber jedenfalls die erste aufgabe mit Testscript:
Nur eine Anmerkung: Das Überprüfen des Ergebnisses vom Studenten übernimmt das MLTutor-Programm, aber im Prinzip läuft es genau so ab, wie du es geschrieben hast. Wenn du selber die Überprüfung übernehmen willst, dann kannst du natürlich gerne deine eigene Routine schreiben, aber im ml_test1_check.m würde bei diesem Test nur
V2,F2,R2,r2
drinnenstehen, damit das Programm weiß, welche Variablen überprüft werden sollten. Im XML-File, dass man dazu erstellt, kann man dann definieren, mit welcher Genauigkeit der Check abläuft und ähnliches. --Camhy 15:39, 3 Nov 2005 (CET)
Ich bin total dagegen, dass jemand eigene Überprüfungsroutinen schreibt. Das gehört total zum mlTutor und hat überhaupt nichts mit den Beispielen selbst zu tun. Bitte unbedingt nur die Syntax von David verwenden. Wenn irgendetaws für den gewünschten Test nicht ausreicht, dann unbedingt als Anregung an David und mich leiten. Dann müssen wir uns auf Seite des mlTutor darum kümmern. --Winny 16:40, 8 Nov 2005 (CET)
regpol.m
function [V,F,R,r]=regpol(typ,a) switch lower(typ(1)) case 't' V=a^3/12*sqrt(2); F=a^2*sqrt(3); R=a/4*sqrt(6); r=a/12*sqrt(6); case 'w' V=a^3; F=6*a^2; R=a/2*sqrt(3); r=a/2; case 'o' V=a^3/3*sqrt(2); F=2*a^2*sqrt(3); R=a/2*sqrt(2); r=a/6*sqrt(6); case 'd' V=a^3/4*(15+7*sqrt(5)); F=3*a^2*sqrt(5*(5+2*sqrt(5))); R=a/4*(1+sqrt(5))*sqrt(3); r=a/4*sqrt((50+22*sqrt(5))/5); case 'i' V=5*a^3/12*(3+sqrt(5)); F=5*a^2*sqrt(3); R=a/4*sqrt(2*(5+sqrt(5))); r=a/2*sqrt((7+3*sqrt(5))/6); end
ml_test1_after.m
typ = 'W'; a=2; [V2,F2,R2,r2] = regpol(typ,a);
ml_test1_check.m
switch lower(typ(1)) case 't' V=a^3/12*sqrt(2); F=a^2*sqrt(3); R=a/4*sqrt(6); r=a/12*sqrt(6); case 'w' V=a^3; F=6*a^2; R=a/2*sqrt(3); r=a/2; case 'o' V=a^3/3*sqrt(2); F=2*a^2*sqrt(3); R=a/2*sqrt(2); r=a/6*sqrt(6); case 'd' V=a^3/4*(15+7*sqrt(5)); F=3*a^2*sqrt(5*(5+2*sqrt(5))); R=a/4*(1+sqrt(5))*sqrt(3); r=a/4*sqrt((50+22*sqrt(5))/5); case 'i' V=5*a^3/12*(3+sqrt(5)); F=5*a^2*sqrt(3); R=a/4*sqrt(2*(5+sqrt(5))); r=a/2*sqrt((7+3*sqrt(5))/6); end variable_names = {'V','F','R','r'}; variable_student = {V2,F2,R2,r2}; variable_tutor = {V,F,R,r}; for j=[1:numel(variable_names)] if check(variable_student{j},variable_tutor{j}) disp([variable_names{j},' richtig berechnet']); else disp([variable_names{j},' falsch berechnet']); end end
Mit der check.m funktion
check.m
function result = check(a,b) if abs(a-b) < 10*eps() result = 1; else result = 0; end