列主元素消去法.doc
《列主元素消去法.doc》由会员分享,可在线阅读,更多相关《列主元素消去法.doc(9页珍藏版)》请在冰豆网上搜索。
2012-2013
(1)专业课程实践论文
列主元素消去法
范宁:
0818180102,R数学08-1班
夏之秋:
0818180110,R数学08-1班
一、算法理论
列主元素消去法既是选主元高斯消去法的一种,也是实际计算中常用的部分选主元消去法。
列主元素消去法则是对完全主元素消去法的又一次改进。
列主元素消去法在完全主元素消去法的基础上减少了在选主元素时所要花费的一定的计算时间。
设有线性方程组
其中,为非奇异矩阵。
方程组的增广矩阵为
首先在的第1列选取绝对值最大的元素作为主元素,即选择
然后交换的第1行与第行(交换后增广矩阵为简单起见仍记为,其元素仍记为)。
经过第1次消元计算得到与原方程组等价的方程组
其中
上述过程可记为
重复上述计算过程,现假设已完成第步的选主元素过程,交换两行并进行消元计
此时约化为
其中的元素仍记为,的元素仍记为.
第步选主元素(在右下角方阵的第1列内选),即确定,使
交换第行与行的元素,再进行消元计算,最后将原线性方程组化为
回代可求解得
二、算法框图
输出迭代失败标志
交换中两行
输入(增广矩阵)
开始
输出奇异标志
结束
三、算法程序
#include
#include
#include
#include
#definemax_dimension20
intn;
staticfloata[max_dimension][max_dimension];
staticfloatb[max_dimension];
staticfloatx[max_dimension];
voidmain()
{
inti;
intj;
intd;
introw;
floattemp;
floatknown_items;
floatl[max_dimension][max_dimension];
system("cls");
printf("PleaseInputMatrixjieshu:
");
scanf("%d",&n);
printf("\n");
printf("PleaseInputMatrixFactors:
");
printf("\n");
for(i=0;i{
printf("inputdi%dhangdezhi:
",i+1);
for(j=0;j{
scanf("%f",&a[i][j]);
}
printf("\n");
}
printf("PleaseInputChangshuxiang:
");
for(i=0;iscanf("%f",&b[i]);
printf("TheAugmented(zenguang)Matrixis:
\n\n");
for(i=0;i{
for(j=0;jprintf("%f",a[i][j]);
printf("%f",b[i]);
printf("\n");
}
printf("\n");
for(d=0;d{
row=d;
for(i=d+1;i{
if(fabs(a[i][d])>fabs(a[row][d]))
row=i;
}
if(row!
=d)
{
for(j=d;j{
temp=a[row][j];
a[row][j]=a[d][j];
a[d][j]=temp;
}
temp=b[row];
b[row]=b[d];
b[d]=temp;
}
for(i=d+1;i{
l[i][d]=-a[i][d]/a[d][d];
for(j=d;j{
a[i][j]=a[i][j]+a[d][j]*l[i][d];
}
b[i]=b[i]+b[d]*l[i][d];
}
}
printf("TheshangsanjiaozenguangMatrixafterpredigestionis:
\n\n");
for(i=0;i{
for(j=0;jprintf("%f",a[i][j]);
printf("%f",b[i]);
printf("\n");
}
printf("\n");
for(i=n-1;i>-1;i--)
{
known_items=0;
for(j=1;j{
known_items=known_items+a[i][i+j]*x[i+j];
}
x[i]=(b[i]-known_items)/a[i][i];
}
printf("TheRootXis:
\n\n");
for(i=0;iprintf("%.5f",x[i]);
printf("\n\n");
getch();
}
四、算法实现
例1.求解方程组:
用四位浮点数进行计算,精确解舍入到四位有效数字为
解:
运行程序
(1)显示PleaseInputMatrixjieshu:
输入的值为3,回车。
(2)显示inputdi1hangdezhi:
输入,回车。
(3)显示inputdi2hangdezhi:
输入,回车。
(4)显示inputdi3hangdezhi:
输入,回车。
(5)显示PleaseInputChangshuxiang:
:
输入,回车。
(6)显示结果:
例2.用列主元素消去法解该方程
解:
运行程序
(1)显示出PleaseInputMatrixjieshu:
输入的值为4,回车。
(2)显示inputdi1hangdezhi:
输入回车。
(3)显示inputdi2hangdezhi:
输入回车。
(4)显示inputdi3hangdezhi:
输入回车。
(5)显示inputdi4hangdezhi:
输入回车。
(6)显示出PleaseInputChangshuxiang:
:
输入,回车。
(7)显示结果: