使用 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 数组,因此 a
和 b
的维度不匹配。尝试
b = np.array([[10], [11], [12]])
使得 b
是一个 3×1 数组,或者
b = np.array([10, 11, 12])
使得 b
是长度为 3 的向量(与 b = [10, 11, 12]
一样,.solve()
也可以接受; 参见 the doc).
前者将得到一个 3×1 数组作为解,而后者将得到一个长度为 3 的向量。可能最好使用后者;通常我们并不关心一个向量是列向量还是行向量。 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 数组,因此 a
和 b
的维度不匹配。尝试
b = np.array([[10], [11], [12]])
使得b
是一个 3×1 数组,或者b = np.array([10, 11, 12])
使得b
是长度为 3 的向量(与b = [10, 11, 12]
一样,.solve()
也可以接受; 参见 the doc).
前者将得到一个 3×1 数组作为解,而后者将得到一个长度为 3 的向量。可能最好使用后者;通常我们并不关心一个向量是列向量还是行向量。 NumPy 通常以合理的方式处理向量。