Computeralgebrasysteme

Aus Wikibooks

Dieses Buch steht im Regal Mathematik sowie im Regal EDV.

Dies soll ein kleines Buchprojekt über Computeralgebrasysteme (CAS) oder im größeren Sinne wissenschaftliche Software zur symbolischen Berechnung werden.

Warum ein weiteres Buch? Es gibt unheimlich viel Literatur zu Computeralgebrasystemen, zum Einen in ihrer speziellen Anwendung etwa in Ingenieurswissenschaften oder physikalischen Disziplinen, aber auch Kompedien über einzelne Software wie das populäre Mathematica. Meist sind Bücher aber gar spezialisiert: Die Verwendung von Mathematica in der Mechanik. All das versuche ich hier zu vermeiden: Ich will kein umfassendes Referenzwerk schreiben und Anwendungsbeispiele, die über die bloße Mathematik oder Visualisierung herausgehen, nur marginal nennen. Ich will sehr viele Weblinks zu gutem Material sammeln und Lesern eine Starthilfe geben. Vom Leser erwarte ich grundlegende Programmierkenntnisse in verbreiteten Programmiersprachen wie Python, PHP oder C. Erfahrungsgemäß ist es gerade vor diesem Hintergrund schwierig, sich in ein Computeralgebrasystem wie Mathematica reinzudenken, welches symbolisch funktioniert (d.h. es gibt keine herkömmlichen Fehlermeldungen), und welches funktional und am "Notebook" orientiert programmiert wird (bislang bekannte Flußkontrollmechanismen und Prinzipien über Funktionen müssen überdacht werden).

Vor allem soll dieses Buch nicht ein einzelnes Computeralgebrasystem erklären, sondern den Leser vielmehr ermächtigen, solche Programme allgemein zu verwenden und die Unterschiede zu erkennen. So soll der Vendor-Lockin verhindert werden, an dessen Ende der Leser nur eine Software sehr gut bedienen kann. Jede Software hat ihre Vor- und Nachteile, und einen mündigen Computernutzer erhält man nicht durch Bildung von "Inselkompetenzen", sondern durch Ermöglichung der freien Wahl der gewählten Werkzeuge.

Zusammenfassung des Projektes[Bearbeiten]

  • Zielgruppe
    • Einsteiger in Computeralgebra, die aber einen minimalen Programmierhintergrund mitbringen (möglicherweise kann ein einführendes Kapitel dies bereits abdecken)
    • Mathematische Vorkenntnisse sind nur soweit vonnöten, wie deren Anwendung gewünscht ist. An den Beispielen wird der Leser merken, ob sie ihn ansprechen (Kurvendiskussion ist sicher für Oberstufe interessant, Operatoralgebra nicht).
    • Traditionell sind viele Computeralgebrasysteme im unixoiden Umfeld (etwa mit Linux) verankert. Dies wird größtenteils übergangen, spielt aber bei der Installation eines CAS eine große Rolle. Die Benutzung von Windows, Linux oder Mac OS X sollte aber egal sein, solange der Benutzer nicht mit einem Mobilgerät (Android o.ä.) arbeiten möchte.
  • Projektumfang
    • Knappe Kapitel zu unterschiedlichen Computeralgebrasystemen. Zur Installation soll nur wenig erwähnt werden. Ein Großteil soll der Syntax, Semantik und Philosophie des Systems zugewendet werden. Anhand von Beispielen soll die Stärke des Systems beleuchtet werden. Am Ende jedes Kapitels soll ein Vergleich zu anderen Systemen stattfinden (der wird sich erst gut lesen, nachdem man alle Kapitel angelesen hat)
    • Numerische Methoden müssen Erwähnung finden, um abgrenzen zu können.
  • Buchpatenschaft/Ansprechperson: Benutzer:Sven
  • Themenbeschreibung
    • Computeralgebrasysteme sind seit den 90ern ein Standardwerkzeug für Naturwissenschaftler.
  • Lernziele
    • Sichere Grundlagen bieten, um einzelne Systeme "entdecken" zu können. Dieses Buch wird kein Tutorial, sondern soll die Systeme wirklich erklären.
  • Abgrenzung zu anderen Wikibooks
  • Policies
    • Kontakt zum Erstautor Benutzer:Sven wird erbeten, ist aber nicht Pflicht!
    • Auch Änderungen und Erweiterungen, die über Rechtschreibkorrekturen hinausgehen, sind gern gesehen.
    • Das Buch sollte nicht als alleiniges Tutorial oder Linkwüste geschrieben werden.

Gliederungsentwurf[Bearbeiten]

Hinweis: Grüne Balken geben derzeit an, wie sehr Sven dazu etwas schreiben kann
  • Einführung
    • Einführung
    • Programmier-ABC am Beispiel Python
  • Mathematica und Freunde
    • 100% fertig  Mathematica
      • Kauf und Installation, Online-Verwendung mit Cloud/Wolfram Alpha
      • Philosophie und Ursprünge (LISP), Homoikonizität, Quelltext-Ein/Ausgabeformate (Forms)
      • Pattern-Matching und Techniken zur Verarbeitung von Ausdrücken
      • Notebook und Graphik-Engine, Export und Import
      • Vergleich zu Open-Source-Alternativen
    • Open-Source-Alternativen
    • 40% fertig  Maxima
    • 30% fertig  Singular
  • Numerische Software im Vergleich
    • Einleitung: Numerische Algorithmen sind oft effizienter und brauchen weniger Speicher; es gibt wesentlich mehr Software, die numerische statt analytische Methoden verwendet.
    • Beispiel 50% fertig  Matlab
      • Numerische Werkzeuge und die Abgrenzung zu symbolischer Mathematik
      • Analytische Fähigkeiten in Matlab
    •  GNU Octave und  Numpy als OSS-Clones
  • Scientific Python
    • Python als Basis für wissenschaftliche Software
    • 100% fertig  SciPy
      • Installation und Python-Unterbau
      • Komponentenvorstellung: IPython, Numpy, Pandas
      • Symbolische Fähigkeiten, Sympy
      • Beispiele der Interaktion mit Python
    • 100% fertig  Sage_(Software)
      • Installation und Ursprünge, Python-Unterbau
      • Philosophie und Arbeit mit dem Code, Dokumentation
      • Unterschiede zu den Basissystemen (Maxima, Sympy)
      • Grenzen der Mächtigkeit, Erweiterbarkeit