Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement