我想使用 numba 进行 scipy.fsolve:
from scipy.optimize import fsolve
from numba import njit
@njit
def FUN12():
XGUESS=[8.0,7.0]
X =[0.0,0.0]
try:
X = fsolve(FCN3, XGUESS)
except:
print("error")
return X
@njit
def FCN3(X):
F=[0.0,0.0]
F[0]=4.*pow(X[0],2)-3.*pow(X[1],1)-7
F[1] = 5.*X[0] -2. * pow(X[1] , 2)+8
return F
FUN12()
我的代码出现此错误:
numba.core.errors.TypingError:在 nopython 模式管道中失败(步骤:nopython 前端)
无类型全局名称“fsolve”:无法确定
Numba 兼容代码只是 Python 和 Numpy 函数的一些子集。
您不应该在 numba 函数内运行
fsolve
。
您应该从 FUN12 函数中删除
njit
装饰器。您可以保留它用于 FCN3。
from scipy.optimize import fsolve
from numba import njit
# @njit remove this line,
def FUN12():
XGUESS=[8.0,7.0]
X =[0.0,0.0]
try:
X = fsolve(FCN3, XGUESS)
except:
print("error")
return X
@njit
def FCN3(X):
F=[0.0,0.0]
F[0]=4.*pow(X[0],2)-3.*pow(X[1],1)-7
F[1] = 5.*X[0] -2. * pow(X[1] , 2)+8
return F
FUN12()