文档详情

数值分析 五六章数分析 五六章.doc

发布:2017-01-05约4.42千字共7页下载文档
文本预览下载声明
第五章 追赶法求解线性方程组 #includestdio.h #includemath.h void main() { ??? float a[3][3] = {5,1,0,1,5,1,0,1,5}, b[3] = {17,14,7},x[3] = {0},y[3] = {0}; ??? float temp; ??? int i,j,k; ??? for(i = 0;i 3;i ++) ??? { ??? temp = 0; ??? for(j = 0,k = i + 1;j i;j ++) ????????temp += a[j][i]*a[i][j]; ??? a[i][i] = a[i][i] - temp; ??? a[i][k] = a[i][k]/a[i][i]; ??? } ??? y[0] = b[0]/a[0][0]; ??? for(i = 1;i 3;i ++) ??? { ??? temp = 0; ??? for(j = 0;j i;j ++) ????????temp += y[j]*a[i][j]; ??? y[i] = (b[i] - temp)/a[i][i]; ??? } ??? printf(the changed array is:\n); ??? for(i = 0;i 3;i ++) ??? { ??? for(j = 0;j 3;j ++) ????????printf(%10.5f,a[i][j]); ??? printf(|%10.5f\n,y[i]); ??? } ??? x[2] = y[2]; ??? for(i = 1;i = 0;i --) ??? { ??? temp = 0; ??? for(j = 2;j i;j --) ????????temp += x[j]*a[i][j]; ??? x[i] = y[i] - temp; ??? } ??? printf(the array answer is x[3]=[); ??? for(i = 0;i 3;i ++) ??? printf(%10.5f,x[i]); ??? printf(]\n); } 第六章雅克比迭代法 高斯—赛德尔 #includeiostream #includemath.h #includeiomanip using namespace std; #define kk 50 //定义最大方程元数 #define exp 1e-5//定义结束门限值 int n,ll,hh,i,j; double A[kk][kk],x[kk][kk],b[kk],y[kk],a[kk],z[kk],m,nn,d,e=1,w; void main() { cout   ********************************endl; cout   ***本程序可以用雅可比迭代法,塞德尔迭代法,逐次超松弛法求解线性方程组***endl; cout  endl; cout  ****************说明:方程最多个数为*******endl; //***************************数据的输入*********************** bb:cout输入的方程元数endl; cinn; cout请输入方程系数矩阵:\n; for(i=0;in;i++) for(j=0;jn;j++) cinA[i][j]; cout请输入右边向量:\n; for(i=0;in;i++) cinb[i]; //************************判断是否对角占优************************* for(i=0;in;i++) { for(j=0;jn;j++) { nn=0; if(i==j) { d=fabs(A[i][i]); } else nn=nn+fabs(A[i][j]); } if(nnd) { cout该方程不对角占优,迭代不收敛endl; cout是否继续?是(),否()endl; cinhh; if(hh!=1) goto bb; else exit(1); } } //**********************计算出迭代矩阵************************* for(i=0;in;i++) { b[i]=b[i]/A[i][i]; for(j=0;jn;j++) { if(i==j) { x[i
显示全部
相似文档