← RU Pythoncursus

ABC-formule

De ABC-formule kennen jullie natuurlijk allemaal; hiermee kan je eenvoudig de oplossingen van een kwadratische vergelijking vinden. We gaan er voor deze opdracht even vanuit dat de discriminant altijd positief is ($D > 0$), omdat we nog niet geleerd hebben hoe we gevallen kunnen onderscheiden.

Mocht je het inmiddels vergeten zijn, hier nog even de formules. Voor een vergelijking van de vorm $ax^2 + bx + c = 0$ geldt dat $D = b^2 - 4ac$ en $x = \dfrac{-b \pm \sqrt{D}}{2a}$.

Neem nu de vergelijking $3x^2 + 3x - 5 = 0$. We gaan een paar regels Pythoncode schrijven om de oplossingen te vinden. Misschien zie je nu de oplossing al, of kan je het veel sneller op papier oplossen. Als je echter meerdere vergelijkingen wil oplossen is het een stuk makkelijker om je programmaatje aan te passen dan je berekening helemaal opnieuw uit te voeren.

  1. Sla de waarden van de vergelijking op in een paar Python-variabelen. Zorg ervoor dat je de variabelen goede namen geeft, zodat het overzichtelijk blijft. In dit geval zijn de namen letters (a, b, c, etc.), maar over het algemeen wil je variabelenamen meer beschrijvend maken (price, time, image, etc.).

  2. Maak nu een stukje Pythoncode om de oplossing van de vergelijking uit te rekenen met de ABC-formule. Het is handig om dit in twee stappen te doen, zoals je in de formule gewend bent: reken eerst $D$ uit, en daarna de beide oplossingen voor $x_0$ en $x_1$. Zorg ervoor dat je programma de oplossingen op het scherm toont.

Tip: Voor het uitrekenen van de wortel kun je een ingebouwde functie in Python gebruiken: sqrt(a). Zet hiervoor aan het begin van je programma from math import sqrt. Zie ook de sectie Toelichting: Imports onderaan deze pagina.

Nog een paar vergelijkingen

Eén vergelijking kon je natuurlijk ook wel op papier, maar wat nu als je de volgende vergelijkingen allemaal wilt oplossen?

$$x^2 + 7x - 18 = 0$$ $$x^2 + 6.28318x - 9.86959 = 0$$ $$3x^2 - 12x = 0$$ $$2x^2 - 37x + 1 = 0$$

  1. Pas je programma zo aan dat het de antwoorden van de bovenstaande vergelijkingen na elkaar print. Denk eraan dat, wanneer je variabelenamen hergebruikt, je de oude waarde overschrijft. Dit kan je op allerlei manieren voorkomen of oplossen. Kies zelf een oplossing die je het meest geschikt lijkt.
  2. Kijk ook eens wat er gebeurt wanneer je de onderstaande vergelijking probeert op te lossen. Kan je verklaren waarom dit gebeurt?

$$ x^2 + 5x + 7 = 0 $$

Toelichting: imports

Je ziet bij deze opdracht en bij de opdrachten van CS circles dat niet alle functies die je misschien nodig hebt standaard toegankelijk zijn. Die moeten eerst worden geimporteerd uit zogenaamde modules. In dit geval is dat de math module waar we de sqrt functie uit halen met from math import sqrt. Dit helpt om Python breed toepasbaar te houden, wiskundigen hebben vaak functies als sqrt, sin, cos en gcd (zie de volgende opgave) nodig, maar iemand die met Python fotos wil analyzeren heeft hele andere functies nodig. Door alles wat niet essentieel is voor de programmeertaal zelf, zoals + en -, in modules onder te brengen kan iedereen gebruiken wat voor hem of haar nodig is.