I numeri complessi con Octave

I numeri complessi con Octave
Prof. Fernando D’Angelo
27/02/09
Per cominciare
Un numero complesso si definisce in modo naturale:
„ > z=2-3i
„ z = 2 - 3i
Calcolo del complesso coniugato:
„ > conj(z)
„ ans = 2 + 3i
Calcolo del modulo o valore assoluto:
„ >abs(z)
„ ans=3.6056
Calcolo dell’argomento o anomalia:
„ >angle(z)
„ ans=-0.98279
Con l’istruzione:
„ > compass(z)
Si ottiene la rappresentazione del numero
complesso mediante un vettore nel piano di
Gauss. Esempio:
>z=2-3i
>compass(z)
4
2
0
-4
-2
0
-2
-4
2
4
Modulo di un numero complesso
„
„
„
„
ro=sqrt(z*conj(z))
ans=3.6056
z= a+ib
z*=conj(z)=a-ib
zz*=(a+ib)*(a-ib)=a^2-(ib)^2=a^2+b^2
ro=sqrt(a^2+b^2)
Teorema di Pitagora
Forma goniometria di un numero complesso:
„
> z1=abs(z)*(cos(angle(z))+i*sin(angle(z)))
„
ans=2-3i
„
> z2=abs(z)*(cos(-angle(z))+i*sin(-angle(z)))
ans=2+3i
„
Forma goniometrica
z=2-3i
> z1=abs(z)*(cos(angle(z))+i*sin(angle(z)))
ans=2-3i
> z2=abs(z)*(cos(-angle(z))+i*sin(-angle(z)))
ans=2+3i
3
2
1
0
-3
-2
-1
0
-1
-2
-3
1
2
3
Un semplice programma per
calcolare le radici di un numero
complesso
clear all;
disp('di quale numero vuoi calcolare le radici complesse?')
z=input('inserisci il numero z ')
n=input('quanto vale n? ')
#calcolo del modulo di z
ro=abs(z);
#calcolo del modulo della radice ennesima di z
ro1=ro^(1/n);
#calcolo dell’argomento di z
theta=angle(z);
#ciclo per il calcolo delle n radici
for k=1:n
zr(k)=ro1*(cos((theta+(k-1)*2*pi)/n)+i*sin((theta+(k1)*2*pi)/n));
endfor
#ciclo per creare i vettori delle parti reali e
immaginarie
for k=1:n
x(k)=real(zr(k));
y(k)=imag(zr(k));
endfor;
x(n+1)=x(1);
y(n+1)=y(1);
#calcolo dei vettori per disegnare la
circonferenza
t=0:0.1:2*pi;
xc=ro1*cos(t);
yc=ro1*sin(t);
#scrittura delle n radici di z
disp('le radici di ')
disp(z)
disp('sono:')
zr
#disegna i vettori corrispondenti alle radici nel piano
di Gauss
compass(zr);
hold on;
#disegna la circonferenza avente per raggio il
modulo della radice ennesima di z
plot(xc,yc,'g');
hold on;
#disegna i punti corrispondenti alle radici nel piano
di Gauss
plot(x,y,'ro-');
#imposta il rapporto di aspetto
set(gca,'dataaspectratio',[1,1.4,1]);
hold off
Rappresentare nel piano le soluzioni
di una disequazione in campo
complesso
z
≥1
z + i ⋅ Re( z )
z
≥1
z + i Re( z )
Programma per rappresentare graficamente le
soluzioni della precedente disequazione.
Creiamo nel piano di Gauss 250x250 punti
appartenenti al quadrato di dimensioni
[-10,10]x[-10,10] e verifichiamo per ciascuno di
essi se la disequazione è soddisfatta; i punti
che verificano la disequazione vengono
memorizzati in una matrice che poi viene
graficata
#inizializzazione dei vettori
n=250;
x=linspace(-10,10,n);
y=linspace(-10,10,n);
vx=zeros(n,n);
vy=zeros(n,n);
for j=1:n
kk=0;
for k=1:n
z(j,k)=x(j)+i*y(k);
if abs(z(j,k)/(z(j,k)+i*real(z(j,k))))>=1
kk=kk+1;
vx(j,kk)=x(j);
vy(j,kk)=y(k);
endif
endfor
endfor
plot(vx,vy,'ro')
set(gca,'dataaspectratio',[1,1.5,1]);
axis([-10,10,-10,10])
grid on