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

variabelverdi\text{variabel} \leftarrow \text{verdi}

Løsningene

x=b±D2ax = \frac{-b \pm \sqrt{D}}{2a}

Program for abc-formelen (Python)
KodeHva den gjør
from math import sqrthenter kvadratrota
a = 1; b = 2; c = -3lagrer koeffisientene
D = b**2 - 4*a*cregner 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 DD ble 8-8 når du ventet 1616, 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 i=1,2,3,4i = 1, 2, 3, 4. Hva er s til slutt?

Sportabell
is førs etter
101
213
336
4610
Løsning:
  1. Vi sporer verdien fra s=0s = 0 etter hver runde i løkken
  2. start: s=0s = 0
  3. i=1i = 1 gir s=0+1=1s = 0 + 1 = 1
  4. i=2i = 2 gir s=1+2=3s = 1 + 2 = 3
  5. i=3i = 3 gir s=3+3=6s = 3 + 3 = 6
  6. i=4i = 4 gir s=6+4=10s = 6 + 4 = 10
  7. løkken er ferdig. Verdien er s=10s = 10, som er summen 1+2+3+41 + 2 + 3 + 4.
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.

Samme løkke som regneark: s = s + i
RadCelleformelVerdi av s
1=0 + 11
2=B1 + 23
3=B2 + 36
4=B3 + 410
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: xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} – 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 f(x)=x22f(x) = x^2 - 2 (nullpunktet er 2\sqrt2) med startgjetning x0=1x_0 = 1: f(x)=2xf'(x) = 2x, så x1=112=1,5x_1 = 1 - \frac{-1}{2} = 1{,}5x2=1,50,2531,4167x_2 = 1{,}5 - \frac{0{,}25}{3} \approx 1{,}4167x31,4142x_3 \approx 1{,}4142 – allerede etter 3 runder er svaret riktig til 4 desimaler.

Newtons metode på f(x) = x² - 2, x₀ = 1
nxₙf(xₙ)
01-1
11,50,25
21,41670,0069
31,4142≈0

Oppgaver

Prøv minst én oppgave på hvert nivå.

Lett(3)

L-21Hva betyr = i programmering?

Vis fasit
BeregningResultat
Ett likhetstegn i kode betyr tilordning
legg verdien i variabelen
  1. Ett likhetstegn i kode betyr tilordning
  2. legg verdien i variabelen

L-22Hva bruker du for å sammenligne to verdier i Python?

Vis fasit
BeregningResultat
For likhetstest brukes 2 likhetstegn
dobbelt likhetstegn
  1. For likhetstest brukes 2 likhetstegn
  2. dobbelt likhetstegn

L-23Hva kalles en konstruksjon som gjentar et steg?

Vis fasit
BeregningResultat
En konstruksjon som gjentar 1 eller flere steg
gjentakelsen er poenget
en løkke
  1. En konstruksjon som gjentar 1 eller flere steg
  2. gjentakelsen er poenget
  3. en løkke
Middels(3)

M-21s = 0, så s = s + i for i=1,2,3i = 1, 2, 3. Hva er s?

Vis fasit
BeregningResultat
Start s0
etter i1: 1
etter i2: 3
etter i3: 6
  1. Start s = 0
  2. etter i = 1: 1
  3. etter i = 2: 3
  4. etter i = 3: 6

M-22p = 1, så p = p * i for i=1,2,3,4i = 1, 2, 3, 4. Hva er p?

Vis fasit
BeregningResultat
Start p1
1 gange 22
2 gange 36
6 gange 424
  1. Start p = 1
  2. 1 gange 2 = 2
  3. 2 gange 3 = 6
  4. 6 gange 4 = 24

M-23Hvorfor gir x = x + 1 mening i kode, men ikke som likning?

Vis fasit
BeregningResultat
Likningen x = x + 1 gir 01
men i kode betyr det «øk x med 1»
tilordning, ikke likhet
  1. Likningen x = x + 1 gir 0 = 1
  2. men i kode betyr det «øk x med 1»
  3. tilordning, ikke likhet
Vanskelig(3)

V-21Skriv DD for x2+2x3x^2 + 2x - 3 som kode og regn ut verdien.

Vis fasit
BeregningResultat
a = 1, b = 2, c-3
D4 - 4 gange 1 gange (-3)
4 + 1216
  1. a = 1, b = 2, c = -3
  2. D = 4 - 4 gange 1 gange (-3)
  3. 4 + 12 = 16

V-22Med D=16D = 16: hva blir de to løsningene?

Vis fasit
BeregningResultat
D16 gir roten 4
(-2 + 4) delt på 2 = 1, og (-2 - 4) delt på 2x = 1 og x = -3
  1. D = 16 gir roten 4
  2. (-2 + 4) delt på 2 = 1, og (-2 - 4) delt på 2 = x = 1 og x = -3

V-23En løkke går fra i=1i = 1 til i=100i = 100 og summerer. Hva blir summen?

Vis fasit
BeregningResultat
Summen fra 1 til 100 er 100 gange 101 delt på 25 050

Summen fra 1 til 100 er 100 gange 101 delt på 2 = 5 050