Wie / wann wird in der Informatik Kalkül verwendet?


95

Viele Informatik-Programme erfordern zwei oder drei Klassen.

Ich frage mich, wie und wann in der Informatik Kalkül verwendet wird. Der CS-Inhalt eines Informatikstudiums konzentriert sich in der Regel auf Algorithmen, Betriebssysteme, Datenstrukturen, künstliche Intelligenz, Software-Engineering usw. Gibt es Zeiten, in denen Calculus in diesen oder anderen Bereichen der Informatik nützlich ist?


6
Wir haben keine strengen Richtlinien für Listenfragen, aber es gibt eine allgemeine Abneigung . Bitte beachten Sie auch diese und diese Diskussion; Vielleicht möchten Sie Ihre Frage verbessern, um die dort erläuterten Probleme zu vermeiden. Wenn Sie sich nicht sicher sind, wie Sie Ihre Frage verbessern können, können wir Ihnen vielleicht im Computer Science Chat helfen ?
Raphael

42
Sie scheinen den allgemeinen Fehler zu machen, anzunehmen, dass der Inhalt jedes Kurses relevant sein muss (für jeden Karriereweg). Manchmal geht es nur darum, dich zu schulen, wie man auf bestimmte Arten denkt.
Raphael

8
Es wäre wahrscheinlich hilfreich, wenn mit dieser Frage geklärt werden könnte, ob Sie nur Informationen zu den eigentlichen Verwendungszwecken der Informatik oder zu allen Verwendungszwecken für Studenten mit einem Comp-Sci-Abschluss benötigen. Zumindest hier in den USA wird ein sehr großer Prozentsatz der Absolventen von Comp Sci zu Software-Ingenieuren, die sich auf nahezu alle vorstellbaren Bereiche des Ingenieurwesens verteilen. Für viele dieser Bereiche ist das Verständnis von Calculus für verschiedene Zwecke erforderlich. Nicht alle CS-Absolventen werden Calculus in ihrem Beruf einsetzen, aber viele werden es mit Sicherheit (wahrscheinlich mehr, als sie in ihrem Freshman-Jahr
glauben

1
Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Raphael

Für mich war es sehr nützlich für das Gefühl der "Wertschätzung und Erleichterung später beim Erlernen von numerischen Methoden" . Bei der Arbeit mit diskreten Daten aus realen Messungen anstelle von stetigen Funktionen aus der theoretischen Mathematik war es eine solche Erleichterung, dass Integration nur eine Summe und die Ableitung nur eine Subtraktion ist, anstatt der übermäßig komplizierten Formeln, die wir so viel Zeit und Mühe benötigten in unseren kalkülklassen vorher lernen!
vsz

Antworten:


110

Ich kann mir ein paar Kurse vorstellen, die Calculus direkt benötigen würden . Ich habe für die normalerweise obligatorischen Disziplinen für ein Informatik-Studium Fettdruck und für die normalerweise optionalen Kursivdruck verwendet.

  • Computergrafik / Bildverarbeitung, und hier benötigen Sie auch analytische Geometrie und lineare Algebra, stark ! Wenn Sie diesen Weg beschreiten, möchten Sie möglicherweise auch etwas Differentialgeometrie studieren (die als Mindestvoraussetzung multivariate Analysis hat). Aber Sie brauchen Calculus hier auch für sehr grundlegende Dinge: Versuchen Sie zum Beispiel, nach "Fourier Transform" oder "Wavelets" zu suchen - dies sind zwei sehr grundlegende Werkzeuge für Menschen, die mit Bildern arbeiten.
  • Optimierung , meistens nicht linear, wobei multivariate Berechnung die grundlegende Sprache ist, mit der alles entwickelt wird. Aber auch die lineare Optimierung profitiert von Calculus (die Ableitung der Zielfunktion ist absolut wichtig)
  • Wahrscheinlichkeit / Statistik . Diese können ohne multivariate Analysis nicht ernsthaft untersucht werden.
  • Maschinelles Lernen , bei dem die Statistik (und folglich die multivariate Analysis) stark genutzt wird
  • Data Mining und verwandte Themen, die auch viele Statistiken verwenden;
  • Robotik , in der Sie physikalische Bewegungen eines Roboters modellieren müssen, damit Sie partielle Ableitungen und Steigungen kennen müssen.
  • Diskrete Mathematik und Kombinatorik ( ja , möglicherweise benötigen Sie Calculus für diskretes Zählen!) - Wenn Sie die Generierung von Funktionen ernst nehmen, müssen Sie wissen, wie Sie bestimmte Formeln integrieren und ableiten. Und das ist nützlich für die Analyse von Algorithmen (siehe das Buch von Sedgewick und Flajolet, "Analysis of Algorithms"). In ähnlicher Weise können Taylor-Reihen und -Rechnungen beim Lösen bestimmter Arten von Wiederholungsrelationen nützlich sein, die bei der Algorithmusanalyse verwendet werden.
  • Analyse von Algorithmen , bei denen Sie von Anfang an den Begriff des Limits verwenden (siehe Landau-Notation, "little " - es wird mit einem Limit definiert)o

Möglicherweise gibt es noch andere - das ist mir ein Rätsel.

Außerdem profitiert man indirekt von einem Kalkülkurs, indem man lernt, Argumente mit technischer Genauigkeit zu argumentieren und zu erklären. Dies ist wertvoller, als die Schüler normalerweise denken.

Schließlich benötigen Sie Calculus, um mit Menschen aus anderen exakten Wissenschaften und Ingenieurwissenschaften interagieren zu können. Und es ist nicht ungewöhnlich, dass ein Informatiker nicht nur sprechen, sondern auch mit einem Physiker oder Ingenieur zusammenarbeiten muss.


34
Vielleicht hatten Sie eine andere Erfahrung, aber ich fand Kalkül ziemlich nutzlos, um zu lernen, wie man Argumente rigoros argumentiert und erklärt. Es wurde durch Auswendiglernen und Mustervergleich unterrichtet, ähnlich wie Algebra und Geometrie der Highschool. Auf der anderen Seite war es die Voraussetzung für mehrere höhere Mathematik Klassen , die taten , diese Fähigkeiten lehren, so dass ich nehme an, es nicht völlig nutzlos war.
Tsleyson

6
Ich kann mich voll und ganz auf den letzten Punkt beziehen (indirekte Vorteile). Ich habe mich mit der Theorie der Programmiersprachen befasst und selten direkt mit dem Kalkül gearbeitet. Die wahrscheinlich direkteste Anwendung lag in probabilistischen Rechenmodellen (z. B. Plotkin & Jones probabilistic powerdomains). In meinem Kalkül ging es jedoch hauptsächlich darum, Dinge zu beweisen, und das war sehr, sehr wertvoll. Ein oder zwei Kalkülkurse werden IMHO in jedem ernsthaften CS-Programm benötigt, zusammen mit etwas mehr Mathematik (diskrete Mathematik, Logik, lineare Algebra, numerische Analyse, ... und möglicherweise Kategorien, Topologie, Algebra, ...).
Chi

3
Hier ist ein Beispiel dafür , wie ich brauchte Kalkül in der Computergrafik: Glatte Interpolationsfunktionen werden grundsätzlich alle von der Form f(0) = 0, f(1) = 1, f'(0) = f'(1) = 0, und Sie können alle anderen Einschränkungen hinzufügen , die Sie interessieren, zum Beispiel f'(0.5) = 1. Vor einiger Zeit habe ich dies verwendet, um verschiedene Interpolationspolynome zum Glätten von Bildern abzuleiten.
Porglezomp

3
Die Robotik kann wahrscheinlich auf jede Art von Physikmodellierung erweitert werden (was ich auch für CG in Bezug auf Beleuchtung halte, nennen wir es also kinetische Physikmodellierung). Dies umfasst Beschleunigung / Geschwindigkeit, Prellen / Federn / Verformung, PID-Regler, Akustik, Gravitation ...
Metao

2
Ich werde mich für diesen indirekten Punkt einsetzen: Besser als jede Klasse, die sie zuvor besucht haben, lehrt Calculus die Schüler, dass sie nicht einfach die Anzahl der Probleme zählen und abschätzen können, wie viel Arbeit damit verbunden sein wird.
candied_orange

20

Dies ist etwas unklar, aber in algebraischen Datentypen taucht Kalkül auf. Für jeden gegebenen Typ ist der Typ seiner Ein-Loch-Kontexte die Ableitung dieses Typs. Sehen Sie sich diesen ausgezeichneten Vortrag an, um einen Überblick über das gesamte Thema zu erhalten. Dies ist eine sehr technische Terminologie.

Algebraische Datentypen

Möglicherweise sind Sie auf Tupel gestoßen, die als Produkttypen bezeichnet werden (andernfalls handelt es sich um das kartesische Produkt zweier Typen). Wir werden dies wörtlich nehmen und die Notation verwenden:

ab

Ein Tupel darstellen, wobei und beide Typen sind. Als nächstes sind Sie möglicherweise auf Summentypen gestoßen. Dies sind Typen, die entweder der eine oder der andere Typ sein können (in Haskell als " Gewerkschaften" , " Varianten" oder als " Entweder " (irgendwie) bezeichnet). Wir werden diesen auch wörtlich nehmen und die Notation verwenden:ab

a+b

Diese werden genannt , wie sie sind , weil , wenn ein Typ hat Werte und einen Typ hat Werte, wird der Typ hat Werte.aNabNba+bNa+Nb

Diese Typen sehen aus wie normale algebraische Ausdrücke, und wir können sie tatsächlich als solche (bis zu einem gewissen Punkt) manipulieren.

Ein Beispiel

In funktionalen Sprachen lautet eine gebräuchliche Definition einer Liste (in Haskell hier angegeben) wie folgt:

data List a = Empty 
            | Cons a List

Dies besagt, dass eine Liste entweder leer ist oder ein Tupel aus einem Wert und einer anderen Liste. Wenn wir das in algebraische Notation umwandeln, erhalten wir:

L(a)=1+aL(a)

Wobei einen Typ mit einem Wert darstellt (auch bekannt als Einheitentyp). Durch wiederholtes Einfügen können wir dies auswerten, um eine Definition für :1L(a)

L(a)=1+aL(a)
L(a)=1+a(1+aL(a))
L(a)=1+a+a2(1+aL(a))
L(a)=1+a+a2+a3(1+aL(a))
L(a)=1+a+a2+a3+a4+a5...

(Wobei im Sinne einer wiederholten Multiplikation gemeint ist.)xn

Diese Definition sagt dann , dass eine Liste entweder Einheit ist, oder ein Tupel von einem Punkt oder ein Tupel aus zwei Elementen, oder von drei usw., die ist die Definition einer Liste!

Ein-Loch-Kontexte

Nun zu Ein-Loch-Kontexten: Ein Ein-Loch-Kontext ist das, was Sie erhalten, wenn Sie einem Produkttyp einen Wert entnehmen. Nennen wir ein Beispiel:

Für ein einfaches 2-Tupel, das homogen ist, , wenn wir einen Wert herausnehmen, erhalten wir nur ein 1-Tupel, . Es gibt jedoch zwei verschiedene Ein-Loch-Kontexte dieses Typs: den ersten und den zweiten Wert des Tupels. Da es sich also um eines von beiden handelt, können wir schreiben, dass es , was natürlich . Hier kommt die Differenzierung ins Spiel. Lassen Sie uns dies mit einem anderen Beispiel bestätigen:a2aa+a2a

Wenn Sie einen Wert aus einem 3-Tupel nehmen, erhalten Sie ein 2-Tupel, aber es gibt drei verschiedene Varianten:

( a , _ , a ) ( _ , a , a )

(a,a,_)
(a,_,a)
(_,a,a)

Je nachdem, wo wir das Loch setzen. Dies ergibt was in der Tat die Ableitung von . Dafür gibt es hier generell einen Beweis .a 33a2a3

Für unser letztes Beispiel verwenden wir eine Liste:

Wenn wir unseren ursprünglichen Ausdruck für eine Liste nehmen:

L(a)=1+aL(a)

Wir können neu arrangieren, um Folgendes zu erhalten:

L(a)=11a

(Auf den ersten Blick mag dies unsinnig erscheinen, aber wenn Sie die Taylor-Reihe dieses Ergebnisses nehmen, erhalten Sie die Definition, die wir zuvor abgeleitet haben.)

Wenn wir dies nun differenzieren, erhalten wir ein interessantes Ergebnis:

L(a)a=(L(a))2

So ist eine Liste zu einem Listenpaar geworden. Dies ist in der Tat sinnvoll: Die beiden erstellten Listen entsprechen den Elementen oberhalb und unterhalb des Lochs in der Originalliste!


Das war wunderbar aufschlussreich. Vielen Dank.
D. Ben Knoble

12

Numerische Methoden. Es gibt umständliche Kalkülprobleme, die nur für bestimmte Anwendungen gelten, und sie erfordern Lösungen, die schneller sind, als ein Mensch praktisch ohne Programm lösen kann. Jemand muss einen Algorithmus entwerfen, der die Lösung berechnet. Ist das nicht das einzige, was Programmierer von Wissenschaftlern trennt?


3
Angesichts der "Listen" -Natur dieser Frage sollte jede Antwort versuchen, ein vollständiges Bild zu vermitteln. Sind Sie sicher, dass Sie behaupten möchten, dass numerische Methoden die einzige Instanz sind?
Raphael

Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Raphael

12

Automatisierung - Ähnlich wie in der Robotik kann die Automatisierung eine Menge menschlichen Verhaltens erfordern.

Berechnungen - Das Finden von Lösungen für Beweise erfordert häufig Kalkül.

Visualisierungen - Für die Verwendung erweiterter Algorithmen sind Berechnungen wie cos, sinus, pi und e erforderlich. Besonders wenn Sie Vektoren, Kollisionsfelder und Maschen berechnen.

Logistik- und Risikoanalyse - Feststellen, ob eine Aufgabe möglich ist, welches Risiko damit verbunden ist und wie hoch die Erfolgsquote sein kann.

Sicherheit - Die meisten Sicherheitsmaßnahmen können ohne Kalkül durchgeführt werden. Viele Leute, die Erklärungen wünschen, bevorzugen es jedoch in mathematischen Ausdrücken.

KI - Die Grundlagen der KI können ohne Kalkül angewendet werden. Berechnung fortgeschrittenen Verhaltens, Schwarmintelligenz / Schwarmgeist und auf komplexen Werten basierende Entscheidungsfindung.

Medizinische Berechnungen - Für die Visualisierung der meisten Gesundheitsdaten sind Berechnungen wie EKG-Messungen erforderlich.

Wissenschaft und Technik - Wenn Sie mit fast allen anderen wissenschaftlichen Disziplinen arbeiten, müssen Sie Kalkül anwenden: Luft- und Raumfahrt, Astrologie, Biologie, Chemie oder Technik.

Viele Programmierer können ihre gesamte Karriere ohne Kalkül absolvieren. Es kann jedoch von unschätzbarem Wert sein, wenn Sie bereit sind, die Arbeit zu erledigen. Für mich war es am effektivsten in der Automatisierung, Logistik und Visualisierung. Indem Sie bestimmte Muster identifizieren, können Sie das Muster einfach ignorieren, das Muster imitieren oder eine überlegene Methode entwickeln.


7
πe

3
exp(x)f(x)=f(x)f(0)=1f(x)=g(x)g(x)=f(x)f(0)=0g(0)=1

2
@DavidRicherby: Beispiel: Wie implementieren Sie diese Funktionen beispielsweise auf einem Mikrocontroller ohne FPU? Wenn Sie einen Kalkül kennen, wissen Sie sofort eine gute Antwort: Potenzreihen.
Nate Eldredge

6

Tatsache ist, dass es kaum eine Chance gibt, dass Sie jemals einen Kalkül verwenden werden. Praktisch jede andere wissenschaftliche Disziplin verwendet jedoch Kalkül und Sie arbeiten an einem naturwissenschaftlichen Abschluss. Es gibt bestimmte Erwartungen an das, was ein Universitätsabschluss in Naturwissenschaften bedeuten soll, und eines dieser Dinge ist, dass Sie Kalkül kennen. Auch wenn Sie es nie benutzen werden.

Es ist in Ordnung, wenn Sie im Kalkül schlecht abschneiden, aber achten Sie darauf, dass Sie sich etwas um diskrete Mathematik bemühen. Es gibt eine Menge realer Programmierprobleme, bei denen diskrete Mathematik ins Spiel kommt und Unkenntnis ihrer Prinzipien Sie vor anderen Programmierern in Verlegenheit bringen kann.


9
Ihr erster Absatz ist völlig falsch und grenzt an die Verschwörungstheorie. In der Informatik gibt es genügend Gebiete, in denen die Analysis nützlich ist (endlose Listen finden Sie in den anderen Antworten). Sicher, es ist möglich, alle diese Bereiche zu meiden, aber es ist sehr irreführend zu behaupten, dass das Fallenlassen von Kalkül keinen Einfluss über die Noten hinaus hat.
David Richerby

4
Abhängig von Ihrem Studiengang könnten Sie einen Abschluss machen, ohne jemals Kalkül anzuwenden, und ich denke definitiv, dass CS-Majors nicht so viel davon benötigen, wie wir bekommen. Wenn Sie dies jedoch nicht tun, werden Sie von einigen der interessantesten Bereiche der Informatik ausgeschlossen. Es gibt viel Zeit, um Webentwickler zu werden, wenn Sie Ihren Abschluss gemacht haben. Warum nicht versuchen, sich in der Schule ein wenig zu pushen?
Tsleyson

3
@tsleyson Wenn Sie ein Webentwickler sein möchten, sparen Sie Geld und Zeit, um einen CS-Abschluss zu erhalten.
Raphael

8
@ScottB Sie scheinen die Informatik mit der Programmierung zu verwechseln.
David Richerby

3
@ScottB Wer sagt CS = Mathe + Programmierung? Ich selbst habe mich seit langem gegen diese eingeschränkte Sichtweise ausgesprochen. Aber Sie haben es auch umgekehrt: Mathematik ist ein wesentlicher Bestandteil von CS, genau wie es für die Physik ist. Wir brauchen es, auch wenn wir es nicht üben wollen. (Das heißt, dies ist nicht der Ort für diese Diskussion. Bitte besuchen Sie uns im Computer Science Chat, wenn Sie fortfahren möchten.)
Raphael

4

Viele Leute haben bereits Anwendungen in CS bereitgestellt. Aber manchmal finden Sie Kalkül, wenn Sie am wenigsten erwarten:

Derivate mit regulären Ausdrücken werden erneut untersucht

Wenn Sie Automaten kennen, ist dieses PDF möglicherweise lesenswert.


Ich sehe dort keine Differentialrechnung; Ich sehe das Wort "Derivat", aber ich sehe nichts, was der traditionellen Differentialrechnung ähnelt.

2
Es heißt "formale Ableitung" und ist in gewisser Weise mit Calculus verwandt. Sie sehen dies auch bei der Generierung von Funktionen, einigen Formeln für diskrete Strukturen und anderen Bereichen, in denen Sie keine "Glättungsfunktion" haben.
Jay

@Jay: Wichtig ist nicht der Name. Wie hilft das Verstehen von Kalkül dabei?
Christian

2
Es wird in dieser Wikipedia-Seite erklärt . Die formale Ableitung ist eine Operation auf Elemente der analgebraischen Struktur, die Polynome enthält, und sie ist formal "ziemlich ähnlich" der üblichen Regel zur Unterscheidung von Polynomen. Sie können Polynome über einen beliebigen "Ring" sein (eine andere algebraische Struktur). Und es gibt praktische Anwendungen des formalen Derivats - ich habe mindestens eine gesehen (Algebraische Kryptoanalyse - kann mich nicht an die Details erinnern).
Jay

4

Einige spezifischere Beispiele:

  • Aus dem Kalkül wird die Delta-Regel abgeleitet , die es einigen Arten von neuronalen Netzen ermöglicht, "zu lernen".
  • Mit Hilfe von Calculus kann die Fourier-Transformation einer oszillierenden Funktion berechnet werden, die für die Signalanalyse von großer Bedeutung ist.
  • In der Computergrafik wird ständig Kalkül verwendet. Dies ist ein sehr aktives Feld, in dem ständig neue Techniken entdeckt werden. Ein grundlegendes Beispiel finden Sie in Kajiyas Rendering-Gleichung
  • Analysis ist wichtig auf dem Gebiet der Berechnungsgeometrie, der Untersuchung der Kurven- und Oberflächenmodellierung.

3

Zu diesen anderen hervorragenden Antworten füge ich diesen Punkt hinzu: Strenge beim Testen .

Bei der Erstellung von Testfällen für einige Anwendungen musste ich Berechnungen verwenden, um die erwarteten Laufzeiten und Speichergrößen vorherzusagen und optimale Parameter für die Optimierung von Datenstrukturen auszuwählen. Dies schließt das Verstehen des erwarteten Rundungsfehlers usw. ein.

Während die Statistik in anderen Antworten erwähnt wird, möchte ich speziell Monte-Carlo-Algorithmen erwähnen , z. B. Optimierungsalgorithmen und einige sparsame Streaming-Algorithmen , die auf mathematischen Prinzipien basieren, einschließlich der Analysis.

Bestimmte Branchen, in denen ich gearbeitet habe, in denen Kalkül erforderlich war, umfassen:

  • Finanzen (Erstellen einer Handelsplattform)

  • Versicherung (numerische Integration von Versicherungsverträgen in Was-wäre-wenn-Szenarien zur Berechnung der erwarteten Versicherungsverluste)

  • Logistik (Optimierung der Konsolidierung von Transportwegen)

  • Signalverarbeitung


3

Kalkül - der integrale Teil - wird direkt in CS als Grundlage für das Nachdenken über Summation verwendet. Wenn Sie einen Teil von Knuths Konkreten Mathematik-Abschnitten über Summation durcharbeiten, werden Sie die für die Analysis üblichen Konventionen schnell erkennen: Wenn Sie einige der kontinuierlichen Fälle verstehen, erhalten Sie Werkzeuge, um die diskreten zu berücksichtigen.

Bei vielen Anwendungen Ihrer CS-Studie handelt es sich um Programmiersysteme, die Änderungen überwachen oder in einigen Fällen versuchen, die Zukunft vorherzusagen. Die Mathematik um diese Systeme herum wurzelt in Differentialgleichungen und linearer Algebra, und Differentialgleichungen sind ... Kalkül. Es gibt Lehrer wie Gibert Strang, die dafür eintreten, sich schneller mit dem Teil der Differentialgleichungen zu befassen, aber es ist immer noch eine Teilmenge der Analysis. Wenn eine Änderung von einer Änderung in einem System abhängt, wird es auf eine Weise instabil (und stabil), die sowohl nicht intuitiv als auch sehr gut verständlich ist. Um zu verstehen, warum sich Ihr vernünftiges lineares System nichtlinear verhält, benötigen Sie entweder die Werkzeuge der Analysis oder Sie müssen sie für Ihren Problemraum neu erfinden.

Und schließlich erfordert CS oft das Lesen und Verstehen der Arbeit anderer, und Kalkül ist der erste Kontakt mit vielen gemeinsamen Vokabeln, Konventionen und Geschichten.


"Viele der Anwendungen Ihrer CS-Studie umfassen Programmiersysteme, die Änderungen überwachen oder in einigen Fällen versuchen, die Zukunft vorherzusagen" - ich denke nicht, dass dies für moust CS-Studiengänge repräsentativ ist.
Raphael
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.