如何解决使用 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: 解决:输入操作数 1 在其核心维度 0 中存在不匹配,具有 gufunc 签名 (m,m),(m,n)->(m,n)(大小 1 与 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,12]
一样,也可以被.solve()
接受;见 {{ 3}}).
前者会得到一个 3×1 的数组作为解,而后者会得到一个长度为 3 的向量。可能使用后者更好;通常我们并不真正关心向量是列向量还是行向量。 NumPy 通常以合理的方式处理向量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。