info_ref2011:musterloesungen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| info_ref2011:musterloesungen [12.05.2011 19:49] – bauer | info_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, | - Der Code ist ausführlich kommentiert, | ||
| - | - Bis zum Wochenende sind alle Musterlösungen | + | - So, alle Musterlösungen |
| Und nun viel Spass :-) | Und nun viel Spass :-) | ||
| Zeile 37: | Zeile 37: | ||
| </ | </ | ||
| - | Das komplette Beispiel könnt ihr hier fertig anschauen und dann auch runterladen: | + | Das komplette Beispiel könnt ihr hier fertig anschauen und dann auch runterladen: |
| Zeile 69: | Zeile 69: | ||
| </ | </ | ||
| - | Hier könnt ihr wieder das fertige Programm anschauen und runterladen: | + | Hier könnt ihr wieder das fertige Programm anschauen und runterladen: |
| ===== Notendurschnittsfunktion Erweiterung ===== | ===== Notendurschnittsfunktion Erweiterung ===== | ||
| Zeile 90: | Zeile 90: | ||
| </ | </ | ||
| + | |||
| + | |||
| Zur Berechnung der schriftlichen, | Zur Berechnung der schriftlichen, | ||
| - | Hier könnt ihr wieder das fertige Programm anschauen und runterladen: | + | Hier könnt ihr wieder das fertige Programm anschauen und runterladen: |
| + | |||
| + | ===== Mitternachtsformel ===== | ||
| + | Mit dieser Formel lässt sich bekanntlich die Lösungen einer quadratischen Gleichung | ||
| + | ax^2+bx+c = 0 errechnen. | ||
| + | |||
| + | 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, | ||
| + | //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/ | ||
| + | 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, | ||
| + | return $ergebnis; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | Die von PHP bereitgestellte Funktion **sqrt()** berechnet die Wurzel der ihr übergebenen Zahl. | ||
| + | Hier gibt's das komplette Beispiel: {{: | ||
| + | |||
| + | ===== Skalarprodukt ===== | ||
| + | |||
| + | Nochmal die Gedächtnisstütze zum anguggen: | ||
| + | |||
| + | [[http://www.rither.de/a/mathematik/lineare-algebra-und-analytische-geometrie/ | ||
| + | |||
| + | Der Kopf der Funktion sieht folgendermaßen aus: | ||
| + | <code php> | ||
| + | function sprodukt($a, | ||
| + | </ | ||
| + | Das zweite Argument wird hierbei **vorbelegt**, | ||
| + | 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, | ||
| + | if ($text == " | ||
| + | $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; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Wie immer hier das fertige Programm: {{: | ||
| + | |||
| + | ===== 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: | ||
| + | < | ||
| + | $ergebnis[0]=$a[1]*$b[2]-$a[2]*$b[1]; | ||
| + | </ | ||
| + | ^^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, | ||
| + | if ($text == " | ||
| + | $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; | ||
| + | } | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | Vollständiges Beispiel hier: {{: | ||
info_ref2011/musterloesungen.1305229743.txt.gz · Zuletzt geändert: 12.05.2011 19:49 von bauer
