Der dimensionslose Ballon. Hilfsmagie der Dimensionsanalyse

  • Tutorial

Als ich diese kleine Notiz schrieb, wurde ich durch einen kürzlich veröffentlichten Artikel über den Habré-Artikel Dynamics of Vertical Flight eines Flugzeugs veranlaßt, der leichter als Luft ist . Ich wollte einen Kommentar schreiben, aber es entwickelte sich schnell zu etwas mehr und, wie es scheint, nützlicher.

Der Originalartikel gibt ein Beispiel für die Berechnung der Dynamik eines Ballons oder eines Ballons in der Atmosphäre. Gleichzeitig werden Luftwiderstand, atmosphärische Dichte und Temperaturgradienten berücksichtigt, sodass die Aufgabe auf eine nicht triviale Differentialgleichung reduziert wird, die mit Python erfolgreich numerisch gelöst wird. Alles ist gut in dem Artikel: Der Ball nahm ab, stoppte wo nötig und wir bekamen die ultimative Höhe und Zeit des Aufstiegs. Es war notwendig, einen weiteren Ballon zu starten, mehr zu laden, grundlegender zu laden oder den Wasserstoff in Helium umzuwandeln - kein Problem - wir ändern die Parameter im Programm und berechnen erneut alles. Das Programm ist klar, linear, funktioniert, was kann hier verbessert werden, wenn nicht das Modell kompliziert?

Sie können das Modell und die Berechnungen universell für keinen bestimmten Ball, sondern für eine Vielzahl von Aufgaben einsetzen. Bei der numerischen Integration einer Differentialgleichung kann eine optimale Genauigkeit der Berechnungen sichergestellt werden. Sie können die Notwendigkeit beseitigen, die Integrationsgrenzen und den Schritt manuell festzulegen, wenn Sie eine Vielzahl von Parametern berechnen. Schließlich können Sie ohne numerische Lösung viel über die Flugdynamik unseres Balls erzählen. Und für all das gibt es eine alte Methode, die wahr und zuverlässig ist, einmal obligatorisch für alle Berechnungen am Computer und vor ihrem Erscheinen, und jetzt optional und häufig der Magie und der Kunst zuzuschreiben - Gleichungen in eine dimensionslose Form und ihre eigenen Skalen bringen. Ich werde die Aufgabe der Luftfahrt als Beispiel verwenden und zeigen, wie viel sinnvoller und anmutiger die Analyse des Problems bei Verwendung dieser Technik wird. Und dann werde ich erklären, warum dies für Programmierer wichtig sein kann und warum dieser Artikel in den Hub "Funktionale Programmierung" geraten ist.

Das Wesentliche, Gleichungen auf ihre eigene Skala zu bringen, besteht darin, solche Zeiteinheiten, Abstände, Massen, Strömungen und andere Dimensionsvariablen zu finden und einzuführen, bei denen das Problem die einfachste und eleganteste Form annimmt. Solche Einheiten werden als charakteristische oder eigene Skala der Aufgabe bezeichnet. Gleichzeitig wird die Anzahl der Parameter, die sich auf die Lösung auswirken, erheblich verringert. Wenn Sie Glück haben, auf eine sich selbst ähnliche Lösung zu stoßen, können die Parameter ganz verschwinden!

Normalerweise wird diese Technik eingeführt, wenn die Dynamik eines harmonischen Oszillators untersucht wird, wodurch die Bewegungsgleichung in eine kanonische Form gebracht wird. Wie auch immer der Oszillator (groß oder klein, nieder oder hoch, mechanisch oder elektromagnetisch) ist, wenn die Zeit nicht in Sekunden, sondern in Perioden seiner freien Schwingungen gemessen wird und die Amplitude nicht in Metern, sondern beispielsweise in der Größe der Anfangsabweichung liegt dann hat die Gleichung für jeden Linearoszillator die gleiche Form:

$ x '' + 2 \ zeta x '+ x = 0 $

