Facebook
From dzigli14, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 192
  1. %zad1
  2.  
  3. N = 10;
  4. d = 0.85;      
  5.  
  6. Edges = [1, 1, 2, 2, 2, 2, 3, 3, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 10, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4;
  7.                  2, 4, 3, 7, 8, 10, 1, 7, 7, 2, 4, 5, 8, 4, 5, 6, 7, 8, 5, 8, 1, 2, 3, 5, 6, 7, 8, 9, 10];
  8.  
  9. % Skonstruuj macierze A, B, I i wektor b dla po³¹czeñ wygenerowanych w Zadaniu A dla parametru d = 0.85.
  10. % Wszystkie macierze powinny byæ przechowywane w formacie sparse, poniewa¿ s¹ to macierze rzadkie
  11. I = eye(N);
  12. B = full(sparse(Edges(2, :), Edges(1, :), 1));
  13. A = diag(1./sum(B));
  14. b = [];
  15. b = ((1 - d) / N) * ones(N, 1);
  16.  
  17. M = I - d*B*A;
  18. r = M\b;
  19. r = r / norm(r);
  20.  
  21.  
  22. %zad2
  23. N = 10;
  24. d = 0.85;      
  25.  
  26. Edges = [1, 1, 2, 2, 2, 2, 3, 3, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 10, 10, 4, 4, 4, 4, 4, 4, 4, 4, 4;
  27.                  2, 4, 3, 7, 8, 10, 1, 7, 7, 2, 4, 5, 8, 4, 5, 6, 7, 8, 5, 8, 1, 2, 3, 5, 6, 7, 8, 9, 10];
  28.  
  29. % Skonstruuj macierze A, B, I i wektor b dla po³¹czeñ wygenerowanych w Zadaniu A dla parametru d = 0.85.
  30. % Wszystkie macierze powinny byæ przechowywane w formacie sparse, poniewa¿ s¹ to macierze rzadkie
  31. I = eye(N);
  32. B = full(sparse(Edges(2, :), Edges(1, :), 1));
  33. A = diag(1./sum(B));
  34. b = [];
  35. b = ((1 - d) / N) * ones(N, 1);
  36.  
  37. M = I - d*B*A;
  38.  
  39. D = diag(diag(M));
  40. L = tril(M) - D;
  41. U = triu(M) - D;
  42.  
  43. % Jacobi %
  44. LU = L + U;
  45. D_inv = inv(D);
  46. r = ones(N, 1)./N;
  47.  
  48. k = 0;
  49. tic;
  50. while norm(M*r - b) > 10^-14
  51.         r = -D_inv * LU * r + D_inv * b;
  52.         k = k + 1;
  53. end
  54. time = toc
  55. k
  56.  
  57. % Gauss-Seidl %
  58. DL = (D + L);
  59. r = ones(N, 1)./N;
  60.  
  61. k = 0;
  62. tic;
  63. while norm(M*r - b) > 10^-14
  64.         r = ((-DL) \ (U * r)) + (DL \ b);
  65.         k = k + 1;
  66. end
  67. time = toc
  68. k