#include #include // number of variables #define N 100 double f[N+2][N+2]; double r[N+2][N+2]; void gauss_seidel_step(){ int i, j; for(i=1; i<=N; i++){ for(j=1; j<=N; j++){ f[i][j] = (1.0/4.0)*(f[i-1][j]+f[i+1][j]+f[i][j-1]+f[i][j+1]-r[i][j]); } } } void gauss_seidel_main(){ int i; for(i=0; i<100; i++){ gauss_seidel_step(); } } int main(){ int i, j; for(i=0; i<=N+1; i++){ for(j=0; j<=N+1; j++){ r[i][j] = 0.0; f[i][j] = 0.0; } } r[48][50] = 1.0; r[52][50] = -1.0; gauss_seidel_main(); for(i=1; i<=N; i++){ for(j=1; j<=N; j++){ printf("%lf ", f[i][j]); } printf("\n"); } return 0; }