Es genügt, die Eigenschaften der Lösungen dieser Gleichung zu studieren, um alles über alle Oszillatoren der viskosen Reibung zu erfahren. Ohne Reibung im Problem verschwinden die Parameter vollständig und wir erhalten als Lösung eine beispielhafte Sinuskurve. Alle anderen Sinuskurven mit einer Genauigkeit einer einfachen linearen Koordinatenänderung sind absolut identisch, so dass es nicht sinnvoll ist, sie separat zu analysieren.

Gleiches gilt für die Analyse von Kurven zweiter Ordnung. Nachdem wir eine Parabel, Hyperbel oder Ellipse in ihrer kanonischen (kompaktesten) Form betrachtet haben, haben wir alle ihre bemerkenswerten Eigenschaften kennengelernt. Danach gilt dieses Wissen für alle nicht trivialen Quadriken. Darüber hinaus wird dieselbe Technik bei der Analyse der Gleichungen der mathematischen Physik zweiter Ordnung (in partiellen Ableitungen) verwendet.

Die Reduktion des Problems auf eine dimensionslose Form auf eigenen Skalen in der Physik entspricht der Suche nach der kanonischen Form oder einem Muster in der Programmierung. Und zum Glück kann es durch einen vollständig formalen Algorithmus ausgedrückt werden:
  1. Wir führen formale Skalierungsfaktoren für Variablen ein.
  2. wir teilen die gesamte Gleichung durch jede Größe, die die Dimension ihrer Ausdrücke hat;
  3. Wählen Sie aus den resultierenden dimensionslosen Komplexen, einschließlich großer Faktoren, so viele wie die Faktoren, die wir haben, und setzen Sie diese mit eins zusammen.
  4. Wir lösen die resultierenden Gleichungen, drücken die Skalierungsfaktoren durch die Parameter des Problems aus und verwenden die verbleibenden Komplexe als Ähnlichkeitskriterien.

Als Ergebnis erhalten wir kanonische Gleichungen, die Eigenwerte des Problems sowie Ähnlichkeitskriterien für die Verallgemeinerung von Lösungen für physikalisch ähnliche Systeme. Je mehr Skalen Sie einführen können (z. B. unter Verwendung der Symmetrie), desto präziser wird sich die Bewegungsgleichung herausstellen und desto weniger Steuerparameter bleiben im Problem. Der wahre Schatz für den Forscher ist die Situation, in der es möglich ist, alle Parameter des Problems und alle möglichen Lösungen in einer Kurve generell auszuschließen. Solche Lösungen werden als selbstähnliche Lösungen bezeichnet und machen das Leben viel einfacher, indem partielle Differentialgleichungen in gewöhnliche Differentialgleichungen und sogar in algebraische umgewandelt werden. Der zweite und der dritte Schritt des obigen Algorithmus erfordern Auswahl und Begründung, sie sind am wenigsten formal, aber selbst wenn wir nach der Aufzählungsmethode handeln,

Wenden wir uns der ursprünglichen Bewegungsgleichung zu, die in dem Artikel über Flugzeuge gegeben ist, und zeigen Sie an seinem Beispiel, wie man sie in ihrem eigenen Maßstab in eine dimensionslose Form umwandelt. Die Gleichung hat die Form:

$ m \ frac {d ^ 2h} {dt ^ 2} = -mg + g W \ rho_0 e ^ {- bh} - \ frac {1} {2} mit S \ rho_0 e ^ {- bh} \ operatorname { Zeichen} \ left (\ frac {dh} {dt} \ right) \ left (\ frac {dh} {dt} \ right) ^ 2, $

mit Anfangsbedingungen

$ h (0) = h '(0) = 0. $

Hier $ h $ - Höhe des Balls $ m $ - die Masse des gesamten Flugzeugs mit Ladung, $ g $ - Beschleunigung der Schwerkraft $ W $ - das Gasvolumen im Ball, $ c $ - Widerstandsbeiwert, $ S $ - charakteristischer Widerstandsbereich $ ρ_0 $ - Luftdichte bei Nullhöhe $ b $- Koeffizient in der Boltzmann-Verteilung.

