Dispensa di riepilogo regole di calcolo dei numeri complessi

Richiamo sulle regole relative ai numeri complessi, per lo svolgimento
dell’ esercizio assegnato relativo a realizzare una classe Complesso

I numeri complessi sono numeri composti da due parti una reale ed una complessa

Essi sono frequentemente utilizzati in scienze applicate come l’elettronica e l’elettrotecnica.

Una curiosità: il linguaggio Fortran, essendo un linguaggio orientato al calcolo scientifico, ha il tipo
complesso implementato nativamente (ossia non c’è bisogno di programmarlo perchè già incluso nel
linguaggio).

I numeri complessi sono rappresentabili in forma cartesiana ( o altrimenti detta rettangolare) con x + i y
(ove x è il valore della parte reale e y il valore della parte immaginaria), o con la forma esponenziale
θi
ρ.e

Valgono le relazioni di base su i (unità nel campo complesso): sqrt(-1) = i da cui i2 = -1.
Il passaggio dall’uno all’altro tipo di rappresentazione può essere fatto facilmente considerando che ρ è
pari alla radice quadrata della parte reale del numero al quadrato più quella immaginaria del numero al
quadrato (teorema di Pitagora). Questo valore corrisponde anche al cosiddetto modulo del numero
complesso. L’angolo θ può essere determinato calcolando l’ arctangente del rapporto tra parte
immaginaria e parte reale (θ = arctan(y / x) per x > 0 e θ = arctan(y / x) + ¶ per x < 0)
 Il calcolo inverso (da forma esponenziale a rettangolare), può essere effettuato considerando che le
due componenti reale ed immamginaria, equivalgono in realtà a: x = ρ cos (θ) e y = ρ sin (θ)

Le tipiche e più frequenti operazioni che possono essere compiute sui numeri complessi sono:

opposto: determina il numero complesso opposto di un numero complesso; si effettua invertendo
(negando), la componente reale e quella immaginaria del numero complesso, vale a dire l’opposto di
x + i y risulterà –x – i y

somma: determina il numero complesso risultato della somma di due complessi. L’operazione è
piuttosto semplice, si tratta di sommare la parte reale con la parte reale e la parte immaginaria con la
parte immaginaria; (a + i b) + (c + i d) = (a + c) + i (b + d); ciò ovviamente crea un nuovo complesso
anch’esso con una parte reale ed immaginaria.

sottrazione: la si pensi ed implementi come somma dell’opposto di un certo numero: (a + i b) - (c + i d)
= (a + ib) – [(c + id))] = (a +ib) + (-c- id) (sottrazione tra le rispettive parti reali e le rispettive parti
immaginarie)

moltiplicazione: per implementarla la si concepisca come moltiplicazione tra due binomi algebrici (in
analogia con (a+bx) (c + dx) ). Quindi dall’algebra (a+ ib) (c +id) = ac + i 2 bd + i ad + i bc = (ac – bd) + i
(ad + bc)

reciproco: il calcolo di 1 / (a + ib) risulta possibile con la considerazione che moltiplicando sopra e sotto
il rapporto per (a – ib) si ottiene: (a – ib) / (a2 - (ib)2) = (a – ib) / (a2 - i2b2) = (a –ib) / (a2 + b2) = a / (a2 +
b2) – i b / (a2 + b2). Si ricordi nel calcolo che i2 = -1.

divisione: si implementi come la moltiplicazione del primo numero complesso con il reciproco
dell’altro, ossia (a + ib) / (c + id) = (a + ib) x 1 / (c + id), sfruttando quindi i metodi precedentemente
realizzati.
Detto questo il compito assegnato era di implementare un classe Complesso che:

mantenga una opportuna rappresentazione del numero complesso in questione all’interno dell’
oggetto (usualmente in forma cartesiana)
Pagina 1

che permettesse di istanziare un numero complesso con opportuni costruttori (ad esempio un
costruttore che acquisisca la parte immaginaria e complessa in forma rettangolare)

che permetta eventualmente con un opportuno metodo anche di assegnare un valore complesso al
numero.

Si preveda un metodo che permetta di ricavare la parte reale del numero complesso ed analogamente
si preveda un metodo capace di ricavare la parte complessa del numero

Si prevedano metodi per calcolare il modulo del numero complesso e l’angolo relativo, ossia per
ricavare la sua forma esponenziale.

Si prevedano metodi che riescano ad implmentare le operazioni considerate prima in dettaglio, vale a
dire il calcolo:
o
Opposto del numero complesso
o
Somma fra due numeri complessi
o
Sottrazione fra due numeri complessi
o
Moltiplicazione fra due nueri complessi
o
Reciproco di un numero complesso
o
Divisione di due numeri complessi
Si tenga conto che questi ultimi metodi possono essere utilmente implementati in una forma del tipo
Complesso opposto(), oppure come per la somma Complesso somma (Complesso c).
Nel primo caso l’operazione ricava un nuovo complesso dal complesso corrente; nel secondo l’operazione
di somma viene effettuata tra l’oggetto Complesso corrente (quello su cui è applicato il metodo), un
ulteriore oggetto complesso (che sarà stato opportunamente creato ed inizializzato), e da luogo ad un
ulteriore oggetto Complesso risultato della operazione.
La creazione degli oggetto risultato di una operazione avverrà nei relativi metodi nella forma:
Complesso opposto()
{
Complesso cr;
......
return(cr);
}
Nel caso di passaggio di un parametro di tipo oggetto (Complesso) si avrà la sintassi:
Complesso somma(Complesso c)
{
Complesso cr;
......
return(cr);
}
Pagina 2