1、对g(x)在100个切比雪夫节点之上分別使用Polynomial(Polynomial.fit)和Chebyshev(Chebyshev.fit)进行插值,在[-1,1]区间上取1000个等距点对误差进行比较。g(x)= sin(x**2) + sin(x)**2, 其中x=(x - 1) * 5。
代码实现:
import numpy as np
from numpy.polynomial import Chebyshev
扫描二维码关注公众号,回复:
6025046 查看本文章
def g(y):
y=(x-1)*5
return sin(y**2)+sin(y)**2
n=100
x1=np.linspace(-1,1,n)#polynomial正藏插值区间x2=Chebyshev.basis(n).roots()#Chebyshev进行插值
xd=np.linspace(-1,1,1000)
c1=Chebyshev.fit(x1,f(x1),n-1,domain=[-1,1])
c2=Chebyshev.fit(x2,f(x2),n-1,domain=[-1,1])
print(u"插值多样式的最大误差:")
print(u"等距离取样点:",abs(c1(xd)-f(xd)).max())
print(u"切比雪夫节点:",abs(c2(xd)-f(xd)).max())
输出结果:
插值多样式的最大误差:
等距离取样点: 90.63798229626987
切比雪夫节点:4.675603904047421e-09