Python 拉格朗日插值法代码与实现
程序员文章站
2022-06-07 09:46:16
...
import matplotlib.pyplot as plt
import numpy as np
import math
import random
y_point = []
text_list = []
x_point = random.sample(range(0,12),10)#生成不重复的随机数
for num in range(10):
y_point.append(random.randint(1, 12))#生成1-20随机整数
text='('+str(x_point[num])+','+str(y_point[num])+')'#合并字符串
text_list.append(text)
plt.annotate(text_list[num],xy=(x_point[num],y_point[num]),xytext=(x_point[num]+0.5,y_point[num]+0.5))
#annotate第一个参数是文本内容 第二个参数是要标记的位置 第三个参数是文本标记位置
x = np.arange(min(x_point), max(x_point)+0.01, 0.01)
sum = 0
for i in range(len(x_point)):
numerator = 1
denominator = 1
for j in range(len(x_point)):
if (j != i):
numerator *= x - x_point[j] #每一项中的分子
denominator *= x_point[i] - x_point[j] #每一项中的分母
nape = y_point[i] * numerator / denominator #每一项
sum += nape
plt.scatter(x_point,y_point, marker=".")
plt.plot(x,sum)
plt.show()
插值展示
上一篇: Seidel迭代法
下一篇: C语言实现Crout分解