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.
Il coniugato del numero complesso z = a + b * i è dato da:
zc = a - b * i
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
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
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
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
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
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
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))
Dato che non dovresti usare il supporto integrato per i numeri complessi, implementa le seguenti operazioni:
L'implementazione dei numeri complessi in Julia Base si trova qui: https://github.com/JuliaLang/julia/blob/master/base/complex.jl.
Puoi lavorare sugli esercizi bonus che riguardano l'aritmetica tra numeri reali e numeri complessi togliendo il commento da:
# enable_realcomplex_tests = true nello stub complex-numbers.jl o in runtests.jl
Puoi lavorare sugli esercizi bonus tra numeri reali e numeri complessi togliendo il commento da:
# enable_syntaxsugar_tests = true nello stub complex-numbers.jl o in runtests.jl
Poi, implementa jm in modo analogo a im, così che 1 + 1jm == ComplexNumber(1, 1).
Iscriviti a Exercism per imparare e padroneggiare Julia con 35 concetti128 esercizi e il mentoring di persone reali, tutto gratis.