直接给出代码,可以看看。
import sympy as sy
from sympy import *
import matplotlib.pyplot as plt
import numpy as np
def f(a,b,n):#拉格朗日插值法
global x,y#定义全局变量
ty=ones(1,n+1);rt=0#给出初始空间
x=symbols('x')#定义函数变量名
for i in range(n+1):#确定第i个参数
for j in range(n+1):
if i != j:#分母不为零,即排除i
ty[i]=ty[i]*(x-a[j])/(a[i]-a[j])#求积公式
else:
continue
for p in range(n+1):#求最终函数表达式
qw=b[p]*ty[p]#确定每个部分
rt+=qw#求和
return rt
def g(t1,b,n):#牛顿插值法
global x,y#定义全局变量
ty1=ones(1,n+1);ty2=ones(1,n+1);op=0;ty3=ones(1,n+1)
a=1;rt=0;gt=0
x=symbols('x')
for m in range(n):
a=a*(x-t1[m])
ty2[m+1]=a
ty1[0] = b[0]
for j in range(n - gt):
ty3[j]=(b[j+1]-b[j])/(t1[j+gt+1]-t1[j])
gt = gt + 1
for i in range(1,n+1):
ty1[i]=ty3[0]
if n-gt+1==0:
break
for j in range(n-gt):
ty3[j]=(ty3[j+1]-ty3[j])/(t1[j+gt+1]-t1[j])

该博客探讨了拉格朗日和牛顿插值法在数值分析中的应用,通过示例展示了如何使用这两种方法进行函数插值,并计算估计误差。代码实现分别进行了4次、2次和1次插值的计算,并对比了不同次数插值对函数值的估计效果。最后,通过绘制图像进一步说明了插值法在函数估计上的表现。
最低0.47元/天 解锁文章
1713

被折叠的 条评论
为什么被折叠?



