Matematik med
Regnearter

Regneregler

Regningsarterne fungerer ved at anvende tegnene: +, -, * og /. Se herunder:

>>> 6+3
9
>>> 6-3
3
>>> 6*3
18
>>> 6/3
2.0

Læg mærke til at der bliver anvendt int i alle eksemplerne, og at resultatet bliver leveret på samme måde ved +, - og *. Men ved division bliver resulatet ændret til float. Se nedestående eksempel

>>> 2/3
0.6666666666666666

Regneregler

Python anvender korrekte regningsregler, hvilket vil sige at + og - adskiller ledene, og at de skal sættes paranteser for at omgå dette. Se eksemplerne herunder:

>>> 3+2*6
15
>>> (3+2)*6
30
>>> 3+6/2
6.0
>>> (3+6)/2
4.5

opgaver

I de nedestående opgaver skal du lave regnestykker ved hjælp af tallene, regningsarterne +, -, * og / og paranteser:

Tal Resultater
6, 3, 4 -6, 6, 12, 18, 36
4, 4, 8 -16, -7, 0, 1, 2, 6, 28

Potens og rødder

For at finde potens tal og rødder anvendes funktionen pow(a,b), hvor a er grundtallet og b er potensen. Se nedestående eksempler:

Matematisk udtryk Python funktion Alternativ
\( a^b \) pow(a,b) a**b
\( \sqrt[b]{a} \) pow(a,1/b) a**(1/b)

Det anbefales at man anvender funktionen pow() fremfor **. Det gør koden mere læselig.

Eksempler med 24 og kvadratroden af 4:

>>> pow(2,4) 
16
>>> pow(4,1/2)
2.0

Man kan have funktioner inde i funktioner, f.eks:

$$ \sqrt[5]{7^2} = (7^2)^{\frac{1}{5}} = pow(~pow(7,2)~,~1/5~)$$
>>> pow( pow(7,2) , 1/5 )
2.17790642448278

Opgave

Beregn følgende tal:

$$ 2^8, ~{19^3}^7,~ \sqrt 9, ~ \sqrt[17] {256}, ~ \sqrt[3]{4}^{17}, ~ 2^{\sqrt17} $$

Logartimer

For at anvende logaritmer skal pakken math importeres

Matematisk udtryk Funktion Inverse funktion Beskrivelse
\( y^x \) pow(y,x) math.log(x,y) Logaritmen (grundtal y)
\( 10^x=y \) pow(10,x) math.log10(x) Logaritmen (grundtal 10)
\( e^x = y \) math.exp(x) math.log(y) Den naturlige logaritmen (grundtal e)

>>> import math
>>> math.log10(100)
2.0
>>> math.log10(pow(10,2))
2.0
>>> math.log(pow(math.e,2))
2.0

Konstanter

I matematik er der konstanter som man ikke kommer uden om herunder konstanten π og e

Konstant Funktion Værdi
\( \pi \) math.pi 3.141592...
\( e \) math.e 2.718281...

De kan kaldes ved at importere dem fra pakken math

>>> import math
>>> math.pi
3.141592653589793
>>> math.e
2.718281828459045

Modulus og floor division

To funktioner som ikke giver mening normalt i matematik er modulus og "floor division".

Funktion Tegn Beskrivelse Eksempel
modulus % Returnere resten efter division 9%5 = 4
floor division // Returnerer heltallet efter division 9//5 = 1

>>> 9%5
4
>>> 9//5
1

Man kan ved hjælp af modulus og floor division omskrive en uægte brøk til en blandet brøk efter følgende model:

