python - 在 Python 中求解非线性方程
问题描述
我有 11*11 的矩阵 A 和长度为 11 的向量 b。我尝试使用线性方程组找到 11 个未知数的值
z= np.linalg.lstsq(A,b)
它返回了 11 个未知因子的值,所以我得到了一个包含 11 个值的向量。现在,如果我添加所有这些值,它会给我相等的值 RHS。所以例如
3x+4y = 19
2x+2y = 23
我可以得到满足上述方程的 x 和 y 的值
但我想要一个公式,其中 LHS 值的乘积应该给出 RHS 的相等值。
3x*4y = 19
2x*2y = 23
所以我需要 python 中的一些东西,当它们是乘法系统而不是加法系统时,它们可以返回我的 x 和 y 值。
在python中可以实现吗?
解决方案
您可以将系统的左侧写为np.prod(A*z, axis=1)
、 whereA = np.array([[3, 4],[2, 2]])
和z = [x, y]
。但是,您的示例系统没有解决方案。我看到它有解决方案的唯一情况是数组np.prod(A, axis=1) / rhs
中的所有值都相同。
在这种情况下,您可以通过以下方式对其进行数值求解scipy.optimize.root
:
from scipy.optimize import root
# note that np.prod(A, axis=1) / rhs = [1, 1]
A = np.array([[3, 4],[2, 2]])
rhs = np.array([12, 4])
def Eq(z):
return np.prod(A*z, axis=1) - rhs
result = root(Eq, x0=np.ones(2))
其中result.x
包含解决方案。请注意,解决方案不能保证是唯一的,将取决于起点x0
。
推荐阅读
- c# - 同一场景中的重放关卡有很多关卡 - Unity C#
- r - R中的ggplot2:添加错误栏不起作用
- json - 在 React 中加载 JSON 文件,没有 JSON 扩展
- javascript - 为什么我的函数在遇到返回后执行剩余代码(在两个循环内返回)
- javascript - 为什么我的百分号没有在整数值旁边输出?
- python - `json.decoder.JSONDecodeError` 使用 Python 和 Flask 制作应用程序时
- office365 - 有没有办法使用 Office.js 无缝发送邮件?
- r - ggplot中的自定义边框/多边形
- javascript - 使用 Kendo Grid - onclick 需要额外单击才能调用 jquery 方法
- neo4j - 在 Neo4J 中将字符串转换为多维数组