我用Sympy
复制Mathematica结果,而且我对后者不熟悉,所以我可能做错了事情。然而,我注意到,在max使用Mathematica花了一分钟的时间在sympy中只花了很长时间(阅读:在我一小时前开始之后还没有完成)。这既适用于Simplify()
,也适用于solve()
。我是做错了什么,还是真的是这样?在
我将附上我的solve()
案例:
import sympy as sp
from sympy import init_printing
init_printing()
p, r, c, p, y, Lambda = sp.symbols('p r c p y Lambda')
F = sp.Symbol('F')
eta1 = lambda p: 1/(1-sp.exp(-Lambda) * sp.exp(-Lambda)*(sp.exp(Lambda) - 1 - Lambda))
eta2 = lambda p: 1/(1-sp.exp(-Lambda)) * sp.exp(-Lambda)/(1-F) * (sp.exp(Lambda*(1- F)) - 1 - Lambda*(1-F))
eta = lambda p: 1 - eta1(p) + eta2(p)
etaOfR = sp.limit(eta(p), F, 1)
S = lambda p: eta(p)*y/p*(p-c)
SOfR = etaOfR*y/r*(r-c)
sp.solve(S(p)-SOfR, F)
相应的Mathematica代码:
^{pr2}$输出:
{{f -> (-(1 + lambda) p r +
c (lambda p + r) + (c -
p) r ProductLog[-E^(((-c lambda p + (c (-1 + lambda) +
p) r)/((c - p) r)))])/(lambda (c - p) r)}}
正确的方法是:
您也可以在此处查看笔记本: http://nbviewer.ipython.org/gist/jankoslavic/0ad7d5c2731d425dabb3
结果与Mathematica的结果相同(见最后一行),Sympy的性能也具有可比性。在
相关问题 更多 >
编程相关推荐