Gauss-Seidel迭代法求解线性方程组.docx
- 文档编号:144647
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:6
- 大小:139.44KB
Gauss-Seidel迭代法求解线性方程组.docx
《Gauss-Seidel迭代法求解线性方程组.docx》由会员分享,可在线阅读,更多相关《Gauss-Seidel迭代法求解线性方程组.docx(6页珍藏版)》请在冰豆网上搜索。
一.问题描述
用Gauss-Seidel迭代法求解线性方程组
由Jacobi迭代法中,每一次的迭代只用到前一次的迭代值。
使用了两倍的存储空间,浪费了存储空间。
若每一次迭代充分利用当前最新的迭代值,即在计算第个分量时,用最新分量,代替旧分量,,可以起到节省存储空间的作用。
这样就得到所谓解方程组的Gauss-Seidel迭代法。
二.算法设计
将分解成,则等价于
则Gauss-Seidel迭代过程
故
若设存在,则
令
则Gauss-Seidel迭代公式的矩阵形式为
其迭代格式为
(初始向量),
或者
三.程序框图
开始
读入数据,初始向量,增广矩阵
k=N?
输出迭代失败标志
结束
输出
四.结果显示
TestBench
利用Gauss-Seidel迭代法求解下列方程组
,其中取。
运行程序
依次输入:
1.方阵维数
2.增广矩阵系数
3.初始向量
得到:
迭代12次后算出
x[1]=-4.0
x[2]=3.0
x[3]=2.0
五.程序
#include
#include
#include
#include
#define MAX_n 100
#definePRECISION 0.0000001
#defineMAX_Number 1000
voidVectorInput(floatx[],intn)//输入初始向量
{
inti;
for(i=1;i<=n;++i)
{
printf("x[%d]=",i);
scanf("%f",&x[i]);
}
}
voidMatrixInput(floatA[][MAX_n],intm,intn)//输入增广矩阵
{
inti,j;
printf("\n输入系数矩阵:
\n");
for(i=1;i<=m;++i)
{
printf("增广矩阵行数%d:
",i);
for(j=1;j<=n;++j)
scanf("%f",&A[i][j]);
}
}
voidVectorOutput(floatx[],intn)//输出向量
{
inti;
for(i=1;i<=n;++i)
printf("\nx[%d]=%f",i,x[i]);
}
intIsSatisfyPricision(floatx1[],floatx2[],intn)//判断是否在规定精度内
{
inti;
for(i=1;i<=n;++i)
if(fabs(x1[i]-x2[i])>PRECISION)return1;
return0;
}
intJacobi_(floatA[][MAX_n],floatx[],intn)//具体计算
{
floatx_former[MAX_n];
inti,j,k;
printf("\n初始向量x0:
\n");
VectorInput(x,n);
k=0;
do{
for(i=1;i<=n;++i)
{
printf("\nx[%d]=%f",i,x[i]);
x_former[i]=x[i];
}
printf("\n");
for(i=1;i<=n;++i)
{
x[i]=A[i][n+1];
for(j=1;j<=n;++j)
if(j!
=i)x[i]-=A[i][j]*x[j]; if(fabs(A[i][i])>PRECISION)
x[i]/=A[i][i];
else
return1;
}
++k;
}while(IsSatisfyPricision(x,x_former,n)&&k if(k>=MAX_Number) return1; else { printf("\nGauss-Seidel迭代次数为%d次",k); return0; } } intmain()//主函数 { intn; floatA[MAX_n][MAX_n],x[MAX_n]; printf("\n方阵维数n="); scanf("%d",&n); if(n>=MAX_n-1) { printf("\n\007nmust<%d! ",MAX_n); exit(0); } MatrixInput(A,n,n+1); if(Jacobi_(A,x,n)) printf("\nGauss-Seidel迭代失败! "); else { printf("\n结果: "); VectorOutput(x,n); } printf("\n\n\007Pressanykeytoquit! \n"); getch(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Gauss Seidel 迭代法 求解 线性方程组
![提示](https://static.bdocx.com/images/bang_tan.gif)