Gauss消元法(特解与通解)

原创 2016年08月30日 23:39:23

这里给出了加强版本的高斯消元算法的实现,当未知数的个数多于方程的数量时,则将方程的解表示为其余某些未知数与常数的线性组合,若可确定解,则给出常数解。

基本思路是:

(1)找到第i列不是0的元素,将它交换到第i行,然后将第i+1到n行的中的第i个元素全部消为0。经过n-1次循环,最后得到一个上三角矩阵。

(2)从最后一行开始进行展开,将下一行未知数解出,然后带入上一行,解出新的未知数的解的多项式,然后不停迭代。

(3)当方程的解只有特解时,得到的是只关于常数的一系列多项式。通解是关于后nR(A)个未知数的线性组合;


def gauss(a):
    ep = 0.1**(15)
    n = len(a)
    num = len(a[0])
    array = []
    for i in range(0,n):
        p = -1
        for k in range(i,n):
            if abs(a[k][i])>ep:p=k;break
        if p==-1:continue
        a[i],a[p] = a[p],a[i]
        if a[i]!=[0]*num:array.append(a[i])
        x = a[i][i]
        for j in range(i+1,n):
            if abs(a[j][i])<ep:continue
            k = -a[j][i]/(x)
            for m in range(i,num):a[j][m]+= k*a[i][m]
    a = array;n = len(a);num = len(a[0])
    for index in range(0,num-1):
        if a[-1][index]!=0:break
    last = deque()
    for k in range(0,num-index-2):last.append([1 if m==k else 0 for m in range(num-index-2)]+[0])
    for i in range(n-1,-1,-1):
        sum_1 = [0]*(num-index-2)
        constant = 0
        for item in zip(a[i][i+1:num-1],last):
            constant += item[0]*item[1][-1]#compute the constant
            for ind in range(len(item[1])-1):
                sum_1[ind] -= item[0]*item[1][ind]/a[i][i]
        sum_1.append((a[i][-1]-constant)/a[i][i])
        last.appendleft(sum_1)
    print(a,last)
#gauss([[1,1,2,3,3],[2,1,2,4,5],[1,1,4,5,3],[1,3,7,4,6]])
版权声明:本文为博主原创文章,未经博主允许不得转载。

选主元的高斯-约当(Gauss-Jordan)消元法解线性方程组和求逆矩阵

选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵、解线性方程组(插一句:LM算法求解的一个步骤),等等。它的速度不是最快的,但是它非常稳定(来自网上的定义...

中国剩余定理:从构造特解到找出通解

曾以为中国剩余定理不在我所能理解的范围之内,起码,不在我能证明的范围之内——因为描述它的这堆符号的缘故。如果你也觉得这个定理的描述用到了许多高端的符号,请阅读本文。...

Gauss消元法的Matlab实现

本文主要介绍了Gauss消去法的实现过程,实现了Matlab版本的算法。并对算法计算时间做了测试分析,代码没有进行优化,在低维计算下,计算时间还是非常地快。欢迎读者能够提出更加优化和更多语言实现的代码...
  • lol_IP
  • lol_IP
  • 2017年11月05日 19:55
  • 82

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创

//最近一直在做一个数论专题,后期有待整理,先将有关资料收藏下,在学习高斯消元的时候看了czyuan大牛的此文获益匪浅,czyuan的此份模板可以解决大多高斯问题,当然并不是万能的,其中建立矩阵是难点...
  • sizaif
  • sizaif
  • 2017年04月20日 23:30
  • 361

全选主元Gauss 消元法

全选主元Gauss消元法,全选主元高斯消元法。这个算法是健壮的(数学术语)。我们通过选主元的方法来弥补顺序Gauss消元法的弊端,增加了pivrow和pivcol来记录包含主元素的行和列。由线性代数行...

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创

转载自:http://hi.baidu.com/czyuan_acm/blog/item/ebf41f8fdc0e1ee6f01f36e9.html 高斯消元法,是线性代数中的一个算法,可用来求...
  • wconvey
  • wconvey
  • 2012年06月06日 14:31
  • 1617

GAUSS高斯消元法

  • 2013年04月09日 19:06
  • 2KB
  • 下载

Gauss消元法源代码

  • 2010年03月18日 20:20
  • 2KB
  • 下载

gauss-jordan 消元法

gauss-jordan消元法的基本思想是将系数矩阵化为单位阵,那样就省去了回代的过程,直接的到方程组的解,该方法也可用于求矩阵的逆矩阵。其代码如下:#include #include #incl...

Gauss消元法(Matlab)

  • 2009年03月31日 17:22
  • 13KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gauss消元法(特解与通解)
举报原因:
原因补充:

(最多只允许输入30个字)