Numeriske metoder

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:

  1. Gang sammen funksjonsverdiene \(f(x)\cdot f(x+d)\)

  2. Hvis resultatet blir et negativt tall, eller null, er \(x\)-verdien rett ved et nullpunkt. Skriv ut \(x\)-verdien.

  3. Ø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.

Oppgave 2

Finn nullpunktene til funksjonen \(f(x)=x^2-\frac{1}{4}\), \(D_f=[-1,1]\)

  1. Ved å regne for hånd.

  2. Ved å bruke den numeriske metoden.

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)
  1. Hva finner hun? Forsøk å svare uten å lage programmet.

  2. Modifiser programmet slik at det fungerer som Klaudia ønsker.