Programmering i Matematikk 1T – Python steg for steg
Lær programmering i Matematikk 1T med variabler, vilkår, løkker, funksjoner, plotting, numeriske metoder og simulering.
Programmering i 1T er et verktøy for å løse matematiske problemer, ikke et mål i seg selv. Sensor er ute etter at du forstår algoritmen og kan forklare hva koden gjør. Under står oppgavene med problemet, begrepene, algoritmen steg for steg, gjennomgangen og den vanligste feilen.
Oversikten dekker 15 programmeringsoppgaver fordelt på 10 temaer.
Grunnleggende Python
Skriv matematiske uttrykk korrekt i Python
Problem: Oversett et matematisk uttrykk med potenser, røtter og brøk til kjørbar Python-kode.
Begreper:
- variabler
- regneoperatorer
- potensoperatoren **
- math.sqrt
- parenteser
Algoritme:
- Definer variablene med tydelige navn.
- Oversett potenser med ** og bruk parenteser rundt teller og nevner.
- Importer sqrt fra math dersom du bruker kvadratrot.
- Beregn uttrykket og skriv ut både verdi og enhet dersom det finnes.
- Kontroller resultatet med et enkelt overslag.
Gjennomgang:
- a**2 betyr a². Tegnet ^ betyr ikke potens i Python.
- Hele telleren står i parentes før divisjonen.
- sqrt(b) krever at b er ikke-negativ i reelle beregninger.
Testtilfelle: Med a=5 og b=3 skal resultatet være omtrent 2,6732.
Vanlig feil: Å skrive a^2. I Python er ^ en bitvis operator og gir et annet resultat enn potens.
Programmer en stykkevis definert funksjon
Problem: Lag en funksjon som bruker ulike formler avhengig av verdien til x.
Begreper:
- if
- elif
- else
- sammenligningsoperatorer
- stykkevis funksjon
Algoritme:
- Les vilkårene i den stykkevise definisjonen nøye.
- Programmer intervallene i riktig rekkefølge.
- Bruk <= eller < i samsvar med endepunktene.
- Test verdier på begge sider av og nøyaktig på grensene.
Gjennomgang:
- Første gren avviser verdier som ikke gir mening i modellen.
- Ved x=10 brukes første prisregel, mens x=11 går til neste.
- Formlene er laget slik at prisen er sammenhengende ved grensene.
Testtilfelle: Test spesielt x=10 og x=30 for å kontrollere intervallgrensene.
Vanlig feil: Å skrive separate if-setninger uten elif, slik at flere grener kan kjøres eller overskrive resultatet.
Funksjoner
Definer en funksjon og lag verditabell
Problem: Undersøk en andregradsfunksjon ved å beregne funksjonsverdier for flere x-verdier.
Begreper:
- def
- return
- for-løkke
- range
- funksjonsverdi
Algoritme:
- Definer funksjonen med def og return.
- Velg et intervall av x-verdier.
- Bruk en for-løkke til å beregne f(x).
- Skriv ut x og f(x) i en lesbar tabell.
- Se etter nullpunkter, symmetri og utvikling.
Gjennomgang:
- range(-1, 7) gir heltallene fra -1 til og med 6.
- Funksjonen beregnes på nytt for hver x-verdi.
- Tabellen viser blant annet nullpunktene x=1 og x=3.
Testtilfelle: Kontroller at f(1)=0, f(2)=-1 og f(3)=0.
Vanlig feil: Å tro at range inkluderer sluttverdien. range(-1, 7) stopper før 7.
Løkker og mønstre
Generer og undersøk en aritmetisk følge
Problem: Lag de første leddene i en følge med konstant differanse og finn summen av leddene.
Begreper:
- for-løkke
- akkumulator
- aritmetisk følge
- indeks
Algoritme:
- Definer første ledd, differanse og antall ledd.
- Beregn hvert ledd med a_n=a_1+(n-1)d.
- Legg hvert ledd til en løpende sum.
- Skriv ut leddnummer, verdi og sluttresultat.
- Kontroller summen med en kjent sumformel dersom den er tilgjengelig.
Gjennomgang:
- Løkken starter på n=1 fordi matematiske følger ofte nummereres fra 1.
- sum_folge += ledd betyr at det nye leddet legges til den tidligere summen.
- antall+1 brukes fordi range ikke inkluderer sluttverdien.
Testtilfelle: Følgen skal starte 7, 11, 15 og ende med 35 etter åtte ledd.
Vanlig feil: Å bruke n*d i stedet for (n-1)*d og dermed forskyve hele følgen ett ledd.
Finn når en eksponentiell modell passerer en terskel
Problem: Bestem det første hele året en størrelse blir større enn en gitt grense.
Begreper:
- while-løkke
- vekstfaktor
- teller
- stoppvilkår
Algoritme:
- Definer startverdi, vekstfaktor og terskel.
- Start telleren på riktig tidspunkt.
- Gjenta veksten så lenge verdien ikke har passert terskelen.
- Oppdater både verdi og tidspunkt i hver iterasjon.
- Skriv ut første tidspunkt som oppfyller kravet.
Gjennomgang:
- Løkken fortsetter mens verdien er mindre enn eller lik terskelen.
- Når løkken stopper, er dette første hele år med verdi over 500.
- Både år og verdi må oppdateres, ellers kan løkken bli uendelig.
Testtilfelle: Sammenlign med den algebraiske løsningen av 250·1,08^t=500, som er omtrent 9,0.
Vanlig feil: Å bruke < i stedet for <= uten å tenke over om lik terskel skal godtas eller passeres.
Numeriske metoder
Finn nullpunkt med halveringsmetoden
Problem: Finn et nullpunkt numerisk når en eksakt algebraisk løsning er vanskelig.
Begreper:
- kontinuitet
- fortegnsskifte
- while-løkke
- toleranse
- halveringsmetoden
Algoritme:
- Velg et intervall [a,b] der f(a) og f(b) har motsatt fortegn.
- Finn midtpunktet m.
- Behold den halvdelen der fortegnsskiftet ligger.
- Gjenta til intervallbredden er mindre enn ønsket toleranse.
- Bruk midtpunktet i sluttintervallet som tilnærmet nullpunkt.
Gjennomgang:
- Fortegnsskiftet dokumenterer at et kontinuerlig f har minst ett nullpunkt i intervallet.
- Intervallbredden halveres for hver iterasjon.
- f(nullpunkt) bør være nær 0 og fungerer som kontroll.
Testtilfelle: Nullpunktet skal ligge mellom 1,5 og 1,6.
Vanlig feil: Å starte med et intervall uten fortegnsskifte og likevel anta at metoden vil finne et nullpunkt.
Finn maksimum numerisk på et avgrenset intervall
Problem: Undersøk en modell på et fint rutenett og finn største beregnede verdi.
Begreper:
- intervall
- rutenettsøk
- maksimum
- oppløsning
- liste
Algoritme:
- Definer funksjon og gyldighetsområde.
- Velg steglengde.
- Beregn funksjonsverdien i alle rutenettspunktene.
- Ta vare på største verdi og tilhørende x.
- Vurder nøyaktigheten ut fra steglengden og sammenlign med derivasjon.
Gjennomgang:
- Programmet undersøker bare punkter på rutenettet, ikke alle reelle t.
- Mindre steglengde gir normalt bedre tilnærming, men flere iterasjoner.
- Resultatet bør ligge nær det eksakte toppunktet t=18/9,8.
Testtilfelle: Beste t skal ligge rundt 1,837 sekunder.
Vanlig feil: Å omtale rutenettresultatet som et eksakt maksimum uten å nevne steglengden.
Derivasjon
Tilnærm den deriverte numerisk
Problem: Beregn momentan vekstfart fra funksjonsverdier ved hjelp av en symmetrisk differanse.
Begreper:
- differansekvotient
- h-verdi
- numerisk tilnærming
- funksjon
Algoritme:
- Definer funksjonen f.
- Velg punktet x og en liten positiv h.
- Beregn [f(x+h)-f(x-h)]/(2h).
- Sammenlign med eksakt derivert dersom den er kjent.
- Test flere h-verdier for å vurdere stabilitet.
Gjennomgang:
- Den symmetriske differansen bruker punkter på begge sider av x.
- For f(x)=x³-2x er den eksakte deriverte 3x²-2.
- Ved x=2 er eksakt verdi 10, så resultatene bør nærme seg 10.
Testtilfelle: Alle tre beregningene skal ligge nær 10, og de minste h-verdiene nærmest.
Vanlig feil: Å kalle resultatet eksakt. Det er en numerisk tilnærming som avhenger av h og flyttallspresisjon.
Finn og kontroller en tangentlinje
Problem: Lag tangentlikningen i et punkt ved å kombinere funksjonsverdi og numerisk derivert.
Begreper:
- tangent
- punkt-stigning-form
- funksjonsverdi
- numerisk derivert
Algoritme:
- Beregn punktet (a,f(a)).
- Beregn eller tilnærm stigningstallet f′(a).
- Lag tangentfunksjonen T(x)=f(a)+f′(a)(x-a).
- Kontroller at T(a)=f(a).
- Sammenlign f og T for x-verdier nær a.
Gjennomgang:
- Punktet er (2,5).
- Stigningstallet skal være nær 4.
- Tangentlinjen blir derfor omtrent y=4x-3.
Testtilfelle: Kontrollen tangent(2)=f(2) skal gi samme verdi.
Vanlig feil: Å bruke f′(a) som konstantledd i stedet for som stigningstall.
Vektorer
Beregn vektorlengde og skalarprodukt
Problem: Bruk komponentene til å finne lengder, skalarprodukt og avgjøre om to vektorer er ortogonale.
Begreper:
- tuple
- vektorlengde
- skalarprodukt
- ortogonalitet
Algoritme:
- Representer hver vektor med to komponenter.
- Beregn lengde med Pytagoras.
- Beregn skalarprodukt komponentvis.
- Test om skalarproduktet er 0.
- Skriv en matematisk konklusjon.
Gjennomgang:
- Indeks 0 og 1 henter x- og y-komponenten.
- Begge lengdene er √5.
- Skalarproduktet 2·1+1·(-2)=0 viser ortogonalitet.
Testtilfelle: Bytt v til (2,2) og kontroller at ortogonalitetstesten blir False.
Vanlig feil: Å bruke == 0 direkte på desimaltall fra kompliserte beregninger. Da bør en toleranse brukes.
Trigonometri
Lag en trygg trekantberegner med cosinussetningen
Problem: Finn tredje side når to sider og vinkelen mellom dem er kjent.
Begreper:
- math.radians
- math.cos
- cosinussetningen
- inputkontroll
Algoritme:
- Kontroller at sidene er positive og vinkelen ligger mellom 0° og 180°.
- Konverter vinkelen fra grader til radianer.
- Bruk c²=a²+b²-2ab cos(C).
- Ta positiv kvadratrot.
- Kontroller trekantulikheten og rimelighet.
Gjennomgang:
- Python sin cos-funksjon forventer radianer.
- max(c2,0) beskytter mot et svært lite negativt tall fra flyttallsavrunding.
- For a=5, b=7 og C=60° blir c=√39.
Testtilfelle: Resultatet skal være omtrent 6,245.
Vanlig feil: Å sende 60 direkte til cos uten å konvertere fra grader til radianer.
Sannsynlighet
Simuler sannsynlighet og sammenlign med teori
Problem: Estimer sannsynligheten for minst én sekser ved fire terningkast.
Begreper:
- random
- simulering
- relativ frekvens
- komplementhendelse
Algoritme:
- Velg antall simuleringer.
- Simuler fire uavhengige terningkast i hvert forsøk.
- Registrer om minst ett kast er 6.
- Del antall treff på antall forsøk.
- Sammenlign med den teoretiske sannsynligheten 1-(5/6)^4.
Gjennomgang:
- Hvert forsøk består av fire nye, uavhengige kast.
- Hendelsen testes med 6 in kast.
- Simulert verdi varierer mellom kjøringer, mens den teoretiske er fast.
Testtilfelle: Den simulerte verdien skal normalt ligge nær 0,5177 ved mange forsøk.
Vanlig feil: Å omtale simuleringen som eksakt sannsynlighet eller å bruke for få forsøk uten å diskutere variasjon.
Modellering
Beregn modellverdier og residualer
Problem: Kontroller hvor godt en lineær modell passer til observerte data.
Begreper:
- lister
- zip
- modellfunksjon
- residual
- tabell
Algoritme:
- Legg x-data og observerte y-data i like lange lister.
- Definer modellfunksjonen.
- Beregn modellverdi og residual for hvert punkt.
- Skriv en tabell med x, observert, modellert og residual.
- Se etter systematiske fortegn eller mønster.
Gjennomgang:
- zip kobler sammen elementer med samme indeks.
- Positiv residual betyr at modellen undervurderer observasjonen.
- Et mønster i residualene kan vise at lineær modell ikke er egnet.
Testtilfelle: Første residual skal være 0, og residualen ved x=1 skal være omtrent 0,2.
Vanlig feil: Å bytte fortegn og beregne modellert minus observert uten å endre tolkningen.
Kvalitet og dokumentasjon
Test programmet med grenseverdier og ugyldige data
Problem: Gjør en matematisk funksjon robust ved å kontrollere definisjonsmengde og teste kritiske verdier.
Begreper:
- ValueError
- definisjonsmengde
- testtilfeller
- assert
- grenseverdi
Algoritme:
- Finn hvilke inputverdier som er matematisk forbudt.
- Legg inn tydelige kontroller før beregningen.
- Test vanlige verdier, grenseverdier og ugyldige verdier.
- Bruk assert for forventede resultater.
- Skriv forståelige feilmeldinger.
Gjennomgang:
- Uttrykket √(x-3) krever x≥3.
- x=3 er en viktig grenseverdi og skal gi 0.
- Desimaltall sammenlignes ofte med en toleranse i stedet for direkte likhet.
Testtilfelle: x=3 og x=7 skal passere, mens x=2 skal gi kontrollert feilmelding.
Vanlig feil: Å la programmet krasje med en uklar matematikkfeil i stedet for å dokumentere definisjonsmengden.
Bygg en etterprøvbar digital besvarelse
Problem: Presenter kode slik at sensor kan følge den matematiske ideen, inputen og konklusjonen.
Begreper:
- kommentarer
- variabelnavn
- input
- output
- kontroll
Algoritme:
- Skriv kort hva programmet skal finne.
- Definer variabler med enheter og meningsfulle navn.
- Del beregningen i små, forståelige steg.
- Skriv bare relevant output.
- Kontroller resultatet matematisk eller med en alternativ metode.
Gjennomgang:
- Kommentaren forklarer formålet før koden.
- Variabelnavnene viser størrelse og enhet.
- Den siste linjen kontrollerer at terskelen ikke allerede var passert måneden før.
Testtilfelle: Resultatet skal være første måned der saldoen er minst 20 000 kr, ikke bare en tilfeldig måned etterpå.
Vanlig feil: Å levere bare et skjermbilde av output uten kode, variabeldefinisjoner eller tolkning.