Programmering av nullpunkt med halveringsmetoden
Innledning
Du bør ha vært gjennom siden "Nullpunkt med manuell bruk av halveringsmetoden" før du går videre (se lenke nederst på denne siden). På den siden går vi gjennom hvordan vi kan "halvere" oss fram til en god tilnærmingsverdi for nullpunktet ved til funksjonen
Se figuren.
På siden nevnt ovenfor fant vi ut at vi kunne sjekke om den
Dersom vi skal finne et nullpunkt der grafen er synkende i stedet for stigende, blir dette snudd på hodet. Slik er det for eksempel for det nullpunktet som ligger ved
Diskuter
Hvordan kan vi finne en test til å avgjøre om den
Tips 1
På siden "Nullpunkt med manuell bruk av halveringsmetoden" starter vi med [1.5, 2] som intervall for nullpunktet. Så gjetter vi på gjennomsnittsverdien 1,75. I stedet for å se om grafen er over eller under
Tips 2
Prøv å forklare hvordan du kan bruke fortegnet til produktet
Løsning
Prøv å overbevise deg selv om at produktet av
Forsøk på forklaring:
- Det nedre endepunktet 1.5 for intervallet er alltid mindre enn det virkelige nullpunktet.
- Dersom 1,75 er mindre enn nullpunktet, ligger 1,75 på den samme siden av nullpunktet som 1.5. Da vil grafen til funksjonen for disse to verdiene ligge på den samme siden av
-aksen. Enten ligger grafen overx -aksen for begge disse verdiene eller under for begge.x - Funksjonsverdiene
ogf ( 1 , 5 ) vil derfor ha det samme fortegnet. Multipliserer vi disse to funksjonsverdiene, vil produktet alltid bli positivt, men bare dersom de to verdiene 1,5 og 1,75 ligger på den samme siden av nullpunktet.f ( 1 , 75 ) - Dersom 1,75 er større enn det verkelege nullpunktet (slik det er i tilfellet vårt), vil produktet av disse to funksjonsverdiene alltid bli negativt siden den ene vil være negativ og den andre positiv fordi de ligger på hver sin side av nullpunktet.
Nedenfor har vi sjekket dette med CAS i GeoGebra:
Algoritme for programmet "Nullpunkt 1.0"
Nå må vi prøve å lage en algoritme for et program som finner en god tilnærmingsverdi for nullpunktene til funksjonen vår for oss. Vi kaller programmet "Nullpunkt 1.0".
Først noen avklaringer. Følgende gjelder for versjon 1.0:
- Vi ser bare på funksjonen
.f x = 1 3 x 3 + 1 2 x 2 - x - 1 - Vi bestemmer oss for at programmet alltid skal kjøre 6 halveringer. (Av og til er dette ikke nok.)
- Programmet skal ta imot fra brukeren nedre og øvre grense for et intervall der vi er sikre på at nullpunktet finnes.
- Det må bare være ett nullpunkt i dette intervallet. (Hva er grunnen til det?)
Oppgave: algoritme
Skriv en algoritme for "Nullpunkt 1.0". Det lønner seg å lage funksjonen
Løsningsforslag
Algoritme til den egendefinerte funksjonen
- Ta imot en x-verdi.
- Regn ut følgende:
1 3 x 3 + 1 2 x 2 - x - 1 - Returner svaret.
Algoritme til programmet
- Skriv til skjermen "Dette programmet finner en tilnærmet verdi for et nullpunkt som ligger i et bestemt intervall.".
- Skriv til skjermen "Skriv inn nedre grense i dette intervallet:".
- Ta imot verdien fra brukeren, og lagre den i variabelen
.under - Skriv til skjermen "Skriv inn øvre grense i dette intervallet:".
- Ta imot verdien fra brukeren, og lagre den i variabelen
.over - Gjør 6 ganger:
- Regn ut midtpunktet av intervallet, og sett resultatet lik variabelen
.x_verdi - Dersom produktet av
ogf under er mindre enn null, settf(x_verdi) som ny øvre grense for intervallet.x_verdi - Dersom dette ikke er oppfylt, sett
som ny nedre grense av intervallet.x_verdi
- Regn ut midtpunktet av intervallet, og sett resultatet lik variabelen
- Skriv til skjermen "Nullpunktet er x =
.".<x_verdi>
Oppgave: koding
Skriv koden til programmet. Test programmet, og se om du kan finne alle de tre nullpunktene til funksjonen.
Tips dersom svaret programmet gir, er feil
Dersom programmet gir feil svar, kan det lønne seg å legge inn i koden en utskrift av variabelen
Løsningsforslag
Oppgave: vurdering
Finn nullpunktene til funksjonen med GeoGebra. Gå til innstillinger i programmet, og velg 4 desimaler. Vurder om svarene programmet ditt gir, er nøyaktige nok. Er nok å kjøre 6 halveringer?
Vurdering
Med 4 desimaler gir GeoGebra svaret 1,5855 for nullpunktet lengst til høyre, mens programmet over gir 1,5859. Begge gir med dette svaret 1,586 om vi runder av til tre desimaler. Det er nøyaktig nok – for dette nullpunktet. Det er ikke sikkert det er nok for alle nullpunkter i alle funksjoner.
Oppgave: koding
Test programmet på andre funksjoner, og se om det fungerer. Dersom du har lagd den matematiske funksjonen i programmet som en egendefinert funksjon, er det bare denne du trenger å endre. Husk å sjekke at programmet gir rett svar ved for eksempel å tegne funksjonen i GeoGebra og/eller bruke CAS.
Oppgave
Hvordan kan vi bruke programmet til å løse vanlige ligninger?
Tips
Programmet vårt løser allerede en likning, nemlig likningen
Forklaring
Dersom vi i en likning flytter alt over på venstre side, står det "= 0" på høyre side. Da kan vi se på det som står på venstre side som funksjonen vår
Test om programmet kan løse en "vanlig" likning som du kan finne på en av sidene om likninger.
Nullpunkt 2.0
Det er tre ting vi kan prøve å lage bedre i programmet vårt.
- Brukeren må kunne skrive inn en valgfri funksjon. Her bør vi avgrense oss til polynomfunksjoner av maksimalt tredje grad.
- Programmet må kjøre så mange halveringer som er nødvendig.
- Det hadde vært supert om programmet kunne tegne funksjonen i det intervallet som brukeren oppgir og markere nullpunktet på grafen.
Oppgave: algoritme
Skriv en ny algoritme der du prøver å trekke inn disse tre punktene.
Tips
For å bestemme når det er gjort nok halveringer, kan du stoppe når forskjellen mellom nedre og øvre grense for intervallet blir mindre enn for eksempel 0,0001.
Oppgave: koding
Skriv ny kode, og test programmet.