Numeri complessi
Un numero complesso ha una parte reale e una parte immaginaria, espressa con i, la radice quadrata di −1. Questa pagina spiega come scrivere numeri complessi, eseguire operazioni, ricavarne modulo e argomento, calcolare radici quadrate di numeri negativi e usare le funzioni matematiche che accettano valori complessi.
È utile quando un’equazione di secondo grado non ha radici reali, quando lavori con circuiti in corrente alternata o segnali, oppure per verificare esercizi di analisi complessa.
Scrivere numeri complessi
2 + 3i dà 2 + 3icomplex(3, -4) dà 3 - 4ii^2 dà -1Scrivi i subito dopo un numero per indicare la parte immaginaria, come in 3i o 1.5i, oppure usa i da sola. complex(real, imaginary) costruisce lo stesso valore a partire dalle due parti ed è comoda quando queste sono valori con un nome: complex(resistance, reactance). Entrambe devono essere numeri senza unità.
i rappresenta l’unità immaginaria solo finché nella nota non esiste un altro valore chiamato i. Se definisci un nome o un’unità personalizzata i, questa definizione ha la precedenza:
i = 52 + 3i dà 17complex(2, 3) dà 2 + 3iQui 3i è diventato 3 × 5 e la riga ha restituito 17. I nomi sono condivisi tra i blocchi di calcolo della stessa nota, quindi una definizione i = … in qualsiasi punto precedente produce lo stesso effetto. Evita di usare i come nome nelle note con numeri complessi. complex(2, 3) non dipende da quel nome e continua a funzionare.
Aritmetica
(2 + 3i) + (1 - 5i) dà 3 - 2i(1 + 2i) * (3 - i) dà 5 + 5i(2 + 3i) * (2 - 3i) dà 1310 / (3 + 4i) dà 1.2 - 1.6i(1 + i)^8 dà 16Addizione, sottrazione, moltiplicazione, divisione e potenze con esponente intero sono esatte. Quando la parte immaginaria del risultato è zero, come in (2 + 3i) * (2 - 3i), il risultato viene visualizzato come un numero ordinario. Racchiudi ogni numero complesso tra parentesi nelle moltiplicazioni e divisioni, così (2 + 3i) * (2 - 3i) non viene interpretato come 2 + (3i * 2) - 3i.
Parti di un valore numerico complesso
z = 3 + 4ireal(z) dà 3imag(z) dà 4conj(z) dà 3 - 4iabs(z) dà 5arg(1 + i) dà 0.7853981634arg(1 + i) rad in degrees dà 45°| Funzione | Dà |
|---|---|
real(z) |
La parte reale |
imag(z) |
La parte immaginaria, come un numero semplice |
conj(z) |
Il coniugato complesso: stessa parte reale, parte immaginaria con il suo segno capovolto |
abs(z) |
Il modulo: la distanza da zero |
arg(z) |
L'argomento: l'angolo dall'asse reale positivo, in radianti |
arg restituisce un numero senza unità che rappresenta l’angolo in radianti tra −π e π. Per visualizzarlo in gradi, assegna al valore l’unità radianti e convertilo, come nell’ultima riga. Per passare da modulo e angolo a un numero complesso usa exp: 2 * exp(i * pi / 3) vale 1 + 1.7320508076i.
Radici quadrate di numeri negativi
La radice quadrata di un numero negativo ordinario viene trattata come un calcolo nei numeri reali: sqrt(-16) mostra quindi un errore che indica cosa scrivere: Error: imaginary number. For a complex answer, write sqrt(-16 + 0i). Per ottenere la radice complessa, esprimi il numero come complesso aggiungendo 0i o usando complex(…, 0):
sqrt(-16 + 0i) dà 4isqrt(complex(-16, 0)) dà 4isqrt(3 + 4i) dà 2 + isqrt(2i) dà 1 + isqrt restituisce la radice principale, con parte reale positiva oppure, per i numeri negativi, parte immaginaria positiva. L’altra radice quadrata è il suo opposto.
Un valore scritto come complesso rimane complesso anche se la sua parte immaginaria è zero. Puoi assegnargli un nome o usarlo prima in altri calcoli: dopo x = -16 + 0i, sqrt(x) vale 4i, anche se x viene visualizzato come -16.
Questo permette di usare la formula risolutiva per qualsiasi equazione di secondo grado:
# Roots of x^2 + 2x + 5 = 0a = 1b = 2c = 5disc = b^2 - 4*a*c dà -16(-b + sqrt(disc + 0i)) / (2*a) dà -1 + 2i(-b - sqrt(disc + 0i)) / (2*a) dà -1 - 2iLe radici cubiche seguono la stessa regola della radice principale, con risultati che possono sorprendere per i numeri negativi:
cbrt(-8) dà -2cbrt(-8 + 0i) dà 1 + 1.7320508076iEntrambe sono radici cubiche di −8. La versione reale restituisce la radice reale; quella complessa restituisce la radice complessa principale.
Funzioni di un valore numerico complesso
exp(i * pi) dà -1ln(-1 + 0i) dà 3.1415926536ii^i dà 0.2078795764cos(i) dà 1.5430806348sinh(i) dà 0.8414709848i2^i dà 0.7692389014 + 0.6389612763iQueste funzioni accettano valori complessi:
sin,cos,tane le rispettive funzioni inverseasin,acos,atansinh,cosh,tanhe le rispettive funzioni inverseasinh,acosh,atanhexp,ln,log(olog10),log2,sqrtecbrt- Potenze con esponenti frazionari o complessi, come
i^0.5o2^i
Queste funzioni usano la virgola mobile binaria, quindi i risultati sono approssimazioni accurate. I residui di arrotondamento trascurabili vengono visualizzati come 0: exp(i * pi) appare così come −1, il risultato atteso. Il valore memorizzato conserva però tutte le cifre. Per confrontare questi risultati, verifica che la differenza sia molto piccola, come in abs(exp(i * pi) + 1) < 1e-9, invece di usare ==.
Ogni funzione restituisce un solo risultato, dal proprio ramo principale. Un numero complesso ha infiniti logaritmi e più radici: viene restituito il valore principale. Come per sqrt, gli argomenti reali rimangono nel dominio reale: ln(-1) e log(-100) mostrano l’errore relativo ai numeri immaginari e suggeriscono la forma complessa, mentre ln(-1 + 0i) restituisce πi. Il logaritmo di zero genera un errore.
Funzioni che hanno senso solo per numeri reali, come floor e round, non accettano valori complessi.
Confronto di numeri complessi
2 + 3i == complex(2, 3) dà true2 + 3i != 2 - 3i dà truecomplex(3, 0) >= 3 dà trueabs(3 + 4i) > abs(1 + 2i) dà true== e != funzionano con qualsiasi valore complesso. <, <=, > e >= funzionano soltanto se entrambi i valori hanno parte immaginaria zero, perché i numeri complessi non hanno un ordinamento naturale: i < 2 genera un errore. Per confrontarne la grandezza, confronta i moduli con abs, come nell’ultima riga. Non è possibile ordinare i numeri complessi.
Le regole complete sono nella documentazione di riferimento sulla matematica avanzata.
Un esempio completo
Ecco come verificare un esercizio sui circuiti in corrente alternata: un resistore da 30 Ω e un induttore con reattanza di 40 Ω in serie, alimentati a 10 V:
# Series circuit: 30 Ω resistor, 40 Ω reactance, 10 V supplyresistance = 30reactance = 40z = complex(resistance, reactance) dà 30 + 40iabs(z) dà 50current = 10 / z dà 0.12 - 0.16iabs(current) dà 0.2arg(z) rad in degrees to 1 dp dà 53.1°L’impedenza è 30 + 40i, con modulo 50 Ω: la corrente vale quindi 0,2 A ed è in ritardo rispetto alla tensione di circa 53,1°. In ingegneria si usa spesso j per l’unità immaginaria; in Varlig si usa sempre i. Ohm, volt e ampere vengono indicati nel commento, perché le parti di un numero complesso non possono avere unità.