#---------------------------------------------
#
# e ora un esempio di somma e prodotto di numeri complessi
z1 = 1 + 0.5i
z2 = 0.5 + 1i

# prepariamo un plot senza niente
plot(NULL, xlim=c(-0.5,2), ylim=c(-0.5,2), xlab='Re()', ylab='Im()', asp=1)
grid()

# ci mettiamo i due numeri
z=z1;
points(z, pch=19, col='blue'); lines( c(0, Re(z)), c( 0, Im(z)), col='blue')
text(z, " z1", pos=4, col='blue')
z=z2
points(z, pch=19, col='blue'); lines( c(0, Re(z)), c( 0, Im(z)), col='blue')
text(z, " z2", pos=4, col='blue')

# e la somma
z=z1+z2
points(z, pch=19, col='red'); lines( c(0, Re(z)), c( 0, Im(z)), col='red')
text(z, " z1 + z2", pos=4, col='red')

# e poi il prodotto
z=z1*z2
points(z, pch=19, col='green'); lines( c(0, Re(z)), c( 0, Im(z)), col='green')
text(z, " z1 * z2", pos=4, col='green')

# interessante proprietà del prodotto
#
Mod(z1)    ; cat (sprintf("Mod(z1): %.2f\n", Mod(z1)))
Mod(z2)    ; cat (sprintf("Mod(z2): %.2f\n", Mod(z2))) 
Mod(z1*z2) ; cat (sprintf("Mod(z1*z2): %.2f\n", Mod(z1*z2)))
Mod(z1)*Mod(z2) ; cat (sprintf("Mod(1)*Mod(z2): %.2f\n", Mod(z1)*Mod(z2)))

# la funzione Arg() 'ritorna' la fase del numero complesso
Arg(z1)    ; cat (sprintf("Arg(z1): %.2f\n", Arg(z1)))
Arg(z2)    ; cat (sprintf("Arg(z2): %.2f\n", Arg(z2)))
Arg(z1*z2) ; cat (sprintf("Arg(z1*z2): %.2f\n", Arg(z1*z2)))
Arg(z1)+Arg(z2) ; cat (sprintf("Arg(1)+Arg(z2): %.2f\n", Arg(z1)+Arg(z2)))

# Provare con altre coppie z1 e z2
# (eventualmente cambiando i limiti del plot -- importante 'asp=1' !)
