Der Einsatz des Computers zum Lösen von in der Sprache der Mathematik formulierten Aufgabenstellungen kann auf unterschiedliche Weise erfolgen. Dabei spielt einerseits die Auswahl geeigneter Software eine Rolle; andererseits muss man sich im Klaren sein über die Fähigkeiten und Unfähigkeiten des Computers.
3.1.1Einschränkungen bei der Arbeit mit dem Computer¶
Viele mathematische Probleme können nicht exakt mit dem Computer gelöst werden, sondern nur näherungsweise. Die Gründe dafür liegen in der Arbeitsweise von Computern:
Jede Eingabe kann nur aus endlich vielen Zahlen bestehen. Computer können also beispielsweise nicht direkt mit stetigen Funktionen (Potenzfunktionen, Sinus,...) oder unendlichen Zahlenfolgen arbeiten.
Auch Ausgaben/Ergebnisse können nur aus endlich vielen Zahlen bestehen.
Es sind stets nur endlich viele Rechenschritte möglich. Beispielsweise können im Allgemeinen keine unendlichen Summen mit dem Computer berechnet werden.
Ein weiterer zu beachtender Punkt ist, dass Computer nur einen sehr begrenzten Zahlenvorrat zur Verfügung haben. Üblicherweise kennen sie nur verschiedene Zahlen. Deshalb werden die meisten Zahlen durch den Computer auf eine vom Computer verarbeitbare Zahl gerundet, ohne dass dies für den Nutzer sofort ersichtlich ist. Je nach Kontext müssen die mitunter seltsam anmutenden Konsequenzen mit bedacht werden:
Beispielsweise kann die Zahl 0.1 nicht direkt in Berechnungen verwendet werden. Stattdessen rechnet der Computer mit
Dies kann zu unerwarteten Ergebnissen führen, wie das folgende kleine Python-Programm zeigt (die Programmiersprache Python wird im nächsten Unterkapitel behandelt):
print(0.1 * 0.1 - 0.01) # sollte exakt 0 ergeben1.734723475976807e-18Gelegentlich erhält man deshalb völlig falsche Ergebnisse:
print(1 + 10.5 ** 20 - 10.5 ** 20) # sollte exakt 1 ergeben0.0
Die Auswirkungen und der Umgang mit solchen Effekten sind Gegenstand der numerischen Mathematik. In unserer Veranstaltung gehen wir auf dieses wichtige Thema jedoch nicht näher ein, sondern belassen es bei gelegentlichen Hinweisen auf in dieser Hinsicht problematische Situationen.
3.1.2Symbolisches vs. numerisches Rechnen¶
Für das Ausführen von Berechnungen mit dem Computer gibt es zwei grundlegend verschiedene Herangehensweisen:
Beim symbolischen Rechnen werden mathematische Formeln durch den Computer in der gleichen Weise umgeformt, kombiniert und gelöst wie man es beim manuellen Rechnen tun würde. Dadurch erhält man exakte Ergebnisse, die wiederum als Formeln vorliegen. Bei der verwendeten Software spricht man auch von Computer-Algebra-Systemen (CAS).
Beim numerischen Rechnen werden nur Grundrechenarten verwendet. An vielen Stellen des Rechenweges werden gerundete oder nur näherungsweise ermittelte Zwischenergebnisse verwendet. Als Endergebnis stehen nur Zahlen zur Verfügung, bei denen nicht mehr erkennbar ist, wie diese entstanden sind (z.B. 1.41421356 statt ).
Im technischen und wissenschaftlichen Bereich wird praktisch nur numerisch gerechnet. Gründe:
Numerische Berechnungen sind viel schneller, da Computer für diese Art von Berechnungen gebaut sind. Üblich sind heute mehrere Milliarden Grundrechenoperationen pro Sekunde.
Symbolisches Rechnen liefert bei komplexen Aufgabenstellungen meist keine Lösung, da die Lösungen nicht explizit als Formeln darstellbar sind.
Gelegentlich verwendet man CAS für kleine, klar abgegrenzte Teilschritte, bei denen das Vorliegen einer expliziten Formel in den Folgeschritten (Geschwindigkeits-)Vorteile bringt.
3.1.3Programmcode vs. grafische Oberfläche¶
Für praktisch alle Standardaufgaben im Ingenieurwesen gibt es Software mit grafischer Benutzeroberfläche (kurz: GUI für “graphical user interface”). Diese haben jedoch einige Nachteile:
Möglich ist nur, was die GUI vorsieht. Erweiterungen oder Änderungen sind für Nutzer nur schwer oder gar nicht umsetzbar.
Abläufe lassen sich schlecht automatisieren, da diese aus Folgen von Mausklicks bestehen.
Für Aufgabenstellungen, die erstmalig oder nur selten auftreten, existiert keine Software mit GUI (oder ist extrem teuer).
Aus diesen Gründen ist der Einsatz einer geeigneten (!) Programmiersprache auch im Ingenieurbereich für zahlreiche Aufgaben deutlich vorteilhafter. Insbesondere
sind die Anwendungsmöglichkeiten unbeschränkt,
lassen sich alle Abläufe ohne große Anpassungen automatisieren,
kann bei Bedarf im Nachgang eine GUI hinzugefügt werden.
Hinzu kommt, dass sich Programmcode einfacher versionieren lässt und gemeinsames Bearbeiten (auch in Echtzeit) problemlos möglich ist.
Üblich im Ingenieurbereich sind: