Numeriske metoder#
Numeriske metoder handler om å finne tilnærmede løsninger (eller approksimasjoner ☝️🤓).
La oss se på hvordan man kan finne nullpunkter numerisk.
Finner vi nullpunkter, kan vi også løse likninger!
La oss si at vi har en likning $\(x^2 = 3x - 2\)$.
For å løse denne likningen kan vi enkelt skrive den om til $\(x^2 - 3x + 2 = 0\)$
Deretter kan vi løse likningen ved å finne nullpunktene til funksjonen \(f(x)=x^2 - 3x + 2\).
Dersom vi kan finne nullpunkter, kan vi også løse likninger.
Brute-force-metoden#
Brute force 💪
Brute force er en betegnelse for algoritmer som er enkle, men ikke nødvendigvis så effektive eller nøyaktige. Vi skal se på bedre numeriske metoder senere!
For å finne nullpunkter kan vi bruke et kult fortegnstriks!
Først bestemmer vi oss for to punkter på en funksjon med en fast avstand \(d\) fra hverandre, f.eks \(A=(x, f(x))\) og \(B=(x + d, f(x + d))\). Deretter gjentar vi stegene:
Gang sammen funksjonsverdiene \(f(x)\cdot f(x+d)\)
Hvis resultatet blir et negativt tall, eller null, er \(x\)-verdien rett ved et nullpunkt. Skriv ut \(x\)-verdien.
Øk \(x\)-verdien med et lite steg.
Vi kan minske avstanden mellom punktene, og stegene vi tar, for å få et enda mer nøyaktig svar.
Her er en demo i GeoGebra for å vise hvordan denne algoritmen fungerer.
La oss programmere denne algoritmen i Python 🐍.
# Funksjonen vi skal sjekke
def f(x):
return x**2 - 3*x + 2
# x-verdien vi skal starte på
x = 0
# Steglengden og avstanden mellom punktene
d = 0.0001
while x <= 4:
if f(x) * f(x + d) <= 0:
print(x)
x += d
0.9999999999999062
1.9999999999997962
Vi ser at vi får nullpunkter ved \(x\approx 1\) og \(x\approx 2\).
Valg av steglengde
Vi må velge \(d\) til å være tilstrekkelig liten. Hvis \(d\) er for stor (f.eks \(d=0.1\)), kan programmet ende opp med å skrive ut samme nullpunkt flere ganger, og gi oss et veldig unøyaktig svar.
Oppgaver#
Oppgave 1
Finn nullpunktene til funksjonen \(f(x)=x^4-10x^3+35x^2-50x+24, D_f=[0, 5]\) ved å bruke den numeriske metoden.
Løsning
Nullpunktene er ved x=1
, x=2
, x=3
og x=4
.
Oppgave 2
Finn nullpunktene til funksjonen \(f(x)=x^2-\frac{1}{4}\), \(D_f=[-1,1]\)
Ved å regne for hånd.
Ved å bruke den numeriske metoden.
Løsning
Nullpunktene er ved x=-0.5
og x=0.5
.
Oppgave 3
Janis prøver å finne nullpunktene til funksjonen \(f(x)=x^2-x-2\) med programmet under.
def f(x):
return x**2 - x - 2
x = 0
d = 0.0001
while x <= 5:
if f(x) * f(x + d) <= 0:
print(x)
x += d
Han vet det skal finnes to nullpunkter, men han finner bare ett. Forklar hvorfor, og hva han kan gjøre for å fikse det!
Oppgave 4
Klaudia prøver å finne nullpunktene til funksjonen \(f(x)=x^2-3x+2, D_f=[0, 3]\) med programmet under.
def f(x):
return x**2 - 3*x + 2
x = 0
while f(x) * f(x + 0.1) > 0:
x += 0.1
print(x)
Hva finner hun? Forsøk å svare uten å lage programmet.
Modifiser programmet slik at det fungerer som Klaudia ønsker.