使用 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)
我正在尝试使用 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)