我正在尝试使用fsolve
结合mpmath
包裹。
但是,我收到错误cannot create mpf from array([mpf('1.0')], dtype=object)
.
这是重现错误的最小示例。对于这个例子,技术上我不需要mpmath
包,但我的实际函数包含超融合函数。
from scipy.optimize import fsolve
#from mpmath import hyp1f1 as hyp1f1mp
#from mpmath import gamma as gammamp
import mpmath as mp
#import numpy as np
mp.dps = 250; mp.pretty = True
def cosFunc(p):
vn = p
output = mp.sin(vn)
return output
estimate = mp.mpf(1)
value = fsolve(cosFunc,estimate)
print value
我发现一个类似的问题建议使用np.frompyfunc
(如何对数组进行 mpf? https://stackoverflow.com/questions/13743785/how-to-mpf-an-array),但它告诉我该函数不可调用(当我将其应用于vn
).
诀窍是应用np.frompyfunc
到一个函数而不是一个值。我认为以下修改将使您的功能正常工作:
def cosFunc(p):
vn = p
np_sin = np.frompyfunc(mp.sin, 1, 1)
output = np_sin(vn)
return float(output)
value = fsolve(cosFunc, 1)
print value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)