使用 sympy 求解器和 numpy 点不起作用

using sympy solver and numpy dot doesn't work

我正在尝试使用 sympy solve 求解一个长方程。这是等式的简化版本,但问题是一样的。

这段代码工作正常:

import numpy as np
import sympy as sy

coupons     = [0.504452818664, 0.486892427806, 0.47758800215, 100.468050176]       
rate = sy.Symbol('rate')
rate_final    = (sy.solve(100 - (rate*coupons[0]+rate*coupons[1]+rate*coupons[2]+rate*coupons[3]),rate)) 

print rate_final

rate-final[0.980998226948197].

但是当我尝试在等式中使用 numpy.dot 时,结果会给出一个空列表。

import numpy as np
import sympy as sy

coupons     = [0.504452818664, 0.486892427806, 0.47758800215, 100.468050176]           

rate = sy.Symbol('rate')
rate_final    = (sy.solve(100 - np.dot(rate,coupons[:]),rate)) 
print rate_final

rate_final[]

我的代码有问题吗?或者如果 np.dot() 在等式中,sympy.solve 将不起作用?

标量 rate 和向量 coupons 的点积几乎没有意义。您只能得到 rate 和每个元素的逐元素乘法。但是,您可以这样做:

import numpy as np
import sympy as sy

coupons = np.array([0.504452818664, 0.486892427806, 0.47758800215, 100.468050176])

rate = sy.Symbol('rate')
rate_final = sy.solve(100 - np.sum(rate * coupons), rate)
print(rate_final)