数 值 计 算 方 法
课 程 实 验 报 告
SOR迭代法求解线性方程组
一 实验名称:实验四:逐次超松弛迭代法。
二 实验题目:求解下面的三元一次线性方程组:
2x-y+2z=4;
x+2y+3z=9;
2x-2y-3z=-3;
要求选取不同的松弛因子进行计算,并估计最优松弛因子的大小。
三 实验目的:
1.熟悉掌握逐次超松值迭代法的基本原理和基本方法。
2.学会用逐次超松弛迭代法解简单的方程组。
3.选取不同的w值(0
#include
#include
#include
void SOR(double w, double a[3][3], double b[3], double x[3], double esp)
{
double t[3];
int flag=0;
int n=0;
while(!flag)
{
flag=1;n++;
t[0]=x[0]; t[1]=x[1]; t[2]=x[2];
for(int i=0;i<3;i++)
{
double m=b[i];
for(int j=0;j<3;j++)
{
m-=(a[i][j]*x[j]);
}
x[i]=x[i]+w*m/a[i][i];
}
for(int k=0;k<3;k++)
{
if(fabs(x[k]-t[k])>=esp)
{
flag=0;
break;
}
}
}
printf("%d\n",n);
}
void main()
{
double a[3][3];
double b[3];
double x[3];
double w,esp;
a[0][0]=2; a[0][1]=-1; a[0][2]=2;
a[1][0]=1; a[1][1]=2; a[1][2]=3;
a[2][0]=2; a[2][1]=-2; a[2][2]=-3;
b[0]=4; b[1]=9; b[2]=-3;
x[0]= x[1]= x[2]=0;
w=0.6;esp=0.0001;
SOR(w,a,b,x,esp);
for(int i=0;i<3;i++)
printf("%f\n",x[i]);
}
本文档为【SOR迭代法求解线性方程组】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。