Programmering som matematisk verktøy
Et program er en algoritme skrevet så en maskin kan utføre den. Du trenger fire byggeklosser: VARIABLER (lagre en verdi), REGNEUTTRYKK (bruke den), VALG med if (gjøre noe bare i visse tilfeller) og LØKKER med for/while (gjenta et steg). Merk at = i programmering betyr «legg denne verdien i variabelen», ikke «er lik». Derfor gir x = x + 1 mening som kode, men er en umulig likning. Likhetstesten skrives ==. Innrykket tekst etter if og else hører til valget. Bare én av de to delene kjøres hver gang. Det er viktig i abc-formelen: sqrt(D) må ikke regnes ut når er negativ, for da stopper programmet med en feilmelding.
Tilordning
Løsningene
| Kode | Hva den gjør |
|---|---|
from math import sqrt | henter kvadratrota |
a = 1; b = 2; c = -3 | lagrer koeffisientene |
D = b**2 - 4\*a\*c | regner diskriminanten |
if D < 0: | valg: har likningen ingen løsning? |
print('ingen løsning') | innrykket, kjøres bare når D er negativ |
else: | ellers (når D ≥ 0) |
x1 = (-b + sqrt(D))/(2\*a) | innrykket, første løsning |
x2 = (-b - sqrt(D))/(2\*a) | innrykket, andre løsning |
Tips
=tilordner,==sammenligner. Bruker du=der du mente en test, får du enten feilmelding eller et lumsk feil svar.- Skriv ut mellomverdier mens du utvikler. Ser du at ble når du ventet , vet du med én gang hvilket steg som er galt.
Eksempel: Spore et program steg for steg
Et program setter s = 0, og gjentar s = s + i for . Hva er s til slutt?
- Vi sporer verdien fra etter hver runde i løkken
- start:
- gir
- gir
- gir
- gir
- løkken er ferdig. Verdien er , som er summen .
| i | s før | s etter |
|---|---|---|
| 1 | 0 | 1 |
| 2 | 1 | 3 |
| 3 | 3 | 6 |
| 4 | 6 | 10 |
Alternativ forklaring/metode: Bygg algoritmen som kolonner
Alternativ metode – innenfor pensum, men ikke hovedmetoden her
Regneark i stedet for kode
Er programmering fortsatt uvant, kan mange av de samme algoritmene bygges i et regneark: én rad per runde i løkken, og en formel i cellen som viser til raden over. Du ser da alle mellomverdiene samtidig, ikke bare sluttsvaret. Metoden gir ikke like generelle løsninger som kode, men den gjør selve algoritmen synlig, og det er algoritmen kompetansemålet handler om, ikke programmeringsspråket.
| Rad | Celleformel | Verdi av s |
|---|---|---|
| 1 | =0 + 1 | 1 |
| 2 | =B1 + 2 | 3 |
| 3 | =B2 + 3 | 6 |
| 4 | =B3 + 4 | 10 |
Alternativ forklaring/metode: Finn nullpunkt for enhver funksjon, ikke bare andregradsuttrykk
Tilleggsinformasjon – ikke pensum på dette nivået
Newtons metode (Newton-Raphson)
Forutsetninger:
- Bruker verktøy du allerede har (den deriverte fra «Derivasjon»), men selve metoden er ikke 1T-pensum. Den er normalt R2-stoff, tatt med her som en smakebit på hvor algoritmisk tenkning og derivasjon møtes.
abc-formelen finner bare nullpunkter til andregradsuttrykk. Newtons metode finner nullpunkter til så godt som en HVILKEN SOM HELST funksjon, ved å gjenta: . Du starter med en gjetning, og bruker tangenten i det punktet til å gjette bedre. Programmet er en løkke som gjentar akkurat denne formelen. For (nullpunktet er ) med startgjetning : , så → → , allerede etter 3 runder er svaret riktig til 4 desimaler.
| n | xₙ | f(xₙ) |
|---|---|---|
| 0 | 1 | -1 |
| 1 | 1,5 | 0,25 |
| 2 | 1,4167 | 0,0069 |
| 3 | 1,4142 | ≈0 |
Oppgaver
Prøv minst én oppgave på hvert nivå.
Lett(3)
L-31Hva betyr = i programmering?
Vis fasit
- Ett likhetstegn i kode betyr tilordning
- legg verdien i variabelen
L-32Hva bruker du for å sammenligne to verdier i Python?
Vis fasit
- For likhetstest brukes 2 likhetstegn
- dobbelt likhetstegn
L-33Hva kalles en konstruksjon som gjentar et steg?
Vis fasit
- En konstruksjon som gjentar 1 eller flere steg
- gjentakelsen er poenget
- en løkke
Middels(3)
M-31s = 0, så s = s + i for . Hva er s?
Vis fasit
- Start s = 0
- etter i = 1: 1
- etter i = 2: 3
- etter i = 3: 6
M-32p = 1, så p = p * i for . Hva er p?
Vis fasit
- Start
M-33Hvorfor gir x = x + 1 mening i kode, men ikke som likning?
Vis fasit
- Likningen x = x + 1 gir 0 = 1
- men i kode betyr det «øk x med 1»
- tilordning, ikke likhet
Vanskelig(3)
V-31Skriv for som kode og regn ut verdien.
Vis fasit
- , ,
V-32Med : hva blir de to løsningene?
Vis fasit
- gir roten
- og
- og
V-33En løkke går fra til og summerer. Hva blir summen?
Vis fasit
- Summen fra til