使用 Numba 进行 scipy fsolve,但出现错误

问题描述 投票:0回答:1

我想使用 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 performance numba scipy-optimize fsolve
1个回答
0
投票

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()
© www.soinside.com 2019 - 2024. All rights reserved.