$$ \frac{a}{b} = (a//b)~ \frac{a\%b}{b} $$
Anvendelse

modulus og floor division virker i første omgang lidt underlige, men har en masse praktiske anvendelser. F.eks:

  • Hvis noget skal ske hver tredie gang: x%3 = 0
  • Antal fyldte ølkasser: *antal flasker* // 30

Absolutte tal

Hvis man vil arbejde med absolutte tal anvender man funktionen abs(). Det gør at resultatet bliver repræsenteret med sin positive værdi. Se eksemplerne:

>>> abs(-2)
2

Taltyper

I Python anvendes grundlæggende 3 taltyper

Betegnelse Talmængde Beskrivelse Eksempel Læg mærke til
int \( \mathbb{Z} \) Heltal (kaldes integer på engelsk) 1 ; 17 ; 2499
float \( \mathbb{R} \) Decimaltal 0.5 ; 3,141592 ; 0.6666 ... at der anvendes punktum og ikke komma
Fraction \( \mathbb{Q} \) Brøker 1/2 ; 22/7 ; 2/3 Resultatet kommer ud i formen: Fraction(tæller,nævner)

int

int er heltal og anvendes ofte i programmering til at tælle og holde styr på antallet af gange noget skal ske. Det er samtidig den taltype der fylder mindst i hukommelsen og computeren kan beregne hurtigt.

float

float er simple decimaltal og kan anvendes til langt de fleste beregninger. Men taller er ikke præcist se nedestående eksempel:

>>> 3*0.1-0.3
5.551115123125783e-17

Resultatet burde give 0 men giver en rest. Det er ikke fordi computeren ikke kan regne, men skyldes at float er binært defineret, hvilket giver disse afvigelser - i dette tilfælde efter den 17 decimal. Men anvender man få decimaler er float rigeligt.

Fraction

For at arbejde med brøker skal funktionen kaldes og brøker skrives ved at anvende formen: Fraction(a,b) hvor a er tælleren og b er nævneren. Herunder vises udregningen bag Piet Heins digt både som Fraction og som float.

En halv er
tænk nu hvor aparte
to trediedele
af trekvarte

\( \frac{1}{2} = \frac{2}{3} \cdot \frac{3}{4} \)

Først skal Fractionimporteres:

>>> from fractions import Fraction
>>> brøk1 = Fraction(2,3)
>>> brøk2 = Fraction(3,4)
>>> brøk1*brøk2
Fraction(1, 2)
>>> float1=float(2/3)
>>> float2=float(3/4)
>>> float1*float2
0.5

Konvertering af taltyper

Hvis man vil undersøge hvilken taltype en variabel er anvender man funktionen type(). Lad os prøve det ved at anvende variablerne fra eksemplet ovenfor:

>>> a=7
>>> b=3/4
>>> c=3.14
>>> type(a)
<class 'int'>
>>> type(b)
<class 'float'>
>>> type(c)
<class 'float'>

Herunder angiver vi variablen d, som er det samme som c - blot i taltypen Fraction. Vi lægger også mærke til at variablen d nu er funktionsværdien af Fraction(2,3)

>>> d=Fraction(2,3)
>>> type(d)
<class 'fractions.Fraction'>
>>> d
Fraction(2, 3)

Python er designet til hele tiden at vælge den bedst mulige taltype, hvilket betyder at tal der fremkommer ved hjælp af division automatisk bliver konverteret til float. Det vi skal kigge på her er hvordan vi konverterer mellem taltyper og finder ud af hvilken taltype det er.

For at omskrive et tall fra en type eller en tekststreng til et tal anvendes funktionerne: int(), float(), Decimal() og Fraction().

  • int() - omskrivning til heltal
  • float() - omskrivning til float
  • Fraction() - omskrivning til brøk

...til int (ℕ - Integers)

Man skal være opmærksom på at man ved en omskrivning kan miste decimaler. Hvis man omskriver en brøk eller et decimaltal til en int, så mister man alle decimalerne. Se eksemplerne herunder:

>>> a=3.14
>>> b=9/10
>>> c=11/10
>>> int(a)
3
>>> int(b)
0
>>> int(c)
1

... til float (ℝ - Relle tal)

Når der omskrives til float sættes der minimum en decimal på.

>>> a=1
>>> b=3.14
>>> c=2/3
>>> float(a)
1.0
>>> float(b)
3.14
>>> float(c)
0.6666666666666666

...til Fraction (ℚ - Rationelle tal)

For at arbejde med Fraction skal funktionen først importeres:

>>> from fractions import Fraction
>>> a=1
>>> b=3.14
>>> c=2/3
>>> Fraction(a)
Fraction(1, 1)
>>> Fraction(b)
Fraction(7070651414971679, 2251799813685248)
>>> Fraction(c)
Fraction(6004799503160661, 9007199254740992)

Læg mærke til at omskrivningen fra 2/3 bliver til 6004799503160661/9007199254740992. Det skyldes at variablen c ikke bliver gemt som en brøk (Fraction), men som et float. Derved kommer der en unøjagtighed ind i decimalerne som bliver nedarvet.

Det man kan lære af det er, at man skal arbejde med de rigtige taltyper hele tiden, da man ellers risikerer unøjagtige resultater.

Opgave

Beregn ved hjælp af python hvad forskellen er mellem c og Fraction(c) fra eksemplet ovenfor.