随笔 - 1762  文章 - 0  评论 - 109  阅读 - 431万

三次样条插值

三次样条插值函数:

被插值函数:f(x)=1/(1+x^2)    -5<=x<=5

插值点-5,-4,-3,-2,-1,0,1,2,3,4,5

clc;clear;
x=-5:5;
y=1./(1+x.^2);
figure(1);hold on;plot(x,y,'r-o');
xi=-5:.05:5;
yi=spline(x,y,xi);
plot(xi,yi,'b-o');

 

官方文档:

https://ww2.mathworks.cn/help/matlab/ref/spline.html

语法

s = spline(x,y,xq)
pp = spline(x,y)
 

说明

s = spline(x,y,xq) 返回与 xq 中的查询点对应的插值 s 向量。s 的值由 x 和 y 的三次样条插值函数确定。

pp = spline(x,y) 返回一个分段多项式结构体以用于 ppval 和样条实用工具 unmkpp

例1

正弦数据的样条插值

使用 spline 基于非均匀分布的样本点对正弦曲线插值。

clc;clear;
x = [0 1 2.5 3.6 5 7 8.1 10];
y = sin(x);
xx = 0:.25:10;
yy = spline(x,y,xx);
plot(x,y,'bo',xx,yy,'rp--')

注:蓝色圆圈是插值点,红色五角星是点带入插值函数后的结果。

 

例2

具有指定端点斜率的分布的样条插值

当端点斜率已知时,使用 clamped 或 complete 样条插值。此示例在插值的终点处强制实施零斜率。

x = -4:4;
y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0];
cs = spline(x,[0 y 0]);
xx = linspace(-4,4,101);
plot(x,y,'o',xx,ppval(cs,xx),'-');

注:

cs = spline(x,[0 y 0]);%这一句注明了插值点坐标和第一类边界条件,即提供端点处的一阶导数值。
 返回的插值结果是一个结构体,
 

 

cs.coefs是每一段插值函数的系数,9个插值点,共8段样条函数,每个样条函数有4个系数。

 


 

posted on   一杯明月  阅读(3848)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示