高斯消元法求解线性方程组(附python代码)

输入:a是m×n的系数矩阵,b是m×1的(列)向量。

输出:方程组的通解。


用高斯消元法(行化简法)解线性方程组步骤

  • 1.构造方程组的增广矩阵
  • 2.从最左边列往右,使用行化简算法把增广矩阵化为阶梯形,确定矩阵是否有解:

    若最后一列为主元列(最后一行非零行形如 [0 0 0 5]),无解,返回无解。
  • 3.继续行化简,把主元上面的所有的元素都化为0,把主元位置变成1.
  • 4.把每个主元列对应的变量表示成非主元变量的线性组合.
import numpy as np
def arguemented_mat(a, b):
    return np.c_[a,b]


# 行交换
def swap_row(a,i,j):
    m,n = a.shape
    if i >= m or j >= m:
        print 'error: out of index ...'
    else:
        a[i] = a[i] ^ a[j]
        a[j] = a[i] ^ a[j]
        a[i] = a[i] ^ a[j]
    return a


# 变成阶梯矩阵
def trape_mat(sigma):
    m,n = sigma.shape
    #保存主元所在的列数,一般来说,每行都有一个主元,除非某行全零
    main_factor = []
    main_col = 0
    while main_col < n and len(main_factor) < m:
        # 当行数多于列数的时候,出现所有的列已经处理完,结束
        if main_col == n:
            break
        # 逐列找主元,若该列全零(从第i行往下),则没有主元
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值