Prozeduren höherer Ordnung (II)

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Prozeduren geben Prozeduren zurück

Umkehroperationen

Wir konstruieren eine Prozedur, die den inversen Operator und somit eine Prozedur zurückgibt:

Invers1.gif

Prozeduren als Rückgabewert

Wir vergleichen folgende Prozedurdefinitionen:

Aus der Notation des Prozeduraufrufs mit add-with ist erkennbar, dass (add-with 5) selbst ein Operator bzw. eine Prozedur sein muss.
Wir überprüfen diese Vermutung:

Differential- und Differenzenquotient

Aus der Mathematik ist die Definition des Differentialquotienten bekannt:

$f'(x)=\lim\limits_{h \to 0}\frac{f(x+h)-f(x)}{h}$

Scheme kann natürlich nur mit einem endlichen Wert für $h$ arbeiten. Wir definieren deshalb:

Damit gehen wir vom Differential- zum Differenzenquotienten mit kleinen Intervallen über.
Nun können wir eine Prozedur höherer Ordnung definieren, die die Ableitung beliebiger(!) Funktionen als Näherungswert ermittelt!

Wir definieren zwei Testfunktionen und rechnen nach.

$f_{1}(x)=x^2-2$
$f_{2}(x)=3x^2+\frac{2}{x}$
$f_{1}'(4)=...$
$f_{2}'(2)=...$

 

Quelltext überprüfen:

 

Quelltext überprüfen:

Natürlich dürfen wir nicht erwarten, dass die Prozedur ableitung die symbolische Ableitung einer Funktion ermittelt. Sie liefert lediglich den numerischen Näherungswert der ersten Ableitung an der Stelle x. Wir können uns aber im Schaubild der Funktion von ihrer Leistungsstärke überzeugen.

Hinweis: Syntax der Prozedur schaubild:

(schaubild
  <Prozedurliste>    ; quotierte Liste mit den darzustellenden Funktionen   
  <xu xo yu yo>      ; Grenzen des Koordinatensystems
  <li re>            ; Intervallgrenzen
  <KoordSyst-Farbe>  ; Farbe des Koordinatensystems
  <Farbliste>)       ; quotierte Liste mit den Farben der Funktionsgraphen

Im vorliegenden Fall handelt es sich um einen sehr einfachen Funktionsplotter mit dennoch nützlichen Eigenschaften:

  • als Farben können black, red, brown, orange, yellow, green, blue und pink verwendet werden,
  • Prozedur- und Farbliste müssen nicht die gleiche Länge haben, die Farben der Funktionsgraphen werden entsprechend der Anzahl der Funktionen modulo-eingesetzt,
  • Fehler, die durch unzulässiges Überschreiten des Definitionsbereiches entstehen, werden ignoriert.

Aufgaben

  1. Testen Sie die Prozedur ableitung am Beispiel der Sinusfunktion, ihrer ersten und zweiten Ableitung.
    Führen Sie weitere Tests mit selbstgewählten unbenannten Prozeduren durch.
  2. Wir wollen Wertetabellen von Funktionen und ihren Ableitungen erstellen.
    Dazu ist es sinnvoll, die Prozedur zum Runden von Gleitkommazahlen bereitzustellen.

    Vervollständigen und testen Sie nun die Prozedur wertetabelle.

  3. Entwickeln Sie die Prozedur (nstliste <fkt> <min> <max> <dx>), die zu einer beliebigen stetigen Funktion alle Nullstellen im Intervall $[min \hspace{0.3em};\hspace{0.3em} max]$ als Liste zurückgibt.
    Lösungsalgorithmus:
    • Zerlege das Intervall $[min \hspace{0.3em};\hspace{0.3em} max]$ in Teilintervalle der Breite $dx$.
    • Prüfe an den Intervallgrenzen jedes Teilintervalls die Vorzeichen der Funktionswerte.
    • Bei entgegengesetzten Vorzeichen muss die stetige Funktion in diesem Teilintervall eine Nullstelle haben, die durch fortlaufende Intervallhalbierung eingegrenzt wird.
    • Die Nullstelle ist gefunden, wenn die beiden Intervallgrenzen sehr dicht beieinander liegen. Füge diese Nullstelle der der Lösungsmenge (Liste) hinzu.
    • Setze die Suche in den Nachbarintervallen fort, bis die rechte Intervallgrenze $max$ erreicht ist.
    Vorüberlegung:
    Durch Halbierung werden die Intervalle immer kleiner. Die Suche wird abgebrochen, wenn die Intervallbreite in einer hinreichend kleinen Epsilon-Umgebung liegt.
    Zunächst definieren wir diese Epsilon-Umgebung:

    Nun implementieren wir die Nullstellensuche durch Intervallhalbierung in einem Teilintervall:

    (nstsuche sin 2 4)
    --> 3.141592025756836
    

    Damit kann die Suche nach allen Nullstellen implementiert werden.
    Die Nullstellen werden dabei sinnvoll gerundet, z.B.:

    (nstliste sin -10 10 0.33)
    --> (-9.4248 -6.2832 -3.1416 0.0 3.1416 6.2832 9.4248)
    

Zum Weiterarbeiten

Kurvendiskussion

Führen Sie zu einer selbstgewählten Funktion (Mathematikunterricht!) eine vollständige Kurvendiskussion durch.
Ermitteln Sie dazu mit Hilfe des konstruierten "Mathematikwerkzeugs":

  • das Schaubild,
  • die Nullstellen,
  • lokale Extrema,
  • Wendepunkte sowie
  • das Verhalten im Unendlichen.

Zur Problemlösung.

Persönliche Werkzeuge