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:42] – bauer | info_ref2011:musterloesungen [14.05.2011 16:29] (aktuell) – bauer | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | Ein Paar Worte zu den hier vorgestellen Musterlösungen: | ||
+ | - Es sind nur Musterlösungen, | ||
+ | - 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, | ||
+ | - So, alle Musterlösungen sind nun da. Bei Fehlern meldet euch bitte! | ||
+ | |||
+ | Und nun viel Spass :-) | ||
+ | |||
===== Fibonacci Folge ===== | ===== Fibonacci Folge ===== | ||
Zeile 29: | 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 61: | 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 ===== | ||
Diesmal sollte eine Funktion geschrieben werden, die bei Eingabe von 3 Notenarrays und einer Gewichtung den Gesamtschnitt ausrechnet: | Diesmal sollte eine Funktion geschrieben werden, die bei Eingabe von 3 Notenarrays und einer Gewichtung den Gesamtschnitt ausrechnet: | ||
- | Der Knackpunkt war hier, die Gewichtung **" | + | Der Knackpunkt war hier, die Gewichtung **" |
<code php> | <code php> | ||
Zeile 82: | Zeile 90: | ||
</ | </ | ||
- | Hier könnt ihr wieder das fertige Programm anschauen und runterladen: | + | |
+ | |||
+ | Zur Berechnung der schriftlichen, | ||
+ | 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.1305229351.txt.gz · Zuletzt geändert: 12.05.2011 19:42 von bauer