Vitsi piilee siinä, että tavallisten vektorilaskutoimitusten
z1+z2 = (x1+x2,y1+y2) c z = (c x, c y)lisäksi määritellään R2:n vektoreille kertolasku
z1z2 = (x1x2-y1y2,x1y2+x2y1)Määritelmä Kompleksilukujoukko C on reaalinen vektoriavaruus R2 varustettuna lisäksi edellä määritellyllä kertolaskulla.
Muistisääntö kertolaskuun: (Vastinalkioiden tulojen erotus, ristiinkerrottujen summa)
(x1,0)+(x2,0)=(x1+x2,0) ja (x1,0)(x2,0)=(x1x2,0)
Jokainen kompleksiluku z=(x,y) voidaan esittää kannan{(1,0),(0,1)} avulla:
z=x(1,0)+y(0,1)(Huomaa, että reaalisella skalaarilla kertominen (VA-mielessä) on samaa kuin reaalisella kompleksiluvulla kertominen kompleksikertomielessä.)
> z1:=8+3*I; z2:=9-2*I; z1 := 8 + 3 I z2 := 9 - 2 I > z1-z2; -1 + 5 I > z1*z2; 78 + 11 I > z1/z2; 66 43 -- + -- I 85 85 > z1:=x1+I*y1;z2:=x2+I*y2; z1 := x1 + I y1 z2 := x2 + I y2 > z1/z2; x1 + I y1 --------- x2 + I y2 > evalc(%); x1 x2 y1 y2 / y1 x2 x1 y2 \ --------- + --------- + I |--------- - ---------| 2 2 2 2 | 2 2 2 2| x2 + y2 x2 + y2 \x2 + y2 x2 + y2 /
» format compact » z1=8+3*i;z2=9-2*i; » z1-z2 ans = -1.0000 + 5.0000i » z1*z2 ans = 78.0000 +11.0000i » z1/z2 ans = 0.7765 + 0.5059i » format long;z1/z2 ans = 0.77647058823529 + 0.50588235294118iSymbolista osaa ei Matlabilla voi tehdä (paitsi Maplea kutsuvan symbolic toolboxin avulla, mutta mukavampaa suoraan Maplella toki).
conjugate, abs, argument, Re, ImSievennykseen
evalc, expand, collect
Jos z:=x+I*y; , niin xy:=[Re(z),Im(z)];
Jos on annettu kompleksilukujen lista zlista:=[z1,z2,..,zn] , saadaan xylista elegantisiti määrittelemällä ensin funkio:
z2xy:=z->[Re(z),Im(z)];Se sitten map:ataan zlistalle:
xylista:=map(z2xy,zlista);Esim.
> z2xy:=z->[Re(z),Im(z)]; z2xy := z -> [Re(z), Im(z)] > z:=1+2*I: zlista:=[z,(z-1/2)^2,5*z/(-1+2*I)]; zlista := [1 + 2 I, -15/4 + 2 I, 3 - 4 I] > xylista:=map(z2xy,zlista); xylista := [[1, 2], [-15/4, 2], [3, -4]] >plot(xylista,style=point,symbol=circle,scaling=constrained,labels=["Re > ","Im"]);
complexplot([seq((x+k*I),k=[-1,-0.5,0,0.5,1])],x=-Pi..Pi);complexplot( > [seq((exp(x+k*I)),k=[-1,-0.5,0,0.5,1])],x=-Pi..Pi,color=blue);Sitten sama pystyjanaparvelle
> complexplot([seq((k+y*I),k=[-1,-0.5,0,0.5,1])],y=-Pi..Pi);complexplot( > [seq((exp(k+y*I)),k=[-1,-0.5,0,0.5,1])],y=-Pi..Pi,color=blue);Kompleksilukupisteiden piirto sujuu niinikään vaivattomasti: > l := [1+2*I, 3+4*I, 5-I, 7-8*I]: > complexplot(l, x=0..10, style=point);
> with(plots): > w:=(k,n)->exp(I*2*k*Pi/n); # ykkösen n:nnet juuret. > n:=8: pisteet:=complexplot([seq(w(k,n),k=0..n-1)],x=-1..1,style=point,scaling=constrained): > ymp:=complexplot(exp(I*t),t=0..2*Pi,color=blue): > display([pisteet,ymp],scaling=constrained);