Introduktion til Python i matematik
Proof. By induction.
Indledning
Python er et programmeringssprog. Det er altså en speciel form for kodesprog, som giver instrukser til en computer om, hvad den skal gøre. Alle apps på din computer eller telefon er opbygget af kommandoer af denne type. De kan dog være skrevet i mange andre programmeringssprog end Python.
Nedenfor finder du en række Python-programmer. Enten helt uden forklaring eller kun med korte forklaringer. Ved at arbejde med øvelserne efter de forskellige programmer, vil du kunne udvikle en forståelse af
- hvad et program er
- hvordan et programmeringssprog som Python fungerer
- hvordan et computer laver matematiske beregninger
- at alt, hvad en computer kan bruges til, er opbygget af kommandoer som disse.
De enkelte programmer kan køres ved at trykke på “Run Code” knappen over programkoden.
Efter programmet vil der som regel være en boks med bemærkninger og en boks med øvelser. Kommentarne kan være uddybelse af hvad der sker i programmet, eller tekniske detaljer, som ikke er nødvendige i første omgang.
I øvelserne kan du udforske de enkelte programmer, ved at tænke over hvordan de fungerer. Du kan modificere programmet (ændre i koden) og se hvilken forskel dine ændringer gør. Og du kan være helt rolig. Hvis du kludrer rundt i det, kan du bare trykke på “Start over”-knappen over koden. Så kommer du tilbage til udgangspunktet.
Du bliver nok ikke programmør af at følge øvelserne, men hvis du bliver inspireret til at lære mere, er der masser af inspiration af hente på nettet, fx. på youtube: søg på youtube.com. Her kan du både finde instruktioner om, hvordan du kan installere Python på din computer, og hvordan du selv kan lære at skrive programmer.
Alle programmerne på denne side kører lokalt i browseren på din maskine, men der installeres ikke noget på din computer. Hverken filer eller cookies.
Derfor er siden sikker at bruge. Du bliver ikke tracket, og ingen oplysninger om dig bliver gemt nogen steder.
Det betyder også, at de ændringer, du laver i et program, ikke bliver gemt nogen steder. Hvis du forlader siden og kommer tilbage, er dine ændringer væk. Hvis du gerne vil huske, hvad du har gjort, kan det være en god idé at kopiere den ændrede kode over i et dokument på din computer. Så kan du altid sætte den ind igen på et senere tidspunkt, hvis du vil eksperimentere videre.
God fornøjelse med programmerne!
Variable og enkle beregninger
Dette er det første Python program, så du får lige lidt forklaring:
Programmet består af en række linjer med instrukser, som udføres en efter en. Linjerne er nummereret 1 til 15, men linjenumrene er ikke en del af selve programmet. De er indsat for at gøre det lettere at referere til et bestemt sted i programmet.
I linje 1 og 2 tildeles de to varable a og b talværdier.
I linjerne 5 til 9 udskrives værdien af en beregning
I linjerne 2 til 15 laves de samme beregninger igen, men udskrives med lidt mere forklaring.
Kig på programmet og overvej, om du kan gennemskue, hvad det gør. Tryk derefter på “Run Code” og se, om du havde ret! Programmets output vises under programmet.
Flere beregninger med variable
Når symboler som a kaldes en variabel, er det fordi man kan ændre deres værdi. Det illustreres af dette program, hvor der også oprettes en ny variabel d ud fra tre andre.
Programmet viser også, hvordan man kan lave simple beregninger med variable og de fire regningsarter (+, -, · og /) og potenser. Man kan selvfølgelig også bruge alle de matematiske funktioner vi kender. Det ser vi på i et andet eksempel.
Betingelser: if-sætningen:
Et program kan ikke kun automatisk udføre en række beregninger efter hinanden (selv om det også kan være rart). En vigtig ting i mange programmer er, at det kan gøre forskellige ting fx afhængigt af værdien af en variabel eller beregning. Det køres med kommandoen if betingelse : som er illustreret i programmet nedenfor. I linje 3 er der en if-sætning. Hvis variablen alder er større end eller lig 13 og samtidig mindre end 20, så udføres kommandoen i næste linje, som printer en besked. Bemærk at den eller de kommandoer, som skal udføres, skal stå lige efter if-sætningen og være indrykket (her med to mellemrum).
Beregninger med matematiske funktioner
Hvis vi skal bruge de matematiske funktioner som \mathrm e^x, \sqrt x osv., skal vi først give en Python en kommando for at få adgang til dem. Det gøres i første linje i programmet:
Løkker: Tæl til ti
En anden vigtig funktion i et programmeringssprog som Python, er at gentage det samme flere gange. Enten et bestemt antal gange, eller indtil en bestemt betingelse er opfyldt. Det kaldes en løkke.
Python har to forskellige kommandoer, som kan bruges til at lave løkker. for-kommandoen og while-kommandoen. Vi ser på dem begge.
for-kommandoen
for-kommandoen er i sin grundfunktion meget enkel: Den udfører en eller flere kommandoer et bestemt antal gange. Antallet af gange bestemmes ofte ved hjælp af range som er en speciel funktion, som genererer heltal i et interval.
Det næste program bruger også en for-løkke, men antallet af gennemløb styres på en lidt anden måde. Variablen tegn indeholder en tekst (afgrænset af anførselstegn) og hvert tegn opfattes af computeren som et tal. Så tegn er egentlig en liste af talværdier. Programmet uskriver talværdien for hvert tegn i teksten.
while-løkken
Den anden løkke-kommando er while-kommandoen som udfører kommandoer så længe en betingelse er opfyldt. I det næste program benyttes det til at tælle til ti på en anden måde, end vi gjorde med for-løkken:
Vi vil nu bruge while-kommandoen til at opbygge en liste over x-værdier (det vil vi bruge i næste eksempel til at lave en graf for en funktion). I python skrives en liste som en række værdier adskilt af komma og omgivet af kantede parenteser. Fx [4, 7, 11]. En tom liste skrives som []. Programmet tilføjer x-værdier til listen fra en startværdi til en slutværdi og udskriver derefter listen:
Lav en graf
Vi skal nu se på, hvad der sker bag kulisserne, når du beder dit CAS-værktøj om at lave en graf for en funktion. Programmet laver både en liste over x-værdier og en liste over til tilhørende funktions-værdier for en funktion f(x). De to lister bruges så til at plotte grafen for f(x).
Vi får derfor brug for at definere en funktion. Det sker i linjerne 7 og 8 i programmet. I linjerne 26-32 laves grafen for funktionen. Når du bruger dit CAS-værktøj til at lave en graf, gør det netop som
Beregninger med iteration
I matematik betyder iteration at man gentager anvendelsen af en regel eller en beregning. Man starter med en begyndelsesværdi og bruger en formel eller funktion igen og igen, hvor hvert nyt resultat bruges som input til næste trin.
Et eksempel på en funktion, som kan beregnes ved iteration er fakultet funktionen: n! = n · (n-1) · (n-2) \cdots 3 · 2 · 1 hvor fx 5!=5·4·3·2·1=120. Nu kan 6! beregnes ud fra 5! fordi 6! = 6·5·4·3·2·1 = 6·5! På samme måde kan n! beregnes ud fra (n-1)! n! = n· (n-1) Hver ny værdie af n! kan altså beregnes ud fra den foregående (n-1) ved at bruge samme metode: gang med n.
Hvis man starter med 0!=1 kan alle de øvrige værdier beregenes ved at gange med n: 1!=1·0!, \quad 2!=2·1!, \quad 3!=3·2! \quad \text{osv.}
Et andet eksempel på iteration er Fibonacci-tallene: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, \dots hvor hver tal i rækken er summen af de to foregående. Dette program beregner det n’te Fibonacci tal:
Løs en ligning med bisektionsmetoden
Vi vil nu bruge python til at finde en numerisk løsning til en ligning. En numerisk løsning til en ligning er en tilnærmet værdi for løsningen, som findes ved hjælp af beregningsmetoder i stedet for en nøjagtig, eksakt formel. Den ligning, vi vil løse er x^2=2 Vi ved godt at der et to løsninger, x=-\sqrt 2 og x=\sqrt 2, så det er muligt at sammenligne det numeriske resultat med den eksakte løsning. Den metode vi vil bruge kaldes bisektions-metoden. Det er faktisk en metode til at finde nulpunkter (rødder) i en funktion, så første trin er at lave omskrive ligningen til x^2-2=0 Hvis vi sætter f(x)=x^2-2 kan vores ligning altså skrives som f(x)=0 Bisektions metoden kræver at vi starter med et interval [a,b], hvor f(a) og f(b) har forskelligt fortegn. Derfor ved vi, at må være en rod i intervallet (hvis funktionen er kontinert).
Metoden går ud på at bestemme f(c), hvor c ligger midt imellem a og b. Hvis f(a) og f(c) har forskelligt fortegn så er der en rod i intervallet [a;c] og vi fortsætter med at undersøge dette interval. Ellers må der være en rod i intervallet [c;b] og vi fortsætter med at undersøge dette interval. Vi har altså et nyt interval, hvor vi finder midtpunktet og beregner funktionsværdien osv. osv.
Hver gang vi vælger et nyt interval, bliver længden af intervallet halveret. Det er derfor metoden kaldes bisektion = “dele op i to dele”. Intervallerne bliver mindre og mindre, og vi kommer derfor tættere og tættere på den rigtige værdi af roden.
Proceduren er den samme hver gang vi har valgt et interval, og metoder hvor vi gentager den samme procedure igen og igen kaldes iterative. Hver anvendelse af metoden kaldes en iteration. Med mindre man ved et tilfælde rammer et interval, hvor f(c)=0 kan man i princippet fortsætte metoden i det uendelige. Man angiver derfor en tolerance, og afbryder derfor metoden når f(c) er tættere på 0 end tolerancen angiver. Dermed kan man betragte c som en tilnærmet løsning til ligningen.
For en sikkerheds skyld sætter man også en grænse for, hvor mange iterationer programmet må foretage. Hvis der ikke er fundet en løsning inden det maksimale antal iterationen fejler metoden.
Det er metoder som disse (med lidt mere avancerede variatoner), som dit CAS-værktøj bruger, hvis det ikke kan finde en eksakt løsning til en ligning ved hjælp af en formel. Men nu til selve programmet: