python - 使用 NumPy 求解线性方程
问题描述
我正在尝试使用 Python 和 NumPy 库求解线性方程3x+6y+7z = 10、2x+y+8y = 11 & x+3y+7z = 22 。
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 的向量(它和 just 一样b = [10, 11, 12]
,也可以被 接受.solve()
;参见文档)。
前者将产生一个 3×1 数组作为解,而后者将产生一个长度为 3 的向量。可能最好使用后者;通常我们并不真正关心向量是列向量还是行向量。NumPy 通常以合理的方式处理向量。
推荐阅读
- linux - ifort 编译可执行的 linux 未定义引用
- android-recyclerview - 从活动而不是适配器更改recyclerview中所有文本视图的背景
- java - 如何将 OUT String 参数传递给函数?
- javascript - 热图系列未使用 setData() 更新
- android - 活动重叠
- opencv - OpenCV phase() 函数在这种极端情况下是否正常工作?
- perl - 使用 Perl 我想使用 SFTP 过滤名称与特定模式匹配的文件
- tomcat - 为什么 Intellij 在使用 tomcat 运行配置时会复制并覆盖我过滤的 web.xml?
- ionic3 - Ionic 3:文件传输下载,文件不在目录中但没有错误代码
- java - 如何使用 Google Truth(单元测试)使用其中一个属性来比较两个元素