Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. %% Project 2 part 1
  2. clear
  3. M = rand(5);
  4.  
  5. A = transpose(M)*M;
  6.  
  7. b = [3; 3; 3; 3; 3];
  8. x_0 = [0; 0; 0; 0; 0];
  9.  
  10. eps = 10^-8;
  11.  
  12. x = x_0;
  13.  
  14. r_old = b - A*x;
  15.  
  16. p = r_old;
  17.  
  18. eps = eps*norm(r_old);
  19.  
  20. while norm(r_old) > eps
  21. alph = (transpose(r_old)*r_old)/(transpose(p)*A*p);
  22.  
  23. x = x + alph*p;
  24. r_new = r_old - alph*A*p;
  25. Beta = (transpose(r_new)*(r_new-r_old))/(transpose(r_old)*r_old);
  26. p = r_new + Beta*p;
  27. r_old = r_new;
  28. end
  29.  
  30.  
  31.  
  32. ConjugateGradient(A, x_0, b)
  33.  
  34.  
  35. M25 = rand(2^5);
  36. A25 = transpose(M25)*M25;
  37. x_025 = []
  38. for i = 1:2^5
  39. x_025 = [ x_025; 0]
  40. end
  41. b_25 = []
  42. for i = 1:2^5
  43. b_25 = [ b_25; 3]
  44. end
  45.  
  46.  
  47. [x1, iter1] = ConjugateGradient(A25, x_025, b_25)
  48.  
  49. M26 = rand(2^6);
  50. A26 = transpose(M26)*M26;
  51. x_026 = []
  52. for i = 1:2^6
  53. x_026 = [ x_026; 0]
  54. end
  55. b_26 = []
  56. for i = 1:2^6
  57. b_26 = [ b_26; 3]
  58. end
  59. [x2, iter2] = ConjugateGradient(A26, x_026, b_26)
  60.  
  61. M27 = rand(2^7);
  62. A27 = transpose(M27)*M27;
  63. x_027 = []
  64. for i = 1:2^7
  65. x_027 = [ x_027; 0]
  66. end
  67. b_27 = []
  68. for i = 1:2^7
  69. b_27 = [ b_27; 3]
  70. end
  71. [x3, iter3] = ConjugateGradient(A27, x_027, b_27)
  72.  
  73. M28 = rand(2^8);
  74. A28 = transpose(M28)*M28;
  75. x_028 = []
  76. for i = 1:2^8
  77. x_028 = [ x_028; 0]
  78. end
  79. b_28 = []
  80. for i = 1:2^8
  81. b_28 = [ b_28; 3]
  82. end
  83. [x4, iter4] = ConjugateGradient(A28, x_028, b_28)
  84.  
  85. M29 = rand(2^9);
  86. A29 = transpose(M29)*M29;
  87. x_029 = []
  88. for i = 1:2^9
  89. x_029 = [ x_029; 0]
  90. end
  91. b_29 = []
  92. for i = 1:2^9
  93. b_29 = [ b_29; 3]
  94. end
  95. [x5, iter5] = ConjugateGradient(A29, x_029, b_29)
  96.  
  97. M210 = rand(2^10);
  98. A210 = transpose(M210)*M210
  99. x_0210 = []
  100. for i = 1:2^10
  101. x_0210 = [ x_0210; 0]
  102. end
  103. b_210 = []
  104. for i = 1:2^10
  105. b_210 = [ b_210; 3]
  106. end
  107. [x6, iter6] = ConjugateGradient(A210, x_0210, b_210)
  108.  
  109. iters = [iter1, iter2, iter3, iter4, iter5, iter6]
  110.  
  111. iter_ratio = [iters./[2^5, 2^6, 2^7, 2^8, 2^9, 2^10]]
  112.  
  113. figure(1)
  114. plot([2^5, 2^6, 2^7, 2^8, 2^9, 2^10],iter_ratio, '-k')
  115. title('Ratio of Iterations to Matrix Size per Matrix Size')
  116. xlabel('Matrix Size')
  117. ylabel('Ratio of Iterations to Matrix Size')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement