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 Elimination) 分析 & 题解 & 模板——czyuan原创

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

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

转载自:http://hi.baidu.com/czyuan_acm/blog/item/ebf41f8fdc0e1ee6f01f36e9.html 高斯消元法,是线性代数中的一个算法,可用来求...

全选主元Gauss 消元法

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

GAUSS高斯消元法

Gauss消元法源代码

gauss-jordan 消元法

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

Gauss消元法(Matlab)

  • 2009-03-31 17:22
  • 13KB
  • 下载

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

高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 高斯消元法的原理是: 若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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