4.3. Løsning med programmering#
Læringsmål: lineære likninger med programmering
Etter å ha gått gjennom denne delen, er målet at du skal kunne:
Lese og tolke programmer som løser lineære likninger
Justere og tilpasse programmer for å løse dine egne likninger
Numerisk løsning av lineære likninger#
Mange likninger man møter på i det virkelige liv, har ingen analytisk løsning - det vil si, vi kan ikke få \(x\) alene. Et eksempel slik likning er
Men vi kan alltid prøve å finne en verdi for \(x\) slik at likningen er oppfylt - dette kaller vi å bestemme løsningen numerisk. Her skal vi se på én strategi for å gjøre dette med lineære likninger.
Repetisjon av nødvendige verktøy#
Først må vi repetere noen verktøy vi trenger for å få løst en likning numerisk.
Oppsummering: nullpunkter og likninger
For en funksjon \(f\), så er følgende ekvivalent:
Nullpunktet til \(f\)
Skjæringen mellom grafen til \(f\) og \(x\)-aksen
Løsningen til likningen \(f(x) = 0\)
Fig. 4.11 viser grafisk nullpunktet for en lineær funksjon \(f(x) = ax + b\).#
Repetisjon 1: nullpunkter og likninger
Ta quizen!
Så bør du nok repetere litt om for
-løkker.
Repetisjon 2: for
-løkker
Ta quizen!
For hvert av programmene under:
Les programmet og forutsi hva det vil skrive ut.
Skriv inn hypotesen din for å sjekke svaret ditt.
Oppsummering: for
-løkker
Når vi bruker range
-funksjonen til å lage en liste med tall kan vi enten bruke den som:
for x in range(start, stopp, steglengde):
# kode som skal gjentas
start
er det første tallet i listen.stopp
er stoppekriteriet. Vi stopper alltid før dette tallet.steglengde
er hvor mye vi skal endre på løkkevariabelenx
på hver runde i løkken.x
kalles for løkkevariabelen fordi den lages av løkka og endres for hver runde i løkka automatisk.
Eksempel |
Liste med tall |
---|---|
|
\(1, 2, 3, 4\) |
|
\(1, 3, 5, 7, 9\) |
|
\(5, 4, 3, 2\) |
for y in range(start, stopp):
# kode som skal gjentas
start
er det første tallet i listen.stopp
er stoppekriteriet. Vi stopper alltid før dette tallet.steglengde
er satt fast til1
som standardverdi her.y
kalles for løkkevariabelen fordi den lages av løkka og endres for hver runde i løkka automatisk.
Eksempel |
Liste med tall |
---|---|
|
\(1, 2, 3, 4\) |
|
\(1, 2, 3, 4, 5, 6, 7, 8, 9\) |
|
Ingen tall lages |
Repetisjon 3: funksjoner i Python
Ta quizen!
For hvert av programmene under:
Les programmet og forutsi hva det vil skrive ut.
Skriv inn hypotesen din for å sjekke svaret ditt.
Her generaliserer vi programmene litt slik at vi jobber med en variabel x
i stedet.
For hvert av programmene under:
Les programmet og forutsi hva det vil skrive ut.
Skriv inn hypotesen din for å sjekke svaret ditt.
Oppsummering: funksjoner i Python
Generell skrivemåte:
def funksjonsnavn(x):
return funksjonsuttrykk
x = tall
y = f(x)
Funksjon: \(f(x) = 2x + 1\).
Funksjonsverdi: \(f(2)\).
1def f(x):
2 return 2 * x + 1
3
4y = f(2)
5print(y)
Funksjon: \(g(x) = -x + 5\).
Funksjonsverdi: \(g(3)\).
1def g(x):
2 return -x + 5
3
4print(g(3))
Funksjon: \(h(x) = \dfrac{1}{2}x + 2\).
Funksjonsverdi: \(h(-4)\).
1def h(x):
2 return 0.5 * x + 2
3
4x = -4
5y = h(x)
6print(y)
Bestemme nullpunkter ved hjelp av programmering#
Alle likninger kan alltid skrives om til formen \(f(x) = 0\). Vi skal derfor fokusere på hvordan vi løser likninger av denne typen - altså likninger der vi skal finne nullpunktene til en funksjon \(f\).
Hvordan sjekke om \(f(x) = 0\) med et program#
Vi starter med å se på hvordan vi kan sjekke om \(f(x) = 0\) med et program uten å vite verdien til \(x\) direkte. Målet vårt er til slutt å automatisere søk etter nullpunkter ved hjelp av programmering.
Utforsk 1: hvordan sjekker vi om \(f(x) = 0\)?
Når vi skal sjekke om en funksjonsverdi \(f(x) = 0\), kan vi skrive f(x) == 0
i Python.
Hvis
f(x)
er lik 0, vil dette giTrue
(sant).Hvis
f(x)
ikke en lik 0, vil dette giFalse
(usant).
Før vi anvender dette, bestem nullpunktene til funksjonene:
\(f(x) = x - 2\)
\(g(x) = 2x + 4\)
\(h(x) = -3x + 6\)
Fasit
Under vises tre programkoder som tester ut om en funksjonsverdi er lik 0 og skriver ut svaret (som er enten True
eller False
).
For hvert av programmene under:
Les programmet og forutsi hva det vil skrive ut.
Skriv inn hypotesen din for å sjekke svaret ditt.
For hvert av programmene under:
Les programmet og forutsi på hvilken linje i utskriften det vil skrives ut
True
.Skriv inn hypotesen din for å sjekke svaret.
Underveisoppgave 1
Ta quizen!
Hvordan automatisere søket etter nullpunkter#
Siste steg er å få et program til å fortelle oss når \(f(x) = 0\) automatisk uten at vi må lete gjennom en liste med True
og False
. For da kunne vi vel egentlig strengt tatt tatt bare gått gjennom en liste med tall i stedet. Denne automatiseringen skal vi se på nå!
Utforsk 2: automatisere søket etter nullpunkter
For å automatisere søket etter nullpunkter, kan vi bruke:
En
for
-løkke som går gjennom en liste med mulige verdier for \(x\).For hver verdi av \(x\), sjekker vi om \(f(x) = 0\).
Hvis \(f(x) = 0\) er sant, skriver vi ut verdien til \(x\).
Så langt har vi sett på punkt 1 og 2 - nå må vi utvide verktøykassa vår så vi kan få til punkt 3. Dette kan vi få til med å bruke en if
-setning. Dette er en setning som gjør noe hvis noe er sant!
Under vises tre eksempelkoder som bruker en if
-setning for å bestemme nullpunktet til en funksjon.
For hvert av programmene under:
Les programmet og forutsi hva det vil skrive ut.
Skriv inn hypotesen din for å sjekke svaret ditt.
Under vises et program som søker etter nullpunktet til en funksjon \(f\), men kodelinjene er plassert i tilfeldig rekkefølge.
Plasser kodelinjene i riktig rekkefølge.
Endre på programmet slik at det finner nullpunktet til
Kjør programmet og sjekk at du finner nullpunktet til \(f\).
Endre på programmet slik at det søker etter nullpunktet til
Hint
Hvis du ikke får noen utskrift, kan det hende du må endre på mer enn bare funksjonsuttrykket!
Hvilke \(x\)-verdier sjekker du? Og hva er nullpunktet til \(f\)?
Underveisoppgave 2
Ta quizen!