使用 NumPy 求解线性方程

Solving Linear Equation Using NumPy

我正在尝试求解线性方程 3x+6y+7z = 10, 2x+y+8y = 11 & x+3y+7z = 22 使用 Python 和 NumPy 库。

import numpy as np
a = np.array([[3, 6, 7],
              [2, 1, 8],
              [1, 3, 7]])
b = np.array([[10, 11, 22]])
np.linalg.solve(a, b)

但无法弄清楚我在上面的代码中做错了什么导致抛出以下错误

ValueError: solve: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (m,m),(m,n)->(m,n) (size 1 is different from 3)

您的 b 是一个 1×3 数组,因此 ab 的维度不匹配。尝试

  1. b = np.array([[10], [11], [12]]) 使得 b 是一个 3×1 数组,或者

  2. b = np.array([10, 11, 12]) 使得 b 是长度为 3 的向量(与 b = [10, 11, 12] 一样,.solve() 也可以接受; 参见 the doc).

前者将得到一个 3×1 数组作为解,而后者将得到一个长度为 3 的向量。可能最好使用后者;通常我们并不关心一个向量是列向量还是行向量。 NumPy 通常以合理的方式处理向量。