文档详情

实验Jacobi迭代法和GS迭代.doc

发布:2017-03-27约7.07千字共8页下载文档
文本预览下载声明
实验题目 1. Jacobi迭代法求解线性方程组保留四位有效数字(er=1e-4)其中A=[8 -1 1;2 10 -1;1 1 -5];b=[1 ;4; 3]。.Gauss-eidel迭代法Gauss-Seidel迭代法求解线性方程组保留四位有效数字(er=1e-4)其中A=[8 -1 1;2 10 -1;1 1 -5]; b=[1 ;4; 3]。 要求精度,初始,最大迭代次数N=25,试比较这几种迭代法的迭代次数和收敛速度。 1.程序: #includemath.h #includestdio.h int main(){ int n=3,i,k,j,mm=1000;//最大迭代次数; float t,x[mm][n],dx[n],dx_max=1,err=1e-4;//精度 for(i=0;in;i++) x[0][i]=0; float a[3][3]={8,-1,1,2,10,-1,1,1,-5}; float b[3]={1,4,3}; for(i=0;in;i++){ b[i]=b[i]/a[i][i]; } for(i=0;in;i++){ for(j=0;jn;j++) if(j!=i) a[i][j]=a[i][j]/a[i][i]; a[i][i]=0; } printf(精度1e-4时,解x[%d]=\n,n); for(k=0;dx_max1e-8;k++){ dx_max=0; for(i=0;in;i++){ t=0; for(j=0;jn;j++) t+=a[i][j]*x[k][j]; x[k+1][i]=b[i]-t; printf(%0.4f ,x[k+1][i]); dx[i]=x[k+1][i]-x[k][i]; dx_max+=pow(dx[i],2); } printf( %d,k+1); printf(\n); } printf(\n); } 程序结果: 精度1e-4时,解x[3]= 0.1250 0.4000 -0.6000 1 0.2500 0.3150 -0.4950 2 0.2262 0.3005 -0.4870 3 0.2234 0.3061 -0.4947 4 0.2251 0.3058 -0.4941 5 0.2250 0.3056 -0.4938 6 0.2249 0.3056 -0.4939 7 0.2249 0.3056 -0.4939 8 2.程序: #includemath.h #includestdio.h int main(){ int n=3,i,k,j,mm=1000;//最大迭代次数; float t,x[mm][n],dx[n],dx_max=1,err=1e-4;//精度 for(i=0;in;i++) x[0][i]=0; float a[3][3]={8,-1,1,2,10,-1,1,1,-5}; float b[3]={1,4,3}; for(i=0;in;i++){ b[i]=b[i]/a[i][i]; } for(i=0;in;i++){ for(j=0;jn;j++) if(j!=i) a[i][j]=a[i][j]/a[i][i]; a[i][i]=0; } printf(精度1e-4时,解x[%d]=\n,n); for(k=0;dx_max1e-8;k++){ dx_max=0; for(i=0;in;i++){ if(i==0){ t=0; for(j=i+1;jn;j++) t+=a[i][j]*x[k][j]; x[k+1][i]=b[i]-t; } else{ t=0; for(j=0;j=i-1;j++)t+=a[i][j]*x[k+1][j]; for(j=i+1;jn;j++)t+=a[i][j]*x[k][j]; x[k+1][i]=b[i]-t; } printf(%0.4f ,x[k+1][i]); dx[i]=x[k
显示全部
相似文档