第七讲 MATLAB在插值与逼近中的应用.docx
- 文档编号:23068968
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:22
- 大小:214.06KB
第七讲 MATLAB在插值与逼近中的应用.docx
《第七讲 MATLAB在插值与逼近中的应用.docx》由会员分享,可在线阅读,更多相关《第七讲 MATLAB在插值与逼近中的应用.docx(22页珍藏版)》请在冰豆网上搜索。
第七讲MATLAB在插值与逼近中的应用
第七讲MATLAB在插值与逼近中的应用
1插值与逼近
1.1为什么要逼近
数学上来讲,逼近就是在精度要求的范围内对要研究函数给出近似的函数值,甚至函数表达式。
为什么我们不直接计算要研究的函数或函值本身?
理由如下:
●用给定函数表达式计算函值很困难甚至根本不可能。
如,sinx、tgx、Inx等。
●由实验与测量得到的变量间对应关系常常是一函数值表(今后我们也称为表列函数)。
但表所表示函在表某个中间位置的函数值却是无法知道的。
●函数可能被隐含地定义,而事实上又不能用一个直接规律给出。
例如,由方程
ey+y+sinx=0确定的隐含数。
●计算逼近函数的值往往比计算函值本身更快。
特别地,当原来函数以无穷级数的形式给出,只能如此。
●计算机存储量有限,而其计算量相对来说却很大,从某种意义上来讲,逼近实际上也是为了取长补短。
如,我们不可能将所有的sinx的值都存在计算机内,但我们将会看到,利用琏近我们的却可以很方便地算出任一点的函数值。
●实际应用中,只要函数值符合某一个精度要求也就够了。
1.2逼近的分类
逼近函数是为了更方便地计算函数,更简单地表达函数。
因此,常用一些简单函数或这些简单函数的线性组合来逼近。
通常的逼近形式有:
我们称ф(x),i=0,1,2,…,m为逼近函数,f(x)称为逼近函数。
1.3逼近的原则
已知函数f(x)在n+1个点xi(i=0,1,2,…,n)的函数值为f(xi)(i=0,1,2,…,n)。
要求出f(x)的逼近函数g(x),则要选定逼近基函数,确定上式中的常数ai(i=0,1,2,…,m)。
基函数选定往往跟实际问题有关;而确定常数ai(I=0,1,2,…,m)以保证逼近函数g(x)能更近似地表示函数f(x),则是我们这里要解决的问题。
为此,就要首先给出一个准则,来描述“更近似”。
定义距离:
其中,p>0为一实数。
则“更近似“即指“e更小“。
因此,确定ai(i=0,1,2,…,m)使得e取得最小即可。
e称为逼近误差。
若p=1,称为一致逼近,p=2,称为平方逼近。
从上式不难看出,就此式而言,e最好的最小值为零,此时,g(xi)=f(xi),逼近函数g(x)恰好经过所有n+1个已知点(xi,f(xi)),(i=0,1,2,…,n)。
1.4什么叫插值
给定n+1个数据点(x0,y0),(x1,y1),…,(xn,yn),若逼近函数经过n+1个数据点,即在已知数据点上的逼近误差为零,则称逼近函数为插值函数,简称为插值。
若存在P(xi)=yi(i=0,1,…,n)
称P(x)为y=f(x)的插值函数,求插值函数P(x)的方法称为插值法。
主要算法有Lagrange插值、Newton插值、分段线性插值、Hermite插值及三次样条插值等。
1.5Lagrange插值
1.5.1线性插值
过函数y=f(x)上的两点(x0,y0)(x1,y1)作一直线p1(x)近似地替代f(x)
即:
p1(x0)=y0p1(x1)=y1
由点斜式
1.5.2抛物插值
过函数y=f(x)上的三点(x0,y0),(x1,y1),(x2,y2)作一抛物线p2(x)近似地替代f(x)
即:
p2(x0)=y0p2(x1)=y1p2(x2)=y2
作二次式l0(x),使其满足
l0(x0)=1,l0(x1)=0,l0(x2)=0,
易推出:
同理
则
1.5.3Lagrange插值
设函数y=f(x)在给定的两两互异的节点x0,x1,…,xn上的函数值为y0,y1,…,yn,求作一个次数≤n的多项式
使它满足
这就是Lagrange插值多项式
1.5.4Lagrange插值的流程图
1.5.5Lagrange编程
functiony=lagrange(x0,y0,x)
%lagrangeinsert
n=length(x0);
p=0;
fori=1:
n
l=1.0;
forj=1:
n
ifj~=i
l=l*(x-x0(j))/(x0(i)-x0(j));
end
end
p=p+l*y0(i);
end
y=p;
例
例给出f(x)=e-x的数值表,用lagrange插值计算e-0.2的近似值
x
0.10
0.15
0.25
0.30
ln(x)
0.
0.
0.
0.
x0=[0.100.150.250.3];
y0=[0.0.0.0.];
y=lagrange(x0,y0,0.2)
y=
0.6667
例给出f(x)=lnx的数值表,用lagrange插值计算ln0.54的近似值
x
0.4
0.5
0.6
0.7
0.8
ln(x)
-0.
-0.
-0.
-0.
-0.
x0=[0.4:
0.1:
0.8];
y0=[-0.-0.-0.-0.-0.];
y=lagrange(x0,y0,0.54)
y=-0.
y=log(0.54)
y=-0.3817
1.6分段插值(将插值区间划分小区间[xi,xi+1],在每个小区间构造插值多项式pi(x),将每个小区间插值多项式pi(x)拼接)
1.6.1高次插值的Runge现象
对于函数
x=[-5:
1:
5];
y=1./(1+x.^2);
x0=[-5:
0.1:
5];
y0=1./(1+x0.^2);
y1=lagrange(x,y,x0);
plot(x0,y1,'--or')
holdon
plot(x0,y0,'-b')
clf
x1=[-5:
1:
0];
y1=1./(1+x1.^2);
x2=[0:
1:
5];
y2=1./(1+x2.^2);
x3=[-5:
0.1:
0];
x4=[0:
0.1:
5];
x0=[-5:
0.1:
5];
y0=1./(1+x0.^2);
y3=lagrange(x1,y1,x3);
y4=lagrange(x2,y2,x4);
plot(x3,y3,'or',x4,y4,'+r')
holdon
plot(x0,y0,'-b')
1.7MATLAB插值函数
插值函数及其功能
函数
功能描述
interp1
一维插值
interp2
二维插值
interp3
三维插值
interpft
一维快速傅立叶插值
interpn
N-D维插值
spline
三次样条数据插值
pchip
保形分段三次插值(分段三次Hermit插值多项式)
yi=interp1(x,y,xi,method)
methodsare:
'nearest'-nearestneighborinterpolation
'linear'-linearinterpolation
'spline'-piecewisecubicsplineinterpolation(SPLINE)
'pchip'-shape-preservingpiecewisecubicinterpolation
'cubic'-sameas'pchip'
'v5cubic'-thecubicinterpolationfromMATLAB5,whichdoesnot
extrapolateanduses'spline'ifXisnotequallyspaced.
x=0:
8;
y=sin(x);
xi=0:
0.1:
8;
ni=interp1(x,y,xi,'nearest');
li=interp1(x,y,xi,'linear');
si=interp1(x,y,xi,'spline');
ci=interp1(x,y,xi,'cublic');
plot(x,y,'o',xi,ni,'ms',xi,li,'b*',xi,ci,'k+',xi,si,'r-')
legend('原数据','nearest','linear','cublic','spline')
1.8样条曲线的MATLAB实现
1.8.1样条曲线在工程实践与科学中的应用
●样条曲线拟合问题:
由试验或观测得到了一批数据点,要求用一个函数近似地表明数据点间的函数关系,并画出函数的样条曲线。
●样条曲线插值问题:
由试验、观测或计算得到了若干离散点组成的点列,要求用光滑的样条把这些离散点联结起来。
●样条曲线逼近问题:
在样条曲线形状设计中,给定了折线轮廓,要求用样条曲线逼近这个折线轮廓。
MATLAB专门提供了样条工具箱,以便能够方便地处理各种数据,生成样条曲线。
1.8.2Splinetool的使用
功能:
用一系列方法生成各种样条曲线
语法:
splinetool(x,y)(回车)根据数组x,y在图形用户界面下生成样条曲线。
splinetool(回车)启动图形用户界面
选择数据输入的方式(如选第一项Provideyouowndata)
x=linspace(0,2*pi,31)y=cos(x)
选择各种生成样条曲线的方法:
三次样条插值法,可选择各种约束条件
平滑样条法,可选择函数的阶数(4或6),可改变精度的允许值
最小二乘法,可选择函数的阶数(1到14)
样条插值法,可选择函数的阶数(1到14)
选择方法的辅助图形(通过View菜单)
显示样条函数的一阶导数曲线图
显示样条函数的二阶导数曲线图
显示误差曲线图
第一个点的三次导数和第二点的三次导数一样;最后一个点的三次导数和倒数第二个点一样
'complete'or'clamped'
第一类边界条件(缺省边界条件)
第二类边界条件
周期(第三类)边界条件
使最后一个点的二阶导数等于零
自然边界条件
用所给定四个点通过Lagrange插值法生成三次样条曲线
第一类边界条件:
给定函数在x0,xn端点处的一阶导数,
第二类边界条件:
给定函数在x0,xn端点处的二阶导数,
当函数在x0,xn端点处的二阶导数等于0时,称为自然边界条件,此时的样条函数称为自然样条函数
第三类边界条件:
设f(x)是周期函数,并设x0,xn是一个周期,给定函数在x0,xn端点处的一阶导数和二阶导数相等
通过菜单中各项选择,得到所需样条曲线。
1.9最小二乘拟合
对于有限区间[a,b]上的连续函数f(x),找到一个多项式p(x),使得f(x)-p(x)的欧几里德模
小于某一误差限ε
1.9.1利用polyfit功能函数进行多项式拟合
例用最小二乘法拟合如下数据
x
0.5
1.0
1.5
2.0
2.5
3.0
y
1.75
2.45
3.81
4.80
7.00
8.60
假设拟合多项式为f=a0+a1*x+a2x2
x=[0.51.01.52.02.53.0];
y=[1.752.453.814.807.008.60];
a=polyfit(x,y,2)
f=poly2str(a,'x')
x1=[0.5:
0.05:
3.0];
y1=a(3)+a
(2)*x1+a
(1)*x1.^2;
plot(x,y,'*')
holdon
plot(x1,y1,'-r')
a=
0.56140.82871.1560
f=
0.56143x^2+0.82871x+1.156
1.9.2利用矩阵的除法求系数,解决复杂型函数的拟合
例用最小二乘法求一个形如y=a+bx2的经验公式,使它与如下数据拟合
xi
19
25
31
38
44
yi
19.0
32.3
49.0
73.3
97.8
x=[1925313844];
y=[19.032.349.073.397.8];
x1=x.^2
x1=[ones(5,1),x1']
ab=x1\y'
x0=[19:
0.2:
44];
y0=ab
(1)+ab
(2)*x0.^2;
clf
plot(x,y,'o')
holdon
plot(x0,y0,'-r')
x1=36162596114441936
x1=1361
1625
1961
11444
11936
ab=0.9726
0.0500
1.9.3利用MATLAB优化工具箱中lsqcurvefit函数进行非线性曲线拟合
[a,resnorm]=lsqcurvefit(,a0,x,y)
a---返回待定系数向量
resnorm---返回a处残差的平方和范数值:
sum{(fun((a,x)-y).^2}
fun---拟合函数
a0---待定系数向量初始值
x,y---原始输入输出数据向量
例x=0:
0.1:
10;
y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);
%设数据满足原型为
%y(x)=a1e-a2x+a3e-a4xsin(a5x)
%其中ai为待定系数
aaa=inline('a
(1)*exp(-a
(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x)','a','x');
a0=[1,1,1,1,1];
[a,resnorm]=lsqcurvefit(aaa,a0,x,y)
Optimizationterminatedsuccessfully:
RelativefunctionvaluechangingbylessthanOPTIONS.TolFun
a=
0.11970.21250.54040.17021.2300
resnorm=
7.1637e-007
1.9.4利用MATLAB优化工具箱中CurveFittingToolbox进行曲线拟合
主要包括数据预处理、数据拟合和数据后处理。
曲线拟合工具箱在拟合数据时使用最小二乘法。
进行拟合需要一个能表示实验数据与理论数据之间关系的模型,模型中有一些需要确定的系数。
拟合的目的就是要获得对这些未知系数的估计。
最小二乘法通过最小化残差的平方和来获得待定系数的估计。
式中(m+1)个为参与拟合的数据点的个数,
支持的最小二乘拟合类型包括:
*线性最小二乘;
*加权线性最小二乘;
Wi为权重因子
*稳健最小二乘:
最小二乘法的主要缺点是对异常值太敏感。
异常值对拟合结果具有很大的影响,因为对残差取平方会将异常值的影响放大。
要使异常值的影响最小,可以用稳健最小二乘拟合数据。
工具箱提供了下面2个稳键回归方案:
最小绝对残差(LAR):
LAR方案要求残差的绝对差,而不是平方差最小的曲线。
所以,极值对拟合的影响更小。
双二次加权:
本方案使加权平方和最小,其中每个数据点的权重与该点到拟合线的距离有关。
离拟合线更近的点权重更大,离拟合线更远的点权重更小,超出预期范围的点的权重为0。
对于大多数情况,双二次加权方案比LAR方案的效果更好,因为它不仅用一般最小二乘法找到了拟合数据的曲线,还使异常值的影响最小。
*非线性最小二乘。
工具箱提供的非线性选代算法包括:
置信域法:
默认算法,如果指定系数约束,必须使用该方法。
该方法求解复杂非线性问题的效率比其他几种算法高得多,并且它是普通Levenberg-Marquardt法的改进版本。
Levenberg-Marquardt法:
老牌的非线性迭代算法,经过了很多年的考验。
如果置信域法得到的结果不理想,并且没有系数约束,试用本法。
Gauss-Newton法本算法比其他算法快得多,但是它假设数据残差接近0。
把该算法
放到工具箱中,主要出于教学的目的,解决实际问题时,应该把它作为最后的选择。
评价拟合的优度:
用一个或多个模型拟合数据以后,应该评价拟合的优度,即拟合的好坏情况。
评价拟合优度,第一个办法是将拟合曲线显示出来,从图上直接察看。
此外,工具箱还用下面几种指标来评价拟合的优度:
SSE:
误差平方和,误差平方和越接近0。
说明拟合越好。
R-square:
R的平方可以取0到1之间的所有值,值超接近1,拟合效果越好。
AdjustedR-square:
调整的R平方统计量可以可以是任何小于等于1的值,值超接近1表示拟合效果更好。
RMSE:
均方误差的模,RMSE的值接近O表示拟合效果很好。
例子:
已知铜的热容实验数据,求铜的焓、熵和吉布斯自由能。
T
CP
10
0.0544
15
0.1842
20
0.4605
25
0.9630
30
1.6957
50
6.1546
70
10.8857
100
15.9936
150
20.5153
200
22.6506
250
23.7810
298
24.4509
400
25.4557
500
26.1675
600
26.7537
700
27.2979
800
27.7166
1000
28.5540
1200
29.3076
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七讲 MATLAB在插值与逼近中的应用 第七 MATLAB 逼近 中的 应用