Python插值法(1)————拉格朗日插值多项式
程序员文章站
2022-07-05 17:19:14
...
代码
from sympy import *
import math
from matplotlib import pyplot as plt
def lagrange(x, y):
p, la = symbols('p la')
n = len(x)
s = 0
for k in range(n):
la = y[k]
for j in range(k):
la = la * (p - x[j]) / (x[k] - x[j])
for j in range(k+1, n):
la = la * (p - x[j]) / (x[k] - x[j])
s = s + la
print(expand(simplify(s)))
return s
p = symbols('p')
x = [i*math.pi/6 for i in range(6)]
print(x)
y = [math.cos(i) for i in x]
t = lagrange(x, y)
chazhi = [i*math.pi/18 for i in range(18)]
chazhiy = []
for i in chazhi:
chazhiy.append(t.subs(p, i))
plt.figure(figsize=(15, 8), dpi=80)
plt.plot(x, y, 'r1', markersize=25, label='original')
plt.plot(chazhi, chazhiy, 'kD:', markersize=8, label='lagrange')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.savefig('lagrange.jpg')
plt.show()
计算结果如下图所示
推荐阅读
-
BZOJ3453: tyvj 1858 XLkxc(拉格朗日插值)
-
BZOJ2655: calc(dp 拉格朗日插值)
-
拉格朗日插值学习小结
-
python数据分析与挖掘实战---拉格朗日插值法
-
BZOJ4559: [JLoi2016]成绩比较(dp 拉格朗日插值)
-
洛谷P4593 [TJOI2018]教科书般的*(拉格朗日插值)
-
计算方法实验(一):拉格朗日插值多项式
-
插值多项式的拉格朗日形式
-
插值与拟合 (一) : 拉格朗日多项式插值 、Newton插值 、分段线性插值、Hermite插值 、样条插值、 B 样条函数插值、二维插值
-
lagrange插值法:求拉格朗日插值多项式matlab实现(内附代码及例题)