Utforske følgjer med programmering.
Programmering og rekursjon
Programmering er eit kraftig verktøy for å utforske matematiske samanhengar. Vi kan bruke Python til å generere følgjer, rekne ut summar og simulere rekursive prosessar.
Ein rekursiv definisjon definerer ein verdi ved hjelp av tidlegare verdiar.
For følgjer:
Ein rekursiv definisjon treng alltid startverdiar (grunntilfelle).
Skriv eit program som genererer dei 10 første ledda i følgja .
# 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: Dei ti første ledda er og .
Skriv eit Python-program som genererer dei 15 første ledda i følgja med og .
Skriv eit program som reknar ut dei 20 første Fibonacci-tala.
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 tjugande Fibonacci-talet er .
Rekn ut forholdet for store . Kva skjer?
Rekursive funksjonar
Ein rekursiv funksjon er ein funksjon som kallar seg sjølv. Han må ha eit grunntilfelle som stoppar rekursjonen.
Implementer fakultet som ein 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 kallar seg sjølv med til grunntilfellet og skriv ut , , , …, .
Skriv ein rekursiv funksjon for det n-te Fibonacci-talet.
Simuler ein ball frå 10 m som spretter til 80 % av førre høgd.
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 totalstrekninga er m. Løkka stoppar når spretthøgda er under m, så summen blir litt mindre enn m.
Svar: Simuleringa gir m, litt mindre enn den teoretiske totalstrekninga på m.
Modifiser programmet til å finne når ballen spretter under 1 cm.
Skriv eit program som reknar ut delsummane av rekkja , og samanlikn 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 uendelege rekkja er .
Svar: Delsummane nærmar seg , som stemmer med summeformelen.
Bruk programmet frå eksempel 5.
Endre programmet slik at det stoppar første gong ligg nærare enn , og skriv ut .
Rekkja konvergerer. Finn summen, og bruk eit program til å finne kor mange ledd som trengst før delsummen ligg nærare summen enn .
Oppsummering
Rekursjon i programmering:
- Rekursive definisjonar kan implementerast som rekursive funksjonar
- Alternativt bruker vi løkkjer (iterasjon)
- Rekursive funksjonar må alltid ha eit grunntilfelle
Typiske bruksområde:
| Problem | Rekursiv formel |
|---|---|
| Aritmetisk følgje | |
| Geometrisk følgje | |
| 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.