Der erste Schritt Wir stellen die formalen Skalen für Zeit und Entfernung vor:

$ h = h_0 y, \ quad t = t_0 \ tau \ qquad (1) $

und schreiben Sie die Bewegungsgleichung mit Hilfe von Strichen neu, um Ableitungen zu kennzeichnen:

$ m \ frac {h_0} {t_0 ^ 2} y '' = -mg + g W \ rho_0e ^ {- b h_0 y} \ left [1 - \ frac {c S} {2W g} \ frac {h_0 ^ 2} {t_0 ^ 2} \ operatorname {Zeichen} (y ') (y') ^ 2 \ right].  $

Die Ausgangsbedingungen in unserem Fall sind trivial, daher können sie weggelassen werden, aber im Allgemeinen müssen wir sie auch neu schreiben.

Der zweite Schritt ist die Dimensionierung der Gleichung. Alle Ausdrücke darin haben die Dimension der Kraft, und wir können sie in jede Kraft unterteilen. Gewöhnlich geteilt durch die Trägheitskraft - Faktor durch die zweite Ableitung der Entfernung. In diesem Fall werden als Parameter des Problems üblicherweise bekannte dynamische Ähnlichkeitskriterien erhalten, wie beispielsweise die Reynolds-Zahl oder die Euler-Zahl. In unserer Aufgabe werden wir jedoch alle in der Aufgabe enthaltenen Kräfte auf die Schwerkraft zurückführen$ mg $und hier ist warum. Wir sind hauptsächlich an der Position des statischen Gleichgewichts interessiert - der Begrenzungshöhe des Fluges eines Ballons bei einer gegebenen Tragfähigkeit und dem Zeitpunkt des Übergangs zu ihm. Ein statisches Gleichgewicht hängt nicht von den Trägheitseigenschaften des Systems ab, sondern hängt direkt von der Schwerkraft ab. Also teilen und schneiden, was möglich ist:

$ \ frac {h_0} {gt_0 ^ 2} y '' = -1 + \ frac {W \ rho_0} {m} e ^ {- b h_0 y} \ left [1 - \ frac {c S} {2W g } \ frac {h_0 ^ 2} {t_0 ^ 2} \ Operatorname {Zeichen} (y ') (y') ^ 2 \ right]. $

Alles, die Gleichung ist dimensionslos, jetzt sind alle Variablen und alle Ausdrücke nur Zahlen. Jetzt können wir solche Längen- und Zeitskalen frei wählen, um die Anzahl der Aufgabenparameter zu minimieren. Wir haben zwei Unbekannte.$ h_0 $ und $ t_0 $ und vier dimensionslose Komplexe:

$ \ frac {h_0} {gt_0 ^ 2}, \ quad \ frac {W \ rho_0} {m}, \ quad b h_0, \ quad \ frac {c S} {2W g} \ frac {h_0 ^ 2} { t_0 ^ 2} $

dann können wir zwei davon verschwinden lassen, indem wir sie gleich eins setzen. Darüber hinaus hängt der zweite Komplex nicht von großen Faktoren ab, und wir müssen die beiden verbleibenden für die Zerstörung auswählen. Und wieder wenden wir uns dem Argument des statischen Gleichgewichts zu, das uns interessiert. Die Gleichgewichtsposition wird durch die Gleichheit der Beschleunigung von Null bestimmt, dh es spielt keine Rolle, welcher Faktor bei der zweiten Ableitung der Höhe verwendet wird, und wir können die Anzahl der Parameter auf der rechten Seite der Gleichung minimieren. So kommen wir zu folgender Lösung: Wir wählen die Skalenfaktoren so, dass der dritte und der vierte der von uns aufgelisteten Komplexe aus der Gleichung verschwinden. Dafür nehmen wir an

