Summen, Gleichungen lösen und Analysis
Auf dieser Seite geht es darum, eine Folge von Termen zu addieren oder zu multiplizieren, herauszufinden, wo eine Gleichung erfüllt ist, einen Ausdruck als Formel oder an einem einzelnen Punkt abzuleiten und bestimmte Integrale zu berechnen. Das hilft dir, wenn eine Aufgabe Σ- oder Π-Schreibweise verlangt, wenn sich eine Gleichung von Hand nicht leicht umstellen lässt oder wenn du eine Ableitung oder eine Fläche unter einer Kurve aus deinen Übungen überprüfen willst.
Alle diese Funktionen nehmen als eines ihrer Argumente einen Variablennamen, etwa das k in sum(k^2, k, 1, 10). Dieser Name existiert nur innerhalb des Aufrufs und ändert deshalb nie einen gleichnamigen Wert an anderer Stelle deiner Notiz.
Endliche Summen und Produkte
sum(k, k, 1, 100) ergibt 5,050sum(k^2, k, 1, 10) ergibt 385summation(2*k - 1, k, 1, 10) ergibt 100product(k, k, 1, 5) ergibt 120Die Argumente sind der Ausdruck, die Variable, der erste Wert und der letzte Wert. Beide Enden sind eingeschlossen, sum(k, k, 1, 100) addiert also 1 + 2 + … + 100. summation ist ein anderer Name für sum. Die dritte Zeile zeigt, dass die ersten zehn ungeraden Zahlen zusammen 10² ergeben, und die letzte ist 5 Fakultät.
Summen funktionieren mit Geld und Einheiten, das passt zu regelmäßigem Sparen:
# 1.200 € zu Beginn jedes Jahres eingezahlt, 5 Jahre lang, zu 5 %sum(1200 € * 1.05^k, k, 1, 5) ergibt €6,962.30Ein Produkt ist nützlich für Ketten von Wahrscheinlichkeiten. Die Wahrscheinlichkeit, dass in einer Gruppe von 23 Personen mindestens zwei am selben Tag Geburtstag haben, ist eins minus die Wahrscheinlichkeit, dass alle 23 Geburtstage verschieden sind:
p = 1 - product((365 - k)/365, k, 0, 22)(p as %) to 1 dp ergibt 50.7%Einige Details:
- Der erste und der letzte Wert müssen ganze Zahlen sein.
- Liegt der letzte Wert unter dem ersten, gibt es keine Terme: Die Summe ist 0 und das Produkt 1.
- Eine einzelne Summe oder ein einzelnes Produkt kann höchstens 10.000 Terme haben.
- Summen lassen sich verschachteln, wie in
sum(sum(j, j, 1, n), n, 1, 4), das20ergibt. Verschachtelte Aufrufe teilen sich ein gemeinsames Rechenlimit. - Um Werte zu addieren, die du schon hast, nimm stattdessen eine Liste:
sum([4, 8, 15]). Siehe Listen und Statistik.
Eine Nullstelle numerisch finden
solve findet einen Wert der Variablen, der eine Gleichung erfüllt, und sucht dabei zwischen zwei Grenzen, die du angibst:
solve(x^2 = 2, x, 0, 2) ergibt 1.4142135624solve(x^2 - 4, x, -3, 0) ergibt -2solve(cos(x) = x, x, 0, 1) ergibt 0.7390851332# Wie lange fällt ein Stein 44,1 m tief?solve(4.9*t^2 = 44.1, t, 0, 10) ergibt 3# Kerzen kosten 12 €, die Herstellung 4 € pro Stück, dazu 2.000 € Fixkostensolve(12*n = 2000 + 4*n, n, 0, 1000) ergibt 250Die Argumente sind die Gleichung, die Variable, die untere Grenze und die obere Grenze. Du kannst eine Gleichung mit = angeben oder einen Ausdruck allein, den solve als Ausdruck = 0 behandelt.
Die Grenzen wählen
solve braucht eine Stelle zwischen deinen Grenzen, an der sich umkehrt, welche Seite der Gleichung größer ist. Anders gesagt: links - rechts muss an einer Grenze positiv und an der anderen negativ sein (oder an einer Grenze genau null). Dann grenzt solve den Bereich so lange ein, bis es den Schnittpunkt findet.
Das hat einige Folgen:
- Liegen zwei Nullstellen zwischen den Grenzen, wechselt das Vorzeichen insgesamt womöglich nicht.
solve(x^2 - 4, x, -3, 3)schlägt fehl, weilx^2 - 4an beiden Enden positiv ist. Nimm Grenzen, die genau eine Nullstelle umschließen, etwa0und3. - Eine Nullstelle, an der die Kurve null nur berührt, wie bei
x^2 = 0, lässt sich so nicht finden, weil das Vorzeichen nie wechselt. - Der Ausdruck muss im gesamten Bereich definiert sein.
solve(sqrt(x) = 2, x, -1, 10)schlägt fehl, weilsqrteiner negativen Zahl ein Fehler ist. Beginne den Bereich stattdessen bei0. - Ein Sprung über null, wie bei
1/xnahe0, ist keine Nullstelle, deshalb liefertsolvedort einen Fehler statt eines Ergebnisses. - Die untere Grenze muss kleiner als die obere sein, und beide müssen reine Zahlen sein.
solve gibt eine einzige Nullstelle zurück, nie eine Liste aller Nullstellen. Es funktioniert nur mit reinen Zahlen, lass Einheiten also aus der Gleichung heraus.
Runden und weiterverwenden
Das Ergebnis ist eine gute numerische Näherung und kann in der letzten angezeigten Stelle abweichen. Hänge in derselben Zeile to 4 dp (oder eine beliebige Stellenzahl) an, um eine glatte Zahl zu erhalten, oder gib dem Ergebnis zuerst einen Namen, wenn du es weiterverwenden willst:
solve(sqrt(x) = 2, x, 0, 10) ergibt 4.0000000001solve(sqrt(x) = 2, x, 0, 10) to 4 dp ergibt 4Seite = solve(sqrt(x) = 2, x, 0, 10) ergibt 4.0000000001Seite * 3 to 2 dp ergibt 12Du kannst solve in eine eigene Funktion packen, um es mit verschiedenen Werten wiederzuverwenden:
Wurzel(y) = solve(x^2 = y, x, 0, 10)Wurzel(9) ergibt 3Für mehrere lineare Gleichungen mit mehreren Unbekannten nimm solve_system aus Vektoren und Matrizen.
Symbolisches Ableiten
Mit zwei Argumenten liefert differentiate (oder derivative) die Ableitung als Formel:
differentiate(sin(x), x) ergibt cos(x)derivative(x^3, x) ergibt (3*(x^(3-1)))derivative(x * sin(x), x) ergibt (sin(x)+(x*cos(x)))derivative(exp(2*x), x) ergibt (exp((2*x))*2)Das Ergebnis wird nicht vereinfacht, und jeder Schritt steht in Klammern: (3*(x^(3-1))) ist 3x². Dezimalzahlen in deinem Ausdruck kommen als Brüche zurück, 19.6 erscheint also als (98/5).
Das Ergebnis ist Text, nichts, womit Varlig weiterrechnen kann. Um es zu verwenden, tipp die Formel in eine eigene Funktion:
Steigung(x) = 3*x^2Steigung(2) ergibt 12Was symbolisches Ableiten beherrscht:
+,-,*,/und Potenzen, mit Summen-, Produkt-, Quotienten-, Potenz- und Kettenregel- die Funktionen
sin,cos,tan,sinh,cosh,exp,lnundsqrt - andere Namen, die als Konstanten behandelt werden und im Ergebnis als Namen stehen bleiben
Ein Name braucht in deiner Notiz keinen Wert, du kannst also eine Formel mit Symbolen ableiten:
derivative(a*x^2, x) ergibt (a*(2*(x^(2-1))))Andere Funktionen, etwa abs, log oder eine selbst definierte Funktion, führen zu einem Fehler. Für sie nimm die numerische Form weiter unten. Die Formel übernimmt auch nicht die Einschränkungen des ursprünglichen Ausdrucks: Die Ableitung von sqrt(x) gilt nur dort, wo sqrt(x) definiert ist, auch wenn (1/(2*sqrt(x))) wie eine eigenständige Formel aussieht.
Numerisches Ableiten
Mit einem dritten Argument liefert derivative die Steigung an diesem Punkt als Zahl:
derivative(x^3, x, 2) ergibt 12differentiate(sin(x), x, 0) ergibt 1derivative(sqrt(x), x, 4) ergibt 0.25Höhe(t) = 20*t - 4.9*t^2derivative(Höhe(t), t, 1) ergibt 10.2Diese Form funktioniert mit Funktionen, die du in der Notiz definiert hast, wie Höhe oben, was die symbolische Form nicht kann. Weil sie eine Zahl berechnet, braucht jeder andere Name im Ausdruck einen Wert. Dasselbe gilt für sum, product, solve und integrate:
derivative(a*x^2, x, 2) ergibt Unsupported: Unknown name: aa = 3derivative(a*x^2, x, 2) ergibt 12Das Ergebnis ist eine Schätzung aus nahe gelegenen Werten links und rechts des Punkts. Ist die tatsächliche Steigung eine glatte Zahl, speichert Varlig genau diese Zahl, ein exakter Vergleich funktioniert also. Irrationale Steigungen, etwa die Steigung von exp(x), behalten alle ihre Stellen, vergleiche diese also mit einer Toleranz:
derivative(x^3, x, 2) == 12 ergibt trueabs(derivative(exp(x), x, 1) - e) < 1e-6 ergibt trueDer Ausdruck muss in der Umgebung des Punkts glatt sein, ohne Knicke oder Lücken. derivative(abs(x), x, 0) ist ein Fehler, weil abs bei null einen Knick hat, und derivative(sqrt(x), x, 0) ist ein Fehler, weil sqrt links von null nicht definiert ist.
Bestimmte Integrale
integrate(x^2, x, 0, 3) ergibt 9integrate(sin(x), x, 0, pi) ergibt 2integrate(x^2, x, 3, 0) ergibt -9integrate(4/(1 + x^2), x, 0, 1) ergibt 3.1415926536# Fallstrecke in 3 s: die Geschwindigkeit 9,8t m/s integrierenintegrate(9.8*t, t, 0, 3) ergibt 44.1Die Argumente sind der Ausdruck, die Variable, die untere Grenze und die obere Grenze, in derselben Reihenfolge wie bei sum. Das Ergebnis ist die vorzeichenbehaftete Fläche unter der Kurve zwischen den Grenzen. Vertauschte Grenzen kehren das Vorzeichen um, gleiche Grenzen ergeben null. Du kannst Funktionen integrieren, die in deiner Notiz definiert sind, etwa integrate(Leistung(t), t, 0, 4).
integrate rechnet numerisch, deshalb ist einiges außer Reichweite:
- Unbestimmte Integrale gibt es nicht: Du erhältst immer eine Zahl, nie eine Formel.
- Beide Grenzen müssen endliche Zahlen sein; bis ins Unendliche integrieren geht nicht.
- Der Ausdruck muss im gesamten Bereich definiert sein.
integrate(1/sqrt(x), x, 0, 1)ist ein Fehler, weil1/sqrt(0)durch null teilt, obwohl die Fläche selbst endlich ist. - Ausdrücke mit Sprüngen, Spitzen oder sehr schnellen Schwingungen können ungenaue Ergebnisse oder einen Fehler liefern.
- Einheiten werden nicht akzeptiert, schreib sie also in einen Kommentar, wie im letzten Beispiel.
Algorithmen und Konvergenz
Für den Alltag brauchst du diese Details nicht, aber sie helfen, wenn ein Ergebnis falsch aussieht oder eine Zeile einen Fehler meldet.
solve verwendet das Bisektionsverfahren: Es halbiert den Bereich immer wieder und behält die Hälfte, in der das Vorzeichen wechselt. Es hört auf, wenn der Wert von links - rechts weniger als 10⁻¹⁰ von null entfernt und der Bereich schmal genug ist, und gibt nach 128 Halbierungen mit einem Fehler auf.
Symbolisches derivative wendet die Standardregeln Schritt für Schritt an, ohne zu vereinfachen. Das Ergebnis darf höchstens 8.192 Zeichen lang sein. Ein vollständiges Computeralgebrasystem ist das nicht.
Numerisches derivative vergleicht zentrale Differenzen über immer kleinere Schritte und prüft die Steigung von jeder Seite getrennt. Stimmen diese nicht überein oder ist ein Wert nahe dem Punkt nicht definiert, erhältst du einen Fehler statt einer Schätzung.
integrate verwendet adaptive Gauß-Kronrod-Regeln mit 7 und 15 Punkten. Es vergleicht die beiden Schätzungen auf jedem Teilstück des Bereichs und teilt das Stück mit dem größten geschätzten Fehler, bis der geschätzte Gesamtfehler unter 10⁻⁹ × max(1, |Ergebnis|) liegt. Es erlaubt bis zu 2.048 Teilungen, 20 Teilungsebenen und ein gemeinsames Budget von 100.000 Schritten. Die Stützstellen sind nicht gleichmäßig verteilt, deshalb ergibt eine schnelle Schwingung wie cos(128*pi*x) von 0 bis 1 korrekt ungefähr null, statt für eine Konstante gehalten zu werden. Die Fehlerschätzung bleibt trotzdem eine Heuristik, geh mit Ergebnissen für Ausdrücke mit Singularitäten oder Unstetigkeiten also vorsichtig um.
Die vollständigen Regeln stehen in der Referenz Höhere Mathematik: Möglichkeiten und Grenzen.
Alles zusammen
Hier ist die Kontrolle einer Physik-Hausaufgabe: ein Ball, der mit 19,6 m/s senkrecht nach oben geworfen wird, mit einer Erdbeschleunigung von 9,8 m/s²:
# Höhe in Metern nach t SekundenHöhe(t) = 19.6*t - 4.9*t^2Geschwindigkeit(t) = 19.6 - 9.8*t# Landet, wenn die Höhe wieder null ist (t = 0 überspringen)Landung = solve(Höhe(t) = 0, t, 1, 10) ergibt 4# Geschwindigkeit nach 1 Sekunde, aus der Steigung der Höhederivative(Höhe(t), t, 1) ergibt 9.8# Höchster Punkt, an dem die Geschwindigkeit null istScheitel = solve(Geschwindigkeit(t) = 0, t, 0, Landung) ergibt 2Höhe(Scheitel) ergibt 19.6# Kontrolle: Die Geschwindigkeit bis zum Scheitel integriert ergibt dieselbe Höheintegrate(Geschwindigkeit(t), t, 0, Scheitel) ergibt 19.6Der Ball landet nach 4 Sekunden und erreicht nach 2 Sekunden 19,6 m. Die untere Grenze 1 in der Zeile Landung hält solve von der anderen Nullstelle bei t = 0 fern. Die letzte Zeile bestätigt die Höhe auf einem zweiten Weg, indem sie die Geschwindigkeit integriert.