#include #include #include using namespace std; const int N=25,m=3; const double Eps=0.001; double U[N*m+1][N*m+1]; double dU[N*m+1][N*m+1]; double Insert(double x,double y) { return x+y; } double u_l(double x,double y) { return y; } double u_l1(double x,double y) { return 1.0+y; } double u_r(double x,double y) { return 3.0+y; } double u_r1(double x,double y) { return 2.0+y; } double u_d(double x,double y) { return 3.0+x; } double u_d1(double x,double y) { return 2.0+x; } double u_u(double x,double y) { return x; } double u_u1(double x,double y) { return 1.0+x; } double f(double x,double y) { return y+x; } double Cross(int i, int j) { double temp=(1.0/4.0)*(U[i+1][j]+U[i-1][j]+U[i][j-1]+U[i][j+1]+(1.0/N*N)*f(double(j)/double(N),double(i)/double(N))); return temp; } double normi(double U[m*N+1][m*N+1]) { double S1=0; for(int i=1;iS1) S1=S2; } else { if ((i>N)&&i<2*N) { double S2=0; double n=2*N; for(int j=1;jS1) S1=S2; } else { if(i==N) { double S2=0; double n=m*N; for(int j=2;jS1) S1=S2; } else { if(i==2*N) { double S2=0; double n=m*N; for(int j=1;jS1) S1=S2; } else { double S2=0; double n=m*N; for(int j=1;jS1) S1=S2; } } } } } return S1; } int main() { freopen("info.txt","w",stdout); for(int i=0;i<=m*N;i++) { for(int j=0;j<=m*N;j++) { if ((j==0)&&(i>=N)) { U[i][j]=u_l(double(j)/double(N),double(i)/double(N)); } else { if ((i==0)&&(j>=N)) { U[i][j]=u_u(double(j)/double(N),double(i)/double(N)); } else { if ((j==N)&&(i<=N)) { U[i][j]=u_l1(double(j)/double(N),double(i)/double(N)); } else { if ((i==N)&&((j<=N)||((j>=2*N)&&(i<=m*N)))) { U[i][j]=u_u1(double(j)/double(N),double(i)/double(N)); } else { if (i==m*N) { U[i][j]=u_d(double(j)/double(N),double(i)/double(N)); } else { if ((j==m*N)&&((i<=N)||(i>=2*N))) { U[i][j]=u_r(double(j)/double(N),double(i)/double(N)); } else { if ((j==2*N)&&((i>=N)&&(i<=2*N))) { U[i][j]=u_r1(double(j)/double(N),double(i)/double(N)); } else { if ((i==2*N)&&((j>=2*N)&&(i<=m*N))) { U[i][j]=u_d1(double(j)/double(N),double(i)/double(N)); } else { if (((j>2*N)&&((i>N)&&(i<2*N)))||((iEps;k++) { for(int i=1;iN)&&i<2*N) { n=2*N+1; p=1; } else { if (i==N) { n=m*N-N+2; p=2; } else { if (i==2*N) { n=m*N-N+2; p=1; } else { n=m*N+1; p=1; } } } } for(int j=p;j