Halveringsmetoden – forklart steg for steg
Halveringsmetoden er en algoritme som finner et nullpunkt med så mange desimaler du vil. Her lærer du ideen, de tre stegene og hvordan programmet virker.
Dette er leksjon 8.3 Halveringsmetoden i Sophus. I kurset har den video og øving. Den er med når du har tilgang til faget, men leksjon 1.1 er gratis. Se leksjonen
Ideen
f(x) = x³ + x − 3 har f(1) = −1 og f(2) = 7. Fortegnet skifter, så grafen krysser x-aksen et sted mellom 1 og 2. Del intervallet på midten. Nullpunktet ligger i den halvdelen der fortegnet skifter. Den beholder du, og gjentar.
1³ + 1 − 3 = −1
2³ + 2 − 3 = 7
Metoden
- Sjekk at f har ulikt fortegn i a og b.
- Regn ut midtpunktet m = a + b delt på 2.
- Skifter fortegnet mellom a og m, flytter du b til m. Ellers flytter du a til m. Gjenta til intervallet er lite nok.
Første steg for hånd
Midtpunktet er 1,5, og f(1,5) er positiv. Fortegnet skifter mellom 1 og 1,5, så b flyttes til 1,5.
1,5³ + 1,5 − 3 = 1,875
Eksempler
Eksempel 1: nullpunktet til x³ + x − 3
Programmet finner en løsning av x³ + x − 3 = 0 mellom 1 og 2. Hva skriver det ut?
def f(x):
return x**3 + x - 3
a = 1
b = 2
while b - a > 0.001:
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
print(round((a + b) / 2, 3))
1,213³ + 1,213 − 3 ≈ 0,00
Svar: Programmet skriver ut 1.213.
Sett svaret inn for å sjekke: Det gir nesten 0. Vil du ha flere desimaler, gjør du grensen i while-linjen mindre.
Eksempel 2: kvadratroten av 2
Programmet er det samme, men med f(x) = x² − 2, a = 1 og b = 2. Hva skriver det ut, og hvorfor?
def f(x):
return x**2 - 2
a = 1
b = 2
while b - a > 0.001:
m = (a + b) / 2
if f(a) * f(m) <= 0:
b = m
else:
a = m
print(round((a + b) / 2, 3))
1² − 2 = −1
2² − 2 = 2
√2 ≈ 1,4142
Svar: Programmet skriver ut 1.415. Nullpunktet til x² − 2 er √2 ≈ 1,4142, og programmet stopper når intervallet er kortere enn 0,001.
Øv selv: 14 oppgaver i algoritmer i Python med fasit og løsning steg for steg.
Vanlige feil
- Å bruke metoden selv om funksjonen ikke skifter fortegn i intervallet. Da vet du ikke at det finnes et nullpunkt der.
- Å flytte feil ende av intervallet. Skifter fortegnet mellom a og m, er det b som flyttes.
- Å tro at metoden gir det eksakte svaret. Den gir en tilnærming med så mange desimaler som grensen tillater.
På eksamen
Halveringsmetoden kommer på del 2, ofte som et program du skal forklare eller endre. Skriv de første stegene i en tabell med a, b, m og fortegnet til f(m). Forklar med ord hvorfor løkka stopper.
Leksjonen hører til modulen Programmering og algoritmer og øves til del 2. Les mer om eksamen i 1T, og bruk formelarket for 1T når du øver.
Begreper: algoritme halveringsmetoden while-løkke
Les også
- Funksjoner i Python – forklart steg for steg
- Løkker og summer – forklart steg for steg
- Vekstfart med et program – forklart steg for steg
- While-løkker og vekst – forklart steg for steg
- Figurtall og summer med program – forklart steg for steg
- Algoritmer i Python: oppgaver med fasit
- Prøv en gratis oppgave i 1T
Mer om matte 1T
- Alle modulene i matte 1T
- Eksamen i 1T: del 1, del 2 og hjelpemidler
- Eksamensguide for 1T: oppgavetypene med eksempler
- Formelark for 1T
- Begrepene i 1T forklart
- De 10 vanligste feilene i 1T
- Temaer i 1T forklart med eksempler
- Oppgaver med fasit i 1T, ordnet etter tema
Ser du en feil? Si fra på kontakt@sophus.no, så retter vi den.