Advertisement
DMG

SOLE :: Successive over-relaxation

DMG
Oct 30th, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 0.63 KB | None | 0 0
  1. function [x] = successive_over_relaxation(A, b, x_1, max_error, max_iter, omega)
  2.    
  3.     [rows, cols] = size(A);
  4.    
  5.     if rows ~= cols
  6.         return;
  7.     end
  8.    
  9.     x = x_1;
  10.     for counter = 1: max_iter
  11.         for i = 1:rows
  12.             sum = 0;
  13.             for j = 1:i-1
  14.                 sum = sum + x(j)*A(i, j);
  15.             end
  16.            
  17.             for j = i+1:cols
  18.                 sum = sum + x_1(j)*A(i, j);
  19.             end
  20.             x(i) = (1 - omega)*x_1(i) + omega*(b(i) - sum)/A(i, i);
  21.         end
  22.        
  23.         if abs(x-x_1) < max_error
  24.             break
  25.         end
  26.  
  27.         x_1 = x;
  28.     end
  29. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement