题目:
通过设计、编制、调试2~3个多项式插值、拟合曲线的程序,加深对其数值计算方法及有关的基础理论知识的理解。
要求
用编程语言实现拉格朗日(Lagrange)插值多项式、牛顿(Newton)插值、用线性函数
拟合给定数据
的程序。
基本原理:
python实现:
def func(x,y,X,infor=True):
list2=[y[0]] # 差商表的对角线的第一个元素始终是y0
count=1
while(True):
if len(y)>1:
list=[] # 空列表用来保存,每次计算后差商表的行
for i in range(len(y)-1):
n=x[i+count]-x[i]
m=y[i+1]-y[i]
l=m/n
list.append(l)
list2.append(list[0]) # list2用来记录差商表的对角线元素,每计算
#一次,取行的第一个元素
count += 1
y = list
else:
break
if infor: # 判断是否要继续计算,结果
W=0
for i in range(len(list2)):
if i==0:
w=list2[i]
else:
w = list2[i]
for j in range(i):
w*=(X-x[j])
W+=w
return W
X=[0.4, 0.5, 0.6, 0.7, 0.8]
Y=[-0.9163, -0.6931, -0.5108, -0.3567, -0.2231]
print(X,Y)
result=func(X,Y,0.54)
print(result)
#编写牛顿插值函数,输入插值节点,输入要求的点x,反回x点对应的值。
结果:
牛顿插值法的输出结果:
E:\shuzhifenxishiyan\Newton\venv\Scripts\python.exe E:/shuzhifenxishiyan/Newton/main.py
[0.4, 0.5, 0.6, 0.7, 0.8] [-0.9163, -0.6931, -0.5108, -0.3567, -0.2231]
-0.6160952000000001
Process finished with exit code 0