您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页高斯消元法解线性方程组

高斯消元法解线性方程组

来源:好走旅游网
实验五、高斯消元法解线性方程组

1.实验目的:

进一步熟悉理解高斯消元法解法思路 掌握编程语言在数学方面的应用

2.实验要求:

已知:线性方程矩阵 输出:线性方程组的解

3.程序流程:

(1)输入矩阵; (2)调用函数求解; (4)输出方程组的解。

4.实验原理:

消元过程:

000 1)设a11 , 做(消去第i个方程组的x1)操作 0,令乘数mi1ai1/a11mi1第1个方程+第i个方程 (i =2,3,…,n) 则第i个方程变为 ai2x2ainxnbi

这样消去第2,3,…,n个方程的变元x1后,原线性方程组(3.22)变为

0000a11x1a12x2a1nxnb1111a22x2a2nxnb2 (3.23) 111an2x2annxnbn1式中mi1,bi1,aij的计算公式为

1110mi1ai10/a11bi1bi0mi1b10aijaijmi1a1j,i,j2,3,,n100(3.24)

这样就完成了第1步消元。

2) 对线性方程组(3.23)中由第2,3,…,n个方程组成的n-1元线性方程组做同样的处理,消去其除第一个方程之外的所有变元x2,可得到第2步消元后的线性方程组

0000a11x1a12x2a13x3a1nxnb101111a22x2a23x3a2xbnn2222 a33x3a3nxnb2222an2x3annxnbn2式中mi2,bi2,aij的计算公式为

11mi2ai2/a221bi2bi1mi2b2aijaijmi2a2j,i,j3,4,n211(3.25)

3)由(3.24)与(3.23)系数计算规律,得第k步消元过程的计算公式

k1k1mikaik/akkbikbik1mikbkk1aijaijkk1(3.26)

mikakj,i,jk1,k2,,nk1 当做到第n-1步消元后,就完成了Guass消元过程,得到上三角方程组

0000a11x1a12x2a1nxnb1111a22x2a2xbnn2 (3.27)

n1n1annxnbn回代过程:

1)在方程组(3.27)的最后一个方程中解出xn,得

(n1)(n1) xnbn/ann 2)将xn的值代入(3.27)的倒数第2个方程,再解出xn1,得 (n2)(n2)(n2)xn1(bn1an1 nxn)/an1 n1

3)依次回代,得计算xk的公式为

xk(b(k1)kjk1an(k1)kj(k1)xj)/akk (kn2,n3,,1)

当k1时,就完成了回代过程,从而完成了Gauss消元法的全过程,得到所求

解。

流程图如下:

开始 输入方程a[i][j], b[i] 计算单位阵m[i][k] 求解方程解x[i] 输出方程的解x[i] 结束 5.程序如下:

#include #include

main() {

int i,j,k;

float s=0,a[3][3];

float b[3],x[3],m[3][3];

printf(\"请输入方程矩阵\\n\"); for(i=0;i<3;i++) {

for(j=0;j<3;j++)

scanf(\"%f\ scanf(\"%f\ }

printf(\"\\n方程矩阵为:\\n\"); for(i=0;i<3;i++) { for(j=0;j<3;j++)

printf(\"%10f\ printf(\"%10f\ printf(\"\\n\");

}

for(k=0;k<3;k++) {

for(i=k+1;i<3;i++) {

m[i][k]=a[i][k]/a[k][k]; for(j=k+1;j<3;j++)

a[i][j]=a[i][j]-m[i][k]*a[k][j]; b[i]=b[i]-m[i][k]*b[k]; } }

x[2]=b[2]/a[2][2]; for(i=1;i>=0;i--) {

for(j=i+1;j<3;j++) s=s+a[i][j]*x[j]; x[i]=(b[i]-s)/a[i][i]; s=0; }

printf(\"方程解为:\"); for(i=0;i<3;i++) {

printf(\"x%d=%f\\n\ } }

举例:

用列主元消去法解线性方程组

12x13x23x315183x2x315 x1x2x36

实验结果:(默认权值都为1)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务