Quadratische Gleichung
Löst Gleichungen der Form ax² + bx + c = 0 und zeigt den Rechenweg mit der Lösungsformel dazu.
Quadratische Gleichungen der Form ax² + bx + c = 0 lassen sich mit diesem Script von Valentin Hammer lösen. Ihr tragt die drei Zahlen ein, die in eurer Gleichung vor x², vor x und alleine stehen — den Rest erledigt die Lösungsformel. Praktisch für Hausaufgaben, zum Nachrechnen oder einfach, um ein Gefühl dafür zu bekommen, wie sich die Lösungen ändern, wenn man an einem Wert dreht.
Die Bedienung ist schnell erklärt: Ins Feld „x²" kommt der Faktor a, ins Feld „x" der Faktor b und ins Feld „Zahl" das absolute Glied c. Ein Klick auf „Gleichung berechnen" zeigt darunter zuerst die eingesetzte Formel — also den Rechenweg — und darunter die beiden Lösungen. Vorbelegt ist das Beispiel x² − 3x + 2 = 0 mit den Lösungen 2 und 1. Nachkommastellen dürft ihr mit Komma oder Punkt schreiben, negative Werte einfach mit Minuszeichen davor.
Gerechnet wird mit der großen Lösungsformel (oft „Mitternachtsformel" genannt): x = (−b ± √(b² − 4ac)) / 2a. Der Ausdruck unter der Wurzel heißt Diskriminante und entscheidet über die Anzahl der Lösungen — ist er positiv, gibt es zwei; ist er genau 0, fallen beide Lösungen zusammen; ist er negativ, existiert keine reelle Lösung, weil sich aus negativen Zahlen keine Wurzel ziehen lässt. Genau diesen Fall meldet das Script gesondert, statt einfach NaN auszugeben. Und weil eine Gleichung ohne x² gar nicht quadratisch ist, weist es auch a = 0 freundlich zurück.
Wer lieber mit der Normalform x² + px + q = 0 arbeitet, findet bei uns auch ein Script zur pq-Formel. Verwandte Rechner in derselben Kategorie sind das Wurzelziehen und das Quadrieren einer Zahl.
Gerechnet wird die Gleichung a·x² + b·x + c = 0.
So funktioniert das Script
Das Script hat drei Aufgaben: die drei Eingabefelder als Zahlen einlesen, prüfen ob damit überhaupt gerechnet werden kann, und die Lösungsformel anwenden. Der gesamte Code steckt in einer sofort ausgeführten Funktion — so bleiben die Variablennamen im Inneren und stören keine anderen Scripts auf derselben Seite.
function zahl(id) {
const roh = document.getElementById(id).value.trim().replace(",", ".");
if (roh === "") return 0;
return parseFloat(roh);
}
Die Hilfsfunktion zahl() holt ein Feld über seine id, entfernt mit trim() versehentliche Leerzeichen und tauscht ein deutsches Dezimalkomma gegen einen Punkt — JavaScript versteht nur die englische Schreibweise. Ein leeres Feld wird als 0 gewertet, so wie im Original; alles andere macht parseFloat() zu einer Kommazahl.
if (a === 0) {
ausgabe.textContent = "Mit a = 0 ist das keine quadratische Gleichung …";
return;
}
Diese Abfrage fängt den Sonderfall ab, dass vor dem x² eine 0 steht: Dann stünde in der Lösungsformel eine Division durch null, und heraus käme Infinity oder NaN („Not a Number"). Ein return beendet die Funktion sofort, sodass gar nicht erst weitergerechnet wird.
const diskriminante = b * b - 4 * a * c;
Die Diskriminante ist der Ausdruck unter der Wurzel, also b² − 4ac. Sie ist der interessanteste Wert der ganzen Rechnung, denn sie verrät schon vor dem Wurzelziehen, wie viele Lösungen es gibt: zwei bei einem positiven Wert, eine einzige (doppelte) bei genau 0 und keine reelle bei einem negativen Wert. Deshalb wird sie einmal berechnet und dann mehrfach verwendet.
if (diskriminante < 0) {
ausgabe.innerHTML = formel + "<br><br>Die Diskriminante ist " + diskriminante +
" und damit negativ: Diese Gleichung hat keine reelle Lösung.";
return;
}
Aus einer negativen Zahl lässt sich keine reelle Wurzel ziehen — Math.sqrt(-4) liefert NaN. Statt diesen kryptischen Wert anzuzeigen, gibt das Script hier einen verständlichen Satz aus und zeigt trotzdem den Rechenweg, damit ihr seht, wo die Rechnung hängengeblieben ist.
const additionsloesung = (-b + Math.sqrt(diskriminante)) / (a * 2);
const subtraktionsloesung = (-b - Math.sqrt(diskriminante)) / (a * 2);
Das ist die Lösungsformel, einmal mit Plus und einmal mit Minus vor der Wurzel — genau das meint das ± in der Schulformel. Math.sqrt() zieht die Quadratwurzel, geteilt wird durch 2a. Beim vorbelegten Beispiel x² − 3x + 2 = 0 ergibt das die Lösungen 2 und 1.
const formel = "<strong>Formel:</strong> <sup>" + (-b) + " ± √(" + klammer(b) +
"² - 4·" + klammer(a) + "·" + klammer(c) + ")</sup> / <sub>2·" + klammer(a) + "</sub>";
Hier wird der Rechenweg als HTML zusammengebaut. Die kleine Hilfsfunktion klammer() setzt negative Zahlen in runde Klammern, damit aus b = −3 kein missverständliches -3² wird, und (-b) sorgt dafür, dass vorne im Zähler das richtige Vorzeichen steht statt eines doppelten Minus. Zur Darstellung: <sup> stellt den Zähler hoch, <sub> den Nenner tief, sodass die Formel wie ein Bruch aussieht. ±, √ und ² sind HTML-Zeichennamen für ±, √ und ². Weil hier Tags mitgeliefert werden, muss die Ausgabe mit innerHTML gesetzt werden statt mit textContent.
Zum Anpassen: Wollt ihr die Lösungen gerundet sehen, hängt einfach .toFixed(2) an additionsloesung und subtraktionsloesung an. Die Beschriftungen und Meldungstexte stehen als gewöhnliche Zeichenketten im Code und lassen sich gefahrlos umschreiben.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser