ich habe eine Programmieraufgabe bekommen in der ich quadratische Gleichungen lösen soll, es funktioniert auch alles.
Aufgabe:
Das Programm soll eine quadratische Gleichung der Form
ax**2+bx+c=0 lösen können. Der Nutzer gibt hierfür die
Zahlen a, b, c ein. Das Programm prüft die Diskriminante, also
b**2−4ac , ob diese positiv, null oder negativ ist und gibt dann
aus wie viele Lösungen es gibt und ggf. deren Werte.
Verwendet habe ich folgende Formel aus meinem Tafelwerk:
https://www.file-upload.net/download-14 ... 2.jpg.html
Mein Programm:
Code: Alles auswählen
import math
a = float(input("a: "))
b = float(input("b: "))
c = float(input("c: "))
diskriminante = b**2 - 4 * a * c
if diskriminante < 0:
print("Keine Lösung")
elif diskriminante == 0:
x = -(b/(2*a)) + math.sqrt((b**2-4*a*c)/(4*a**2))
print("x:", round(x, 3))
else:
x1 = -(b/(2*a)) + math.sqrt((b**2-4*a*c)/(4*a**2))
x2 = -(b/(2*a)) - math.sqrt((b**2-4*a*c)/(4*a**2))
print("x1:", round(x1, 3))
print("x2:", round(x2, 3))
a = 2
b = -16
c = 32
erhalte ich das Ergebnis 4, was richtig ist.
Trage ich aber an Stelle der Variablen die Werte in die Formel:
Code: Alles auswählen
-(-16/(2*2)) + math.sqrt((-16**2-4*2*32)/(4*2**2))
Code: Alles auswählen
ValueError: math domain error
Mein Frage ist jetzt, warum funktioniert die Berechnung mit Variablen, aber nicht mit den eingegeben Werten?
Eigentlich müsste die Rechnung in beiden Fällen einen Fehler verursachen?
Zusammenfassung:
Code: Alles auswählen
a = 2
b = -16
c = 32
-(b/(2*a)) + math.sqrt((b**2-4*a*c)/(4*a**2))
Code: Alles auswählen
-(-16/(2*2)) + math.sqrt((-16**2-4*2*32)/(4*2**2))
Ich hoffe mir kann jemand erklären, warum das mit Variablen funktioniert und mit eingesetzten Werten nicht?