7
Jacobi Iteration: How does it work?
•program Jacobi;
•config var n : integer = 512;
•         eps : float = 0.00001;
•
•region     R = [1..n, 1..n];
•        BigR = [0..n+1,0..n+1];
•direction  N = [-1, 0];  S = [ 1, 0];
•           E = [ 0, 1];  W = [ 0,-1];
•var     Temp : [R] float;
•           A : [BigR] float;
•         err : float;
•
•procedure Jacobi();
•    [R] begin
• [BigR] A := 0.0;
•[S of R] A := 1.0;
• repeat
•   Temp := (A@N + A@E + A@S + A@W)/4.0;
•   err  := max<< abs(Temp - A);
•   A    := Temp;
• until err < eps;
•   end;
•end;
Think of averaging the 4 nearest neighbors as whole array operations
:=
(
+
+
+
)/4.0;