【问题标题】:Solving Linear Equation Using NumPy使用 NumPy 求解线性方程
【发布时间】:2021-06-21 05:32:55
【问题描述】:

我正在尝试求解线性方程组 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: 解决:输入操作数 1 的核心维度 0 不匹配,带有 gufunc 签名 (m,m),(m,n)->(m,n)(大小 1 与 3 不同)

【问题讨论】:

    标签: python numpy linear-equation


    【解决方案1】:

    您的 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 通常以合理的方式处理向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-08
      • 2020-04-03
      • 2023-01-15
      • 2017-06-16
      • 1970-01-01
      • 2010-09-05
      相关资源
      最近更新 更多