Utforske følger med programmering.
Programmering og rekursjon
Programmering er et kraftig verktøy for å utforske matematiske sammenhenger. Vi kan bruke Python til å generere følger, beregne summer og simulere rekursive prosesser.
En rekursiv definisjon definerer en verdi ved hjelp av tidligere verdier.
For følger:
En rekursiv definisjon trenger alltid startverdier (grunntilfelle).
Skriv et program som genererer de 10 første leddene i følgen .
# Rekursiv metode
a = 3 # Startverdi
for n in range(1, 11):
print(f"a_{n} = {a}")
a = a + 5 # a_n = a_{n-1} + 5Utskrift:
a1 = 3, a2 = 8, a3 = 13, ..., a10 = 48
Svar: De ti første leddene er og .
Skriv et Python-program som genererer de 15 første leddene i følgen med og .
Skriv et program som beregner de 20 første Fibonacci-tallene.
fib = [1, 1]
for i in range(2, 20):
fib.append(
fib[i - 1] + fib[i - 2]
)
for i, f in enumerate(fib, 1):
print(f"F_{i} = {f}")Utskrift: F1 = 1, F2 = 1, F3 = 2, ..., F20 = 6765
Svar: Det tjuende Fibonacci-tallet er .
Beregn forholdet for store . Hva skjer?
Rekursive funksjoner
En rekursiv funksjon er en funksjon som kaller seg selv. Den må ha et grunntilfelle som stopper rekursjonen.
Implementer fakultet som en rekursiv funksjon.
def fakultet(n):
if n <= 1:
return 1
return n * fakultet(n - 1)
for i in range(10):
print(f"{i}! = {fakultet(i)}")Svar: Funksjonen fakultet kaller seg selv med til grunntilfellet og skriver ut , , , …, .
Skriv en rekursiv funksjon for det n-te Fibonacci-tallet.
Simuler en ball fra 10 m som spretter til 80 % av forrige høyde.
h = 10
total = h
while h > 0.001:
h = h * 0.8
total += 2 * h
print(
"Total strekning:"
f" {total:.2f} m"
)Utskrift: Total strekning: 89.99 m
Den teoretiske totalstrekningen er m. Løkka stopper når spretthøyden er under m, så summen blir litt mindre enn m.
Svar: Simuleringen gir m, litt mindre enn den teoretiske totalstrekningen på m.
Modifiser programmet til å finne når ballen spretter under 1 cm.
Skriv et program som regner ut delsummene av rekken , og sammenlign med summen .
a = 1 # første ledd
k = 0.5 # kvotient
S = 0
for n in range(1, 21):
S = S + a
a = a * k
print(n, S)Utskrift (utdrag):
| 1 | 1 |
| 2 | 1,5 |
| 3 | 1,75 |
| 10 | 1,998047 |
| 20 | 1,999998 |
Summen av den uendelige rekken er .
Svar: Delsummene nærmer seg , som stemmer med summeformelen.
Bruk programmet fra eksempel 5.
Endre programmet slik at det stopper første gang ligger nærmere enn , og skriver ut .
Rekken konvergerer. Finn summen, og bruk et program til å finne hvor mange ledd som trengs før delsummen ligger nærmere summen enn .
Oppsummering
Rekursjon i programmering:
- Rekursive definisjoner kan implementeres som rekursive funksjoner
- Alternativt bruker vi løkker (iterasjon)
- Rekursive funksjoner må alltid ha et grunntilfelle
Typiske anvendelser:
| Problem | Rekursiv formel |
|---|---|
| Aritmetisk følge | |
| Geometrisk følge | |
| Fibonacci | |
| Fakultet |
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.
