这是我写的:这是一个关于插值的经典练习,我已经完成并发送了。我想知道是否有另一种(更长的)方式......
q
是浮点数列表(插值点)
i
是拉格朗日多项式的索引
x
是评估点:
def l(q,i,x):
poly=1.0
for j,p in enumerate(q):
if j==i:
continue
poly *=(x-p)/(q[i]-p)
return poly
然后是我正在处理的功能:
def Lambda(q,x):
value=0.0
for j in range(0,len(q)):
value+=abs(l(q,j,x))
return value
现在我可以使用 python 的一些例程在区间 [0,1] 中找到它的最大值,我做到了。在 python 中有一个多项式模块,我可以用它轻松地重新定义 l:
import numpy.polynomial.polynomial as P
def l_poly(q,i):
poly = []
for j,p in enumerate(q):
if j==i:
continue
poly.append(p/(q[i]-p))
return P.polyfromroots(poly)
我想做同样的事情,Lambda
这样我就可以使用导数的内置函数找到它的最大值(找到它的零点等等)。问题是它是 的总和abs(polynomials)
。有没有办法做到这一点?或者混合多项式导数和 的导数abs(...)
?