Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Joanna Binek
- %skrypt docelowo wyświetla wszystkie 9 portretów fazowych, ale umożlwia
- %również wyświetlenie dowolnej ilości przez modyfikację zmiennej portrety w
- %linii 36 która zawiera indeksy portretów do wyrysowania zgodnie z podaną
- %niżej kolejnością:
- %1.punkt
- %2.proste poziome
- %3.proste pionowe
- %4.węzeł
- %5.węzeł gwiaździsty
- %6.węzeł zdegenerowany
- %7.siodło
- %8.centrum
- %9.ognisko
- %ustawienie macierzy przejścia P na jednostkową o wymiarze 2x2
- P=eye(2);
- %pomocnicza macierz P wykorzystana przy testowaniu wpływu wektorów własnych
- %na portrety fazowe
- %P=[ 50 10;-10 50 ];
- %stworzenie listy macierzy Jordana zgodnie z kolejnością jak na rysunku 1.10
- JordanList(:,:,1)=[ 0 0;0 0];
- JordanList(:,:,2)=[ 0 1;0 0];
- JordanList(:,:,3)=[ 0 0;0 -1];
- JordanList(:,:,4)=[-2 0;0 -1];
- JordanList(:,:,5)=[-1 0;0 -1];
- JordanList(:,:,6)=[-1 1;0 -1];
- JordanList(:,:,7)=[-1 0;0 1];
- JordanList(:,:,8)=[ 0 -1;1 0];
- JordanList(:,:,9)=[-1 -1; 1 -1];
- portrety=[4 8 2]; %indeksy rozważanych portretów fazowych (potrzebne do pętli)
- %stworzenie listy tytułów dla odpowiednich portretów fazowych
- titleList = {
- 'punkt {\lambda_1}={\lambda_2}=0 z dzielnikiem liniowym'
- 'proste poziome {\lambda_1}={\lambda_2}=0 z dzielnikiem nieliniowym'
- 'proste pionowe {\lambda_1}=0 {\lambda_2}=-1'
- 'węzeł {\lambda_1}=-2 {\lambda_2}=-1'
- 'węzeł gwiaździsty{\lambda_1}={\lambda_2}=-1 z dzielnikiem liniowym'
- 'węzeł zdegenerowany{\lambda_1}={\lambda_2}=-1 z dzielnikiem nieliniowym'
- 'siodło {\lambda_1}=-1 {\lambda_2}=1'
- 'centrum {\lambda_1}=0 + i {\lambda_2}=0 - i'
- 'ognisko {\lambda_1}= -1 + i {\lambda_2}= -1 - i'
- };
- i=1; %licznik pomocniczy do wstawiania do listy z WPC
- for x=-3*pi:3*pi %wybrany zakres
- for y=-3*pi:3*pi
- WPC_list(:,:,i)=[x;y]; %wstawienie do listy z WPC
- i=i+1;
- end
- end
- open('model1') %otwarcie modelu
- for portrety=portrety
- figure()
- J=JordanList(:,:,portrety); %wybranie odpowiedniej macierzy Jordana z listy w zależności od wybranej z menu opcji
- A=P*J*P^-1; %reprezentacja macierzy A jako iloczyn macierzy P * macierz Jordana * odwrócona macierz P
- hold on; % rysowanie w aktywnym oknie, bez tracenia poprzednich wykresów
- for k=1:i-1 %przejście przez listę WPC
- WPC=WPC_list(:,:,k); %wybranie odpowiedniego WPC
- sim('model1') %przeprowadzenie symulacji
- x1 = x(:, 1); % wybieranie x1
- x2 = x(:, 2); % wybieranie x2
- plot(x1,x2,'k') %narysowanie wykresu
- end
- %wykreślenie prostych powiązanych z wektorami własnymi
- punkty=P(:,1).*linspace(-20,20);
- line(punkty(1,:),punkty(2,:),'Color','green','LineStyle','--')
- punkty=P(:,2).*linspace(-20,20);
- line(punkty(1,:),punkty(2,:),'Color','green','LineStyle','--')
- % %używam funkcji plotv żeby zaznaczyć na wykresie wektory własne z
- % macierzy P
- plotv(P(:,1),'-') %wektor pierwszy
- plotv(P(:,2),'-') %wektor drugi
- hold off; %wyłączenie opcji rysowania wielu wykresów w 1 oknie
- title(strcat('Portret fazowy typu: ', titleList(portrety))); %nadanie tytułu wykresu
- xlabel('x1'); %podpisanie osi
- ylabel('x2');
- xlim([-10 10]); % ustawienie zakresu na osiach
- ylim([-10 10]);
- grid on; % ustawienie siatki
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement