Beschouw de kubische vergelijking
$$ax^3+bx^2+cx+d=0$$
in de reële veranderlijke $$x$$ en met reële coëfficiënten.
Deze vergelijking heeft steeds een reële oplossing (waarom ?). Cardano vond
een methode om in een belangrijk aantal gevallen deze reële oplossing van deze
vergelijking te vinden (een veralgemening werd later ontdekt).
Delen we door $$a$$ en substitueren we
$$x=t-\frac{b}{3a}$$
dan komen we een vergelijking van de vorm
$$t^3+pt+q=0$$
met
$$p =\frac{3ac-b^2}{3a^2}$$
$$q =\frac{2b^3-9abc+27a^2d}{27a^3}$$
Indien
$$\frac{q^2}{4}+\frac{p^3}{27}>0$$
kan een reële oplossing $$t_0$$voor $$t$$ gevonden worden uit
$$u^3 = -\frac{q}{2}+\sqrt{\frac{q^2}{4}+\frac{p^3}{27}}$$
$$v^3 = -\frac{q}{2}-\sqrt{\frac{q^2}{4}+\frac{p^3}{27}}$$
$$t_0 = u + v$$
Schrijf een functie $$cardano()$$ met vier reële argumenten, namelijk
de coëfficiënten van de kubische vergelijking $$a, b, c. d$$ (in deze
volgorde). Indien $$\frac{q^2}{4}+\frac{p^3}{27} > 0$$, dan levert de functie
de gezochte reële oplossing. In het ander geval geef je de waarde
$$0.0$$ terug.
Vier reële getallen, namelijk de coëfficiënten $$a, b, c, d$$, waarbij $$a$$ verschillend is van 0.
De reële oplossing van de vergelijking, of 0.0 indien het algoritme geen reële oplossing kan vinden.
cardano(1.0, -1, 1, -1) = 1.0 cardano(1, -3, 14, -24) = 2.0 cardano(1, 2, 3, 4) = -1.6506291914393882 cardano(3, 100, 3, -20) = 0.0