Gauss 消去法是解线性方程组的一种直接方法,有时也称为精确法,这种算法只包含有限四次运算,并且在每一步运算过程都不会发生舍入误差的假设下,计算的结果就是方程组的精确解。但实际计算中不可避免舍入误差的存在和影响,所以这种方法只能求得线性方程组的近似解。顺序消去法解方程组原理如图:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <process.h>
/*
*luozhoong zhizuo
*
*/
using namespace std;
class gauss
{
private:
int i, j, k, n;
double eps, ratio, sum, *x, **a;
public:
void gauss_input(); //数据输入的函数声明
void gauss_elimination(); //消除法的函数声明
void gauss_output(); //结果输出的函数声明
~gauss() //释放存储器
{
delete []x;
for(i=0;i<n;i++){delete[]a[i];}
delete []a;
} //类gauss结束
};
int main()
{
gauss solution;
solution.gauss_input(); //输入增广矩阵的系数
solution.gauss_elimination(); //执行Gauss消去法
solution.gauss_output(); //输出结果
system("PAUSE");
return EXIT_SUCCESS;
}
void gauss::gauss_input() //数据输入函数
{
cout<<"输入方程的个数:"; //输入方程的个数
cin>>n;
x=new double[n]; //动态分配存储器
a=new double*[n];
for(i=0;i<n;i++){a[i]=new double[n+1];}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
cout<<"\n输入a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
for(i=0;i<n;i++) //输入右端向量的各元素
{
cout<<"\n输入b["<<i<<"]=";
cin>>a[i][n];
}
cout<<"\n输入最小的主元素 = ";
cin>>eps; //输入段结束
}
void gauss::gauss_elimination() //Gauss消去法函数
{
for(k=0;k<(n-1);k++)
{
for(i=(k+1);i<n;i++)
{
if(fabs(a[k][k])<eps)
{
cout<<"\n主元素太小..失败.."<<endl;
exit(0);
}
ratio=a[i][k]/a[k][k];
for(j=(k+1);j<(n+1);j++)
{a[i][j]-=ratio*a[k][j];}
a[i][k]=0;
}
}
x[n-1]=a[n-1][n]/a[n-1][n-1]; //回代
for(i=(n-2);i>=0;i--)
{
sum=0.0;
for(j=(i+1);j<n;j++)
{sum+=a[i][j]*x[j];}
x[i]=a[i][n]-sum/a[i][i];
}
} //Gauss消去法函数结束
void gauss::gauss_output() //结果输出函数
{
cout<<"\n结果是:"<<endl;
for(i=0;i<n;i++)
{
cout<<"\nx["<<i<<"] = "<<x[i]<<endl;
}
} //输出段结束
- 大小: 10 KB
- 大小: 14.4 KB
分享到:
相关推荐
《矩阵与数值分析》上机作业,采用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组的根。采用C语言编程,程序简单实用,有运行结果,修改方程组系数即可求解不同维数线性方程组的根。
列主元Gauss消去法是指在解方程组时,未知数顺序消去,在要消去的那个未知数的系数中找按模最大者作为主元.完成消元后,系数矩阵化为上三角形,然后在逐步回代求解未知数.列主元Gauss消去法是在综合考虑运算量与舍人误差...
《矩阵与数值分析》上机作业,采用带列主元的Gauss消去法求解线性方程组的根。采用C语言编程,程序简单实用,有运行结果,修改方程组系数即可求解不同维数线性方程组的根。
Gauss消去法(列主元)解线性方程组 包括程序代码和结果分析 % 高斯消去法,A为方程组系数矩阵,b为右端向量, x是解向量
内容包括:线性方程组的直接解法:Gauss消去法、Gauss列主元消去法、Gauss全主元消去法、列主元消去法应用『列主元求逆矩阵、列主元求行列式、矩阵的三角分解』、LU分解法、平方根法、改进的平方根法、追赶法(解三对...
基于高斯消去法解线性方程组(MPI),高斯消去法把Ax=b归约为上三角方程组Tx=c,这样利用回带算法求解x。第i次迭代时,选取i列的最大元素作为主元,主元所在的行称为枢轴行(枢轴行的行数会被标记),枢轴行与第i行...
高斯消去法、列主元消去、全主元消去法解线性方程组和Gauss-Jordan消元法求矩阵
主要是解 线性方程组 处理高阶稀疏矩阵时用迭代法解,分别了用了 Jacobi迭代,Gauss-Seidel迭代,松弛法。
用C#实现的解线性方程组,程序用到Gauss消元法,动态添加文本框控件,并生成文本框矩阵(在此感谢CSDN网友帮我解决动态添加文本框控件这个问题)。一起上传的还有一张Gauss消元算法的PPT
这四个程序分别为高斯消去法、列主元消去法、全主元消去法解线性方程组和Gauss-Jordan消元法求矩阵的逆。 程序采用MATLAB语言开发,并在MATLAB6.5下测试通过。
东北大学理学院数学系2017年12月13日计算数学教研室东北大学解线性方程组的直接方法东北大学解线性方程组的直接方法追赶法向量和矩阵的范数Gauss消去法平方根
分别取n=20,60,100,200,采用高斯消去法、列主元高斯消去法计算下列n阶线性方程组Ax=b的解:
当系数矩阵分解后的矩阵D是可逆阵时,该方法适用,里面附有详细的注释,适合新手阅读
+解线性方程组的直接方法:方程组的逆矩阵解法及其MATLAB程序,三角形方程组的解法及其MATLAB程序,高斯(Gauss)消元法和列主元消元法及其MATLAB程序, LU分解法及其MATLAB程序,误差分析及其两种MATLAB程序,求解...
线性方程组求解的数值实验报告 用Gauss消元法把上述方程组的系数矩阵化为上三角矩阵的过程称为消元过程,消元过程中元素的计算公式为: 这样就有了等价的上三角形方程组,如果最后一个方程的系数 ,则可以解出 ,...
3.线性方程组高斯消元 1. 顺序Gauss消去法通常也简称为Gauss消去法. 2. 顺序Gauss消去法中的 3. 主元素都不为零的充要条件为矩阵的各阶顺序
用Matlab软件掌握(非)...解线性方程组的方法介绍 解非线性方程(组)的方法介绍 包括高斯消元法的MATLAB程序、列主元素消元法的MATLAB程序、Jacobian迭代的MATLAB程序、高斯-塞德尔(Gauss-Seidel)迭代法公式等等。
使用改进后的Bareiss消去法,在求解具有符号系数的线性方程组时可以避免普通Gauss消去法在计算过程中出现所谓中间系数爆炸的问题,还可以求解系数矩阵不是方阵以及系数矩阵...
在数值线性代数中,Gauss-Seidel 方法也称为 Liebmann 方法或连续位移法,是一种用于求解线性方程组的迭代方法。 它以德国数学家卡尔·弗里德里希·高斯和菲利普·路德维希·冯·赛德尔的名字命名,类似于雅可比方法...
实现了常用的离散求解线性方程组的方法,包括 LU分解,Cholesky 分解,gaussJordan 方法,gaussPartiel方法,gaussSeidel 方法。