Gauss-Seidel迭代法求解线性方程组.docx

上传人:时光煮雨 文档编号:11725424 上传时间:2021-09-01 格式:DOCX 页数:9 大小:150.67KB
返回 下载 相关 举报
Gauss-Seidel迭代法求解线性方程组.docx_第1页
第1页 / 共9页
Gauss-Seidel迭代法求解线性方程组.docx_第2页
第2页 / 共9页
Gauss-Seidel迭代法求解线性方程组.docx_第3页
第3页 / 共9页
Gauss-Seidel迭代法求解线性方程组.docx_第4页
第4页 / 共9页
Gauss-Seidel迭代法求解线性方程组.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Gauss-Seidel迭代法求解线性方程组.docx》由会员分享,可在线阅读,更多相关《Gauss-Seidel迭代法求解线性方程组.docx(9页珍藏版)》请在三一文库上搜索。

1、Gauss-Seidel迭代法求解线性 方程组一.问题描述用Gauss-Sei del迭代法求解线性方 程组由Jacobi迭代法中,每一次的迭代只用到前 一次的迭代值。使用了两倍的存储空间,浪费了 存储空间。若每一次迭代充分利用当前最新的迭代值,即在计算第,个分量看时,用最新分量 到节省存储空间的作用。这样就得到所谓解方程 组的Gauss-Seidel迭代法。a+n +1) (A+i)M 占 .陶代替旧分量小,-7,可以起二.算法设计将A分解成A = L-D -U,则Aa =Z?等价于(L-D U)x = 则Gauss-Seidel迭代过程Aa+,) =b + Lx(k+l)+Uxk故(D-L

2、)x(k+i) =b + Ux(ki若设(D-L)-存在,则/X)=(O _ LylUx(k +(-b令G = (D LVu ,于=(D L)-b则Gauss-Seidel迭代公式的矩阵形式为= Gx(k) + f其迭代格式为(初始向量),引川=J-色 _产尸)-芍力 (k = 0,1,2,: i = 0,1,2,/?) aii J=l尸+1或者X;Al)=嫡)+(4=左=(),1,2, ; i= 0,1,2, )即=_L(4- 。国)aii六l片+1三.程序框图三.结果显示TestBench利用Gauss-Seidel迭代法求解下列方程组5须 +2x2 +七=一12一西+4&+2&=20,其

3、中取。)=;。2xl - 3x2 +1 Ox3 = 3运行程序依次输入:1 .方阵维数2 .增广矩阵系数3 .初始向量gj C:wi n d owssystem32cmd.exe方阵维数n=31矩人的仃数阵阵阵系矩矩矩入广广广初始向里3(0:x23=lxl3=l得到:迭代12次后算出xl=-4. 0x2 =3.0x3 =2.0Cwiri dorsXsystem3 2cmdrxeQ3 C:rdndows5y5tcm32cmd.exexll】=-3.999681xl2-2.9?99?lxl3J=l.99y928xll J=-3.99974 x12)-3.006043 x13=2.006008xll

4、k-4 .此前19xI2=2.999991xl3J=2 。此uvnnil=-3.999997x21=3.WWAIW x(31-2.000000xll-4.060006乂2=3.CM0C6 x31-2.000000X(l-4.000000xl2J=3X(31-2.000000Gauss-ScidcL诙代次数为12次 结果,X(1 )-4.000000xl2J=3 次纳 x3=2.000000Press any key to quit?四.程序ttinclude include 0include #include #define MAX_n 100define PRECISION 0. 00000

5、01ftdefine MAX.Number 1000void Vectorinput (float x, int n)/输入初始向量(int i;for (i=l;i=n;-H-i)void Matrixinput (float A MAX_n, int m, int n) 输入增广矩阵 (int i, j;printf (n输入系数矩阵:n);for (i=l; i=m;-H-i)(printf (增广矩阵行数如:”,i);for (j=l; j=n;+j)scanf &Ai j);void VectorOutput(float x, int n) 输出向量 int i;for(i=l;i=

6、n;+i)printf Cnx%d =%fiy xi);int IsSatisfyPricision(float xl, float x2, int n) 判断是否在规定精度内 (int i;for(i=l;iPRECISION) return 1;return 0;int Jacobin (float A MAX_n, float x, int n)具体计算(float x_formerMAX_n;int i, j, k;printf (n初始向量x0:n);VectorInput(x, n);k=0;do(for (i=l;i=n;-H-i)printf (*nx%d =%fi, xi);

7、x_formeri=xi;)printf(*n);for(i=l;i=n;+i)xi=Ai n+1;for(j=l; jPRECISION)xi/=Aii: elsereturn 1;)Hk; while(IsSatisfyPricxsion(x,ormer, n) & k=MAX-Number)return 1;else(printf (nGauss-Seidel迭代次数为%d 次”,k);return 0;) int main ()主函数(int n;float AMAX_nMAX.n,xMAX_n;printf (n方阵维数n=);scant 4n);if(n=MAX.n-l)(printf(*n007n must n+1);if (Jacobi_(A, x, n)printf (nGauss-Seidel迭代失败!);else(printf (n结果:“);VectorOutput(x, n);)printf (*nn007Press any key to quit!n*);getchO ;)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1