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 ==.
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: print('ingen') | valg |
x1 = (-b + sqrt(D))/(2*a) | første løsning |
x2 = (-b - sqrt(D))/(2*a) | 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?
| i | s før | s etter |
|---|---|---|
| 1 | 0 | 1 |
| 2 | 1 | 3 |
| 3 | 3 | 6 |
| 4 | 6 | 10 |
- Vi sporer verdien fra etter hver runde i løkken
- start:
- gir
- gir
- gir
- gir
- løkken er ferdig. Verdien er , som er summen .
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-21Hva betyr = i programmering?
Vis fasit
| Beregning | Resultat |
|---|---|
| Ett likhetstegn i kode betyr tilordning | |
| legg verdien i variabelen |
- Ett likhetstegn i kode betyr tilordning
- legg verdien i variabelen
L-22Hva bruker du for å sammenligne to verdier i Python?
Vis fasit
| Beregning | Resultat |
|---|---|
| For likhetstest brukes 2 likhetstegn | |
| dobbelt likhetstegn |
- For likhetstest brukes 2 likhetstegn
- dobbelt likhetstegn
L-23Hva kalles en konstruksjon som gjentar et steg?
Vis fasit
| Beregning | Resultat |
|---|---|
| En konstruksjon som gjentar 1 eller flere steg | |
| gjentakelsen er poenget | |
| en løkke |
- En konstruksjon som gjentar 1 eller flere steg
- gjentakelsen er poenget
- en løkke
Middels(3)
M-21s = 0, så s = s + i for . Hva er s?
Vis fasit
| Beregning | Resultat |
|---|---|
| Start s | 0 |
| etter i | 1: 1 |
| etter i | 2: 3 |
| etter i | 3: 6 |
- Start s = 0
- etter i = 1: 1
- etter i = 2: 3
- etter i = 3: 6
M-22p = 1, så p = p * i for . Hva er p?
Vis fasit
| Beregning | Resultat |
|---|---|
| Start p | 1 |
| 1 gange 2 | 2 |
| 2 gange 3 | 6 |
| 6 gange 4 | 24 |
- Start p = 1
- 1 gange 2 = 2
- 2 gange 3 = 6
- 6 gange 4 = 24
M-23Hvorfor gir x = x + 1 mening i kode, men ikke som likning?
Vis fasit
| Beregning | Resultat |
|---|---|
| Likningen x = x + 1 gir 0 | 1 |
| men i kode betyr det «øk x med 1» | |
| tilordning, ikke likhet |
- Likningen x = x + 1 gir 0 = 1
- men i kode betyr det «øk x med 1»
- tilordning, ikke likhet
Vanskelig(3)
V-21Skriv for som kode og regn ut verdien.
Vis fasit
| Beregning | Resultat |
|---|---|
| a = 1, b = 2, c | -3 |
| D | 4 - 4 gange 1 gange (-3) |
| 4 + 12 | 16 |
- a = 1, b = 2, c = -3
- D = 4 - 4 gange 1 gange (-3)
- 4 + 12 = 16
V-22Med : hva blir de to løsningene?
Vis fasit
| Beregning | Resultat |
|---|---|
| D | 16 gir roten 4 |
| (-2 + 4) delt på 2 = 1, og (-2 - 4) delt på 2 | x = 1 og x = -3 |
- D = 16 gir roten 4
- (-2 + 4) delt på 2 = 1, og (-2 - 4) delt på 2 = x = 1 og x = -3
V-23En løkke går fra til og summerer. Hva blir summen?
Vis fasit
| Beregning | Resultat |
|---|---|
| Summen fra 1 til 100 er 100 gange 101 delt på 2 | 5 050 |
Summen fra 1 til 100 er 100 gange 101 delt på 2 = 5 050