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