第七讲MATLAB在插值和逼近中的应用.docx
《第七讲MATLAB在插值和逼近中的应用.docx》由会员分享,可在线阅读,更多相关《第七讲MATLAB在插值和逼近中的应用.docx(19页珍藏版)》请在冰豆网上搜索。
第七讲MATLAB在插值和逼近中的应用
第七讲MATLAB在插值与逼近中的应用
1插值与逼近
为何要逼近
数学上来讲,逼近就是在精度要求的范围内对要研究函数给出近似的函数值,乃至函数表达式。
为何咱们不直接计算要研究的函数或函值本身?
理由如下:
用给定函数表达式计算函值很困难乃至根本不可能。
如,sinx、tgx、Inx等。
由实验与测量取得的变量间对应关系常常是一函数值表(此后咱们也称为表列函数)。
但表所表示函在表某个中间位置的函数值却是无法明白的。
函数可能被隐含地概念,而事实上又不能用一个直接规律给出。
例如,由方程
ey+y+sinx=0肯定的隐含数。
计算逼近函数的值往往比计算函值本身更快。
特别地,当原来函数以无穷级数的形式给出,只能如此。
运算机存储量有限,而其计算量相对来讲却专门大,从某种意义上来讲,逼近实际上也是为了扬长避短。
如,咱们不可能将所有的sinx的值都存在运算机内,但咱们将会看到,利用琏近咱们的却能够很方便地算出任一点的函数值。
实际应用中,只要函数值符合某一个精度要求也就够了。
逼近的分类
逼近函数是为了更方便地计算函数,更简单地表达函数。
因此,常常利用一些简单函数或这些简单函数的线性组合来逼近。
通常的逼近形式有:
咱们称ф(x),i=0,1,2,…,m为逼近函数,f(x)称为逼近函数。
逼近的原则
已知函数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)。
什么叫插值
给定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插值及三次样条插值等。
Lagrange插值
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=;
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插值计算的近似值
x
ln(x)
x0=[];
y0=[];
y=lagrange(x0,y0,
y=
例给出f(x)=lnx的数值表,用lagrange插值计算的近似值
x
ln(x)
x0=[:
:
];
y0=[];
y=lagrange(x0,y0,
y=
y=log
y=
分段插值(将插值区间划分小区间[xi,xi+1],在每一个小区间构造插值多项式pi(x),将每一个小区间插值多项式pi(x)拼接)
1.6.1高次插值的Runge现象
对于函数
x=[-5:
1:
5];
y=1./(1+x.^2);
x0=[-5:
:
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];
x4=[0:
:
5];
x0=[-5:
:
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')
MATLAB插值函数
插值函数及其功能
函数
功能描述
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:
:
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')
样条曲线的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端点处的一阶导数和二阶导数相等
通过菜单中各项选择,取得所需样条曲线。
最小二乘拟合
对于有限区间[a,b]上的持续函数f(x),找到一个多项式p(x),使得f(x)-p(x)的欧几里德模
小于某一误差限ε
1.9.1利用polyfit功能函数进行多项式拟合
例用最小二乘法拟合如下数据
x
y
假设拟合多项式为f=a0+a1*x+a2x2
x=[];
y=[];
a=polyfit(x,y,2)
f=poly2str(a,'x')
x1=[:
:
];
y1=a(3)+a
(2)*x1+a
(1)*x1.^2;
plot(x,y,'*')
holdon
plot(x1,y1,'-r')
a=
f=
x^2+x+
1.9.2利用矩阵的除法求系数,解决复杂型函数的拟合
例用最小二乘法求一个形如y=a+bx2的经验公式,使它与如下数据拟合
xi
19
25
31
38
44
yi
x=[1925313844];
y=[];
x1=x.^2
x1=[ones(5,1),x1']
ab=x1\y'
x0=[19:
:
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=
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:
:
10;
y=*exp*x)+*exp*x).*sin*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:
Relativefunctionvaluechangingbylessthan
a=
resnorm=
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
15
20
25
30
50
70
100
150
200
250
298
400
500
600
700
800
1000
1200