I denne oppgaven skal du bruke Python til å utforske likningsløsning med abc-formelen. Vi skal gjøre dette trinnvis. Vi skal lage et program der en bruker kan skrive inn likningen og få ut løsningene.
a) Python kommer ikke til å forstå tegnet ±. Hvordan kan vi dele abc-formelen i to deler som Python kan tolke?
Løsning
Når vi deler opp formelen i to deler, kan den skrives som
x1=-b+b2-4ac2a∨x2=-b-b2-4ac2a
b) Hvordan kan brukeren av programmet skrive inn andregradslikningen som skal løses?
Løsning
Vi må gå ut ifra at brukeren har en andregradslikning på formen ax2+bx+c=0, som ovenfor. Da trenger vi bare konstantene a, b og c fra brukeren.
c) Skriv algoritmen til et program som løser andregradslikninger for oss. Programmet skal ta imot den informasjonen som trengs om likningen, fra brukeren av programmet. Løsningene kan presenteres med utskriften "x1 = ... , x2 = ...". Husk å få med forklarende tekster i starten av programmet slik at brukeren av programmet vet hva som skal gjøres.
Løsningsforslag
Importer kvadratrotfunksjonen.
Skriv til skjermen "Dette programmet løser andregradslikningen ax^2 + bx + c = 0.".
Ta imot tallet "a" fra brukeren, konverter det til et ekte tall, og sett det lik variabelen a.
Ta imot tallet fra "b" fra brukeren, konverter det til et ekte tall, og sett det lik variabelen b.
Ta imot tallet "c" fra brukeren, konverter det til et ekte tall, og sett det lik variabelen c.
Regn ut x1 med formelen ovenfor, og sett resultatet lik variabelen x1.
Regn ut x2 med formelen ovenfor, og sett resultatet lik variabelen x2.
Skriv til skjermen "Løsningene er x1 = og x2 = .".
I siste linje betyr "" innholdet av variabelen x1.
d) Skriv programmet og test det med likningenx2+4x-5=0. Gir programmet riktige løsninger?
Løsning
Programmet gir utskriften "Løsningene er x1 = 1.0 og x2 = -5.0).". Dette er riktige løsninger.
e) Prøv programmet på likningen x2-6x+9=0. Hvorfor passer ikke utskriften av løsningen så godt til denne likningen?
Løsning
Her gir programmet utskriften "Løsningene er x1 = 3.0 og x2 = 3.0.". Dette er et fullstendig kvadrat, så dermed blir begge løsningene like. Programmet vil alltid regne ut to løsninger, uavhengig av om løsningene er like eller ikke.
f) Prøv programmet på likningen x2-6x+10=0. Hva skjer nå, og hvorfor skjer dette?
Løsning
Her får vi en feilmelding, "math domain error". Det betyr at det ikke går an å regne ut. Sjekk diskriminanten (uttrykket under rottegnet)!
g) Endre på algoritmen i c) slik at programmet gir en utskrift tilpasset alle de ulike tilfellene av andregradslikninger vi kan komme borti.
Løsning
Her må vi legge inn en if-else-setning, som finner to løsninger dersom diskriminanten er større enn 0, og én løsning dersom diskriminanten er lik 0. If-else-setningen vil også skrive ut at likningen ikke har reelle løsninger dersom diskriminanten er negativ. Vi legger det inn mellom innhenting av konstantene og utregningen.
h) Skriv programmet fra g) og test det på ulike likninger.
Løsning
Oppgave 3
Løs likningene ved å bruke abc-formelen.
a) 3x2-3x-6=0
Løsning
Her er det lurt å dividere alle ledd med 3 før vi setter inn i abc-formelen.
Ronald har prøvd seg på likningsløsning med abc-formelen, men han strever med å få dette til. Han føler at han er nesten i mål, men har en følelse av at han alltid gjør minst én feil. Kan du hjelpe ham med å finne feilene i løsningene hans?
Her har Ronald bommet når han har ordnet likninen. Det er ikke rekkefølgen på leddene som avgjør hvilke tall som er a, b og c. Han burde heller ha tenkt på hvilke tall som er koeffisient til andregradsleddet og koeffisient til førstegradsleddet, og hvilket tall som er konstantleddet. Han burde ha ordnet likningen slik i stedet:
x2+3=4xx2-4x+3=0
Da kunne han ha funnet løsningene:
x=--4±-42-4·1·32=4±16-122=4±22x=4+22=3∨x=4-22=1
c)
x2+2x-3=0x=-2±22-4·1·32x=-2±4-122
Likningen har ingen reelle løsninger.
Løsning
Her har Ronald oversett at konstantleddet er negativt. Han har satt c=3, mens det egentlig skal være c=-3. Da ville løsningen ha blitt slik:
a) Grunnflata til et hus er et rektangel med bredde x meter og lengde (x+4) meter. Arealet er 96 m2. Sett opp en andregradslikning og regn ut hvor langt og hvor bredt huset er.
b) Grunnflata til et hus er et rektangel med bredde (x-5) meter og lengde x meter. Arealet er 126 m2. Sett opp en andregradslikning og regn ut hvor langt og hvor bredt huset er.
c) Grunnflata til en garasje er et rektangel med bredde x meter og lengde (x+2) meter. Diagonalen i grunnflata er 10 meter. Sett opp en andregradslikning og regn ut hvor lang og hvor bred garasjen er.
Løsning
Her må vi bruke pytagorassetningen for å sette opp likningen.
x2+x+22=102x2+x2+4x+4-100=02x2+4x-96=0
Her er det lurt å dividere alle ledd med 2 for å få lettere tall å sette inn iabc-formelen.