Höhere Funktionen


Unser Funktionsbegriff ist so allgemein, daß er auch Funktionale und höhere Funktionen umfaßt; darunter versteht man gelegentlich Operationen, bei denen in einem Term nicht nur Variablen, sondern auch Funktionssymbole durch Argumente (geeigneten Typs) ersetzt werden.

Solche Operationen sind schon vom Gymnasium her bekannt, werden aber dort meist nicht als Funktionen aufgefaßt.

Beispiel: die Differentiation

D: [R R] [R R]
überführt eine reelle (differenzierbare) Funktion  f in ihre Ableitungsfunktion  D(f) = f'. Das kann geschrieben werden:
D = f . f' oder deutlicher D = f . (x . f'(x))

Ein bestimmtes Integral auf einem festen  Intervall (a,b) überführt eine reelle Funktion  f in einen reellen Wert , ist also vom Typ [R R] R und kann geschrieben werden:

I = f . f(t) dt

Das Bilden einer Stammfunktion macht dagegen aus einer reellen Funktion  wieder eine reelle Funktion , ist also vom gleichen Typ [R R] [R R] wie die Differentiation. Wir bekommen die Stammfunktion, indem wir das bestimmte Integral von der oberen Grenze abhängen lassen, das geht mit der Lambda-Notation (und nur  mit ihr) sehr bequem:

S = f . (b . f(t) dt)

Die Operation: Auswertung einer beliebigen reellen Funktion  f an einer gegebenen festen  reellen Stelle a ist vom gleichen Typ [R R] R wie das Bilden des bestimmten Integrals und kann geschrieben werden:

A = f . f(a) im Gegensatz zur Funktion f selbst: f = x . f(x)

Modula 2 ist (neben LISP) eine der wenigen Programmiersprachen, in denen sich höhere Funktionen bequem programmieren lassen, da es hier auch Prozedur-Typen gibt.


zurück | Inhalt | Index | vor | Vorlesung

Klaus Lagally, 22. Februar 2000, 19:36