微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 NumPy 求解线性方程

如何解决使用 NumPy 求解线性方程

我正在尝试解线性方程3x+6y+7z = 102x+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 不同)>

解决方法

您的 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,12] 一样,也可以被 .solve() 接受;见 {{ 3}}).

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。