$ b h_0 = 1, \ quad \ frac {c S} {2W g} \ frac {h_0 ^ 2} {t_0 ^ 2} = 1 $

und wir bekommen unsere eigene Skala der Aufgabe:

$ h_0 = \ frac {1} {b}, \ quad t_0 = \ frac {1} {b} \ sqrt {\ frac {c S} {2W g}}. \ qquad (2) $

Die übrigen Parameter werden wie folgt bezeichnet:

$ \ frac {h_0} {gt_0 ^ 2} = \ frac {1} {\ gamma}, \ quad \ frac {W \ rho_0} {m} = B. $

Dies ist wahrscheinlich das magischste Stadium unserer Transformation, die der Kunst am nächsten kommt. Aber Erfahrung und Argumentation helfen bei der Wahl der richtigen Waage. Und diese Erfahrung erlaubt es uns, ähnliche Phänomene in verschiedenen Bereichen der Wissenschaft zu sehen und die charakteristischen Eigenschaften komplexer Systeme zu erraten.

Ich erlaube mir, eine kleine Analyse der physikalischen Bedeutung der Skalen und Parameter, die wir erhalten haben, zu verschieben, obwohl es auch sehr nett und interessant ist, aber ich werde sofort zu den köstlichsten übergehen - zu einer dimensionslosen Gleichung auf meiner eigenen Skala:

$ \ frac {1} {\ gamma} y '' = Be ^ {- y} \ left (1 - \ OperatorName {Zeichen} (y ') (y') ^ 2 \ right) -1, \ quad y (0) = y '(0) = 0. \ qquad (3) $

Hier! Ich bin bereit, eine solche Gleichung zu lösen, zu analysieren und numerisch zu integrieren. Und wenn ich mich entscheide, kann ich leicht von meinen eigenen Skalen zu Metern und Sekunden wechseln, codiert in den Beziehungen (1) und (2).

Also lass uns anfangen. Finden Sie zunächst heraus, wo unser generischer Ballon stoppt. Gleichsetzen Sie dazu sowohl die Geschwindigkeit als auch die Beschleunigung in Gleichung (3) mit Null:

$ 0 = Be ^ {- y ^ *} - 1, $

wo kommen wir hin

$ y ^ * = \ ln B. $

Wir schließen sofort: Um die Grenzhöhe zu bestehen, muss die Bedingung erfüllt sein $ B> 1 ​​$. Als nächstes wollen wir abschätzen, wie lange der Ball diese Höhe erreichen wird. Setzen Sie dazu die Beschleunigung auf null und lösen Sie das Cauchy-Problem erster Ordnung:

