SHARE
TWEET

Untitled

a guest Dec 12th, 2018 63 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %Joanna Binek
  2.  
  3. %skrypt docelowo wyświetla wszystkie 9 portretów fazowych, ale umożlwia
  4. %również wyświetlenie dowolnej ilości przez modyfikację zmiennej portrety w
  5. %linii 36 która zawiera indeksy portretów do wyrysowania zgodnie z podaną
  6. %niżej kolejnością:
  7. %1.punkt
  8. %2.proste poziome
  9. %3.proste pionowe
  10. %4.węzeł
  11. %5.węzeł gwiaździsty
  12. %6.węzeł zdegenerowany
  13. %7.siodło
  14. %8.centrum
  15. %9.ognisko
  16.  
  17. %ustawienie macierzy przejścia P na jednostkową o wymiarze 2x2
  18. P=eye(2);
  19.  
  20. %pomocnicza macierz P wykorzystana przy testowaniu wpływu wektorów własnych
  21. %na portrety fazowe
  22. %P=[ 50 10;-10 50 ];
  23.  
  24.  
  25. %stworzenie listy macierzy Jordana zgodnie z kolejnością jak na rysunku 1.10
  26. JordanList(:,:,1)=[ 0  0;0  0];
  27. JordanList(:,:,2)=[ 0  1;0  0];
  28. JordanList(:,:,3)=[ 0  0;0 -1];
  29. JordanList(:,:,4)=[-2  0;0 -1];
  30. JordanList(:,:,5)=[-1  0;0 -1];
  31. JordanList(:,:,6)=[-1  1;0 -1];
  32. JordanList(:,:,7)=[-1  0;0  1];
  33. JordanList(:,:,8)=[ 0 -1;1  0];
  34. JordanList(:,:,9)=[-1 -1; 1 -1];
  35.  
  36. portrety=[4 8 2]; %indeksy rozważanych portretów fazowych (potrzebne do pętli)
  37.  
  38.  
  39. %stworzenie listy tytułów dla odpowiednich portretów fazowych
  40. titleList = {
  41.     'punkt {\lambda_1}={\lambda_2}=0 z dzielnikiem liniowym'
  42.     'proste poziome {\lambda_1}={\lambda_2}=0 z dzielnikiem nieliniowym'
  43.     'proste pionowe {\lambda_1}=0 {\lambda_2}=-1'
  44.     'węzeł {\lambda_1}=-2 {\lambda_2}=-1'
  45.     'węzeł gwiaździsty{\lambda_1}={\lambda_2}=-1 z dzielnikiem liniowym'
  46.     'węzeł zdegenerowany{\lambda_1}={\lambda_2}=-1 z dzielnikiem nieliniowym'
  47.     'siodło {\lambda_1}=-1 {\lambda_2}=1'
  48.     'centrum {\lambda_1}=0 + i {\lambda_2}=0 - i'
  49.     'ognisko {\lambda_1}= -1 + i {\lambda_2}= -1 - i'
  50. };
  51.  
  52.  
  53. i=1;  %licznik pomocniczy do wstawiania do listy z WPC
  54. for x=-3*pi:3*pi %wybrany zakres
  55.     for y=-3*pi:3*pi
  56.     WPC_list(:,:,i)=[x;y];  %wstawienie do listy z WPC
  57.     i=i+1;
  58.     end
  59. end
  60.  
  61. open('model1')   %otwarcie modelu
  62. for portrety=portrety
  63.     figure()
  64.     J=JordanList(:,:,portrety);  %wybranie odpowiedniej macierzy Jordana z listy w zależności od wybranej z menu opcji
  65.     A=P*J*P^-1;  %reprezentacja macierzy A jako iloczyn macierzy P * macierz Jordana * odwrócona macierz P
  66.    
  67.     hold on;  % rysowanie w aktywnym oknie, bez tracenia poprzednich wykresów
  68.     for k=1:i-1  %przejście przez listę WPC
  69.         WPC=WPC_list(:,:,k);  %wybranie odpowiedniego WPC
  70.         sim('model1')  %przeprowadzenie symulacji
  71.         x1 = x(:, 1); % wybieranie x1
  72.         x2 = x(:, 2); % wybieranie x2
  73.         plot(x1,x2,'k')  %narysowanie wykresu
  74.     end
  75.  
  76.  
  77.      %wykreślenie prostych powiązanych z wektorami własnymi
  78.     punkty=P(:,1).*linspace(-20,20);
  79.     line(punkty(1,:),punkty(2,:),'Color','green','LineStyle','--')
  80.    
  81.     punkty=P(:,2).*linspace(-20,20);
  82.     line(punkty(1,:),punkty(2,:),'Color','green','LineStyle','--')
  83.  
  84. %     %używam funkcji plotv żeby zaznaczyć na wykresie wektory własne z
  85. %     macierzy P
  86.       plotv(P(:,1),'-')  %wektor pierwszy
  87.       plotv(P(:,2),'-')  %wektor drugi
  88.      
  89.    
  90.     hold off;  %wyłączenie opcji rysowania wielu wykresów w 1 oknie  
  91.        
  92.     title(strcat('Portret fazowy typu: ', titleList(portrety))); %nadanie tytułu wykresu
  93.     xlabel('x1'); %podpisanie osi
  94.     ylabel('x2');
  95.     xlim([-10 10]); % ustawienie zakresu na osiach
  96.     ylim([-10 10]);
  97.     grid on; % ustawienie siatki
  98.    
  99.    
  100. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top