当前位置:文档之家› 线性方程组的直接解法

线性方程组的直接解法


2、 实验结果 求得������1 = 2; ������2 = 2; ������3 = 3
五、实验结论
1、 在计算机上直接高斯消去法是一种比较高效率的算法, 但是要求矩阵各顺 序主子式不能为 0 以保证主元不为 0. 2、通过选主元的方式可以保证高斯消去法的顺利进行。 3、满足对角占优或对称正定的矩阵方程可以更高效地求解。
三、实验分析 Problem1:
������1 + 2������2 + 3������3 = 14, 用列主元高斯消去法解方程组:{2������1 + 5������2 + 2������3 = 18, 3������1 + ������2 + 5������3 = 20. 1、 实验步骤 1 2 3 14 利用附录程序,输入增广矩阵[2 5 2 18],运行程序得如图结果 3 1 5 20
[附录]迭代法源程序(C 语言)
① 列主元 Gauss 消去法 #include<stdio.h> #include<math.h> #define M 4 void select(int k, double x[][M+1]) { double t=x[k][k],e[M][M+1]; int i,j,m; for(i=k;i<M;i++)//第 k 次选主元 { if(fabs(x[i][k])>fabs(t)) { t=x[i][k]; m=i; } else m=k; } for(j=k;j<M+1;j++) { e[k][j]=x[k][j]; x[k][j]=x[m][j]; x[m][j]=e[k][j]; } } int main() { int i,j,k; double t=0,a[M][M+1],l[M][M+1],x[M]; printf("Input the matrix:\n"); for(i=1;i<M;i++) { for(j=1;j<M+1;j++) scanf("%lf",&a[i][j]); } for(k=1;k<M-1;k++)//消元过程 { select(k,a);//第 k 次选主元 for(i=k+1;i<M;i++)//消元 { l[i][k]=a[i][k]/a[k][k];//消元因子 for(j=k+1;j<M+1;j++) a[i][j]=a[i][j]-l[i][k]*a[k][j];
“线性方程组的直接解法”实验报告
姓名:石异 学号: 20161301236 班级: 16 长望 1 班 指导教师: 卢长娜
一、问题描述
从前讨论的若干问题,都包含着将原问题转化为代数问题的思想,即将问题 归结为求解线性代数方程组。而对于此类方程组的解法,已经有了克拉默法则。 但此方法的计算速度太慢,当阶数较高时,用此方法显然是不现实的。所以需要 回归到方程组本身去寻求快速而有效的算法。
} } //回代过程 x[M-1]=a[M-1][M]/a[M-1][M-1]; for(i=M-2;i>0;i--) { t=0; for(j=i+1;j<M;j++) t=t+a[i][j]*x[j]; x[i]=(a[i][M]-t)/a[i][i]; } for(i=1;i<M;i++) printf("x[%d]=%f\n",i,x[i]); return 0; } ②追赶法 #include<stdio.h> #include<math.h> #define M 4 int main() { int i,j,k; double t=0,a[M][M+1],l[M],x[M]; printf("Input the matrix:\n"); for(i=1;i<M;i++) { for(j=1;j<M+1;j++) scanf("%lf",&a[i][j]); } for(i=2;i<M;i++) { l[i]=a[i][i-1]/a[i-1][i-1]; a[i][M]=a[i][M]-l[i]*a[i-1][M]; a[i][i]=a[i][i]-l[i]*a[i-1][i]; } //回代过程 x[M-1]=a[M-1][M]/a[M-1][M-1]; for(i=M-2;i>0;i--) x[i]=(a[i][M]-a[i][i+1]*x[i+1])/a[i][i]; for(i=1;i<M;i++) printf("x[%d]=%f\n",i,x[i]); return 0; }
2、 实验结果 求得������1 = 1; ������2 = 2; ������3 = 3
Problem2:
−2������1 + ������2 = −2, 用追赶法解方程组:{������1 − 2������2 + ������3 = 1, ������2 − 2������3 = −4. 1、实验步骤 −2 1 0 −2 利用附录程序,输入增广矩阵[ 1 −2 1 1 ],运行程序得如图结果 0 1 −2 −4
二、思想方法
1、高斯消去法 对于系数矩阵为三角阵的方程组,我们可以按顺序自上而下或自下而上依次 求解方程组。 而对于一个一般的线性方程组������������ = ������, 可以通过对增广矩阵作初等 行变换(消元过程) ,将此方程组转化为同解的三角方程组(回代过程) ,假设转 化为上三角形方程组,然后反向求解此三角形方程组,得出解向主元消去法 对于上述高斯消去法,默认前提条件为每一步消元时,对应的主元均不能为 0, 否则高斯消去法不能进行。 实际上, 在计算机运算过程中, 即使主元不为零, 但是如果主元的绝对值相对于其他元素很小时,通常会导致很大的计算误差。所 以, 在每一步消元之前, 先把方程的次序适当地交换一下, 以避免小主元的出现, 在程序中可直接选出最大的主元,然后将其所在行换至当前位置。 这样,通过选主元就可以保证高斯消去法的顺利进行。 3、针对三对角矩阵的高斯消去法——追赶法 事实上,如果矩阵满足严格对角占优或对称正定时,不用通过选主元,高斯 消去法也能顺利进行。同时,如果系数矩阵是三对角矩阵的话,只要消去最下面 的斜对角元素即可, 也即高斯消去法每次只需要消去一个元素,大大减少了计算 的次数。其运算量为������(������).
相关主题