Przemysław Kajetanowicz
Pakiety matematyczne WPPT II r. sem. zimowy 2002/2003
MATLAB - rysowanie pierwiastków zespolonych z 1 na płaszczyźnie.
Następujący program rysuje pierwiastki zespolone podanego stopnia z liczby 1 (dla Twojej wygody cały program jest zapisany w pliku rysujpierwiastki.m). Program został napisany w postaci funkcji. Wywołanie tej funkcji bez parametrów powoduje, że użytkownik jest pytany o stopień pierwiastków. Kliknij ikonę rysunku niżej, aby zobaczyć wynik działania programu.
pierwiastki.jpg(kliknij w obrazek, aby go zobaczyć w powiększeniu)
pierwiastki.jpg
function rysujpierwiastki(n);
%RYSUJPIERWIASTKI funkcja rysuje na plaszczyznie zespolonej
%pierwiastki zespolone stopnia n z liczby 1
%RYSUJPIERWIASTKI powoduje żądanie wprowadzenia n przez użytkownika
%RYSUJPIERWIASTKI(n) - program przyjmuje za n podany parametr
if nargin == 0
n=input('Podaj stopień n pierwiastków (Enter = rezygnacja) : ');
end;
if isempty(n)
disp('Dane nie wprowadzone - program zakończony')
return
end;
if length(n) > 1
n = n(1);
end
clf;
%wektor alfa zawiera argumenty pierwiastkow
alfa = (2*pi./n)*[0:n]; % alfa = [0, 2pi/n, 4pi/n, ..., n*2pi/n]
%wektor w zawiera wartosci pierwiastkow
w = exp(i*alfa);% pamietamy, ze exp(i*alfa) = cos(alfa) + i sin(alfa)
%wektor t zawiera odcinek [0,2pi] podzielony na 500 punktow
t = linspace(0,2*pi,500); %dzielimy
%wektory x i y zawieraja wspolrzedne punktow okregu jednostkowego
x = cos(t); y = sin(t);%równania parametryczne okręgu jednostkowego
%pokazujemy wczesniej okno graficzne
shg;
%rysujemy wykres okręgu jednostkowego; opcja 'r-' - czerwona ciągła linia
plot(x,y,'r-','LineWidth',1);
%nastepna funkcja pozwala ukryc menu w oknie graficznym;
%set(gcf,'MenuBar','None')
tytulstr = sprintf(...
'Pierwiastki zespolone stopnia %d z jedności',n);
title(['\bf' tytulstr],'Color','r');
axis([-1.3 1.3 -1.3 1.3]);
axis equal;%(aby nie było zniekształceń wynikających z AspectRatio);
hold on; %"nie kasuj bieżącego obrazka przy malowaniu następnego"
%rysujemy pierwiastki bez laczacej je linii, ale tak, żeby byla animacja
plot(real(w),imag(w),'bo','MarkerFaceColor','g','MarkerSize',4);
%rysujemy kat odpowiadajacy pierwiastkowi podstawowemu
plot([0 1],[0 0],'b-');
plot([0 cos(2*pi./n)],[0 sin(2*pi./n)],'b-');
r = 0.3; %pomocniczy promien do narysowania łuku
t = linspace(0,2*pi/n,100);
plot(r*cos(t),r*sin(t),'k-');
%teraz sformatujemy napis zawierający wartość argumentu podst. pierwiastka
switch n
case 1
anglestr = '2 \pi'
case 2
anglestr = ' \pi'
otherwise
if rem(n,2)==0
anglestr = [' \pi /' num2str(n/2)]
else
anglestr = ['2 \pi /' num2str(n)];
end
end;
%wyprowadzimy tekst na rysunek
text(2*r*cos(pi/n),2*r*sin(pi/n),anglestr,...
'HorizontalAlignment','Left','VerticalAlignment','Middle','Color','r');
hold off;