Informatikwiki

Albert Einstein Gymnasium Reutlingen

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info_ref2011:musterloesungen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
info_ref2011:musterloesungen [14.05.2011 15:48] bauerinfo_ref2011:musterloesungen [14.05.2011 16:29] (aktuell) bauer
Zeile 3: Zeile 3:
   - Im Text unten seht ihr immer nur die eigentlichen Funktionen, den Rest des Programms könnt ihr jeweils herunterladen.   - Im Text unten seht ihr immer nur die eigentlichen Funktionen, den Rest des Programms könnt ihr jeweils herunterladen.
   - Der Code ist ausführlich kommentiert, zusätzlich sind die "Knackpunkte" der Funktionen nochmals beschrieben.   - Der Code ist ausführlich kommentiert, zusätzlich sind die "Knackpunkte" der Funktionen nochmals beschrieben.
-  - Bis zum Wochenende sind alle Musterlösungen online gestellt.+  - So, alle Musterlösungen sind nun daBei Fehlern meldet euch bitte!
  
 Und nun viel Spass :-) Und nun viel Spass :-)
Zeile 37: Zeile 37:
 </code> </code>
  
-Das komplette Beispiel könnt ihr hier fertig anschauen und dann auch runterladen:[[http://ernest.aeg-reutlingen.de/~bauer/musterloesungen/fibonacci.php|fibonacci.php]]+Das komplette Beispiel könnt ihr hier fertig anschauen und dann auch runterladen: {{:info_ref2011:fibonacci.php|}}
  
  
Zeile 69: Zeile 69:
 </code> </code>
  
-Hier könnt ihr wieder das fertige Programm anschauen und runterladen:{{http://ernest.aeg-reutlingen.de/~bauer/musterloesungen/notendurchschnitt_1.php|notendurchschnitt_1.php}}+Hier könnt ihr wieder das fertige Programm anschauen und runterladen:{{:info_ref2011:notendurchschnitt_1.php|}}
  
 ===== Notendurschnittsfunktion Erweiterung ===== ===== Notendurschnittsfunktion Erweiterung =====
Zeile 93: Zeile 93:
  
 Zur Berechnung der schriftlichen, mündlichen und praktischen Notendurchschnitte benutzen wir natürlich die vorher geschriebene Funktion **durchnschnitt()** Zur Berechnung der schriftlichen, mündlichen und praktischen Notendurchschnitte benutzen wir natürlich die vorher geschriebene Funktion **durchnschnitt()**
-Hier könnt ihr wieder das fertige Programm anschauen und runterladen: {{http://ernest.aeg-reutlingen.de/~bauer/musterloesungen/notendurchschnitt_2.php|notendurchschnitt_2.php}}+Hier könnt ihr wieder das fertige Programm anschauen und runterladen: {{:info_ref2011:notendurchschnitt_2.php|}}
  
 ===== Mitternachtsformel ===== ===== Mitternachtsformel =====
 Mit dieser Formel lässt sich bekanntlich die Lösungen einer quadratischen Gleichung Mit dieser Formel lässt sich bekanntlich die Lösungen einer quadratischen Gleichung
-<code latex> +ax^2+bx+c = 0 errechnen. 
-ax^2+bx+c=0+ 
 +Wir müssen also einfach diese 3 Koeffizienten einlesen und eine Funktion schreiben, die die drei möglichen Fälle mit einer **if-Verzweigung** abfrägt. 
 + 
 +<code php> 
 +function mnf($a,$b,$c){ 
 +    //Der Ausdruck unter der Wurzel heißt Diskriminante und entscheidet, 
 +    //ob die Gleichung 1,2 oder keine Lösung hat 
 +    $diskriminante = $b*$b - 4*$a*$c; 
 +     
 +    if ($diskriminante == 0) { //Eine Lösung 
 +        $ergebnis = -$b/(2*$a); 
 + return $ergebnis; 
 +    } 
 +    else if ($diskriminante < 0 ){ //Keine Lösung 
 +        return "Keine reelle Lösung"; 
 +    } 
 +    else if ($diskriminante > 0) {              //zwei Lösungen 
 +        $x_1 = (-$b + sqrt($diskriminante) ) / (2*$a); 
 + $x_2 = (-$b - sqrt($diskriminante) ) / (2*$a); 
 + $ergebnis = array($x_1,$x_2); 
 + return $ergebnis; 
 +    } 
 +     
 +}
 </code> </code>
 +Die von PHP bereitgestellte Funktion **sqrt()** berechnet die Wurzel der ihr übergebenen Zahl.
 +Hier gibt's das komplette Beispiel: {{:info_ref2011:mitternachtsformel.php|}}
 +
 +===== Skalarprodukt =====
 +
 +Nochmal die Gedächtnisstütze zum anguggen:
 +
 +[[http://www.rither.de/a/mathematik/lineare-algebra-und-analytische-geometrie/winkel/winkel-zwischen-vektor-und-vektor/]]
 +
 +Der Kopf der Funktion sieht folgendermaßen aus:
 +<code php>
 +function sprodukt($a,$b,$text="")
 +</code>
 +Das zweite Argument wird hierbei **vorbelegt**, dadurch wird es optional und wir müssen es beim Aufruf der Funktion nicht angeben (können aber natürlich, wenn wir wollen!)
 +Für die Fallunterscheidung verwenden wir wieder eine **if-Abfrage**.
 +Um den Winkel zwischen den Vektoren zu berechnen gehen wir folgendermaßen vor:
 +  - Wir berechnen das Skalarprodukt der Vektoren.
 +  - Dann jeweils deren Länge. **abs()** gibt den Betrag zurück, **sqrt()** berechnet die Wurzel.
 +  - **acos()** ist der normale cos^(-1), wird allerdings im **Bogenmaß** ausgerechnet.
 +  - Um den Winkel im Gradmaß zu erhalten benutzen wir die Funktion **rad2deg()**.
 +
 +<code php>
 +function sprodukt($a,$b,$text=""){
 +    if ($text == "winkel") {
 +        $skal = $a[0]*$b[0]+$a[1]*$b[1]+$a[2]*$b[2];
 +        $laenge_a = abs(sqrt($a[0]*$a[0]+$a[1]*$a[1]+$a[2]*$a[2]));
 +        $laenge_b = abs(sqrt($b[0]*$b[0]+$b[1]*$b[1]+$b[2]*$b[2]));
 +        $winkel = acos($skal / ($laenge_a * $laenge_b));
 +        $winkel = rad2deg($winkel);
 +        return $winkel;
 +    }
 +    else {
 +        $ergebnis = $a[0]*$b[0]+$a[1]*$b[1]+$a[2]*$b[2];
 +        return $ergebnis;
 +    }
 +}
 +</code>
 +Wie immer hier das fertige Programm: {{:info_ref2011:skalarprodukt.php|}}
 +
 +===== Kreuzprodukt =====
 +Das Kreuzprodukt ist in der analytischen Geometrie der Oberstufe seeehr hilfreich. Ein Grund mehr darüber mal ein Programm zu schreiben:
 +Wichtig: Beim Kreuzprodukt kommt wieder ein **Vektor** heraus:
 +<code php>
 +$ergebnis[0]=$a[1]*$b[2]-$a[2]*$b[1];
 +</code>
 +^^So berechnet ihr den obersten Eintrag des Vektors und speichert in einem Array $ergebnis an der Stelle 0. Und das muss eben für die zwei anderen Stellen noch berechnet werden.
 +Beim einen Fall der if-Verzweigung wir eben noch die Fläche berechnet.
 + 
 +
 +<code php>
 +function kreuzprodukt($a,$b,$text=""){ 
 +    if ($text == "flaeche"){
 +        $ergebnis[0] = $a[1]*$b[2]-$a[2]*$b[1];
 +        $ergebnis[1] = $a[2]*$b[0]-$a[0]*$b[2];
 +        $ergebnis[2] = $a[0]*$b[1]-$a[1]*$b[0];
 +        $flaeche = sqrt($ergebnis[0]*$ergebnis[0]+$ergebnis[1]*$ergebnis[1]+$ergebnis[2]*$ergebnis[2]);
 + return $flaeche;   
 +     }
 +     else{
 +         $ergebnis[0] = $a[1]*$b[2]-$a[2]*$b[1];
 +         $ergebnis[1] = $a[2]*$b[0]-$a[0]*$b[2];
 +         $ergebnis[2] = $a[0]*$b[1]-$a[1]*$b[0];
 +         return $ergebnis;    
 +        
 +}
 +</code>
 +Vollständiges Beispiel hier: {{:info_ref2011:kreuzprodukt.php|}}
 +
info_ref2011/musterloesungen.1305388085.txt.gz · Zuletzt geändert: 14.05.2011 15:48 von bauer

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki