如何解决numpy数组上的符号方程?

问题描述

我尝试用来自 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 的 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC ,它可以将符号 sympy 表达式转换为 numpy 函数。在您的情况下,您首先需要创建一个符号解决方案,对其进行lambdify,然后在您的数组上调用它:

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,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)