python数学符号_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表达式上工作.

标签:sympy,python

来源: https://codeday.me/bug/20191119/2034964.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值