Track
/
Swift
Swift
/
Esercizi
/
Numeri complessi
Numeri complessi

Numeri complessi

Medio

Istruzioni

Un numero complesso è espresso nella forma z = a + b * i, dove:

  • a è la parte reale (un numero reale),

  • b è la parte immaginaria (anche lei un numero reale), e

  • i è l'unità immaginaria che soddisfa i^2 = -1.

Operazioni sui numeri complessi

Coniugato

Il coniugato del numero complesso z = a + b * i è dato da:

zc = a - b * i

Valore assoluto

Il valore assoluto (o modulo) di z è definito come:

|z| = sqrt(a^2 + b^2)

Il quadrato del valore assoluto si calcola come prodotto di z e del suo coniugato zc:

|z|^2 = z * zc = a^2 + b^2

Addizione

La somma di due numeri complessi z1 = a + b * i e z2 = c + d * i si calcola sommando separatamente le loro parti reale e immaginaria:

z1 + z2 = (a + b * i) + (c + d * i)
        = (a + c) + (b + d) * i

Sottrazione

La differenza di due numeri complessi si ottiene sottraendo le rispettive parti:

z1 - z2 = (a + b * i) - (c + d * i)
        = (a - c) + (b - d) * i

Moltiplicazione

Il prodotto di due numeri complessi è definito come:

z1 * z2 = (a + b * i) * (c + d * i)
        = (a * c - b * d) + (b * c + a * d) * i

Reciproco

Il reciproco di un numero complesso diverso da zero è dato da:

1 / z = 1 / (a + b * i)
      = a / (a^2 + b^2) - b / (a^2 + b^2) * i

Divisione

La divisione di un numero complesso per un altro è data da:

z1 / z2 = z1 * (1 / z2)
        = (a + b * i) / (c + d * i)
        = (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i

Elevamento a potenza

Elevare e (la base del logaritmo naturale) a un esponente complesso si può esprimere usando la formula di Eulero:

e^(a + b * i) = e^a * e^(b * i)
              = e^a * (cos(b) + i * sin(b))

Requisiti di implementazione

Dato che non dovresti usare il supporto integrato per i numeri complessi, implementa le seguenti operazioni:

  • addizione di due numeri complessi
  • sottrazione di due numeri complessi
  • moltiplicazione di due numeri complessi
  • divisione di due numeri complessi
  • coniugato di un numero complesso
  • valore assoluto di un numero complesso
  • elevamento a potenza di e (la base del logaritmo naturale) a un numero complesso

Istruzioni specifiche del track

Dovrai implementare un operatore di uguaglianza per l'oggetto ComplexNumber: la sfida sarà confrontare due numeri in virgola mobile. Potrebbe esserti utile usare il metodo isApproximatelyEqual(to:absoluteTolerance:), che si trova nella libreria Numerics. Per problemi di prestazioni, avrai accesso solo alla parte RealModule. Per importarla, scrivi semplicemente import RealModule in cima al file. Una tolleranza di 0.00001 dovrebbe essere sufficiente a superare i test. La libreria è già importata nel progetto: basta importarla nel file.

Sei anche libero di implementare un metodo per confrontare i due numeri complessi.


Fonte

WikipediaIl link si apre in una nuova finestra o scheda
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Swift Exercism

Vuoi iniziare Numeri complessi?

Iscriviti a Exercism per imparare e padroneggiare Swift con 35 concetti116 esercizi e il mentoring di persone reali, tutto gratis.