MathLib.js

MathLib.js ist eine JavaScript Library für mathematische Berechnung. MathLib ist in TypeScript geschrieben und unterstützt alle modernen Browser (Chrome, Firefox 10+, Safari 5+, Opera 11+, IE 9+). Die Library ist ungefähr 371.55 KB groß (155.69 KB komprimiert). Auf Grund der Aufspaltung der Library in Module kann man aber sehr leicht eine eigene (kleinere) Version der Library erstellen.

MathLib.js steht unter der MIT Lizenz und wird auf GitHub entwickelt.

Matrizen

Die Funktionen von MathLib.js

MathLib.js kann mit Kreisen, ganze Zahlen, komplexen Zahlen, Linien, Matrizen, Permutationen, Punkten, Polynomen, rationale Zahlen, Mengen und Vektoren arbeiten. MathLib.js ist so geschrieben, dass es (nahezu) jede mathematisch sinnvolle Aufgabe erledigt. So ist es kein Problem ein komplexe Zahlen als Einträge in einer Matrix zu haben, oder eine Matrix in ein Polynom einzusetzen.
Plotting

Interaktive Graphen

MathLib.js ist nicht nur für Berechnungen ein gutes Hilfsmittel, sondern auch für das plotten von Funktionsgraphen. Für zwei dimensionale Plots gibt es einen Canvas und einen SVG renderer. Drei dimensionale Plots werden mit Hilfe des THREE.js WebGL Frameworks erstellt. Die Plots sind interaktiv: sie können vom Nutzer verschoben, gezoomt und (im drei dimensionalen Fall) gedreht werden.
Beispiel von content MathML um eine komplexe Zahl zu beschreiben

MathML und LaTeX Integration

MathLib.js hat einen eingebauten Parser für mathematische Ausdrücke, sowie Content MathML. Alle mathematischen Objekte können in Content MathML, Presentation MathML und LaTeX umgewandelt werden. Des Weiteren kann MathLib überprüfen ob MathML vom Browser unterstützt wird und gegebenenfalls MathJax laden.
Matrizen können auch mit einem MatLab ähnlichen Syntax erzeugt werden.
QUnit

Umfangreiche Testsuite

MathLib.js hat eine umfangreiche Testsuite basierend auf QUnit mit mehr als 2500 Tests. Die Testsuite wird bei jedem Commit durch die continuous integration von Travis CI und Open Sauce von Sauce Labs. Neue Tests werden ständig hinzugefügt um die Testüberdeckung von MathLib.js zu verbessern. Zudem werden die Typannotaionen in TypeScript verwendet um die Menge der möglichen Fehler beträchtlich zu reduzieren.

Die formale Codequalität ist durch einen Styleguide definiert und durch jscs und JSHint gesichert.

GitHub

Aktuell in der Entwicklung

  • Verbesserungen für das Matrix Module
  • Verbesserungen für das Functn Module
  • Integer Modul