Funktioner

Funktioner

Når man skal den samme programsekvens flere gange, kan definere en funktion. Det kan f.eks. være en funktion der skal udskrive den lille tabel for et tal. Lad os kalde den tabel().

Du kan se programmet herunder

def tabel(a):
    for i in range(1,11):
        print("{0} gange {1} er {2}".format(i,a,a*i))

Vi tager det linie for linie:

  1. def tabel(a):
  2. def er måde vi fortælle Python, at nu kommer der en funktion, og at vi kalder den tabel(). a er den variabel vi skal anvende i funktionen.

  3.     for i in range(1,11):
  4. Linien rykkes ind under funktionen. Der køres en løkke hvor i går fra 1 til 10, og som udskriver tabellen.

  5.         print("{0} gange {1} er {2}".format(i,a,a*i))
  6. Linien udskriver en linie i tabellen.

  7. tabel(4)
  8. Funktionen sættes igang med tallet 4 som a.

Når koden er tastet ind sker der ikke noget. Vi skal altså køre den nye funktion som herunder:

>>>tabel(4)
1 gange 4 er 4
2 gange 4 er 8
3 gange 4 er 12
4 gange 4 er 16
5 gange 4 er 20
6 gange 4 er 24
7 gange 4 er 28
8 gange 4 er 32
9 gange 4 er 36
10 gange 4 er 40

Geany

Det kan anbefales at du overveje anvende Geany til disse opgaver.

Har du installeret Python korrekt og husket sætte "flueben i Add Python 3.5 to PATH", så kan du køre python programmer direkte ved at trykke på F5.

For at Geany kan genkende pythonprogrammer skal de gemmes på computeren med endelsen py, f.eks: test.py.

Når man så trykker F5 køres programmet i et terminalvindue:

1 gange 4 er 4
2 gange 4 er 8
3 gange 4 er 12
4 gange 4 er 16
5 gange 4 er 20
6 gange 4 er 24
7 gange 4 er 28
8 gange 4 er 32
9 gange 4 er 36
10 gange 4 er 40

------------------
(program exited with code: 0)

Press any key to continue . . .

Opgaver

Trekantal

Lav funktionen trekantal(a) der udregner de a første trekantal. Tallene skal udskrives som int.

$$ T_n = 1+2+3+ ...+n=\frac{n \cdot (n-1)}{2} $$

BUM

Lav funktionen bum(a), hvor computeren siger BUM når den rammer et tal i tabellen a. Funktionen skal køre igennem igennem hele den lille tabel - altså op til a*10.

Matematiske funktioner

Du skal lave nogle funktioner, som udregner forskriften ved hjælp af punkterne \( P=(x_1,y_1) \) og \( Q=(x_2,y_2) \)

Funktionerne skal hedde:

  1. linie(x1,y1,x2,y2)
  2. potens(x1,y1,x2,y2)
  3. eksponential(x1,y1,x2,y2)

Ved eksponentialfunktion skal du funktionen også udskrive \( T_2 \) og \( T_{\frac{1}{2}} \).

Du kan funde noget om funktionerne her: funktioner.html

Fibonaggi tal

Lav funktionen fibonaggi(a), som udskriver alle fibonaggital der er mindre end a. Fibonaccitallene er en talrække, som har følgende egenskab. Hvis man dividerer et tal i rækken med det forgående tal, så vil dette tal tilnærme sig værdien φ (1.6180339...) som også bliver kaldt det gyldne snit.

Fibonaccitalrækken er: 1, 1, 2, 3, 5, 8, 13, 21 ...

Man kan udregne \( \phi \) ud fra følgende formel baseret på fibonaccitallene hvor man tager et fibonaccital og dividerer det med det efterfølgende.

$$ \phi = \frac{n-1}{n} ~ for~~ n \to \infty$$

Opgaven er at lave en kode der tager talrækken: 0, 1, 2, 3, 4, 5 .... og laver den om til fibonaccital. på følgende måde:

  • 0 + 1 = 1
  • 1 + 2 = 3
  • 2 + 3 = 5
  • 3 + 5 = 8
  • 5 + 8 = 13

Koden skal udregne de første 20 fibonaggital: Her er en forklaring på koden:

  1. Lav to variabler a, b og sæt dem til henholdsvis 0 og 1
  2. lav en forløkke der kører op til 20 gange baseret på i
  3. lad i vokse med en hver gang koden køres
  4. Udskriv a, hvis den er stærre end 0
  5. Gem den gamle værdi for a i en ny variabel (f.eks: old_a)
  6. Sæt a = b
  7. Sæt b = b + den gamle værdi for a

Koden skal give nedestående output

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 

------------------
(program exited with code: 0)
Press return to continue

Andengradsligningen

Andengradsligningen har normalformen:

$$ y = ax^2 + bx +c $$

Formlerne til andengradsligningen er:

$$ x= \frac{b \pm \sqrt D}{2a}, ~~ hvor~ D = b^2-4ac$$

og toppunktsformlen er:

$$ TP = \left( \frac{-b}{2a} , \frac{-D}{4a} \right) $$

Du kan funde noget om andengradsfunktionen her: funktioner.html

Lav funktionen 2grad(a,b,c), så den svarer på:

  1. Antal løsninger (skæringer med x-aksen)
    • D < 0 ⇒ ingen løsninger
    • D = 0 ⇒ 1 løsning
    • D > 0 ⇒ 2 løsninger
  2. Løsningerne for x
  3. Om gaflerne vender opad
    • a < 0 ⇒ gafler vender nedad
    • a > 0 ⇒ gafler vender opad
  4. Parablens toppunkt