美赛(matlab自学)之插值和拟合

插值和拟合

插值和拟合都是要根据一组数据构造一个函数作为近似。

插值方法

分段线性插值

分段线性插值函数,记作In(Xi)=Yi,函数在每个小区间[Xi,Xi+1]上是线性函数(i=0,1,……,n-1)
在这里插入图片描述
n越大,分段越多,插值误差越小。

拉格朗日插值多项式

在这里插入图片描述

样条插值

样条函数的概念

在这里插入图片描述

三次样条插值

在每一个小区间函数都是三次多项式,在[a,b]上二阶可微。
不妨记作:
在这里插入图片描述
在这里插入图片描述

matlab工具箱

y=interp1(x0,y0,‘method’)

method为插值方法,默认为线性插值
其值可为:
nearest 最近项插值
linear 线性插值
spline 立方样条插值
cubic 立方插值

y=spline(x0,y0,x)

三次样条插值函数

pp=csape((x0,y0,conds);

使用默认边界条件,即Lagrange边界条件
pp=csape(x0,y0,conds,valconds);
中的conds可为
在这里插入图片描述

y=fnval(pp,x);

csape返回的是pp形式,要求插值点的函数值,必须调用函数fnval
fnval 计算样条函数区间内任意一点的值

subplot函数:

功能:分割figure,创建子坐标系
h = subplot(m,n,p)/subplot(mnp) 将figure划分为m×n块,在第p块创建坐标系,并返回它的句柄。当m,n,p<10时,可以简化为subplot(mnp)或者subplot mnp

(注:subplot(m,n,p)或者subplot(mnp)此函数最常用:subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。 )

plot函数

功能:绘制二维图像
1:plot(X, Y, LineSpec)
LineSpec是绘图样式
y 黄
m 紫
c 青
r 红色
g 绿
b 蓝
w 白
k 黑

  • 实线
    : 点线
    -. 点划线
    – 虚线
  • 星号 p 五角星
    v 向下三角形
    ^ 向上三角形
diff函数

diff(函数) 求的一阶导数
diff(函数,n) 求的n阶导数

例题

例题1
在这里插入图片描述
代码:

x0=[0 3 5 7 9 11 12 13 14 15];
y0 =[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
x=0:0.1:15;
y1 = interp1(x0 ,y0,x);
y2 = interp1(x0 ,y0,x,'spline');
pp1 =csape(x0 ,y0);
y3 = fnval(pp1,x);
pp2 = csape( x0 ,y0,'second');
y4 = fnval(pp2,x);
[x',y1' ,y2' ,y3',y4']
subplot(1,3,1)
plot(x0,y0,'+',x,y1)
title( 'Piecewise linear' )
subplot(1,3,2)
plot(x0,y0,'+',x,y2)
title( 'Spline1')
subplot(1,3,3)
plot(x0,y0,'+',x,y3)
title( 'Spline2')
dx =diff(x);
dy =diff(y3);
dy_dx =dy ./dx;
dy_dx0 =dy_dx(1)
ytemp =y3(131:151);
ymin = min(ytemp);
index = find(y3==ymin);
xmin=x(index); .
[xmin,ymin]

结果:
在这里插入图片描述

发布了20 篇原创文章 · 获赞 0 · 访问量 3871

猜你喜欢

转载自blog.csdn.net/weixin_44544406/article/details/104087136