Andrew Sommese 2004restart;N := 4;h:=1.0/(N+1);with(LinearAlgebra):lower:= x -> exp(x)*cos(0);upper := x -> exp(x)*cos(1.0);left := y -> cos(y);right := y -> exp(1.0)*cos(y);H := Matrix(N+2,N+2,0):
trueSol := Matrix(N+2,N+2):
for i from 0 to N+1 do for j from 0 to N+1 do trueSol[i+1,j+1]:=exp(i*h)*cos(j*h);od:od:trueSol;for i from 1 to N+2 do H[i,1] := lower((i-1)*h); od:for i from 1 to N+2 do H[i,N+2] := upper((i-1)*h); od:for j from 1 to N+2 do H[N+2,j] := right((j-1)*h); od:for j from 1 to N+2 do H[1,j] := left((j-1)*h); od:aver:= (H,i,j) -> (H[i-1,j]+H[i+1,j]+H[i,j+1]+H[i,j-1])/(4);GSRedBlack := proc(H,N,NumberOfIter)
local i,j,k;
for k from 1 to NumberOfIter dofor j from 1 to N dofor i from 1 to N do if ((i+j) mod 2 =1) then H[i+1,j+1] := aver(H,i+1,j+1) fi; od:od:for j from 1 to N do
for i from 1 to N do if ((i+j) mod 2 =0) then H[i+1,j+1] := aver(H,i+1,j+1) fi; od:od:od:return(H);end proc;GSRedBlack(H,N,1);GSRedBlack(H,N,9);Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,20);
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,20);
Norm(MatrixAdd(H,-trueSol));N := 8;h:=1.0/(N+1);H := Matrix(N+2,N+2,0):
trueSol := Matrix(N+2,N+2):
for i from 0 to N+1 do for j from 0 to N+1 do trueSol[i+1,j+1]:=exp(i*h)*cos(j*h);od:od:for i from 1 to N+2 do H[i,1] := lower((i-1)*h); od:for i from 1 to N+2 do H[i,N+2] := upper((i-1)*h); od:for j from 1 to N+2 do H[N+2,j] := right((j-1)*h); od:for j from 1 to N+2 do H[1,j] := left((j-1)*h); od:GSRedBlack(H,N,40):
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,40):
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,80):
Norm(MatrixAdd(H,-trueSol));N := 20;h:=1.0/(N+1);H := Matrix(N+2,N+2,0):
trueSol := Matrix(N+2,N+2):
for i from 0 to N+1 do for j from 0 to N+1 do trueSol[i+1,j+1]:=exp(i*h)*cos(j*h);od:od:for i from 1 to N+2 do H[i,1] := lower((i-1)*h); od:for i from 1 to N+2 do H[i,N+2] := upper((i-1)*h); od:for j from 1 to N+2 do H[N+2,j] := right((j-1)*h); od:for j from 1 to N+2 do H[1,j] := left((j-1)*h); od:GSRedBlack(H,N,40):
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,40):
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,80):
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,160):
Norm(MatrixAdd(H,-trueSol));GSRedBlack(H,N,160):
Norm(MatrixAdd(H,-trueSol));TTdSMApJNFJUQUJMRV9TQVZFLzExNzAzOTJYLCUpYW55dGhpbmdHNiI2IltnbCEiJSEhISNFIiciJyQiIiIiIiEkIitlRlNANyEiKiQiKylwQz1cCiJGLCQiKyspPUAjPUYsJCIrRzRhREFGLCQiK0c9Rz1GRiwkIit5ZG0rKSohIzUkIitAZzAoPiJGLCQiK0V2M2k5RiwkIitQeHomeSJGLCQKIisiR3k2PSNGLCQiK3ByNGtFRiwkIitTKjQxQCpGNyQiK1FrKVw3IkYsJCIrUjoxdThGLCQiK2BER3k7RiwkIitSKmUpXD9GLCQiK2lMcQouREYsJCIrXGhOYCMpRjckIisnPm4hMzVGLCQiK2FnREo3RiwkIitTJmZRXSJGLCQiKyE+PW8kPUYsJCIrL1tcVkFGLCQiKyQ0bnEncEY3CiQiK2pcZjQmKUY3JCIrd1VPUjVGLCQiKyRSI1twN0YsJCIrJ0hcMGIiRiwkIisoPVhRKj1GLCQiK2ZJLS5hRjckIittc0UqZidGNyQiK1YKS09nISlGNyQiKyQqKVxcJSkqRjckIismKltZLTdGLCQiK1NScG85RixGJgo=TTdSMApJNFJUQUJMRV9TQVZFLzExNjk4ODRYLCUpYW55dGhpbmdHNiI2IltnbCEiJSEhISNFIiciJyQiIiIiIiEkIitlRlNANyEiKiQiKylwQz1cCiJGLCQiKyspPUAjPUYsJCIrRzRhREFGLCQiK0c9Rz1GRiwkIit5ZG0rKSohIzUkIit6JFx0PiJGLCQiK3VAYWk5RiwkIisjejBqeSJGLCQKIisjSCZlIj0jRiwkIitwcjRrRUYsJCIrUyo0MUAqRjckIisxZ1FENkYsJCIrRykpb3U4RiwkIisvcCgqeTtGLCQiKyFHKFJdP0YsJCIraQpMcS5ERiwkIitcaE5gIylGNyQiK0RbVzM1RiwkIitILSY9QiJGLCQiKz1kXi86RiwkIitrTktQPUYsJCIrL1tcVkFGLCQiKyQ0bnEncEY3CiQiKzhYMjcmKUY3JCIrWDp2UjVGLCQiK3hAIipwN0YsJCIrY2spM2IiRiwkIisoPVhRKj1GLCQiK2ZJLS5hRjckIittc0UqZidGNyQiK1YKS09nISlGNyQiKyQqKVxcJSkqRjckIismKltZLTdGLCQiK1NScG85RixGJgo=TTdSMApJNFJUQUJMRV9TQVZFLzExNjk4ODRYLCUpYW55dGhpbmdHNiI2IltnbCEiJSEhISNFIiciJyQiIiIiIiEkIitlRlNANyEiKiQiKylwQz1cCiJGLCQiKyspPUAjPUYsJCIrRzRhREFGLCQiK0c9Rz1GRiwkIit5ZG0rKSohIzUkIit6JFx0PiJGLCQiK3VAYWk5RiwkIisjejBqeSJGLCQKIisjSCZlIj0jRiwkIitwcjRrRUYsJCIrUyo0MUAqRjckIisxZ1FENkYsJCIrRykpb3U4RiwkIisvcCgqeTtGLCQiKyFHKFJdP0YsJCIraQpMcS5ERiwkIitcaE5gIylGNyQiK0RbVzM1RiwkIitILSY9QiJGLCQiKz1kXi86RiwkIitrTktQPUYsJCIrL1tcVkFGLCQiKyQ0bnEncEY3CiQiKzhYMjcmKUY3JCIrWDp2UjVGLCQiK3hAIipwN0YsJCIrY2spM2IiRiwkIisoPVhRKj1GLCQiK2ZJLS5hRjckIittc0UqZidGNyQiK1YKS09nISlGNyQiKyQqKVxcJSkqRjckIismKltZLTdGLCQiK1NScG85RixGJgo=TTdSMApJNFJUQUJMRV9TQVZFLzExNjk4ODRYLCUpYW55dGhpbmdHNiI2IltnbCEiJSEhISNFIiciJyQiIiIiIiEkIitlRlNANyEiKiQiKylwQz1cCiJGLCQiKyspPUAjPUYsJCIrRzRhREFGLCQiK0c9Rz1GRiwkIit5ZG0rKSohIzUkIit6JFx0PiJGLCQiK3VAYWk5RiwkIisjejBqeSJGLCQKIisjSCZlIj0jRiwkIitwcjRrRUYsJCIrUyo0MUAqRjckIisxZ1FENkYsJCIrRykpb3U4RiwkIisvcCgqeTtGLCQiKyFHKFJdP0YsJCIraQpMcS5ERiwkIitcaE5gIylGNyQiK0RbVzM1RiwkIitILSY9QiJGLCQiKz1kXi86RiwkIitrTktQPUYsJCIrL1tcVkFGLCQiKyQ0bnEncEY3CiQiKzhYMjcmKUY3JCIrWDp2UjVGLCQiK3hAIipwN0YsJCIrY2spM2IiRiwkIisoPVhRKj1GLCQiK2ZJLS5hRjckIittc0UqZidGNyQiK1YKS09nISlGNyQiKyQqKVxcJSkqRjckIismKltZLTdGLCQiK1NScG85RixGJgo=TTdSMApJNFJUQUJMRV9TQVZFLzExNjk4ODRYLCUpYW55dGhpbmdHNiI2IltnbCEiJSEhISNFIiciJyQiIiIiIiEkIitlRlNANyEiKiQiKylwQz1cCiJGLCQiKyspPUAjPUYsJCIrRzRhREFGLCQiK0c9Rz1GRiwkIit5ZG0rKSohIzUkIit6JFx0PiJGLCQiK3VAYWk5RiwkIisjejBqeSJGLCQKIisjSCZlIj0jRiwkIitwcjRrRUYsJCIrUyo0MUAqRjckIisxZ1FENkYsJCIrRykpb3U4RiwkIisvcCgqeTtGLCQiKyFHKFJdP0YsJCIraQpMcS5ERiwkIitcaE5gIylGNyQiK0RbVzM1RiwkIitILSY9QiJGLCQiKz1kXi86RiwkIitrTktQPUYsJCIrL1tcVkFGLCQiKyQ0bnEncEY3CiQiKzhYMjcmKUY3JCIrWDp2UjVGLCQiK3hAIipwN0YsJCIrY2spM2IiRiwkIisoPVhRKj1GLCQiK2ZJLS5hRjckIittc0UqZidGNyQiK1YKS09nISlGNyQiKyQqKVxcJSkqRjckIismKltZLTdGLCQiK1NScG85RixGJgo=