På teorisiden om rekker har vi lagd et program som regner ut summen av de 20 første leddene i rekka ved hjelp av den eksplisitte formelen for .
a) Lag et program som regner ut det samme ved hjelp av en rekursiv formel.
Løsning
Rekka vil være gitt ved den rekursive formelen og .
Vi lager en variabel for dagslønna og en variabel for den samlede lønna. Her må vi kjøre løkka 19 ganger, siden vi starter med lønna på dag 1.
python
1dagslonn =1#lønn per dag2samletlonn =1#variabel for samlet lønn3dager =20#antall dager456for n inrange(dager-1):7 dagslonn = dagslonn*28 samletlonn = samletlonn + dagslonn
910print(f"Samlet lønn blir {samletlonn} kr.")
Leddene i ei uendelig rekke er gitt ved formelen .
a) Finn de tre første leddene for hånd.
Løsning
b) Lag et program som skriver ut de 20 første leddene.
Løsningpython
1a_n =02antall =13Leddene =[]45for n inrange(1,21):6 a_n =1/(1+n)**27 Leddene.append(a_n)8 antall = antall+1910print(Leddene)
c) Utvid programmet slik at det også skriver ut de 20 første summene, det vil si og så videre.
Løsningpython
1a_n =02Sum =03antall =14Leddene =[]5Summene =[]67for n inrange(1,21):8 a_n =1/(1+n)**29 Sum = Sum + a_n
10 Leddene.append(a_n)11 Summene.append(Sum)12 antall = antall+11314print(Leddene)15print(Summene)
Legg merke til at disse programmene bare er helt grunnleggende, og at utskriftene ikke er lette å tyde.
Her kommer en versjon med overskrifter og litt færre desimaler. Kanskje kan du noen andre triks for å få det til å se bedre ut?
Python
1a_n =02Sum =03antall =14Leddene =["a_n"]5Summene =["S_n"]67for n inrange(1,21):8 a_n =1/(1+n)**29 Sum = Sum + a_n
10 Leddene.append(a_n)11 Summene.append(Sum)12 antall = antall+113141516for i inrange(0,21):17if i ==0:18print(f"{Leddene[i]:<6}{Summene[i]:<6}")19else:20print(f"{Leddene[i]:.4f}{Summene[i]:.4f}")21
I linje 18 har vi lagt inn en formatering for å få raden med overskrifter til å bli like bred som radene med ledd og summer.
d) Finn summen, både eksakt og avrundet til 10 desimaler, når ved hjelp av CAS i GeoGebra.
Løsning
e) Utvid programmet ditt fra c) slik at du får skrevet ut leddene fra til og tilsvarende summer og leddene fra til og tilsvarende summer. Beskriv sammenhengen mellom disse og svaret du fikk i d).
Løsningpython
1a_n =02Sum =03antall =14Leddene =["a_n"]5Summene =["S_n"]67for n inrange(1,1001):8 a_n =1/(1+n)**29 Sum = Sum + a_n
10 Leddene.append(a_n)11 Summene.append(Sum)12 antall = antall+11314print("a_290 - a_300")1516for i inrange(291,301):17print(f"{Leddene[i]:.5f}{Summene[i]:.5f}")1819print("a_990 - a_1000")2021for i inrange(991,1001):22print(f"{Leddene[i]:.6f}{Summene[i]:.5f}")
Resultatet av utskriften blir slik (med 5 og 6 desimaler):
Vi ser at leddene blir mindre og mindre, og at summen nærmer seg sakte, men sikkert den summen vi fant i oppgave d).
f) Utfordring: Kan du lage et program som finner ut hvor mange ledd du må ha for at summen skal være lik den summen du fikk i oppgave d) med en nøyaktighet på 7 desimaler?
Løsning
Hvis vi skal ha en nøyaktighet på 7 desimaler, altså en sum på 0,6449340, må vi finne ut når summen passerer 0,64493405 (fordi vi da måtte ha rundet opp til 0,6449341).
Programmet kan se slik ut:
python
1a_n =02Sum =03antall =1456while Sum <0.64493405:7 a_n =1/(1+antall)**28 Sum = Sum + a_n
9 antall = antall+11011print(f"Vi trenger {antall-1} ledd for å få summen med 7 desimalers nøyaktighet.")
Tok programmet langt tid å kjøre? Ikke så rart, kanskje, siden vi trenger hele 59 128 516 ledd i rekka for å komme til denne summen.
Kanskje du klarer å finne et mer effektivt program?
Leddene i ei uendelig rekke er gitt ved formelen .
a) Skriv opp de fem første leddene i rekka.
Løsning
b) Finn og .
Løsning
Vi bruker GeoGebra:
c) Finn summen av rekka når .
Løsning
Vi bruker GeoGebra:
d) Sammenlign resultatet i c) med resultatet i oppgave 3 c). Beskriv hva som er forskjellen mellom disse to.
Løsning
I oppgave 3 c) var svaret et tall, mens i denne oppgaven er svaret uendelig. Det betyr at summen av rekka som er gitt ved , vil fortsette å vokse, mens summen av rekka som er gitt ved , vil gå mot en bestemt sum.