Start | matematik
 

Matematik



Detta handlar om de fyra räknesätten och lite andra operatorer samt prioriteringsregler. Dessutom om hexadecimaltal, oktadecimala tal, modulooperatorn samt var man hittar de trigonometriska funktionerna.

Operatorer

Operation Op Exempel Retur
Addition + x+y+z (1)
Subtraktion - x-y (1)
Multiplikation * x*y (1)
Division / x/y float
Division heltalskvot // x//y int
Modulav % x%y int
Mindre än < x bool
Mindre än eller lika med <= x<=y bool
Större än > x>y bool
Större än eller lika med >= x>=y bool
Lika med (ekvivalent) == x==y bool
Inte lika med (olika) != x!=y bool


Så, plus och minus är operatorer. Det operatorerna jobba med, siffror och variabler och andra uttryck, kallas operander.



Vi använder våra operatorer och operander för att göra kalkyler, aritmetik.
hojd = 20 bredd = 30 arean = 20 * 30 print("Om höjd är 20 och bredd är 30 så är arean",arean) strackan = 60 fart = 120 tid = 60/120 print("Om en person kör 120 km/h så tar 60 km",tid,"timmar")

modulo % och heltalskvot //


Denna lite udda operator är otroligt användbar. Modulo ger resten vid division av 2 tal. Så t.ex. 10/2=5, detta går jämt upp. Resten blir 0. Men om vi tänker oss 10/3=3 och där har vi en rest på 1.
print(10%2) print(10%3)
Så vad är // för operator. Det är en kompis till modulo. Den ger helt enkelt heltalskvoten vid division.
print(10//2) print(10//3)
Så vi kan skriva följande
talj = 10 namn = 3 kvot = talj // namn rest = talj % namn print("%d/%d blir %d + %d/%d -del" %(talj,namn,kvot,rest,kvot))
Heltalskvoten och modulo är operatorer som har byggts ihop i en och samma, divmod.

Prioriteringsreglerna

När uträkningar skall ske eller när logik i if-satser skall komponeras, så är det otroligt viktigt vara medveten om att du styr prioriteringen med parenteser. Det fungerar som vi lärt oss i matematiken.

- Parenteser först
- Multiplikation/division
- Addition/Subtraktion

tal = (1 + 2) * (3 + 1) print(tal)
tal = 1 + 2 * 3 + 1 print(tal)
tal = ((1 + 2) * 3 - 2) * 4 print(tal)

datatyp

typer


I python är det ganska enkelt. I princip bara int och float du behöver hålla reda på.

TypExempel
int6 eller -8
float5.897
complex5 + 3i
När vi pratar om siffror och inbyggda datatyper är det ganska enkelt. Heltal är det vi kallar naturliga tal (1,2 78), flyttal är t.ex. 3.1415 eller 6.5 eller 80.0.

Komplexa tal är när vi definierar i2 = -1 och om du inte vet vad detta är, strunta i det tills vidare.

Python försöker räkna ut själv vad du använder för typ, men det fungerar inte alltid och då måste du hjälpa till.

Du kan konvertera fram och tillbaka mellan heltal (int) till flyttal (float), oktalt (oct), hexdecimalt (hex), binärt (bin), om det är nödvändigt.

heltal = 232 print("heltal", heltal) print("flyttal", float(heltal)) print("oktalt (8 som bas)", oct(heltal)) print("hexadecimalt (16 som bas)", hex(heltal)) print("binärt (2 som bas)", bin(heltal)) heltal2 = bin(heltal)+ bin(heltal) print(heltal2)

int(tal,bas)


binart="101011" print(int(binart, 2)) oktalt="106" print(int(oktalt, 8)) hexadecimalt ="46" print(int(hexadecimalt, 16))
Andra vägen...
tal = hex(70) print(tal) tal = int(tal, 16) print(tal) print() tal = oct(tal) print(tal) tal = int(tal, 8) print(tal) print() tal = bin(tal) print(tal) tal = int(tal, 2) print(tal)

talbaser


Tal kan representeras med olika talbaser.

BasExempel
bin0-1
oct0-8
int0-9
hex0-F

talbaser


Hur kopplar dessa talbaser till varandra? Binärt är alltså när vi betraktar talet på lägsta digitala form (så som datorn upplever det), oktalt då grupperar vi det i bitar om 3, hexadecimalt grupperar vi 4 bitar tillsammans. Decimalt grupperar vi inte nedanstående snygga tabell utan i grupper om 10.

Bin 70 = 1*26 + 1*22 + 1*21 = 64+4+2
Okt 70 = 1*82 + 6*80 = 64+6
Hex 70 = 4*161 + 6*160 = 64+6
Dec 70 = 7*101


2048 1024 512 256 128 64 32 16 8 4 2 1
211 210 29 28 27 26 25 24 23 22 21 20
0 0 0 0 0 1 0 0 0 1 1 0
0 4 6
0 1 0 6
70
MSB LSB
print(bin(70)) print(hex(70)) print(oct(70)) print(int(70))

avrunda tal


Ett vanligt behov är att man behöver avrunda ett tal. Det görs enkelt med round(tal, decimaler)
pi = 3.14151954 print(round(pi,2))

xY


Om man vill upphöja något kan det göras på 2 sätt. Det ena är med pow(tal,potens) och det andra är tal**potens.
tal = 8 print(pow(tal,2)) print(tal**2)

import math

Ibland vill man kanske räkna på geometriska figurer eller annan matematik som använder sin, cos, tan, osv. Det som gäller då är att importera math.

radianer !


Sinus, cosinus, tangens tar vinklar i radianer. Dess invers Arcsinus, arccosinus, arctangens ger ifrån sig vinklar i radianer.

För att konvertera mellan grader och radianer importerar du math använder du math.degrees(x) eller math.radians(x).

Ett tips om du labbar med matematik och de trigonometriska funktionerna. För att slippa bli tokig på att skriva math.sin() och math.pi osv. kan du skapa nya funktioner med enklare namn.
import math pi = math.pi sin = math.sin cos = math.cos tan = math.tan print(sin(pi/2))

inbyggda mattefunktioner

Klicka för mer exempel hur dessa inbyggda matte -funktioner fungerar.

abs()Absolutbelopp av x
bin()Returnerar bin -formatet
complex()Skapar komplext tal
divmod()Kombination av % och //
float()Returnerar flyttal
hex()Returnerar hex
int()Returnerar heltal
oct()Returnerar oktadecimal
pow(x,y)xy
round(tal,p)Tal till p decimaler
all()And på listor
any()Or på listor
bool()Returnerar bool

import math



math.ceil(x)Avrundar x uppåt
math.floor(x)avrundar x nedåt
math.trunc(x)avrundar x mot 0
math.comb(n, k)Välj k från n
math.perm(n,k)Välj k från n
math.gcd(*i)Största gemensamma delare
math.lcm(*i)Minsta gemensamma multipel
math.fabs(x)Absolutbeloppet av x
math.exp(x)ex
math.exp2(x)2x
math.log(x,b)Log x bas b
math.log10(x)10-log av x
math.pow(x,y)xy
math.sqrt(x)√x
math.sin(x)Sinus av x
math.cos(x)Cosinus av x
math.tan(x)Tangens av x
math.acos(x)Arc cosinus av x
math.asin(x)Arc sinus av x
math.atan(x)Arc tangens av x
math.atan2(x)Arc tangens av x
math.degrees(x)Radianer till grader
math.radians(x)Grader till radianer
math.acosh(x)Arc cos hyperbolicus
math.asinh(x)Arc sin hyperbolicus
math.atanh(x)Arc tan hyperbolicus
math.cosh(x)Cosinus hyperbolicus
math.sinh(x)Sinus hyperbolicus
math.tanh(x)Tangens hyperbolicus
math.piPi
math.ee
math.tautau

Lite frågor

Vad blir 5 + 2 * 3 - 1
  20
  10
Vad blir 2 * (3 - 1) / 2
  2.5
  5.5
  2
Vilken typ är siffran 1.2
  int
  float
  hexadecimal
  binär
Vilken typ är siffran 10
  int
  float
  hexadecimal
  binär
Vilken typ är siffran 01001101
  int
  float
  hexadecimal
  binär
Vilken typ är siffran 3F
  int
  float
  hexadecimal
  binär
Binära talet 0010 1010, vad är detta hexadecimalt?
  42
  2A
  28
Binära talet 0010 1010, vad är detta decimalt?
  42
  2A
  28
Binära talet 0010 1010, vad är detta oktalt?
  42
  2A
  52
Sista frågan. Tänk såhär. Gruppera det binära i 3-grupper, dvs 00 101 010

pq-formeln


Skriv ett program som löser andragradsekvationer genom att du anger koefficienterna a,b,c för en formel.

ax2 + bx + c = 0

fibonacci


Skriv ett program som listar -serien upp till angivet tal.

1, 1, 2, 3, 5, 8, 13

vinklar och sidor


Skriv ett program som frågar efter vinklarna A, B, C samt sidorna a, b, c i en triangel. Användaren anger en siffra om värdet är känt och 0 om det är okänt. Det räcker att man anger 3 värden (t.ex. A, b och c eller a,b,c eller A,B,a) så räknar datorn ut resten av vinklarna och sidorna.

Använd sinus och cosinus -satsen.

16.618013381958 ms