繁体   English   中英

Sympy:数字地找到符号函数的根

[英]Sympy: Numerically find root of a symbolic function

我有一个我想找到的功能。 到目前为止,即使是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' object is not callable 我错了什么,我如何在数字上找到根 - 我怎么能在分析中找到它?

如果要使用mpmath.findroot ,则需要将SymPy表达式转换为mpmath表达式。 最简单的方法是使用lambdify(p, priceCDF, 'mpmath') (我假设p是你想要解决的变量)。

另一种解决方案是使用sympy.nsolve ,它直接用于SymPy表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM