我试图将fsolve
与mpmath
包结合使用。
但是,我得到了错误cannot create mpf from array([mpf('1.0')], dtype=object)
。在
下面是一个重现错误的最小示例。对于这个例子,从技术上讲,我不需要mpmath
包,但是我实际的函数包含了可以实现的超Confluent函数。在
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
(How to mpf an array?),但它告诉我该函数是不可调用的(当我将它应用于vn
)时)。在
错误的具体原因是:
结果是,
^{pr2}$fsolve
试图将您的estimate
转换为数组,而numpy不知道如何处理mpmath对象。在改变
fsolve
的工作方式并不是很有成效,所以最好的办法似乎是教您的函数处理mpmath对象数组诀窍是将
np.frompyfunc
应用于函数而不是值。我认为以下修改将使您的功能正常工作:相关问题 更多 >
编程相关推荐