from js import document
import math
def extract_abc(expr):
expr = expr.replace(" ", "")
expr = expr.replace("-", "+-")
if expr.startswith("+"):
expr = expr[1:]
terms = expr.split("+")
a = 0
b = 0
c = 0
for term in terms:
if term == "":
continue
if "x^2" in term:
coef = term.replace("x^2", "")
if coef in ["", "+"]:
coef = "1"
elif coef == "-":
coef = "-1"
a = int(coef)
elif "x" in term:
coef = term.replace("x", "")
if coef in ["", "+"]:
coef = "1"
elif coef == "-":
coef = "-1"
b = int(coef)
else:
c = int(term)
return a, b, c
def bereken(event=None):
expr = document.querySelector("#formula_input").value
if expr.strip() == "":
document.querySelector("#abc-output").innerHTML = "Vul een formule in."
return
try:
a, b, c = extract_abc(expr)
except:
document.querySelector("#abc-output").innerHTML = "Ongeldige formule."
return
D = b*b - 4*a*c
if D < 0:
document.querySelector("#abc-output").innerHTML = (
f"Discriminant: Δ = {D}
"
"De vergelijking heeft geen reële oplossingen."
)
return
sqrtD = math.sqrt(D)
x1 = (-b + sqrtD) / (2*a)
x2 = (-b - sqrtD) / (2*a)
# exacte wortelvorm als tekst
exact_x1 = f"(-{b} + √{D}) / {2*a}"
exact_x2 = f"(-{b} - √{D}) / {2*a}"
output = f"""
Stap 1: Coëfficiënten
a = {a}, b = {b}, c = {c}
Stap 2: Discriminant
Δ = {b}² - 4·{a}·{c} = {D}
Stap 3: Wortel van de discriminant
√Δ = √{D} = {sqrtD:.4f}
Stap 4: Oplossingen
x₁ = {x1:.4f}
Exact: {exact_x1}
x₂ = {x2:.4f}
Exact: {exact_x2}
"""
document.querySelector("#abc-output").innerHTML = output