高斯列主元消元法解线性方程组
- 格式:doc
- 大小:117.00 KB
- 文档页数:5
高斯列主元消元法解线性方程组
一、题目:用Gauss列主元消去法解线性方程组Axb,其中,
A=17.031 -0.615 -2.991 1.007 -1.006 0.000-1.000 34.211 -1.000 -2.100 0.300 -1.7000.000 0.500 13.000 -0.500 1.000 -1.5004.501 3.110 -3.907 -61.705 12.170 8.9990.101 -8.012 -0.017 -0.910 4.918 0.1001.000 2.000 3.000 4.500 5.000 21.803 0.230
-52.322
54.000 240.236
29.304
-117.818b
TX=(0.907099 -1.961798 3.293738 -4.500708 3.029344 -5.255068)
二、原理及步骤分析
设nnijRaA][)1(,nnRbbbb],,,[)1()2(2)1(1。若约化主元素),,2,1(0)(nkakkk,则通过高斯消元法将方程bAX约化为三角形方程组求解。
如果在消元过程中发现某个约化主元0)(kkka, 则第K次消元就无法进行。此外,即使所有约化主元全不为零,虽然可以完成方程组的求解,但也无法保证结果的可靠性,因为计算过程中存在舍入误差。
为减少计算过程中的舍入误差对解的影响,在每次消元前,应先选择绝对值尽可能大的元作为约元的主元,如果在子块的第一列中选取主元,则相应方法称为列主元消元法。相应过程为:
(1)选主元:在子块的第一列中选择一个元)(kkika使)(maxkiknikkkiaak
并将第k行元与第ki行元互换。
(2)消元计算:对k=1,2,……n-1依次计算
nkkibmbbnkkjiamaankkiaamkkikkikikkjikkijkijkkkkikkik,,2,1,,2,1,,,2,1)()()1()()()1()()()(
(3)回代求解
)(1)()()()(iiinijjiijiiinnnnnnaxabxabx
1,,2,1nni
三. 流程图
5,,2,1k65A
消元计算,即
nkkjnkkibabbaaaaaaakikiikjikijijkkikik,,2,1,,2,1 输入矩阵65A选主元,即确定ki,使
kkinikkiaamax
交换行,即
kikkjjibbnjaak,2,1回代求解,即
1,2,,1niaabbabbiiijbiinnnnj
四、源程序
高斯列主元消元法程序
#include<>
#include<>
#define N 6
main()
{
float A[N][N+1]={{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,},{,,,,,,}}, total,x[6];
int i,j,k,m,n;
printf("方程的增广矩阵:\n");
for(i=0;i { for(j=0;j printf(" % ",A[i][j]); printf("\n"); } for(j=0;j { k=j; /*最大行号赋给k*/ for(i=j+1;i { if(fabs(A[i][j])>fabs(A[k][j])) k=i; } if(k==j) for(i=j+1;i for(m=j+1;m { A[i][m]=A[i][m]-A[j][m]*A[i][j]/A[j][j]; } else { for(n=0;n { A[N][n]=A[k][n]; /*换行 */ A[k][n]=A[j][n]; A[j][n]=A[N][n]; } for(i=j+1;i for(m=j+1;m { A[i][m]=A[i][m]-A[j][m]*A[i][j]/A[j][j]; } } } printf("消元後的结果:\n"); for(i=0;i { for(j=0;j printf(" % ",A[i][j]); printf("\n"); } x[N-1]=A[N-1][N]/A[N-1][N-1]; for(i=N-2;i>=0;i--) { total=A[i][N]; for(j=N-1;j>i;j--) total=total-x[j]*A[i][j]; x[i]=total/A[i][i]; } printf("方程的解:\n"); for(i=0;i printf("x1=%f\n",x[i]); } 五、结果显示 六、结果分析: 消元必须从主元的下一行下一列开始,否则,不会得到正确结果。从结果运行情况看,消元后不会得到三角阵,但回带求解时,程序只关心上三角阵,不会影响最终计算结果。若从主元这一列开始,消元后会得到一个三角阵,但该三角阵并不准确。由不准确的三角阵到的结果也不正确。 精心搜集整理,只为你的需要