function WIP( maxit,n,eps )
h = 1/(n-1);
x = (0:h:1);
y = (0:h:1);
tol = eps;
k = 0;
a = zeros(n,n);
b = zeros(n,n);
T = zeros(n,n);
f = @(X,Y) X^2*Y^2;
g = @(X,Y) 2*(X^2+Y^2);
done = false;
c = 0;
for k = 1:n
a(1,k) = f(x(1),y(k));
a(n,k) = f(x(n),y(k));
a(k,1) = f(x(k),y(1));
a(k,n) = f(x(k),y(n));
b(1,k) = f(x(1),y(k));
b(n,k) = f(x(n),y(k));
b(k,1) = f(x(k),y(1));
b(k,n) = f(x(k),y(n));
end
for i = 1:n
for j = 1:n
T(i,j) = f(x(i),y(j));
end
end
for i = 1:n
for j = 1:n
b(i,j) = (1-x(i))*a(1,j) + x(i)*a(n,j) + (1-y(j))*a(i,1) + ...
y(j)*a(i,n) - (1-y(j))*(1-x(i))*a(1,1) - (1-y(j))*x(i)*a(n,1) ...
- y(j)*(1-x(i))*a(1,n) - x(i)*y(j)*a(n,n);
end
end
while ~done
denom = norm((b-a),inf);
k = k+1;
a = b;
for j=2:n-1
for i=2:n-1
b(i,j) = (a(i+1,j) + a(i,j+1) + a(i-1,j) + a(i,j-1) - (h^2)*g(i,j))/4;
end
end
numer = norm((b-a),inf);
if c < (numer/denom) && (numer/denom) < 1
c = numer/denom;
end
if numer < tol
done = true;
end;
if k > maxit
done = true;
end
end
fprintf('\n\nGAUSS-JACOBI METHOD\n\n');
fprintf('N = %d\n\n',n);
fprintf('Number of Iterations = %d\n\n',k);
fprintf('maximum c = %.16f\n\n',c);
est_error = (c/(1-c))*norm((b-a),inf);
true_error = norm((T-b),inf);
fprintf('Estimated Error = %.16f',est_error);
fprintf('\n\nTrue Error = %.16f',true_error);
fprintf('\n\n');
end