我有一个想找到其根源的函数.到目前为止,甚至Mathematica都无法通过分析找到根,因此从数值上来说还不错(但是请,我很高兴对此事感到惊讶).
文档中的所有示例均涉及“实际”函数,lambda函数,并且没有充分解决此问题(或者我太慢了,无法理解).这是一个简单的用例:
from sympy import *
p, r, c, y, lam, f = symbols('p r c y lambda f')
priceCDF = (c*lam*p + c*r - lam*p*r - p*r + r*(c - p)*LambertW(-exp((-c*lam*p - c*r + lam*p*r + lam*r*(c - p) + p*r)/(r*(c - p))), -1))/(lam*r*(c - p))
priceCDFplot = priceCDF.subs(r, 2).subs(c, 0.5).subs(lam, 1)
mpmath.findroot(priceCDFplot, 0.8)
这给我TypeError:’Mul’对象是不可调用的.我有什么问题,如何从数字上找到根?如何分析地找到根?
解决方法:
如果要使用mpmath.findroot,则需要将SymPy表达式转换为mpmath表达式.最简单的方法是使用lambdify(p,priceCDF,’mpmath’)(我假设p是您要求解的变量).
另一个解决方案是使用sympy.nsolve,它直接在SymPy表达式上工作.
标签:sympy,python
来源: https://codeday.me/bug/20191119/2034964.html