Python 非线性方程组可以用Maple求解,但不能用sympy求解
我是新来的sympy,喜欢pythonic语法。然而,我遇到了一个Symphy无法解决的问题,但可以在Maple中轻松解决 因此,我有以下系统:Python 非线性方程组可以用Maple求解,但不能用sympy求解,python,sympy,maple,Python,Sympy,Maple,我是新来的sympy,喜欢pythonic语法。然而,我遇到了一个Symphy无法解决的问题,但可以在Maple中轻松解决 因此,我有以下系统: 0.0165 * exp( -2.0405-0.33*b-0.5*n)+0.031 * exp(-4.164-0.62*b-0.5*n)=k*p 0.025 * exp( -2.0405-0.33*b-0.5*n) +0.025 * exp(-4.164-0.62*b-0.5*n)=5*k 2*p=p*b+5*n 我需要用p来解b、n和k。我可以很容
0.0165 * exp( -2.0405-0.33*b-0.5*n)+0.031 * exp(-4.164-0.62*b-0.5*n)=k*p
0.025 * exp( -2.0405-0.33*b-0.5*n) +0.025 * exp(-4.164-0.62*b-0.5*n)=5*k
2*p=p*b+5*n
我需要用p
来解b
、n
和k
。我可以很容易地在Maple中解决这个问题,但是使用sympy,它会花费很长时间,最后会因为耗尽内存而崩溃。Maple可以提供精确的符号解决方案
我使用的sympy代码是solve([eq1,eq2,eq3],[b,n,k])
谢谢你的帮助 使用rational=False标志:
>>> print filldedent(solve([eq1,eq2,eq3],[b,n,k], rational=False))
[(-3.44827586206897*log((-0.000335859591913345*p +
0.00110833665331404)/(2.24927535168052e-5*p - 0.000139455071804192)) +
2, 0.689655172413793*p*log((-0.000335859591913345*p +
0.00110833665331404)/(2.24927535168052e-5*p - 0.000139455071804192)),
(0.000335859591913345*((-0.000335859591913345*p +
0.00110833665331404)/(2.24927535168052e-5*p -
0.000139455071804192))**1.13793103448276 +
2.24927535168052e-5*((-0.000335859591913345*p +
0.00110833665331404)/(2.24927535168052e-5*p - 0.000139455071804192))**
2.13793103448276)*exp(-0.344827586206897*p*log((-0.000335859591913345*
p + 0.00110833665331404)/(2.24927535168052e-5*p -
0.000139455071804192))))]
请
s/5k/5*k/
和s/2p/2*p/
。谢谢!结果似乎与Maple一致。能解释一下你在这里做了什么吗?在哪里添加rational=False
标志?那么filleddent
是什么意思?谢谢!对不起,复制粘贴错误。我更新了以显示“rational”的用法。Filled是在Symphy中定义的一个打印实用程序函数(来自Symphy import Filled),它可以缩短打印行并使复制/粘贴更加方便。@smichr我尝试了您的解决方案,但得到了空列表[]作为答案!确保您使用的是Symphy的当前版本。