Hoppa till innehåll
Varlig-guiden
Varligs startsida

Komplexa tal

Ett komplext tal har en realdel och en imaginärdel. Den imaginära enheten skrivs i och är kvadratroten ur −1. Den här sidan beskriver hur du skriver och räknar med komplexa tal, tar fram deras belopp och argument, beräknar kvadratrötter ur negativa tal och använder matematiska funktioner med komplexa värden.

Använd denna sida när en andragradsekvation inte har reella rötter, när du arbetar med AC-kretsar eller signaler, eller när du kontrollerar kursmaterial från komplex analys.

Skriva komplexa tal

calc
2 + 3i ger 2 + 3i
complex(3, -4) ger 3 - 4i
i^2 ger -1

Skriv i direkt efter ett tal för att ange imaginärdelen, som i 3i eller 1.5i, eller använd i ensamt. complex(real, imaginary) bygger samma värde av två delar, vilket passar när delarna har namn: complex(resistance, reactance). Båda delarna måste vara tal utan enheter.

i betecknar den imaginära enheten bara så länge inget annat i anteckningen heter i. Om du definierar ett namn eller en egen enhet som heter i får den definitionen företräde:

calc
i = 5
2 + 3i ger 17
complex(2, 3) ger 2 + 3i

Här blev 3i lika med 3 × 5 och raden gav 17. Namn gäller mellan beräkningsblock i samma anteckning, så i = … på valfri tidigare rad har samma effekt. Undvik därför namnet i i anteckningar med komplexa tal. complex(2, 3) använder inte namnet och fungerar fortfarande.

Aritmetik

calc
(2 + 3i) + (1 - 5i) ger 3 - 2i
(1 + 2i) * (3 - i) ger 5 + 5i
(2 + 3i) * (2 - 3i) ger 13
10 / (3 + 4i) ger 1.2 - 1.6i
(1 + i)^8 ger 16

Addition, subtraktion, multiplikation, division och potenser med heltalsexponenter är exakta. Om resultatets imaginärdel är noll, som för (2 + 3i) * (2 - 3i), visas det som ett vanligt tal. Sätt parenteser runt varje komplext tal vid multiplikation och division, så att (2 + 3i) * (2 - 3i) inte tolkas som 2 + (3i * 2) - 3i.

Delar av ett komplext tal

calc
z = 3 + 4i
real(z) ger 3
imag(z) ger 4
conj(z) ger 3 - 4i
abs(z) ger 5
arg(1 + i) ger 0.7853981634
arg(1 + i) rad in degrees ger 45°
Funktion Ger
real(z) Realdelen
imag(z) Den imaginära delen, som ett vanligt tal
conj(z) Det komplexa konjugatet: samma realdel, men imaginärdelen har motsatt tecken
abs(z) Beloppet: avståndet från noll
arg(z) Argumentet: vinkeln från den positiva reella axeln, i radianer

arg returnerar vinkeln i radianer som ett tal utan enhet, mellan −π och π. För grader anger du att talet är i radianer och omvandlar det, som på sista raden. För att gå åt andra hållet, från belopp och vinkel till ett komplext tal, använder du exp: 2 * exp(i * pi / 3) ger 1 + 1.7320508076i.

Kvadratrötter ur negativa tal

Kvadratroten ur ett vanligt negativt tal behandlas som en reell beräkning. Därför visar sqrt(-16) ett fel med ett förslag: Error: imaginary number. For a complex answer, write sqrt(-16 + 0i). För en komplex rot skriver du talet i komplex form genom att lägga till 0i eller använda complex(…, 0):

calc
sqrt(-16 + 0i) ger 4i
sqrt(complex(-16, 0)) ger 4i
sqrt(3 + 4i) ger 2 + i
sqrt(2i) ger 1 + i

sqrt returnerar huvudroten, med positiv realdel eller, för negativa tal, positiv imaginärdel. Den andra kvadratroten fås genom att byta tecken på huvudroten.

