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实现三次样条插值,待插值的函数如下:

img

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()

img 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')

img MATLAB运行结果

​ 声明:本文转自Python三次样条插值与MATLAB三次样条插值简单案例

posted @   little_fat_sheep  阅读(421)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示