mpmath:无法创建 mpf
mpmath : cannot create mpf
我想使用 mpmath.quad 来评估由 sympy 简化的函数的整数值。
然后我用了下面的代码
from sympy import *
import mpmath as mp
r = symbols("r")
f = 4**(-r)*r*(0.115391565000863*2**r + 693.147180559945)*exp(-0.000332949677174323*2**r)
mp.quad(lambda r:f,[0,1])
但收到此错误消息
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-715cd610bbdb> in <module>()
3 r = symbols("r")
4 f = 4**(-r)*r*(0.115391565000863*2**r + 693.147180559945)*exp(-0.000332949677174323*2**r)
----> 5 mp.quad(lambda r:f,[0,1])
5 frames
/usr/local/lib/python3.6/dist-packages/mpmath/ctx_mp.py in _convert_fallback(ctx, x, strings)
632 else:
633 raise ValueError("can only create mpf from zero-width interval")
--> 634 raise TypeError("cannot create mpf from " + repr(x))
635
636 def mpmathify(ctx, *args, **kwargs):
TypeError: cannot create mpf from 4**(-r)*r*(0.115391565000863*2**r + 693.147180559945)*exp(-0.000332949677174323*2**r)
我尝试另一个简单的函数
from sympy import *
import mpmath as mp
x = symbols("x")
f = x*2
mp.quad(lambda x:f,[1,2])
也收到相同的错误消息
TypeError: cannot create mpf from 2*x
任何人都可以知道导致此错误消息的原因以及如何正确使用 quad 函数吗?
lambda r:f
不会创建您认为的可调用对象。您必须将 f
的定义复制并粘贴到 rhs 上或替换为函数的调用值:
>>> f = r + 1
>>> (lambda r:f)(1)
r + 1
>>> (lambda r: r + 1)(1)
2
>>> (lambda v:f.subs(r,v))(1)
2
我想使用 mpmath.quad 来评估由 sympy 简化的函数的整数值。
然后我用了下面的代码
from sympy import *
import mpmath as mp
r = symbols("r")
f = 4**(-r)*r*(0.115391565000863*2**r + 693.147180559945)*exp(-0.000332949677174323*2**r)
mp.quad(lambda r:f,[0,1])
但收到此错误消息
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-715cd610bbdb> in <module>()
3 r = symbols("r")
4 f = 4**(-r)*r*(0.115391565000863*2**r + 693.147180559945)*exp(-0.000332949677174323*2**r)
----> 5 mp.quad(lambda r:f,[0,1])
5 frames
/usr/local/lib/python3.6/dist-packages/mpmath/ctx_mp.py in _convert_fallback(ctx, x, strings)
632 else:
633 raise ValueError("can only create mpf from zero-width interval")
--> 634 raise TypeError("cannot create mpf from " + repr(x))
635
636 def mpmathify(ctx, *args, **kwargs):
TypeError: cannot create mpf from 4**(-r)*r*(0.115391565000863*2**r + 693.147180559945)*exp(-0.000332949677174323*2**r)
我尝试另一个简单的函数
from sympy import *
import mpmath as mp
x = symbols("x")
f = x*2
mp.quad(lambda x:f,[1,2])
也收到相同的错误消息
TypeError: cannot create mpf from 2*x
任何人都可以知道导致此错误消息的原因以及如何正确使用 quad 函数吗?
lambda r:f
不会创建您认为的可调用对象。您必须将 f
的定义复制并粘贴到 rhs 上或替换为函数的调用值:
>>> f = r + 1
>>> (lambda r:f)(1)
r + 1
>>> (lambda r: r + 1)(1)
2
>>> (lambda v:f.subs(r,v))(1)
2