Tallfølger#

Tallfølger er tall som kommer i rekkefølge etter hverandre. Noen tallfølger gis med en formel, og andre gis ved en slags algoritme.

Her kommer noen vanlige tallfølger. Formlene under er gitt for tallene \(n\in \{1, 2, 3, \dots\}\).

Navn
Formel
Tall

De naturlige tallene

\(n\)

\(\{0, 1, 2, 3, 4, \dots\}\)

Partallene

\(2n\)

\(\{0, 2, 4, 6, 8, \dots\}\)

Oddetallene

\(2n + 1\)

\(\{1, 3, 5, 7, \dots\}\)

Kvadrattallene

\(n^2\)

\(\{0, 1, 4, 9, 16, \dots\}\)

Rektangeltallene

\(n(n+1)\)

\(\{0, 2, 6, 12, 20, \dots\}\)

Trekanttallene

\(\frac{n(n+1)}{2}\)

\(\{0, 1, 3, 6, 10, \dots\}\)

Programmere tallfølger med formel#

Vi kan enkelt programmere tallfølger med formel. Da kan vi finne ulike summer. Vi kan også finne hvilke tall som er i følgen, og hvilke som ikke er det.

La oss finne summen av de \(20\) første kvadrattallene og undersøke om tallet \(289\) er et kvadrattall.

s = 0 # Summen starter som null

for n in range(1, 21): # For-løkken går fra 1 til én mindre enn den siste parameteren, altså 20.
    s += n**2          # Legger til summen. n**2 er formelen for kvadrattallene.
    print(n, n**2)     # Skriver ut indeks (plassering) og tall i tallfølgen.

print(f"Summen er {s}")
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
11 121
12 144
13 169
14 196
15 225
16 256
17 289
18 324
19 361
20 400
Summen er 2870

Som vi ser er tallet \(289\) et kvadrattall, det er nummer 17 i følgen. I tillegg er summen av de \(20\) første kvadrattallene lik \(2870\).

Programmere tallfølger med algoritme#

Det er ikke like lett å finne en formel for alle tallfølger. Noen ganger er det enklere å programmere tallfølgen fra en algoritme.

La oss se på fibonaccitallene. De er gitt ved denne algoritmen.

  • Start med tallene \(\{0, 1\}\)

  • Hvert neste tall er summen av de to forrige tallene.

La oss programmere starten på denne tallfølgen.

fib = [0, 1]

while len(fib) < 10:
    ny_fib = fib[-1] + fib[-2] # Tar summen av det siste og det nest siste tallet i listen.
    fib.append(ny_fib)         # Legger inn tallet i listen.

print(fib)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Dette programmet legger inn det neste tallet i listen som summen av de to siste tallene så lenge listens lengde er under 10. Derfor skriver programmet ut de første ti fibonaccitallene.


Oppgaver#

Oppgave 1 📦

Hvis kvadrattallene er tallene med formel \(n^2\) når \(n\in \{1, 2, 3, \dots\}\) så må tallene med formel \(n^3\) hete kubikktallene.

Skriv ut summen av de første \(20\) kubikktallene og undersøk om \(6859\) er et kubikktall.

Oppgave 2 ✌️

Skriv ut de første 20 toerpotensene \(2^n\). Har du sett disse tallene før?

Oppgave 3 🐚

Se på koden for fibonaccitallene i eksempelet over.

Det gylne snitt \(\phi\approx 1.618\) er et viktig tall i matematikken. Hvis vi tar forholdet mellom et fibonaccitall og det forrige tallet, så vil verdien til dette forholdet bli mer og mer lik det gylne snitt desto lengre ut vi kommer i tallfølgen.

Det vil si at \(\phi \approx \frac{fib_n}{fib_{n-1}}\) når \(n\) er tilstrekkelig stor. For eksempel er \(\frac{13}{8}\approx 1.625\) og \(\frac{34}{21}\approx 1.619\)

Lag et program som regner ut det gylne snitt ved å bruke fibonaccitallene.

Oppgave 4 3️⃣

Tribonaccitallene er gitt ved følgende algoritme.

  • Start med tallene \(\{0, 1, 1\}\)

  • Det neste tallet er summen av de tre forrige tallene.

Lag et program som skriver ut de første 20 tribonaccitallene.

Oppgave 5 🃏

Fakultet (factorial) er definert på denne måten.

  • \(n! = n \cdot (n-1) \cdot (n-2) \cdot ... \cdot 3 \cdot 2 \cdot 1\)

For eksempel er \(5! = 5 \cdot 4 \cdot 3 \cdot 2 \cdot 1 = 120\)

Lag et program som finner \(n!\) (\(n\) fakultet) for et gitt heltall \(n\).

Bruk programmet til å finne \(12!\).

Svar:

Oppgave 6 🔢

I denne oppgaven kan det være nyttig å se tilbake på Rest og heltallsdivisjon

Lag et program som skriver ut alle primtallene under \(100\).

Oppgave 7 (utfordring)

Collatz-følgen til et tall er definert på følgende måte

  1. Del tallet på to hvis det er et partall.

  2. Gang tallet med tre og legg til 1 hvis det er et oddetall.

Starter vi med tallet \(12\) blir collatz-følgen

\(12 \rightarrow 6 \rightarrow 3 \rightarrow 10 \rightarrow 5 \rightarrow 16 \rightarrow 8 \rightarrow 4 \rightarrow 2 \rightarrow 1\)

Summen av tallene i denne følgen er \(67\).

Finn summen av tallene i Collatz-følgen til tallet \(111\). Du kan anta at følgen stopper på tallet \(1\).

Svar:

Collatz’ formodning (Collatz’ conjecture)

Antagelsen om at vi ender på tallet \(1\) er rimelig, men det er ingen som har klart å bevise at dette gjelder for alle positive heltall. Dette matematiske problemet kalles Collatz’ formodning (Collatz’ conjecture) og er et uløst problem i matematikken, til tross for at konseptet egentlig er ganske enkelt å forstå.