`
luozhong915127
  • 浏览: 188800 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论
阅读更多

       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
1
1
分享到:
评论

相关推荐

    用gauss消去法求解线性方程组

    根据给定的文件信息,我们可以总结出以下关于使用Gauss消元法求解线性方程组的相关知识点: ### Gauss消元法概述 Gauss消元法是一种在数学上求解线性方程组的经典算法。它通过一系列的行变换将矩阵转化为阶梯形或...

    用Gauss迭代法解线性方程组

    2. **构建迭代公式**:对于线性方程组 Ax=b(其中A是系数矩阵,x是未知数向量,b是常数向量),Gauss迭代法构造出如下的迭代公式: \( x^{(k+1)}_i = \frac{1}{a_{ii}} (b_i - \sum_{j=1}^{i-1} a_{ij} x_j^{(k+1...

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

    Gauss消去法是一种经典的解线性方程组的方法,而列主元素Gauss消去法则是其优化版本,尤其适用于大型稀疏矩阵。本篇将详细介绍列主元素Gauss消去法及其在C语言和MATLAB中的实现。 列主元素Gauss消去法的主要思想是...

    列主元Gauss消去法求解线性方程C++

    列主元Gauss消去法是一种数值线性代数中的重要算法,用于求解线性方程组。在C++编程环境下实现这个方法,可以高效地处理大量的计算问题。线性方程组在计算机科学、工程学、经济学等多个领域都有广泛应用,因此掌握...

    Gauss列主元消去法求解线性方程组实验报告

    高斯消去法是数值线性代数中用于求解线性方程组的一种方法。本实验报告详细介绍了高斯消去法中的一个变种——Gauss列主元消去法,并阐述了如何利用MATLAB软件实现该算法,以解决线性方程组的问题。下面是关于该报告...

    列主元高斯消去法解线性方程组的程序(MATLAB版)

    ### 列主元高斯消去法解线性方程组的程序(MATLAB版) #### 背景介绍 本篇文章将详细解释一个利用MATLAB实现的列主元高斯消去法来求解线性方程组的程序。列主元高斯消去法是一种改进的高斯消去法,它通过选择每...

    数值分析实验报告, 解线性方程组的直接方法

    本实验报告重点探讨了直接方法,即Gauss顺序消去法、Gauss列主元消去法以及追赶法,以解决不同类型线性方程组。 一、线性方程组的直接解法 1. Gauss顺序消去法:该方法通过一系列行变换将系数矩阵转化为上三角形或...

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

    Gauss列主元消去法是一种广泛应用于科学计算中的数值线性代数方法,它通过对线性方程组的系数矩阵进行行变换,将其转化为阶梯形矩阵,从而简化了方程组的求解过程。 #### 二、Gauss列主元消去法原理 Gauss列主元...

    Hilbert矩阵的病态问题及线性方程数值求解.docx

    * 线性方程组数值求解方法:Gauss 消去法、Jacobi 法、GS 迭代法、SOR 迭代法 * python 代码实现 Hilbert 矩阵的生成、线性方程组数值求解 * numpy 模块在数值计算中的应用 * 迭代次数和维数对解精度的影响 这篇...

    用高斯消元法解线性方程组 的MATLAB程序

    ### 高斯消元法解决线性方程组的MATLAB程序详解 #### 一、引言 在数学和工程领域中,线性方程组是常见且重要的问题之一。解决这类问题的方法有很多种,其中高斯消元法是一种非常基础且有效的方法。本文将详细介绍...

    列主元Gauss消去法解方程组及matlab代码实现

    列主元Gauss消去法是一种改进的线性方程组求解算法,它通过选取合适的主元来减小计算中的舍入误差,提高算法的稳定性。这种方法在处理大规模线性方程组时,尤其在矩阵近似对角或者部分元素较大时,表现出了较好的...

    c++解线性方程组的几种方法

    根据给定的信息,本文将详细解释使用C++解决线性方程组的几种方法,包括克莱默法则(Cramer's Rule)、高斯消元法(Gauss Elimination)、全高斯消元法(Full Gauss Elimination)以及杜利特分解法(Doolittle ...

    迭代法解线性方程组的C++代码

    在给出的文件“迭代法解线性方程组”中,很可能包含了上述各种迭代方法的C++实现,以及如何读取和处理输入数据,以及如何输出结果。通过对这些代码的学习和实践,可以深入了解迭代法在解决实际问题中的应用,提升...

    Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组的根

    当线性方程组规模较大时,直接求解方法如高斯消元法可能会面临计算量大、效率低的问题。此时,迭代法成为了一种实用的选择。本文将重点讨论两种常用的迭代法——雅可比迭代法(Jacobi Iteration)和高斯-赛德尔迭代...

    Jacobi迭代法求解线性方程组以及Gauss-Seidel迭代法求解线性方程组的程序

    **雅可比迭代法**是求解线性方程组的一种迭代方法,适用于对角占优的矩阵。对于线性方程组 Ax = b,其中A是对称正定或对角占优的矩阵,可以将其分解为D-L-U形式,其中D是对角部分,L是下三角部分(不包括对角线),U...

    GaussJordan解线性方程组-matlab

    Gauss-Jordan消元法是一种解决线性方程组的有效算法,它基于高斯消元法,通过一系列行变换将系数矩阵转化为阶梯形矩阵,进而转化为最简行阶梯形矩阵,从而求得方程组的解。在MATLAB中实现Gauss-Jordan消元法,可以...

    Gauss列主元消元法解线性方程组(通用)

    标题与描述中的“Gauss列主元消元法解线性方程组(通用)”指的是在数值分析领域中,一种解决线性方程组的方法,即高斯列主元消元法(Gauss Elimination with Partial Pivoting)。这种方法通过一系列行变换将系数矩阵...

    高斯等方法解线性方程的c++代码

    1. **高斯消元法**:是最基本的线性方程组求解方法,通过行变换将系数矩阵转化为阶梯形或简化阶梯形矩阵,进而求得解。代码实现中,会包含一系列的行交换和元素乘除操作,确保非零元素在主对角线上,并逐渐消除下方...

    Matlab之Gauss消元法解线性方程组[宝典].doc

    Gauss消元法是线性代数中一种求解线性方程组的常用方法,其基本思想是通过一系列行变换将系数矩阵转化为阶梯形或简化阶梯形矩阵,从而简化计算过程,最后通过回代求解未知数。在Matlab中,我们可以编写函数来实现这...

Global site tag (gtag.js) - Google Analytics