gauss-jordan 消元法

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


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 Python 实现 Gauss-Jordan 的代码,其中包括了列主元选取的方: ```python import numpy as np def pivot_matrix(M): """Returns the pivoting matrix for M, used in Doolittle's method.""" m = len(M) # Create an identity matrix, with floating point values id_mat = [[float(i ==j) for i in range(m)] for j in range(m)] # Rearrange the identity matrix such that the largest element of # each column of M is placed on the diagonal of of M for j in range(m): row = max(range(j, m), key=lambda i: abs(M[i][j])) if j != row: # Swap the rows id_mat[j], id_mat[row] = id_mat[row], id_mat[j] return id_mat def gauss_jordan(A, b): """Solves the equation Ax = b via Gauss-Jordan elimination.""" # Create the augmented matrix M = np.column_stack((A, b)) n, m = M.shape # Create the pivoting matrix P and the inverse of P id_mat = pivot_matrix(M) P = np.matrix(id_mat) P_inv = np.linalg.inv(P) # Apply the pivoting matrix to M M = P * M # Perform the Gauss-Jordan elimination for j in range(n): div = M[j, j] M[j, :] /= div for i in range(n): if i != j: sub = M[i, j] M[i, :] -= sub * M[j, :] # Separate the results (x) from the augmented matrix x = M[:, :-1] return P_inv * x # Example usage: A = np.array([[2, 1, -1], [3, 2, 1], [1, 0, 1]]) b = np.array([8, 13, 2]) x = gauss_jordan(A, b) print(x) ``` 在这个例子中,我们使用了 NumPy 库来处理矩阵运算。函数 `pivot_matrix()` 生成了一个大小为 $n \times n$ 的矩阵,其中第 $i$ 行和第 $j$ 行交换,是为了使得第 $j$ 列的最大元素出现在第 $j$ 行。函数 `gauss_jordan()` 对输入的矩阵 A 和向量 b 进行了元操作,并返回解向量 x。在最后一个例子中,我们使用这个函数解了一个线性方程组。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值