python-Sympy:从数字上找到符号函数的根

我有一个想找到其根源的函数.到目前为止,甚至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表达式上工作.

上一篇:在Python中求解一个困难的(多项式?)方程


下一篇:python-SymPy:带(3,n)-数组的lambdified dot()