1 回答

TA貢獻1155條經驗 獲得超0個贊
前提:以下解決方案找到整數(近似)系數。
使代碼更高效的一種簡單方法是使用向量化(使用numpy
庫)計算所有索引組合的多項式,然后返回多項式值更接近 的值的索引組合n
。
下面的代碼創建一個包含所有整數a
和b
組合的網格,使用np.meshgrid
,然后計算所有組合的多項式,并計算組合的位置,使多項式更接近于n
使用np.argmin
。最后,它返回組合的a
和值。b
import numpy as np
def find_approximate_integer_coefficients(n, x, amin=-10, amax=10, bmin=-10, bmax=10):
? ? a_range = np.arange(amin, amax+1)
? ? b_range = np.arange(bmin, bmax+1)
? ? a_coefficients, b_coefficients = np.meshgrid(a_range, b_range)
? ? polynomial_value = (a_coefficients * (x ** 2) + b_coefficients * x)
? ? argmin = np.abs(polynomial_value - n).argmin()
? ? return a_coefficients.flatten()[argmin], b_coefficients.flatten()[argmin]
例如,在我的筆記本電腦上大約 75 微秒后find_approximate_integer_coefficients(7.3890, np.e)返回。(1, 0)
您可以輕松地將上面的代碼擴展到高階多項式的情況,因為該np.meshgrid方法接受任意數量的范圍來創建網格。
添加回答
舉報