Erweiterte Sprachfeatures vereinfachen das Rechnen mit Funktionen Mit Funktionen so einfach rechnen wie mit Variablen

In Programmiersprachen haben Funktionen eine andere Bedeutung als in wissenschaftlichen Berechnungen. Deshalb sind zum Rechnen mit (mathematischen) Funktionen in vielen Programmiersprachen Kunstgriffe nötig. Matlab aber hat Sprachkonstrukte, die das wissenschaftliche Rechnen mit Funktionen deutlich erleichtern.

Erweiterte Sprachfeatures vereinfachen das Rechnen mit Funktionen

In Programmiersprachen haben Funktionen eine andere Bedeutung als in wissenschaftlichen Berechnungen. Deshalb sind zum Rechnen mit (mathematischen) Funktionen in vielen Programmiersprachen Kunstgriffe nötig. Matlab aber hat Sprachkonstrukte, die das wissenschaftliche Rechnen mit Funktionen deutlich erleichtern.

In Wissenschaft und Technik spielen mathematische Berechnungen traditionell eine wichtige Rolle. Deshalb sind auch alle dort verwendeten Programmiersprachen stark von der in der Mathematik üblichen Notation beeinflusst. Allerdings waren von Anfang an Kompromisse nötig. Während in der Mathematik beispielsweise die Multiplikation durch einfache Verkettung ausgedrückt wird (2xy steht für 2 mal x mal y), hat man in den Computersprachen den Multiplikations-Operator * eingeführt. Das Gleichheitszeichen wurde quasi gekidnappt und steht meistens für eine Zuordnung und nicht für Gleichheit. Funktionen spielen in vielen Sprachen eine deutlich untergeordnete Rolle.

In der Mathematik werden Funktionen häufig einfach addiert und damit neue Funktionen erzeugt:

h = f + g

Genau diese Fähigkeit jedoch beherrschen viele Programmiersprachen nicht. Eine Funktion lässt sich hier in aller Regel nur formulieren, indem man sie selbst per Hand schreibt.

Dieser Artikel stellt die Erzeugung der Funktion fadd in der Matlab-Kommandozeile vor. fadd nimmt zwei Funktionen als Eingabe entgegen und gibt eine neue Funktion zurück, die deren Summe darstellt. Im Anschluss daran wird gezeigt, wie sich Matlab um eine echte Addition von Funktionen erweitern lässt. Vor allen Dingen soll hier aber gezeigt werden, wie die Behandlung von Funktionen als „Variablen erster Klasse“ nicht nur das Schreiben wissenschaftlicher Anwendungen erleichtert, sondern diese auch verständlicher dokumentiert.

Angenommen, eine Funktion mit dem Namen ertrag soll über das Intervall von 0 bis 1 maximiert werden. Wie teilt ein Anwender nun der Maximierungsroutine mit, welche Funktion sie genau maximieren soll?

In der Ur-Version von Matlab musste man hierzu den Funktionsnamen „ertrag“ als Zeichenfolge eingeben. Innerhalb der Maximierungsroutine wurde dann eine feval genannte Funktion ausgeführt, die diesen String immer wieder mit anderen Argumenten auswertete und so das Maximum errechnete. Auch andere Funktionen, etwa zur Ermittlung von Nulldurchgängen oder zur Berechnung von Integralen, arbeiteten mit solchen Zeichenketten. Matlab-Anwender kennen sie als funfuns.