Matlab ist ein vorzügliches Programm

Diese Überschrift muss vorangestellt werden, wenn eine Sammlung von "Bugs and Traps" begonnen wird, die zu einem großen Teil ohnehin nicht (nur) der Software angelastet werden können, sondern (auch) in den schwierigen Problemen begründet sind, die mit Matlab gelöst werden, manchmal ist es nur die Warnung, sich nicht ausschließlich auf den Komfort der Matlab-Functions zu verlassen.

Aber schließlich ist es nicht nötig, dass man auf  "Bugs and Traps" hereinfällt, wenn man davor gewarnt werden kann.

Diese Zusammenstellung wurde mit Matlab 7 (R14) erstellt. Neuere Versionen können sich durchaus anders verhalten.

Das Problem mit den Dateinamen

In Matlab gibt es Restriktionen für die Bildung von Namen: Einem Buchstaben können weitere Buchstaben, Ziffern und der Unterstrich folgen. Andere Zeichen sind  (sinnvollerweise) nicht erlaubt. Warum diese Einschränkungen auch für die Dateinamen von Script files und Function files (.m-Dateien) gelten müssen und in welche unangenehme Falle man heineingeraten kann, wenn man sich nicht daran hält, wird auf der Seite "Matlab: Das Problem mit den Dateinamen" demonstriert.

Fehler bei Determinantenberechnung

Das Problem, singuläre Matrizen (Determinante der Matrix hat den Wert Null) als solche bei der numerischen Berechnung mit dem Computer zu erkennen, ist grundsätzlich wohl nicht befriedigend lösbar. Der Anwender darf jedoch erwarten, dass zumindest ein Hinweis oder eine Warnung erzeugt wird, wenn Matrizen fast oder im Rahmen der Rechengenauigkeit als singulär angesehen müssen. Bei der Determinantenberechnung in Matlab kann eine solche Warnung bei schon bei recht kleinen Problemen nicht nur ausbleiben, es wird sogar ein falscher Wert als Ergebnis abgeliefert, siehe "Matlab: Problem bei Determinantenberechnung".

Vorsicht bei Nullstellenberechnung!

Für die Berechnung der Nullstelle einer nichtlinearen Gleichung in der Nähe eines vorzugebenden Punktes bietet Matlab die Function fzero an (Matlab-Help: "Find zero of a function of one variable"). Wenn man die übliche Strategie fährt, den interessierenden Bereich mit Funktionswertberechnungen mit einer vorzugebenden Schrittweite "abzuscannen", um bei einem Vorzeichenwechsel dann von fzero den genauen Wert ermitteln zu lassen, ist Vorsicht geboten: Die Function fzero liefert z. B. auch ungerade Polstellen als Ergebnis ab, siehe "Matlab: Beispiel einer Nullstellenberechnung".

Probleme mit den iterativen Verfahren zur Lösung linearer Gleichungssysteme

Matlab bietet 9 Verfahren zur iterativen Lösung linearer Gleichungssysteme an, die alle über weitgehend einheitliche Aufrufmöglichkeiten anzusprechen sind. Diese sollten nur von Anwendern benutzt werden, die sich in der Theorie dieser Verfahren auskennen, zumindest sind Kenntnisse über deren Stärken und Schwächen empfehlenswert. Dass man mit den einfachen Aufrufvarianten unter Verwendung der Standardeinstellungen im Allgemeinen keinen Erfolg hat, wird auf der Seite "Matlab: Probleme mit iterativen Gleichungssystemlösern" diskutiert.

Bug in der Function gmres

Bei mehreren Testrechnungen stürzte die Function gmres (General minimum residual) ab. Der Fehler tritt erst ab Matlab 7(R14) auf.

Es ist ganz offensichtlich ein formaler Fehler, siehe Beschreibung unter "Matlab 7(R14): Bug in der Function gmres".

Auch die sehr komfortablen ode-Functions können nicht zaubern

Matlab bietet 7 Functions für die numerische Integration von Anfangswertproblemen an, die u. a. mit automatischer Schrittweitensteuerung den Anwender (scheinbar) von vielen Überlegungen befreien. Andererseits kann man über viele Options Einfluss nehmen. Dass man dies auch nutzen soll, unbedingt aber Kontrollen vorsehen sollte, um die Ergebnisse zu verifizieren, wird auf der Seite "Matlab: Die ode-Functions müssen kontrolliert werden" diskutiert.

Integration von Bewegungsdifferenzialgleichungen: Problem bei Stillstand der Bewegung

Weil der Benutzer der ode-Functions mindestens eine Function schreiben muss, die die Differenzialgleichungen beschreibt, hat er auch die Möglichkeit, Änderungen der Parameter während der Bewegung (in Abhängigkeit von Ort, Zeit und Geschwindigkeit) zu erfassen. Wegen der automatischen Schrittweitensteuerung der ode-Functions kann es dabei zu einem Problem kommen, für das Matlab aber eine elegante Lösung bereithält, siehe: "Matlab: Die Event-Strategie zur Problemvermeidung"

Lineares Gleichungssystem liefert falsches Ergebnis bei singulärer Koeffizientenmatrix

Das Problem, Singularität einer Matrix bei der Computerrechnung zu erkennen, ist bekanntermaßen schwierig (und kann letztendlich nur vermutet werden). Leider kommt es häufig vor, dass Singularität bei der Lösung linearer Gleichungssysteme offensichtlich nicht einmal vermutet wird (und damit zumindest zu einer Warnung führt), im Gegenteil: Es werden einfach unsinnige Ergebnisse abgeliefert, siehe: "Matlab: Falsches Ergebnis für lineares Gleichungssystem".

Function lsqr liefert falsches Ergebnis

Bei iterativen Verfahren kann es passieren, dass sie nicht konvergieren. Dann erwartet der Anwender eine entsprechende Mitteilung. Nicht akzeptabel aber ist die Mitteilung, dass das Verfahren konvergierte, wenn gleichzeitig ein falsches Ergebnis abgeliefert wird. Genau dies passierte, siehe "Matlab: Function lsqr liefert falsches Ergebnis".