$ 0 = Be ^ {- y} \ left (1 - (y ') ^ 2 \ right) - 1, \ quad y (0) = y ^ *.  $

Sie wird analytisch durch die Methode der Trennung von Variablen gelöst und auf das Integral reduziert:

$ \ tau ^ * = \ int_0 ^ {y ^ *} \ frac {B dy} {\ sqrt {Be ^ y}} = 2 \ operatorname {arth} \ left (\ sqrt {1 - \ frac {1} { B}} \ right).  $

Hier sind sie - die Früchte der richtig gewählten Waage! Sowohl die maximale Höhe als auch die charakteristische Zeit seiner Erreichung werden nur durch den Parameter ausgedrückt$ B $. Dies bedeutet, dass wir einen bestimmten Wert festlegen können.$ B> 1 ​​$konstruieren Sie eine Reihe von Diagrammen, um Gleichung (3) für verschiedene Werte zu lösen $ \ gamma $und beschreiben Sie daher sofort alle Lösungen für beliebige Werte $ B $!

Dies ist eine universelle Ein-Parameter-Lösungsfamilie, die durch numerische Integration des Problems (3) für verschiedene Werte erhalten wird$ \ gamma $:


Nach Erreichen der Gleichgewichtshöhe führt der Ballon eine gewisse Zeit gedämpfte Schwingungen aus, aber die charakteristische Zeit zum Erreichen dieser Höhe wird korrekt geschätzt. Vom Kriterium$ \ gamma $Nur die Schwingungsperiode und der Zeitpunkt ihrer Dämpfung hängen davon ab. Je mehr dieser Parameter ist, desto "starrer" ist unser System.

Diese Familie von Graphen muss immer noch in eine dimensionale Ansicht übersetzt werden, indem die Werte entlang der Achsen einfach mit den entsprechenden Skalierungsfaktoren multipliziert werden. Nun ist das numerische Experiment beendet und seine Ergebnisse haben universelle Bedeutung erlangt. Sie können die tatsächlichen Dimensionsparameter der Aufgabe ersetzen und erhalten die Zahlen entlang der Achsen bereits in Metern und Sekunden! Ein solches Ergebnis kann bereits in einer ernsthaften Referenz für die schwere Luftfahrt oder in einem wissenschaftlichen Artikel veröffentlicht werden, der das gesamte Phänomen in einer einzigen Grafik beschreibt.

Nun wollen wir sehen, was wir in Form von Parametern und Variablen erhalten haben. Ersetzen Sie die Masse der Kugel$ m $ für die Summe der Gasmasse $ W \ rho_g $ und Nutzlastmasse $ M $:

$ m = W \ rho_g + M = W \ rho_g (1 + \ alpha), $

wo $ \ alpha = \ frac {M} {W \ rho_g} $- relative Tragfähigkeit des Flugzeugs. Zusätzlich nehmen wir eine Kugel mit Kugel und drücken deren Fläche und Volumen durch einen Radius aus$ R $. In dieser Ansicht erhalten wir die Parameter des Problems:

$ B = \ frac {\ rho_0} {\ rho_g (1 + \ alpha)}, \\ \ gamma = \ frac {3 c B} {8 R b}. $

Der erste ist der Auftriebsfaktor, je nach verwendetem Gas und angehobener Last, ein sehr wichtiger Parameter, der alle Massenmengen aufgenommen hat. Die zweite zeigt, wie die Größe und Form der Kugel mit dem Dichtegradienten in der Atmosphäre korreliert, dh wie groß die atmosphärischen Heterogenitäten in Bezug auf die Größe der Kugel sind.

Skalen werden ausgedrückt als:

$ h_0 = 1 / b \\ \ tau_0 = \ frac {1} {2 b} \ sqrt {\ frac {3 c} {2 g R}} = \ sqrt {\ frac {\ gamma} {gb}} $

Die Skala der Entfernung wird nur durch den Dichtegradienten bestimmt. Was absolut stimmt, denn gerade aufgrund dieses Gradienten hört das Anheben des Balls im Allgemeinen irgendwo auf. Die charakteristische Zeit umfasste dynamische Werte - Beschleunigung des freien Falls, Massenverhältnisse und Luftwiderstand.

Charakteristische Höhe und Zeit des Balls

$ h ^ * = y ^ * h_0 = \ frac {1} {b} \ ln B, \\ t ^ * = \ tau ^ * t_0 = 2 \ sqrt {\ frac {\ gamma} {gb}} \ Operatorname {arth} \ left (\ sqrt {1 - \ frac {1} {B}} \ right) $

auch ausgedrückt durch die grundlegenden Parameter und den Umfang der Aufgabe.

Sehen wir uns beispielsweise an, was für die im ursprünglichen Artikel angegebenen physikalischen Parameter geschieht:

$ B = 4,57 \\ \ gamma = 686 \\ h_0 = 8000 \ m \\\ tau_0 = 12,47 \ min \\ h ^ * = 12166,6 \ m \\ t ^ * = 13,72 \ min $



Zusammenfassend Nachdem wir ein wenig auf Papier gearbeitet hatten, bevor die Aufgabe der Maschine zugeführt wurde, konnten wir ein verständlicheres, universelleres Ergebnis erzielen und die wichtigsten Eigenschaften der Lösung feststellen. Gleichzeitig haben wir die „Modularität“ der Lösung nicht verloren. Das meine ich. Wir haben die Aufgabe ganz allgemein formuliert, und nachdem wir die Lösung erhalten hatten, fingen wir an, neue „Features“ hinzuzufügen. So teilten wir beispielsweise das Konzept der Nutzlast und die Masse des Gases, das sie anhebt. Diese Komplikation beeinflusste die Skalenwerte, änderte jedoch nichts an der Art der Entscheidung.

Wenn später ein Bericht über den Temperaturgradienten hinzugefügt werden muss, wird der Ausdruck im Exponenten komplizierter, aber seine Essenz und vor allem der Maßstab werden sich nicht ändern:

$ \ exp \ left (\ frac {-bh T_0} {T_0 - ah} \ right) $

Nach der Bemaßung wird es so aussehen:

$ \ exp \ left (\ frac {-y} {1 - \ psi y} \ right), $

Wo ist der neue Parameter? $ \ psi = \ frac {a} {bT_0} $Es zeigt, wie der Dichte- und Temperaturgradient korrelieren. Da dies atmosphärische Parameter sind, die außerhalb unserer Kontrolle liegen,$ \ psi $ Ist eine Konstante gleich 0,17 $. Der Wert der Konstante zeigt übrigens die Bedeutung des Einflusses des Temperaturgradienten, er ist nicht groß, aber nicht vernachlässigbar. Die Familie der Graphen ändert sich ein wenig, aber am wichtigsten bleibt es ein Parameter.

Die Verwendung des inhärenten Maßstabs des Problems in den Berechnungen hat einen weiteren signifikanten Vorteil: Die Variablen nehmen in der Regel "moderate" Werte an, dh nahe an Eins. Dies ist sehr nützlich für Fließkomma-Berechnungen: Bei Operationen, deren Werte stark in der Größenordnung liegen, geht die Genauigkeit nicht verloren. Außerdem ist es möglich, die Rollen einzelner Effekte in einem Problem richtig zu vergleichen, indem die Werte der entsprechenden Ähnlichkeitskriterien oder die Werte von Variablen verglichen werden. Zum Beispiel der Wert$ B = 4,5 $sagt, wie oft die Kraft der Wechselwirkung mit der Atmosphäre größer ist als die Schwerkraft. Und das Quadrat der charakteristischen dimensionslosen Hubgeschwindigkeit$ (y ^ * / \ tau ^ *) ^ 2 \ sim 0,3 $ zeigt die Wichtigkeit des Luftwiderstandes bei der vertikalen Bewegung des Flugzeugs im Vergleich zum Auftrieb, der durch eine Einheit in Klammern ausgedrückt wird.

Schließlich haben Berechnungen in dimensionslosen Variablen und Parametern eine gewisse interne Konsistenz mit der Tatsache, dass Lösungen von Differentialgleichungen fast immer transzendentale Funktionen sind und nur dimensionslose Größen ihre Argumente und Ergebnisse sein können. Der Computer arbeitet auch ausschließlich mit Zahlen in dimensionslosen Mengen. Bei der statischen Typisierung können Sie prinzipiell die Dimensionen physikalischer Größen auf Typebene eingeben und das Programm während der Kompilierung auf Korrektheit prüfen. In der numerischen Destruktivphase arbeiten wir jedoch nur mit den Werten selbst. Alle mit Maßeinheiten und Abmessungen verbundenen Fehler gehen bei solchen Berechnungen verloren. Es ist vernünftig, die Aufgabe für die Berechnungen vorzubereiten, um unnötiges zu vermeiden und nur das Wesentlichste und Natürlichste für den Löser zu lassen.

Und was würde passieren, wenn wir andere Komplexe wählen oder alle Kräfte nicht auf die Schwerkraft, sondern auf Trägheit beziehen? Es wären noch zwei Parameter in der Gleichung, aber die Kurvenfamilie würde zu zwei Parametern werden und konnte nicht im selben Diagramm angezeigt werden. Ich gebe zu, zuerst passierte es mir genau, als Längenmaßstab bekam ich den Radius des Balls. Aber nachdem ich mit diesen Kurven gespielt hatte, sah ich ihre geometrische Ähnlichkeit (Sie sehen eine in allen Parabeln), und eine weitere flüchtige Analyse der resultierenden Kriterien und Gleichungen, die er selbst zu einer verborgenen Symmetrie brachte, schlug vor, wie die "kanonische Form" unserer Gleichungen aussehen sollte. Dies ist jedoch eine schöne Beschäftigung! Die Aufgabe selbst beginnt über sich selbst zu sprechen. Es ist mir ein Vergnügen, ein Typsystem und Datenstrukturen in einem Programm auf Haskell oder in C # zu erstellen:

Die Abmessungen der physikalischen Größen an sich sind sehr interessant. Sie bilden einen linearen Raum, und die Suche nach Ähnlichkeitskriterien kann auf das Problem reduziert werden, einen Kern in einem Raum mit Dimensionen zu finden, wodurch dieser Prozess formalisiert wird. Sie spielen gewissermaßen die Rolle von Typen in physikalischen Berechnungen. So wie der Compiler die statische Typisierung verwendet, um die Richtigkeit eines Programms zu überprüfen, verwendet ein Physiker Dimensionen, um seine Berechnungen und Ergebnisse zu überprüfen. Wie in einer streng typisierten reinen Funktionssprache (z. B. in Haskell) können Sie den Funktionscode von seinem Typ ableiten. Auf dieselbe Weise können Sie auf der Grundlage der Dimension physikalischer Größen dimensionslose Komplexe und charakteristische Werte in physikalischen Systemen konstruieren und äußerst nützliche und universelle Ergebnisse erzielen. Es gibt viele Beispiele in Mechanik, Gas und Thermodynamik, Quantenmechanik usw. Ich empfehle, mich kennenzulerneneine bemerkenswerte Arbeit , die eine Reihe schöner Beispiele für die Anwendung der Dimensionsanalyse auf Probleme aus dem Satz des Pythagoras, auf die Oszillationen von Sternen und die Rayleigh-Streuung am Himmel liefert. Dieses Papier zitiert die Worte von John Wheeler, dem Lehrer von Richard Feynman, der den Namen "Wheeler's Rule" erhielt:
„Beginnen Sie niemals mit einer Berechnung, bis Sie die Antwort kennen. Vorberechnung der Berechnung für jede Berechnung: Ziehen Sie einfache physikalische Überlegungen an (Symmetrie! Invarianz! Bewahrung!), Bevor Sie mit einer detaillierten Schlussfolgerung beginnen. Erwägen Sie mögliche Antworten auf jedes Rätsel. Seien Sie mutiger: Schließlich interessiert es niemanden, was Sie vorgeschlagen haben. Nehmen Sie also schnell und intuitiv Annahmen vor. Erfolgreiche Annahmen stärken diese Intuition. Irrtümliche Annahmen geben einen nützlichen Schock. “

Diese Ratschläge für Programmierer sind sehr vertraut: Schreiben Sie den Funktionscode nicht, ohne sich für die Signatur (Typ) und das Verhalten (Tests) entschieden zu haben. Bevor Sie Code schreiben, sollten Sie die Typen, Datenstrukturen und ihre Beziehungen berücksichtigen. Damit sind OOP und funktionale Programmierung stark - da diese Prinzipien nicht nur funktionieren, schlagen sie bei geschicktem Einsatz die natürlichsten und elegantesten Lösungen selbst vor, und im Falle des FP tun sie dies auf einer tiefen mathematischen Ebene, die es ermöglicht, die Eigenschaften von Programmen zu beweisen und einige aufzuladen Arbeit an der Ausgabe der Programmeigenschaften an den Compiler.

Mathematik lernen, schön programmieren und Spaß haben!

Jetzt auch beliebt: