Salta al contenuto
Guida di Varlig
Pagina iniziale di Varlig

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

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

Scrivi 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:

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

Qui 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

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

Addizione, 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

calc
z = 3 + 4i
real(z) dà 3
imag(z) dà 4
conj(z) dà 3 - 4i
abs(z) dà 5
arg(1 + i) dà 0.7853981634
arg(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):

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

sqrt 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:

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

Le radici cubiche seguono la stessa regola della radice principale, con risultati che possono sorprendere per i numeri negativi:

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

Entrambe 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

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

Queste funzioni accettano valori complessi:

  • sin, cos, tan e le rispettive funzioni inverse asin, acos, atan
  • sinh, cosh, tanh e le rispettive funzioni inverse asinh, acosh, atanh
  • exp, ln, log (o log10), log2, sqrt e cbrt
  • Potenze con esponenti frazionari o complessi, come i^0.5 o 2^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

calc
2 + 3i == complex(2, 3) dà true
2 + 3i != 2 - 3i dà true
complex(3, 0) >= 3 dà true
abs(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:

calc
# Series circuit: 30 Ω resistor, 40 Ω reactance, 10 V supply
resistance = 30
reactance = 40
z = complex(resistance, reactance) dà 30 + 40i
abs(z) dà 50
current = 10 / z dà 0.12 - 0.16i
abs(current) dà 0.2
arg(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à.