python - 如何求解 numpy 数组上的符号方程?

标签 python math sympy solver

我尝试使用 Sympy 中的 solve 求解方程。但我的方法并没有达到预期的效果。

我的等式:0.00622765954483725 = (x * 24.39 * 0.921107170819325)/143860432.178345

我的代码:

from sympy import symbols, solve
import numpy as np 
x = symbols('x')
sol = solve((np.array([[x],[x]])  * np.array([[24.39],[293.6]]) * np.array([[0.921107170819325],[1]])) / np.array([[143860432.178345],[143860432.178345]]) - np.array([[0.00622765954483725],[0.0089267519953503]]))

我在线性表达式上取得了成功,但我有一个 DataFrame,我想同时求解所有数据。

from sympy import symbols, solve
x = symbols('x')
sol = solve((x * 24.39 * 0.921107170819325) / 143860432.178345 - 0.00622765954483725)

最佳答案

Numpy 不理解 sympy 的符号,sympy 也不理解 numpy 数组。使它们协同工作的唯一方法是使用 sympy 的 lambdify,它可以将符号 sympy 表达式转换为 numpy 函数。在您的情况下,您首先需要创建一个符号解决方案,对其进行 lambdify,然后在您的数组上调用它:

from sympy import symbols, solve, Eq, lambdify

a, b, c, d = symbols('a b c d', real=True)
x = symbols('x')
sol = solve(Eq(x * a * b / c, d), x) # solve returns a list of solutions, in this case a list with just one element

np_sol = lambdify((a, b, c, d), sol[0]) # convert the first solution to a (numpy) function

# everything before is only sympy, everything from here is only numpy

import numpy as np  

a_np = np.array([[24.39], [293.6]])
b_np = np.array([[0.921107170819325], [1]])
c_np = np.array([[143860432.178345], [143860432.178345]])
d_np = np.array([[0.00622765954483725], [0.0089267519953503]])

np_sol(a_np, b_np, c_np, d_np)

结果:

array([[39879.],
       [ 4374.]])

关于python - 如何求解 numpy 数组上的符号方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65480707/

相关文章:

python - XGBoost 中的特征重要性 'gain'

python webbrowser.open(url)

python - 如何从mongodb中获取匹配的子文档?

javascript - Javascript 中类似 php 函数 substr() 的函数是什么

python - 集合中的 Sympy 关系符号

python - 使用 lambdify 将涉及向量转置的表达式转换为数值函数

Python:动态地向对象添加字段

java - 随机错误和 boolean 错误

python - 如何在圆周上找到点

python - 将函数与 Python(sympy、quad)集成,其中结果是我想要绘制的另一个函数