MLTutorBeispielerstellung
Version vom 3. November 2005, 14:39 Uhr von Camhy (Diskussion | Beiträge)
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)
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