Den generelle andregradslikninga kan skrivast på forma
Den generelle måten å løyse andregradslikningar på ved rekning for hand er å bruke abc-formelen (andregradsformelen), der vi puttar inn konstantane og frå likninga:
a) Spørsmål
Forklar kvifor abc-formelen eigentleg er to formlar.
Løysing
abc-formelen er to formlar på grunn av pluss/minus-teiknet. Når vi deler opp abc-formelen i to delar, kan han skrivast som
b) Spørsmål
Korleis kan brukaren av programmet skrive inn den andregradslikninga som skal løysast?
Løysingsforslag
Vi må gå ut ifrå at brukaren har ei andregradslikning på forma som ovanfor. Då treng vi berre konstantane og frå brukaren.
c) Algoritme
Skriv algoritmen til eit program som løyser andregradslikningar for oss. Programmet skal ta imot den informasjonen som trengst om likninga frå brukaren av programmet. Løysingane kan presenterast med utskrifta "x1 = ... , x2 = ...". Hugs å få med forklarande tekstar i starten av programmet slik at brukaren av programmet veit kva som skal gjerast.
Løysingsforslag
Skriv til skjermen "Dette programmet løyser andregradslikninga ax^2 + bx + c = 0.".
Skriv til skjermen "Skriv inn konstanten a:".
Ta imot talet frå brukaren, konverter det til eit ekte tal, og set det lik variabelen a.
Skriv til skjermen "Skriv inn konstanten b:".
Ta imot talet frå brukaren, konverter det til eit ekte tal, og set det lik variabelen b.
Skriv til skjermen "Skriv inn konstanten c:".
Ta imot talet frå brukaren, konverter det til eit ekte tal, og set det lik variabelen c.
Rekn ut med formelen ovanfor, og set resultatet lik variabelen x1.
Rekn ut med formelen ovanfor, og set resultatet lik variabelen x2.
Skriv til skjermen "Løysingane er x1 = <x1> og x2 = <x2>.".
I siste linje betyr "<x1>" innhaldet av variabelen x1.
d) Koding
Lag eit program etter algoritmen i oppgåve c). Test programmet med likninga . Gir programmet riktige løysingar?
Løysing
Forslag til kode skriven i Python:
Løysing av andregradslikning
1import numpy as np
23print("Dette programmet løyser andregradslikninga ax^2 + bx + c = 0.")4a =float(input("Skriv inn konstanten a: "))5b =float(input("Skriv inn konstanten b: "))6c =float(input("Skriv inn konstanten c: "))78x1 =(-b + np.sqrt(b**2-4*a*c))/(2*a)9x2 =(-b - np.sqrt(b**2-4*a*c))/(2*a)1011print(f"Løysingane er x1 = {x1} og x2 = {x2}.")
e) Diskusjon
Fungerer programmet på alle andregradslikningar?
f) Testing
Prøv programmet på likninga . Kvifor passar ikkje utskrifta av løysinga så godt til denne likninga?
g) Testing
Prøv deretter programmet på likninga . Kva skjer no, og kvifor skjer dette?
h) Algoritme
Endre på algoritmen i oppgåve c) slik at programmet gir utskrift tilpassa dei ulike tilfella av andregradslikningar vi kan kome borti.
Tips til oppgåva
Her må du leggje inn nokre testar. Kva er det som avgjer kor mange løysingar ei andregradslikning har? Kva må du teste på?
i) Koding
Lag programmet etter denne algoritmen, og sjekk at det fungerer.