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