Python三次样条插值与MATLAB三次样条插值简单案例
1 三次样条插值
早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线,成为样条曲线。
设函数S(x)∈C2[a,b] ,且在每个小区间[xj, xj+1]上是三次多项式,其中a=x0<x1<...<xn=b 是给定节点,则称S(x)是节点x0,x1,...xn上的三次样条函数。若在节点xj上给定函数值yj=f(xj) ( j=0,1,...,n) ,并成立S(xj) =yj ( j= 0, 1, , n) ,则称S(x)为三次样条插值函数。
下文分别使用Python和MATLAB实现三次样条插值,待插值的函数如下:
2 Python三次样条插值
import numpy as np
import scipy.interpolate as spi
import matplotlib.pyplot as plt
#生成[-10,10]内长度为41的序列
x=np.linspace(-10,10,41)
y=np.sin(x**3)/np.cos(x**2)
#观测数据点
ix3=np.linspace(x[0],x[-1],81)
#三次样条插值
ipo3=spi.splrep(x,y,k=3) #生成模型参数
iy3=spi.splev(ix3,ipo3) #生成插值点
plt.plot(x,y)
plt.plot(ix3,iy3)
plt.legend(['origin','interp'],loc='upper left')
plt.show()
Python运行结果
3 MATLAB三次样条插值
x=linspace(-10,10,41);
y=sin(x.^3)./cos(x.^2);
ix3=linspace(x(1),x(length(x)),81);
iy3=spline(x,y,ix3); %三次样条插值
plot(x,y,'b-','lineWidth',2)
hold on
plot(ix3,iy3,'r-','lineWidth',2);
legend('origin','interp','loc')
MATLAB运行结果
声明:本文转自Python三次样条插值与MATLAB三次样条插值简单案例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)