Ett värde du skriver som komplext förblir komplext, även när dess imaginära del är noll. Du kan spara det i ett namn eller fortsätta beräkna med det först: efter x = -16 + 0i är sqrt(x) 4i, även om x visas som -16.

Därmed fungerar lösningsformeln för alla andragradsekvationer:

calc
# Roots of x^2 + 2x + 5 = 0
a = 1
b = 2
c = 5
disc = b^2 - 4*a*c ger -16
(-b + sqrt(disc + 0i)) / (2*a) ger -1 + 2i
(-b - sqrt(disc + 0i)) / (2*a) ger -1 - 2i

Kubikrötter följer samma regel om huvudrot, vilket kan ge ett oväntat resultat för negativa tal:

calc
cbrt(-8) ger -2
cbrt(-8 + 0i) ger 1 + 1.7320508076i

Båda är kubikrötter ur −8. Den reella versionen ger den reella roten, medan den komplexa ger den komplexa huvudroten.

Funktioner av ett komplext tal

calc
exp(i * pi) ger -1
ln(-1 + 0i) ger 3.1415926536i
i^i ger 0.2078795764
cos(i) ger 1.5430806348
sinh(i) ger 0.8414709848i
2^i ger 0.7692389014 + 0.6389612763i

Dessa funktioner accepterar komplexa värden:

  • sin, cos, tan och deras inverser asin, acos, atan
  • sinh, cosh, tanh och deras inverser asinh, acosh, atanh
  • exp, ln, log (eller log10), log2, sqrt och cbrt
  • potenser med bråk eller komplexa tal som exponenter, till exempel i^0.5 eller 2^i

Funktionerna använder binära flyttal, så resultaten är närmevärden. Mycket små avrundningsrester visas som 0. Därför visas exp(i * pi) som −1, precis som i läroboken. Det lagrade värdet behåller alla siffror. Jämför därför sådana resultat genom att kontrollera att skillnaden är mycket liten, som i abs(exp(i * pi) + 1) < 1e-9, i stället för med ==.

Varje funktion ger ett enda resultat från sin huvudgren. Ett komplext tal har oändligt många logaritmer och flera rötter, men du får det vedertagna huvudvärdet. Precis som för sqrt behandlas reella indata som reella: ln(-1) och log(-100) ger ett fel om imaginära tal och föreslår en komplex form. ln(-1 + 0i) ger däremot πi. Logaritmen av noll ger ett fel.

Funktioner som bara är meningsfulla för reella tal, såsom floor och round, accepterar inte komplexa värden.

Jämföra komplexa tal

calc
2 + 3i == complex(2, 3) ger true
2 + 3i != 2 - 3i ger true
complex(3, 0) >= 3 ger true
abs(3 + 4i) > abs(1 + 2i) ger true

== och != fungerar med alla komplexa värden. <, <=, > och >= fungerar bara när båda sidornas imaginärdel är noll, eftersom komplexa tal saknar naturlig ordning. i < 2 ger därför ett fel. För att jämföra storlek jämför du beloppen med abs, som på sista raden. Komplexa tal kan inte sorteras.

De fullständiga reglerna finns i referensboken för avancerad matematik.

Samlat exempel

Här kontrolleras en uppgift om en växelströmskrets: ett motstånd på 30 Ω och en spole med reaktansen 40 Ω är seriekopplade till en spänning på 10 V:

calc
# Series circuit: 30 Ω resistor, 40 Ω reactance, 10 V supply
resistance = 30
reactance = 40
z = complex(resistance, reactance) ger 30 + 40i
abs(z) ger 50
current = 10 / z ger 0.12 - 0.16i
abs(current) ger 0.2
arg(z) rad in degrees to 1 dp ger 53.1°

Impedansen är 30 + 40i med beloppet 50 Ω. Strömmen blir därför 0,2 A och ligger ungefär 53,1° efter spänningen i fas. Ingenjörer använder ofta j för den imaginära enheten, men i Varlig används alltid i. Ohm, volt och ampere anges i kommentaren eftersom det komplexa talets delar inte kan ha enheter.