Advertisement
polstephenson

Untitled

Mar 23rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. clc
  2. clear all
  3. close all
  4.  
  5. % odpowiednie fragmenty kodu można wykonać poprzez znazaczenie i wciśnięcie F9
  6. % komentowanie/ odkomentowywanie: ctrl+r / ctrl+t
  7.  
  8. % Włączanie dziennika:
  9. diary('dziennik_indeks_lab3');
  10.  
  11. % Zadanie A
  12. %------------------
  13. N = 10;
  14. density = 3; % parametr decydujący o gestosci polaczen miedzy stronami
  15. indeks = 165325 ;
  16. [Edges] = generate_network(N, 3, 165325);
  17. max(max(Edges))
  18. %-----------------
  19.  
  20. % Zadanie B
  21. %------------------
  22. % generacja macierzy I, A, B i wektora b
  23. % ...
  24. T=sparse(Edges(2,:),Edges(1,:),ones(1,length(Edges)));
  25. B=full(T);
  26. I= eye(N);
  27. A=zeros(N);
  28. for i =1:1:N
  29. A(i,i)=1/(sum(B(:,i)));
  30. end
  31.  
  32.  
  33.  
  34. M = 0.85*B;
  35. M = M*A;
  36. M = I-M;
  37. b = ones(N,1);
  38. %A = sparse(A); % macierze A, B i I muszą być przechowywane w formacie sparse (rzadkim)
  39. %B = sparse(B);
  40. %I = sparse(I);
  41. for i =1:1:N
  42. b(i)=(1-0.85)/N;
  43. end
  44. r = M\b;
  45. bar(r);
  46. save zadC indeks r
  47. save zadB_indeks A B I b
  48. %-----------------
  49.  
  50.  
  51.  
  52. % Zadanie D
  53. %------------------
  54. clc
  55. clear all
  56. close all
  57.  
  58. N = [500, 1000, 3000, 6000, 12000];
  59.  
  60. tic
  61.  
  62. for j = 1:5
  63. % obliczenia
  64. [Edges] = generate_network(N(j), 3, 165325);
  65. max(max(Edges))
  66. T=sparse(Edges(2,:),Edges(1,:),ones(1,length(Edges)));
  67. B=full(T);
  68. I= eye(N(j));
  69. A=zeros(N(j));
  70. for i =1:1:N(j)
  71. A(i,i)=1/(sum(B(:,i)));
  72. end
  73. M = 0.85*B;
  74. M = M*A;
  75. M = I-M;
  76. b = ones(N(j),1);
  77. %A = sparse(A); % macierze A, B i I muszą być przechowywane w formacie sparse (rzadkim)
  78. %B = sparse(B);
  79. %I = sparse(I);
  80. for i =1:1:N(j)
  81. b(i)=(1-0.85)/N(j);
  82. end
  83. r = M\b;
  84. czas_Gauss(j) = toc;
  85. end
  86.  
  87. %plot(N, czas_Gauss)
  88. saveas(plot(N, czas_Gauss),'zadD_165325','png')
  89. %------------------
  90.  
  91.  
  92.  
  93. % Zadanie E
  94. %------------------
  95. clc
  96. clear all
  97. close all
  98.  
  99. % przykład działania funkcji tril, triu, diag:
  100. %Z = rand(4,4)
  101.  
  102.  
  103. N = [500, 1000, 3000, 6000, 12000];
  104. tic
  105. density = 10;
  106. k =zeros(5);
  107. for j = 1:5
  108. % obliczenia
  109. [Edges] = generate_network(N(j), 10, 165325);
  110. max(max(Edges));
  111. T=sparse(Edges(2,:),Edges(1,:),ones(1,length(Edges)));
  112. B=full(T);
  113. I= eye(N(j));
  114. A=zeros(N(j));
  115. for i =1:1:N(j)
  116. A(i,i)=1/(sum(B(:,i)));
  117. end
  118.  
  119. M = 0.85*B;
  120. M = M*A;
  121. M = I-M;
  122. M=sparse(M);
  123. b= ones(N(j),1)*((1-0.85)/N(j));
  124. L=tril(M,-1);
  125. U=triu(M,1);
  126. D=diag(diag(M));
  127. res = 0;
  128. r0=ones(N(j),1)*(1/N(j));
  129.  
  130. while true
  131. k(j)=k(j)+1;
  132. r1 = (-1)*(D\(L+U)*r0 + (D\b));
  133. r0=r1;
  134. res = M*r0 - b;
  135. if norm(res)<=10^-14
  136. break;
  137. end
  138.  
  139. end
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. czas_Jacobi(j) = toc;
  148. end
  149.  
  150. plot(N, czas_Jacobi)
  151. saveas(plot(N,czas_Jacobi),'zadE_165325_1','png');
  152. semilogy(res);
  153. plot(N, k)
  154. saveas(plot(N, k),'zadE_165325_2','png');
  155. semilogy(res)
  156. saveas(semilogy(res),'zadE_165325_3','png');
  157. plot(k,1:5)
  158. %------------------
  159. diary off
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement