例题7.4
import numpy as np
import pylab as plt
from scipy.interpolate import interp1d
from scipy.interpolate import lagrange
a = np.loadtxt('F:\python数学建模与算法\源程序\《Python数学建模算法与应用》程序和数据\第7章 插值与拟合\data7_4.txt')
x0 = a[0]; y0 = a[1]
x = np.linspace(0, 15, 151)
# 分段线性插值
yx1 = interp1d(x0, y0)
y1 = yx1(x)
#lagrange插值
p2 = lagrange(x0, y0)
y2 = np.polyval(p2, x)
yx3 = interp1d(x0, y0, 'cubic')
y3 = yx3(x)
dx = np.diff(x); dy = np.diff(y3)
dyx = dy / dx; dyx0 = dyx[0]
xt = x[130:]; yt = y3[130:]
ymin = min(yt)
xmin = [xt[ind] for ind, v in enumerate(yt) if v == ymin]
print('x=0处斜率的数值解为:', dyx0)
print('xmin=', xmin); print('ymin=', ymin)
plt.rc('font', family='SimHei')
plt.rc('axes', unicode_minus=False)
plt.subplots_adjust(wspace=0.5)
plt.subplot(131); plt.plot(x, y1)
plt.title('分段线性插值')
plt.subplot(132); plt.plot(x, y2)
plt.title('拉格朗日插值')
plt.subplot(133); plt.plot(x, y3)
plt.title('三次样条插值')
plt.show()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通