주어진 계수 범위를 가진 다항식을 생성하고 모든 루트 목록을 출력하는 함수를 만들었습니다. 그러나 Numba는 그것을 좋아하지 않습니다. 그것은 다음과 같이이다 : AssertionError를 :Python Numba Polymomial Root Lower Error with Sympy
import math
import numpy as np
import itertools
from numba import jit
from sympy.solvers import solve
from sympy import Symbol
from sympy import Poly
@jit
def polyn(ranges=[[-20,20],[-20,20],[-20,20],[-20,20]],step=4):
l = []
x = Symbol('x')
rangl = [np.linspace(i[0],i[1],math.floor((i[1]-i[0])/step)) for i in ranges]
coeffl = iter(itertools.product(*rangl))
leng = 1
for i in rangl:
leng *= len(i)
for i in range(0, leng):
a = solve(Poly(list(next(coeffl)),x),x)
for j in a:
l.append(j)
return np.array(l)
내가 이것을 실행하려고하면, 그것은 비밀을 출력 객체에 실패 (객체 모드 프론트 엔드) 나는 누군가가 도와 드릴까요 ... 이해가 안 를?
Numba는 SymPy 코드의 속도를 향상시킬 수 없습니다. 이것이 병목 현상이라면 숫자 해석기를 사용해보십시오. 시도해 볼 또 다른 한가지는 일반 입방 (상징 계수가있는)을 풀고 일반 솔루션의 값을 연결하는 것입니다. – asmeurer
아니, 나도 알아 -하지만 큰 배열에 걸쳐 이러한 작업의 반복을 가속화하지 않을까요? (sympy 해결) –
nogil 옵션과 병렬로 실행하는 경우를 제외하고는 의심 스럽습니다. – asmeurer