Kann Haskell die Grundlagen der Mathematik gut vermitteln?

19

Ich unterrichte Mathematik in Klassen mit Anforderungen wie AS- und A-Level-Mathematik.

Schulbücher enthalten normalerweise Beispiele für Computersoftware, die für mathematische Aufgaben verwendet wird, sie basieren jedoch normalerweise auf Softwareanwendungen wie mathlab, mathematica oder derivate.

Selbst wenn eine echte Programmiersprache verwendet wird, ist sie normalerweise eine altmodische Sprache wie Pascal. Und das ist meiner Meinung nach wirklich traurig.

Weil Haskell für sein Gefühl für Mathematik bekannt ist und weil ich mich auch dafür interessiere, möchte ich fragen, ob Haskell eine gute Wahl für die Erweiterung der Übungsmethode für Studenten einer Universitätsklasse im ersten Jahr ist. Typische Themen sind beispielsweise Funktionen, Caclulus, Limits, aber auch lineare Algebra.

Ich habe mittlere Programmierkenntnisse (c #, ruby, powershell, javascript, tex) und bin bereits mit XSLT in die funktionale Programmierung eingetreten.

Antworten werden verantwortungsbewusst hochgestuft. Ausführliche Antworten, einschließlich einiger grundlegender Beispiele für Haskell-Code in der Mathematik, wie z. B. lineare Algebra (z. B. vektorieller Raum), Polynome und das Lösen linearer Gleichungen, werden sehr geschätzt und als erwünscht eingestuft.

Emiliano Poggi
quelle
3
Schauen Sie sich dieses Buch an: collegepublications.co.uk/computing/?00004
Fred Foo
@ Larsmans: Danke. Das ist in der Tat ein guter Ausgangspunkt; Ich interessiere mich auch für mehr praktische Mathematik, wie Differenzierung, Grenzen, Integrale.
Emiliano Poggi
Ich verstehe nicht, dass Mathematica keine echte Programmiersprache ist. Wenn ich mathematische Probleme habe, benutze ich es sehr häufig zuerst (gut, Octave) und konvertiere dann in eine andere Sprache. Wenn der Schwerpunkt auf Mathematik liegt, sehe ich keinen Grund, warum eine spezielle Mathematiksprache nicht geeignet ist.
edA-qa mort-ora-y
@edA: Mathematica! = Oktave! Octave ist ein Matlab-Klon. Leute, die beide verwenden, sagen mir, dass Matlab / Octave mehr auf Numerik (große Arrays, FFTs usw.) ausgerichtet ist, während Mathematica besser für symbolische Manipulationen geeignet ist. Das nächste FOSS-Äquivalent zu Mathematica ist wahrscheinlich Maxima (ehemals Macsyma).
am
@timday, ja, ich kenne Octave! = Mathematica, aber die Codesprache ist dieselbe. Ich benutze Maxima auch für symbolische Manipulationen.
edA-qa mort-ora-y

Antworten:

9

Haskell erfreut sich bei Mathematikern wachsender Beliebtheit. Wie ein Blogger es ausdrückte:

"Nachdem ich mich in das Thema verwickelt habe, fällt auf, dass die Distanz zwischen dem Gedanken, der in meinem täglichen mathematischen Diskurs zum Ausdruck kommt, und dem Gedanken, der in Haskell-Code ausgedrückt wird, relativ gering ist."

Hier sind einige gesammelte Ansichten, von denen ich glaube, dass Sie mit dieser Herangehensweise nicht furchtbar falsch liegen können.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Endlich,

Don Stewart
quelle
1
Nachdem ich einige Ihrer Links gelesen habe, kann ich nicht sagen, dass ich zu überzeugt bin. Haben Sie Beispiele von jemandem, der sich für eine Haskell - Sitzung hinsetzt und so arbeitet, wie Sie es mit Mathematica / Maxima können? Außerdem zeigt der Blog "11 Gründe", was für ein Durcheinander die Standardbibliothek aus der Sicht eines Mathematikers darstellt, und wenn ich die Liste der Mathematikpakete betrachte, sehe ich viele Zahlen (z. B. blas, fft), aber nicht viel darin die Art der symbolischen Manipulation / CAS. Davon abgesehen ... beide Bücher sehen wirklich interessant aus!
am
Ja, einige Beispiele für die tatsächliche Mathematik wären großartig (wie Additionen der Lin. Algebra-Matrix usw.) - um zu sehen, wie die tatsächliche Syntax aussieht. Ich wette, es gibt nicht einmal op-Überlastung ...
Andriy Drozdyuk
@drozzy: Natürlich gibt es eine Überladung der Operatoren über Typklassen.
Nomen
4

Obwohl ich ein großer Fan von Haskell für den Mathematikunterricht bin, ist es möglicherweise nicht für alle Themen auf AS / A-Ebene geeignet.

Sie werden kein Problem damit haben, die Idee einer Funktion zu lehren, und lineare Algebra kann in Haskell nützlich sein. Lineare Algebra wird häufig auf sehr zwingende Weise mit direkten Aktualisierungen von Arrays gelehrt. Es kann alles in Haskell übersetzt werden, aber es erfordert möglicherweise ein wenig Umdenken.

Aber es wird schwierig, über Grenzen und Kalkül zu sprechen. Ich habe in Haskell große Erfolge mit einem unkonventionellen Ansatz erzielt. Aber das ist vielleicht keine gute Idee, wenn man einen festen Lehrplan unterrichtet. Alternativ können Sie mit symbolischer Differenzierung spielen, müssen dann aber Datentypen für Ausdrücke erstellen, die für A / AS-Level schwierig sein können. Es ist nicht viel Code, um anzufangen, kaum ein paar Zeilen, aber es könnte für Studenten beängstigend sein. Im Gegensatz zu Derive und Mathematica erhalten Sie symbolische Ausdrücke nicht kostenlos.

Die grundlegende Kombinatorik lässt sich mit der List-Monade leicht erkunden. Dies könnte nützlich sein, um Wahrscheinlichkeitstheorie zu lehren.

Haskell eignet sich für numerische Anwendungen, wie sie auf A / AS-Ebene auftreten können, z. Anwendung der Simpson-Regel oder Untersuchung von Stichprobenmitteln und -abweichungen.

Machst du elementare Gruppentheorie? Das ist einfach in Haskell zu programmieren und damit zu spielen.

Wenn Sie sich um Grenzen kümmern, ist es meines Erachtens unkompliziert, mit Haskell einen Großteil der Mathematik auf A / AS-Niveau zu betreiben.

user27539
quelle
2

Ich bin mir nicht sicher, ob Haskell eine gute Wahl ist. Sicher, es hat ein sehr "mathematisches Gefühl", befasst sich mit unendlichen Strukturen usw. Aber Sie können diese Funktionen nur schätzen, wenn Sie die Sprache bereits kennen . Haskell lernen, um Mathematik zu lernen, stapelt eine schwere Aufgabe auf die andere. Und Haskell zu lernen ist schwierig, auch wenn Sie bereits mit Programmieren vertraut sind. Es kommt also wirklich darauf an, ob Ihr Publikum hell und neugierig genug ist, ansonsten verlieren Sie die Hälfte aufgrund von Mathematik und die andere Hälfte aufgrund von Haskell.

Landei
quelle
Haskell zu lernen ist einfach, wenn Sie die Mathematik dahinter bereits kennen. Sehr leicht.
Nomen
@nomen Mag sein, aber das war nicht die Frage.
Landei
Ich sage, dass es nicht disqualifiziert, jemandem mit Programmierhintergrund schwer beizubringen.
Nomen
1

Keine Computersprache bringt Ihnen Mathematik bei. Nur Mathematik wird Ihnen Mathematik beibringen. Das heißt: Stift und Papier Ansatz (oder Kreide und Tafel), Axiome, Theoreme und Beweise. Das ist Mathematik. Egal wie sexy die Sprache ist, ein darin geschriebenes Programm ist keine Mathematik, es ist nur eine Anwendung der Mathematik. Um etwas anzuwenden, müssen Sie es zuerst lernen.

quant_dev
quelle
1
Ich glaube nicht, dass jemand von einer Programmiersprache erwartet, dass sie buchstäblich Mathematik unterrichtet, und ich glaube nicht, dass die ursprüngliche Frage nach einer Programmiersprache, die buchstäblich Mathematik unterrichtet, gestellt wird. Sie möchten etwas, das für einige Übungen verwendet werden kann, um den Mathematikunterricht zu erleichtern.
user27539
Kreide, Tafel ...
quant_dev
Nicht zustimmen. Eine Sprache ist nur ein Ausdrucksmittel. Kreide, Bleistift, Computer: nur Werkzeuge, mit denen sich Mathematik konkret ausdrücken lässt. Sprachen sind nur Werkzeuge, um Mathematik abstrakt auszudrücken. Vergleichen Sie das Haskell-Curry-Isomorphismus-Theorem (ein Programm ist ein Beweis in einer konstruktiven Logik)
Nomen