当前位置:文档之家› 插值与拟合(使用插值还是拟合)

插值与拟合(使用插值还是拟合)

插值与拟合(使用插值还是拟合)
插值与拟合(使用插值还是拟合)

利用matlab实现插值与拟合实验

张体强1026222

张影

晁亚敏

[摘要]:在测绘学中,无论是图形处理,还是地形图处理等,大多离不开插值与拟合的应用,根据插值与拟合原理,构造出插值和拟合函数,理解其原理,并在matlab平台下,实现一维插值,二维插值运算,实现多项式拟合,非线性拟合等,并在此基础上,联系自己所学专业,分析其生活中特殊例子,提出问题,建立模型,编写程序,以至于深刻理解插值与拟合的作用。

[关键字]:

测绘学插值多项式拟合非线性拟合

[ Abstract]: in surveying and mapping, whether the graphics processing, or topographic map processing and so on, are inseparable from the interpolation and fitting application, according to the interpolation and fitting theory, construct the fitting and interpolation function, understanding its principle, and MATLAB platform, achieve one-dimensional interpolation, two-dimensional interpolation, polynomial fitting, non-linear fitting, and on this basis, to contact their studies, analysis of their living in a special example, put forward the question, modeling, programming, so that a deep understanding of interpolation and fitting function.

[ Key words]:

Surveying and mapping interpolation polynomial fitting nonlinear

一: 引言

通常在生产实际及科学研究中,我们经常要研究变量之间的函数关系y=f(x),若f(x)的表达式很复杂,或f(x)只是一张数据来表示,这都给研究带来困难,因此我们希望用一个函数P(x)来代替它,把研究f(x)的问题转化成研究,由于近似含义不同,就有插值和拟合两种情况。Matlab是一款功能强大的科学数学计数器,利用matlab可以成功的完成插值与拟合等任务,在编写插值与拟合程序前,本人从以下步骤分析和实现插值与拟合。

图1 插值与拟合分析流程图

二:拉格朗日插值原理和插值多项式构造

一般地,已知函数y=f(x)在互异的n+1个点x 0 , x 1 ,…….x n 处的函数值y0,y1,y2…….yn 就是构造一个多项式L n (x)。

如果一个n 次多项式()(0,1,,)k l x k n =在n+1个互异的节点x 0 , x 1 ,…….x n 满足 则称

()(0,1,

,)k l x k n =为节点01,,,n x x x 上

的n 次插值基函数,那么我们可以求出插值基函数为:

于是满足条件()(0,1,,)

n j j L x y j n ==,则称n 次插值多项式L n (x)

则L n (x)为拉格朗日插值多项式。记插值余项为以下: 则

1011'()()()()()n k k k k k k k n x x x x x x x x x ω+-+=----

于是:

10

1()

()()'()n

n n k

k k n k x L x y x x x ωω+=+=-∑ 上面公式为完整的拉格朗日插值公式。

1,

()0,

k j kj j k l x j k

δ?=?==?

≠??(,0,1,

,)

k j n =011011()()()()

(),(0,1,

,)

()()()()

k k n k

k k k k k k n x x x x x x x x l x k n x x x x x x x x -+-+----==----0

()()

n

n k k k L x y l x ==∑1010()()()()(),

n

n j n j x x x x x x x x x ω+==-=---∏

三:拉格朗日插值事例分析

1:一维插值

Matlab在计算一维插值函数时使用函数interp1,该函数提供了四种插值函数方法选着,分别是:线性插值,三次样条插值,三次插值和最近点插值(linear,spline,cubic,nearest),其基本格式是:Intrer1(x,y,cx,’method’)

其中x,y分别表示为数据点的横纵坐标,x必须单调,cx为需要的插值的坐标,不能超过x的范围,

例:在12个小时内,东海某一特殊区域每相隔一小时水温大致分布如下:5,7,9,16,24,28,31,29,22,25,27,24.现在利用此数据分析东海该区域在第3.5小时,6.3小时.7.2小时的水温。

解:在matlab程序中输入以下程序

hours=1:12;

temps=[5,7,9,16,24,28,31,29,22,25,27,24];

t=interp1(hours,temps,[3.5,6.3,7.2]);

t =

12.5000 28.9000 30.6000

2:二维插值

在我们海洋测绘专业中,二维插值无处不在,在画海图的时候计算其水深分布,危险物分布,水温分布等,在山区测绘工作中用的十分广泛,例如画山区山形图,山形图像处理(如平滑,锐化)等,让其图像更清晰等,而matlab二维插值有以下:

‘nearest’最邻近插值;

‘linear’双线性插值;

‘cubic’双三次插值;

缺省时双线性插值

其格式为:z=interp2(x0,y0,z0,x,y,’method’)方法和一维一样的

现在以书上的例题为例(p308):

输入以下命令:

x=1:5;

y=1:3;

temps=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86];

mesh(x,y,temps)

图2:原水温分布图

xi=1:0.2:5;

yi=1:0.2:3;

zi=interp2(x,y,temps,xi',yi,'cubic');

mesh(xi,yi,zi)

图3 平滑后的水温分布

四:拟合的方原理和方法

所谓拟合是指已知某函数的若干离散函数值,f1,f2,…,fn-,通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别最小。如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。

1:多项式拟合

假设给定数据点 (i=0,1,…,m)

,为所有次数不超过

多项式构成的函数类,现求一

,使得

(1)

当拟合函数为多项式时,称为多项式拟合,满足式(1)的称为最小二乘拟合多项式。

如果利用matlab 拟合,则可以简化大部分步骤,因为matlb 里面提供了函数polyfit(x,y,m),多项式在x 处的y 的值可以用一下命令计算: Y=ployval(A,x)

例:对于以下数据:

利用多项式拟合有: x=0:0.1:1;

y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; A=polyfit(x,y,2) z=polyval(A,x); plot(x,y,'k+',x,z,'r')

图4 多项式曲线拟合图

2:非线性最小二乘拟合

在最小二乘法中,如果我们寻求函数f(x)是任意的非线性函数,则称为非线性最小二乘拟合,matlab 中提供函数lsqcurvefit 。

已知数据点: xdata=(xdata 1,xdata 2,…,xdata n ),

ydata=(ydata 1,ydata 2,…,ydata n )

lsqcurvefit 用以求含参量x (向量)的向量值函数F(x,xdata)=(F (x,xdata 1),…,F (x ,xdata n ))T 中的参变量x(向量),使得

2

1

((,))

n

i

i

i F x xdata ydata =-∑最小

输入格式为:

(1) x = lsqcurvefit (‘fun’,x0,xdata,ydata); (2) x =lsqcurvefit(‘fun’,x0,xdata,ydata,options);

(3)x=lsqcurvefit(‘fun’,x0,xdata,ydata,options,’grad’); (4) *x,options+=lsqcurvefit(‘fun’,x0,xdata,ydata,…); (5) [x,options,f unval+=lsqcurvefit(‘fun’,x0,xdata,ydata,…); (6)*x,options,funval,Jacob+=lsqcurvefit(‘fun’,x0,xdata, ydata,…); 例

对下面一组数据拟合为

0.0.2()e kt

c t a b =+

编写m 文件

function f=curvefun1(x,tdata)

f=x(1)+x(2)*exp(-0.02*x(3)*tdata) %其中 x(1)=a; x(2)=b ;x(3)=k; tdata=100:100:1000

cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10, 6.26,6.39,6.50,6.59]; x0=[0.2,0.05,0.05];

x=lsqcurvefit ('curvefun1',x0,tdata,cdata) f= curvefun1(x,tdata)

f =0.0043 0.0051 0.0056 0.0059 0.0061 0.0062 0.0062 0.0063 0.0063 0.0063

x = 0.0063 -0.0034 0.2542

五:插值与拟合实际建模与分析

基于前面所述插值与拟合的基础上,分析插值与拟合在本专业中应用 1:问题的提出

在测绘专业中时常会提到曲线放样,我国的公路的平面曲线设计中,主要是以直导线与圆曲线的组合以及直导线与复曲线的组合为主,在解决曲线的顺应性(光滑性)方面,也只用了缓和曲线来进行直线,曲线的过度,在这种设计模式下,在地形和其他条件受到限制条件下必然使设计标准降低,设计效果不能很好的满足规范要求,所以在一些先进的国家中试图突破以往设计模式。

在我国吉林辉南县到靖宇县,地处长白山脚小,为山区,地形复杂,冬季多雪,经测的数据如下(为了计算方便,设曲线两端的连线方向为坐标为x轴方向,以连线法线为y坐标):

X:50 100 150 200 250

y:23 43.2 50.1 43 23.25

且知道二级公路曲线半径为60米,现在试寻找一种方法,设计一条平面曲线,是之能够通过限定恨死的地形点,而能通过满足规范规定的曲线要素要求,并通过计算加密施工控制点进行敷衍设平面曲线。

2:问题分析和模型建立

从公路设计的平面应满足行车安全,经济等,以及在一定条件下美观来考虑,公路平面曲线必须光滑并使其有连续的二阶导数,这样才能保证行车转角变化连续,即使汽车行驶轨迹曲率变化连续,从而保证行车舒服安全。

考虑已知的实际问题:在已知五点坐标条件下设计应该满足以上要求的具有连续的二阶导数是的平面曲线,显然我们可以采用插值与拟合,得到一个含有x n的一项函数s(x)满足:

1:S(X i) = y i (j = 0,1,…….n)

2:函数s(x)上如何地方连续二阶导数存在

3:已知两端点的直线相连使得:

s(x0)”= s(x n)”

满足上面条件有含有x3的函数,可以利用插值与拟合的到,其中三次样条插值最为精确,主要是最后一个条件确定的。

3:matlab编程实现

x=50:50:250;

y=[23,43.2,50.1 ,43,23.25];

h=50:2.5:250;

t=interp1(x,y,h,'spline');

plot(x,y,'+',h,t,x,y,'r:')

xlabel('x'),ylabel('y’)

title(‘公路曲线三次样条插值图’)

图像对比如下(绿色为三次样条图)

图5:原图和插值图对比

当然也可使用曲线拟合,但是未必能满足最后一个约定条件,其代码如下:

x=50:50:250;

y=[23,43.2,50.1,43,23.25];

h=50:25:250;

a=polyfit(x,y,3)

z=polyval(a,h);

plot(x,y);hold on;

plot(h,z,'r')

a =

0.0000 -0.0029 0.8310 -11.4400

从上面看出第一项为0,表明不存在x3项,所以拟合不精确,因为最后一个条件约束

六:总结

总的来说,插值与拟合在测绘专业无处不在,利用matlab实现插值与拟合,方法简单,可视化效果好,本论文认真分析了拉格朗日插值

原理,实现了一维二维插值以及拟合等,并通过了插值和拟合分析了实际例子,从实验结果表明,插值利于计算与插值节点近的点,而拟合在整体上使得误差最小,已知点未必在拟合的图像上,在实际生活中因具体使用。

2012年6月2日

插值法和拟合实验报告(数值计算)

插值法和拟合实验报告 一、 实验目的 1.通过进行不同类型的插值,比较各种插值的效果,明确各种插值的优越性; 2.通过比较不同次数的多项式拟合效果,了解多项式拟合的原理; 3.利用matlab 编程,学会matlab 命令; 4.掌握拉格朗日插值法; 5.掌握多项式拟合的特点和方法。 二、 实验题目 1.、插值法实验 将区间[-5,5]10等分,对下列函数分别计算插值节点 k x 的值,进行不同类型 的插值,作出插值函数的图形并与)(x f y =的图形进行比较: ;11)(2x x f += ;a r c t a n )(x x f = .1)(42 x x x f += (1) 做拉格朗日插值; (2) 做分段线性插值; (3) 做三次样条插值. 2、拟合实验 给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数 ),(i i y x 和拟合函数的图形。 三、 实验原理 1.、插值法实验

∏∑∏∏∏∑∑≠==≠=≠=≠=+-==--= =-= ==-=-=----==++==j i j j i i i i i n i i n n j i j j n j i j j i i n j i j j n i i i n i i n n n o i n i i n x x x x x y x l x L x x c n i x x c x x x c x x x x x x x x c y x l x L y x l y x l y x l x L ,00 ,0,0,01100 00 )(l )()() (1 ,1,0, 1)()(l ) ()())(()()()()()()()(, 故, 得 再由,设 2、拟合实验

第五章插值与拟合答案—牟善军

习题5.1: Matlab程序如下: clc,clear x=1:0.5:10; y=x.^3-6*x.^2+5*x-3; y0=y+rand; f1=polyfit(x,y0,1) y1=polyval(f1,x); plot(x,y,'+',x,y1); grid on title('一次拟合曲线'); figure(2); f2=polyfit(x,y0,2) y2=polyval(f2,x); plot(x,y,'+',x,y2); grid on title('二次拟合曲线'); figure(3); f4=polyfit(x,y0,4) y3=polyval(f4,x); plot(x,y,'+',x,y3); grid on title('四次拟合曲线'); figure(4); f6=polyfit(x,y0,6) y4=polyval(f6,x); plot(x,y,'+',x,y4); grid on title('六次拟合曲线'); 计算结果及图如下 f1 = 43.2000 -148.8307 f2 = 10.5000 -72.3000 90.0443

f4 = 0.0000 1.0000 -6.0000 5.0000 -2.3557 f6 = -0.0000 0.0000 -0.0000 1.0000 -6.0000 5.0000 -2.3557 5.2高程数据问题解答如下:matlab程序: clc,clear x0=0:400:5600 y0=0:400:4800 z0=[1350 1370 1390 1400 1410 960 940 880 800 690 570 430 290 210 150 1370 1390 1410 1430 1440 1140 1110 1050 950 820 690 540 380 300 210 1380 1410 1430 1450 1470 1320 1280 1200 1080 940 780 620 460 370 350 1420 1430 1450 1480 1500 1550 1510 1430 1300 1200 980 850 750 550 500

matlab中插值拟合与查表

MATLAB中的插值、拟合与查表 插值法是实用的数值方法,是函数逼近的重要方法。在生产和科学实验中,自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。 如何根据观测点的值,构造一个比较简单的函数y=φ(x),使函数在观测点的值等于已知的数值或导数值。用简单函数y=φ(x)在点x处的值来估计未知函数y=f(x)在x点的值。寻找这样的函数φ(x),办法是很多的。φ(x)可以是一个代数多项式,或是三角多项式,也可以是有理分式;φ(x)可以是任意光滑(任意阶导数连续)的函数或是分段函数。函数类的不同,自然地有不同的逼近效果。在许多应用中,通常要用一个解析函数(一、二元函数)来描述观测数据。 根据测量数据的类型: 1.测量值是准确的,没有误差。 2.测量值与真实值有误差。 这时对应地有两种处理观测数据方法: 1.插值或曲线拟合。 2.回归分析(假定数据测量是精确时,一般用插值法,否则用曲线拟合)。 MATLAB中提供了众多的数据处理命令。有插值命令,有拟合命令,有查表命令。 2.2.1 插值命令 命令1 interp1 功能一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。各个参量之间的关系示意图为图2-14。 格式 yi = interp1(x,Y,xi) %返回插值向量yi,每一元素对应于参量xi,同时由向量x 与Y的内插值决定。参量x指定数据Y的点。若Y为一矩阵,则按Y的每列计算。yi是阶数为length(xi)*size(Y,2)的输出矩阵。 yi = interp1(Y,xi) %假定x=1:N,其中N为向量Y的长度,或者为矩阵Y的行数。 yi = interp1(x,Y,xi,method) %用指定的算法计算插值: ’nearest’:最近邻点插值,直接完成计算;

插值与拟合(使用插值还是拟合)

利用matlab实现插值与拟合实验 张体强1026222 张影 晁亚敏 [摘要]:在测绘学中,无论是图形处理,还是地形图处理等,大多离不开插值与拟合的应用,根据插值与拟合原理,构造出插值和拟合函数,理解其原理,并在matlab平台下,实现一维插值,二维插值运算,实现多项式拟合,非线性拟合等,并在此基础上,联系自己所学专业,分析其生活中特殊例子,提出问题,建立模型,编写程序,以至于深刻理解插值与拟合的作用。 [关键字]: 测绘学插值多项式拟合非线性拟合 [ Abstract]: in surveying and mapping, whether the graphics processing, or topographic map processing and so on, are inseparable from the interpolation and fitting application, according to the interpolation and fitting theory, construct the fitting and interpolation function, understanding its principle, and MATLAB platform, achieve one-dimensional interpolation, two-dimensional interpolation, polynomial fitting, non-linear fitting, and on this basis, to contact their studies, analysis of their living in a special example, put forward the question, modeling, programming, so that a deep understanding of interpolation and fitting function. [ Key words]: Surveying and mapping interpolation polynomial fitting nonlinear

第四讲 matlab插值、拟合和回归分析

第四讲 插值、拟合与回归分析 在生产实践和科学研究中,常常有这样的问题:由实验或测量得到变量间的一批离散样本点,要求得到变量之间的函数关系或得到样本点之外的数据。解决此类问题的方法一般有插值、拟合和回归分析等。 设有一组实验数据0011(,),(,),(,)n n x y x y x y ,当原始数据精度较高,要求确定一个简单函数()y x ?=(一般为多项式或分段多项式)通过各数据点,即(),0,,i i y x i n ?== ,称为插值问题。 另一类是拟合问题,当我们已经有了函数关系的类型,而其中参数未知或原始数据有误差时,我们确定的初等函数()y x ?=并不要求经过数据点,而是要求在某种距离度量下总体误差达到最小,即 (),0,,i i i y x i n ?ε=+= ,且20 n i i ε=∑达到最小值。 对同一组实验数据,可以作出各种类型的拟合曲线,但拟合效果有好有坏,需要进行有效性的统计检验,这类问题称为回归分析。 一、插值(interpolation) 常用的插值方法有分段线性插值、分段立方插值、样条插值等。 1、一元插值 yi=interp1(x,y,xi,method) 对给定数据点(x,y),按method 指定的方法求出插值函数在点(或数组)xi 处的函数值yi 。其中method 是字符串表达式,可以是以下形式: 'nearest' ——最邻近点插值

'linear' ——分段线性插值(也是缺省形式) 'spline' ——分段三次样条插值 'cubic' 分段立方插值 例:在一天24小时内,从零点开始每间隔2小时测得环境温度数据分别为(℃): 12,9,9,10,18,24,28,27,25,20,18,15,13 用不同的插值方法估计中午1点(即13点)的温度,并绘出温度变化曲线。 >> x=0:2:24; >> y=[12 9 9 10 18 24 28 27 25 20 18 15 13]; >>y_linear=interp1(x,y,13),y_nearest=interp1(x,y,13,'nearest') >>y_cubic=interp1(x,y,13,'cubic'),y_spline=interp1(x,y,13,'spline') >> y1=interp1(x,y,xx); y2=interp1(x,y,xx,'nearest'); >> y3=interp1(x,y,xx,'cubic');y4=interp1(x,y,xx,'spline'); >> subplot(2,2,1),plot(x,y,'or',xx,y1) >> subplot(2,2,2),plot(x,y,'or',xx,y2) >> subplot(2,2,3),plot(x,y,'or',xx,y3) >> subplot(2,2,4),plot(x,y,'or',xx,y4) 2、二元插值 zi=interp2(X,Y,Z,xi,yi,method) 已知数据点(X,Y,Z),求插值函数在(xi,yi)处的函数值zi,插值方法method同interp1。这里要求X,Y,Z是同维矩阵,且X,Y是

计算方法--插值法与拟合实验

实验三 插值法与拟合实验 一、实验目的 1. 通过本实验学会利用程序画出插值函数,并和原图形相比较 2. 通过本实验学会拟合函数图形的画法,并会求平方误差 二、实验题目 1. 插值效果的比较 实验题目:区间[]5,5-10等分,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与)(x f y =的图形进行比较: 2 11)(x x f +=; x x f arctan )(=; 4 41)(x x x f += (1) 做拉格朗日插值; (2) 做三次样条插值. 2. 拟合多项式实验 实验题目:给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数),(i i y x 和拟合函数的图形. 三、实验原理 本实验应用了拉格朗日插值程序、三次样条插值程序、多项式拟合程序等实验原理. 四、实验内容 1(1) figure x=-5:0.2:5; y=1./(1+x.^2); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=1./(1+x1.^2); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25);

m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(2) x=-5:0.2:5; y=atan(x); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=atan(x1); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(3) x=-5:0.2:5; y=x.^2./(1+x.^4); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=x1.^2./(1+x1.^4); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 2. x=[-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5]'; y=[-4.45 -0.45 0.55 0.05 -0.44 0.54 4.55]'; plot(x,y,'or'); hold on %三次多项式拟合 p1=mafit(x,y,3);

【VIP专享】MATLAB插值与拟合的几个函数整理

MATLAB插值与拟合 2015.4.19 19:21 【目录】 1. 线性拟合函数:regress() 2. 多项式曲线拟合函数:polyfit( ) 3. 多项式曲线求值函数:polyval( ) 4. 多项式曲线拟合的评价和置信区间函数:polyconf( ) 5. 稳健回归函数:robustfit( ) §1曲线拟合 实例:温度曲线问题 气象部门观测到一天某些时刻的温度变化数据为: t 0 1 2 3 4 5 6 7 8 9 10 T 13 15 17 14 16 19 26 24 26 27 29 试描绘出温度变化曲线。 曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。 曲线拟合有多种方式,下面是一元函数采用最小二乘法对给定数据进行多项式曲线拟合,最后给出拟合的多项式系数。 1. 线性拟合函数:regress() 调用格式:b=regress(y,X) [b,bint,r,rint,stats]= regress(y,X) [b,bint,r,rint,stats]= regress(y,X,alpha) 说明:b=regress(y,X)返回X处y的最小二乘拟合值。该函数求解线性模型:y=Xβ+ε; β是p′1的参数向量;ε是服从标准正态分布的随机干扰的n′1的向量;y为n′1的向量;X为n′p矩阵。bint返回β的95%的置信区间。r中为形状残差,rint中返回每一个残差的95%置信区间。Stats向量包含R2统计量、回归的F值和p值。 例1:设y的值为给定的x的线性函数加服从标准正态分布的随机干扰值得到。即y=10+x+ε;求线性拟合方程系数。 程序:x=[ones(10,1) (1:10)’] y=x*[10;1]+normrnd(0,0.1,10,1)

第四章曲线拟合和多项式插值 - Hujiawei Bujidao

数值计算之美SHU ZHI JI SUAN ZHI MEI 胡家威 http://hujiaweibujidao.github.io/ 清华大学逸夫图书馆·北京

内容简介 本书是我对数值计算中的若干常见的重要算法及其应用的总结,内容还算比较完整。 本人才疏学浅,再加上时间和精力有限,所以本书不会详细介绍很多的概念,需要读者有一定的基础或者有其他的参考书籍,这里推荐参考文献中的几本关于数值计算的教材。 本书只会简单介绍下算法的原理,对于每个算法都会附上我阅读过的较好的参考资料以及算法的实现(Matlab或者其他语言),大部分代码是来源于参考文献[1]或者是经过我改编而成的,肯定都是可以直接使用的,需要注意的是由于Latex对代码的排版问题,导致中文注释中的英文字符经常出现错位,对于这种情况请读者自行分析,不便之处还望谅解。写下这些内容的目的是让自己理解地更加深刻些,顺便能够作为自己的HandBook,如有错误之处,还请您指正,本人邮箱地址是:hujiawei090807@https://www.doczj.com/doc/1216489971.html,。

目录 第四章曲线拟合和多项式插值1 4.1曲线拟合 (1) 4.1.1使用线性方程进行曲线拟合 (1) 4.1.2非线性方程进行曲线拟合 (2) 4.1.3使用二次或者高次多项式进行曲线拟合[最小二乘问题].3 4.2多项式插值 (4) 4.2.1拉格朗日插值多项式 (4) 4.2.2牛顿插值多项式 (5) 4.2.3分段线性插值 (7) 4.2.4保形分段三次插值 (8) 4.2.5三次样条插值 (10) 4.3Matlab函数解析 (13) 参考文献14

(完整版)Matlab学习系列13.数据插值与拟合

13. 数据插值与拟合 实际中,通常需要处理实验或测量得到的离散数据(点)。插值与拟合方法就是要通过离散数据去确定一个近似函数(曲线或曲面),使其与已知数据有较高的拟合精度。 1.如果要求近似函数经过所已知的所有数据点,此时称为插值问 题(不需要函数表达式)。 2.如果不要求近似函数经过所有数据点,而是要求它能较好地反 映数据变化规律,称为数据拟合(必须有函数表达式)。 插值与拟合都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数。区别是:【插值】不一定得到近似函数的表达形式,仅通过插值方法找到未知点对应的值。【拟合】要求得到一个具体的近似函数的表达式。 因此,当数据量不够,但已知已有数据可信,需要补充数据,此时用【插值】。当数据基本够用,需要寻找因果变量之间的数量关系(推断出表达式),进而对未知的情形作预测,此时用【拟合】。

一、数据插值 根据选用不同类型的插值函数,逼近的效果就不同,一般有:(1)拉格朗日插值(lagrange插值) (2)分段线性插值 (3)Hermite (4)三次样条插值 Matlab 插值函数实现: (1)interp1( ) 一维插值 (2)intep2( ) 二维插值 (3)interp3( ) 三维插值 (4)intern( ) n维插值 1.一维插值(自变量是1维数据) 语法:yi = interp1(x0, y0, xi, ‘method’) 其中,x0, y0为原离散数据(x0为自变量,y0为因变量);xi为需要插值的节点,method为插值方法。 注:(1)要求x0是单调的,xi不超过x0的范围; (2)插值方法有‘nearest’——最邻近插值;‘linear’——线性插值;‘spline’——三次样条插值;‘cubic’——三次插值;

matlab 软件拟合与插值运算实验报告

实验6 数据拟合&插值 一.实验目的 学会MATLAB软件中软件拟合与插值运算的方法。 二.实验内容与要求 在生产和科学实验中,自变量x与因变量y=f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。 要根据观测点的值,构造一个比较简单的函数y=t (x),使函数在观测点的值等于已知的数值或导数值,寻找这样的函数t(x),办法是很多的。 根据测量数据的类型有如下两种处理观测数据的方法。 (1)测量值是准确的,没有误差,一般用插值。 (2)测量值与真实值有误差,一般用曲线拟合。 MATLAB中提供了众多的数据处理命令,有插值命令,拟合命令。 1.曲线拟合 >> 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]; >> p=polyfit (x,y,2); >> x1=0.5:0.05:3.0; >> y1=polyval(p,x1 ); >> plot(x,y,'*r',x1,y1,'-b')

2.一维插值 >> year=[1900,1910,1920,1930,1940,1990,2000,2010]; >> product = [75.995,91.972,105.711,123.203,131.669,249.633,256.344,267.893 ]; >> p2005=interp1(year,product,2005) p2005 = 262.1185 >> y= interp1(year,product,x, 'cubic'); >> plot(year,product,'o',x,y)

数学建模案例分析插值与拟合方法建模1数据插值方法及应用

第十章 插值与拟合方法建模 在生产实际中,常常要处理由实验或测量所得到的一批离散数据,插值与拟合方法就是要通过这些数据去确定某一类已经函数的参数,或寻求某个近似函数使之与已知数据有较高的拟合精度。插值与拟合的方法很多,这里主要介绍线性插值方法、多项式插值方法和样条插值方法,以及最小二乘拟合方法在实际问题中的应用。相应的理论和算法是数值分析的内容,这里不作详细介绍,请参阅有关的书籍。 §1 数据插值方法及应用 在生产实践和科学研究中,常常有这样的问题:由实验或测量得到变量间的一批离散样点,要求由此建立变量之间的函数关系或得到样点之外的数据。与此有关的一类问题是当原始数据 ),(,),,(),,(1100n n y x y x y x 精度较高,要求确定一个初等函数)(x P y =(一般用多项式或分段 多项式函数)通过已知各数据点(节点),即n i x P y i i ,,1,0,)( ==,或要求得函数在另外一些点(插值点)处的数值,这便是插值问题。 1、分段线性插值 这是最通俗的一种方法,直观上就是将各数据点用折线连接起来。如果 b x x x a n =<<<= 10 那么分段线性插值公式为 n i x x x y x x x x y x x x x x P i i i i i i i i i i ,,2,1,,)(11 1 11 =≤<--+--= ----- 可以证明,当分点足够细时,分段线性插值是收敛的。其缺点是不能形成一条光滑曲线。 例1、已知欧洲一个国家的地图,为了算出它的国土面积,对地图作了如下测量:以由西向东方向为x 轴,由南向北方向为y 轴,选择方便的原点,并将从最西边界点到最东边界点在x 轴上的区间适当的分为若干段,在每个分点的y 方向测出南边界点和北边界点的y 坐标y1和y2,这样就得到下表的数据(单位:mm )。

插值算法与matlab代码

Matlab中插值函数汇总和使用说明 MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method') 其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,'method'表示采用的插值方法,MA TLAB提供的插值方法有几种:'method'是最邻近插值,'linear'线性插值;'spline'三次样条插值;'cubic'立方插值.缺省时表示线性插值 注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。 例如:在一天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为12,9,9,10,18 ,24,28,27,25,20,18,15,13, 推测中午12点(即13点)时的温度. x=0:2:24; y=[12 9 9 10 18 24 28 27 25 20 18 15 13]; a=13; y1=interp1(x,y,a,'spline') 结果为:27.8725 若要得到一天24小时的温度曲线,则: xi=0:1/3600:24; yi=interp1(x,y,xi, 'spline'); plot(x,y,'o' ,xi,yi) 命令1 interp1 功能一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。 x:原始数据点 Y:原始数据点

xi:插值点 Yi:插值点 格式 (1)yi = interp1(x,Y,xi) 返回插值向量yi,每一元素对应于参量xi,同时由向量x 与Y 的内插值决定。参量x 指定数据Y 的点。 若Y 为一矩阵,则按Y 的每列计算。yi 是阶数为length(xi)*size(Y,2)的输出矩阵。 (2)yi = interp1(Y,xi) 假定x=1:N,其中N 为向量Y 的长度,或者为矩阵Y 的行数。 (3)yi = interp1(x,Y,xi,method) 用指定的算法计算插值: ’nearest’:最近邻点插值,直接完成计算; ’linear’:线性插值(缺省方式),直接完成计算; ’spline’:三次样条函数插值。对于该方法,命令interp1 调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline 用它们执行三次样条函数插值; ’pchip’:分段三次Hermite 插值。对于该方法,命令interp1 调用函数pchip,用于对向量x 与y 执行分段三次内插值。该方法保留单调性与数据的外形; ’cubic’:与’pchip’操作相同; ’v5cubic’:在MATLAB 5.0 中的三次插值。 对于超出x 范围的xi 的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。 (4)yi = interp1(x,Y,xi,method,'extrap') 对于超出x 范围的xi 中的分量将执行特殊的外插值法extrap。 (5)yi = interp1(x,Y,xi,method,extrapval) 确定超出x 范围的xi 中的分量的外插值extrapval,其值通常取NaN 或0。 例1 1. 2.>>x = 0:10; y = x.*sin(x); 3.>>xx = 0:.25:10; yy = interp1(x,y,xx); 4.>>plot(x,y,'kd',xx,yy) 复制代码 例2 1. 2.>> year = 1900:10:2010; 3.>> product = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 4.249.633 256.344 267.893 ]; 5.>>p1995 = interp1(year,product,1995) 6.>>x = 1900:1:2010; 7.>>y = interp1(year,product,x,'pchip'); 8.>>plot(year,product,'o',x,y) 复制代码 插值结果为: 1.

实验四 插值法与曲线拟合

计算方法实验报告 专业班级:医学信息工程一班姓名:陈小芳学号:201612203501002 实验成绩: 1.【实验题目】 插值法与曲线拟合 2.【实验目的】 3.【实验内容】 4. 【实验要求】

5. 【源程序(带注释)】 (1)拉格朗日插值 #include #include #include #include #include #define n 4 //插值节点的最大下标 main() { double x1[n+1]={0.4,0.55,0.65,0.8,0.9}; double y1[n+1]={0.4175,0.57815,0.69657,0.88811,1.02652}; double Lagrange(double x1[n+1],double y1[n+1],float t); int m,k;float x,y;float X;double z; printf("\n The number of the interpolation points is m ="); //输入插值点的个数 while(!scanf("%d",&m)) { fflush(stdin); printf("\n输入错误,请重新输入:\n"); printf("\n The number of the interpolation points is m ="); } for(k=1;k<=m;k++) { printf("\ninput X%d=",k); while(!scanf("%f",&X)) { fflush(stdin); printf("\n输入错误,请重新输入:\n"); printf("\ninput X%d=",k); } z=Lagrange(x1,y1,X); printf("P(%f)=%f\n",X,z); } getch(); return (0); } double Lagrange(double x[n+1],double y[n+1],float X) { int i,j;

Matlab中的拟合与差值

您正在看的MATL AB是:曲线拟合与插值。 在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。对这个问题有两种方法。在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。这种方法在下一节讨论。这里讨论的方法是曲线拟合或回归。人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。图11.1说明了这两种方法。标有'o'的是数据点;连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。 11.1 曲线拟合 曲线拟合涉及回答两个基本问题:最佳拟合意味着什么?应该用什么样的曲线?可用许多不同的方法定义最佳拟合,并存在无穷数目的曲线。所以,从这里开始,我们走向何方?正如它证实的那样,当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。数学上,称为多项式的最小二乘曲线拟合。如果这种描述使你混淆,再研究图11.1。虚线和标志的数据点之间的垂直距离是在该点的误差。对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。最小二乘这个术语仅仅是使误差平方和最小的省略说法。 图11.12阶曲线拟合 在MATLAB中,函数polyfit求解最小二乘曲线拟合问题。为了阐述这个函数的用法,让我们以上面图11.1中的数据开始。

?x=[0.1.2.3.4.5.6.7.8.91]; ?y=[-.4471.9783.286.167.087.347.669.569.489.3011.2]; 为了用polyfit,我们必须给函数赋予上面的数据和我们希望最佳拟合数据的多项式的阶次或度。如果我们选择n=1作为阶次,得到最简单的线性近似。通常称为线性回归。相反,如果我们选择n=2作为阶次,得到一个2阶多项式。现在,我们选择一个2阶多项式。 ?n=2;%polyno mial order ?p=poly fit(x, y, n) p = -9.810820.1293-0.0317 polyfit的输出是一个多项式系数的行向量。其解是y= -9.8108x2+20.1293x-0.0317。为了将曲线拟合解与数据点比较,让我们把二者都绘成图。 ?xi=linspace(0, 1, 100);%x-axis data for plotting ?z=polyval(p, xi); 为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。 ?plot(x, y, ' o ' , x, y, xi, z, ': ') 画出了原始数据x和y,用'o'标出该数据点,在数据点之间,再用直线重画原始数据,并用点' : '线,画出多项式数据xi和z。 ?xlabel('x '), y label('y=f(x) '), title('Second Order Curv e Fitting ') 将图作标志。这些步骤的结果表示于前面的图11.1中。

第4、5讲 插值与拟合 作业参考答案

第四、五讲作业题参考答案 一、填空题 1、拉格朗日插值基函数在节点上的取值是( 0或1 )。 2、当1,1,2x =-,时()034f x =-, ,,则()f x 的二次插值多项式为 ( 2527 633 x x +- )。 3、由下列数据 所确定的唯一插值多项式的次数为( 2次 )。 4、根据插值的定义,函数()x f x e -=在[0,1]上的近似一次多项式1()P x = ( 1(1)1e x --+ ),误差估计为( 18 )。 5、在做曲线拟合时,对于拟合函数x y ax b = +,引入变量变换y =( 1 y ),x =( 1 x )来线性化数据点后,做线性拟合y a bx =+。 6、在做曲线拟合时,对于拟合函数Ax y Ce =,引入变量变换( ln()Y y = )、 X x =和B C e =来线性化数据点后,做线性拟合Y AX B =+。 7、设3()1f x x x =+-,则差商[0,1,2,3]f =( 1 )。 8、在做曲线拟合时,对于拟合函数()A f x Cx =,可使用变量变换(ln Y y =)(ln X x = )和B C e =来线性化数据点后,做线性拟合Y AX B =+。 9、设(1)1,(0)0,(1)1,(2)5,()f f f f f x -====则的三次牛顿插值多项式为 ( 3211 66x x x +-),其误差估计式为( 4()(1)(1)(2),(1,2)24f x x x x ξξ+--∈-) 10、三次样条插值函数()S x 满足:()S x 在区间[,]a b 内二阶连续可导, (),,0,1,2,,,k k k k S x y x y k n ==(已知)且满足()S x 在每一个子区间1[,] k k x x +上是( 三次多项式 )。

matlab实现插值法和曲线拟合电子教案

m a t l a b实现插值法和 曲线拟合

插值法和曲线拟合 电子科技大学 摘要:理解拉格朗日多项式插值、分段线性插值、牛顿前插,曲线拟合,用matlab编程求解函数,用插值法和分段线性插值求解同一函数,比较插值余项;用牛顿前插公式计算函数,计算函数值;对于曲线拟 合,用不同曲线拟合数据。 关键字:拉格朗日插值多项式;分段线性插值;牛顿前插;曲线拟合 引言: 在数学物理方程中,当给定数据是不同散点时,无法确定函数表达式,求解函数就需要很大的计算量,我们有多种方法对给定的表格函数进行求解,我们这里,利用插值法和曲线拟合对函数进行求解,进一步了解函数性质,两种方法各有利弊,适合我们进行不同的散点函数求解。 正文: 一、插值法和分段线性插值 1拉格朗日多项式原理 对某个多项式函数,已知有给定的k + 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值。 假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为: 其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为: [3] 拉格朗日基本多项式的特点是在上取值为1,在其它的点 上取值为0。 2分段线性插值原理 给定区间[a,b], 将其分割成a=x 0

Matlab插值与拟合教程

MATLAB插值与拟合 §1曲线拟合 实例:温度曲线问题 曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。 曲线拟合有多种方式,下面是一元函数采用最小二乘法对给定数据进行多项式曲线拟合,最后给出拟合的多项式系数。 1. 1.线性拟合函数:regress() 调用格式:b=regress(y,X) [b,bint,r,rint,stats]= regress(y,X) [b,bint,r,rint,stats]= regress(y,X,alpha) 说明:b=regress(y,X)返回X处y的最小二乘拟合值。该函数求解线性模型: y=Xβ+ε β是p?1的参数向量;ε是服从标准正态分布的随机干扰的n?1的向量;y为n?1的向量;X为n?p矩阵。 bint返回β的95%的置信区间。r中为形状残差,rint中返回每一个残差的95%置信区间。Stats向量包含R2统计量、回归的F值和p值。 例1:设y的值为给定的x的线性函数加服从标准正态分布的随机干扰值得到。即y=10+x+ε;求线性拟合方程系数。 程序:x=[ones(10,1) (1:10)’] y=x*[10;1]+normrnd(0,0.1,10,1) [b,bint]=regress(y,x,0.05) 结果:x = 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 y = 10.9567 11.8334

13.0125 14.0288 14.8854 16.1191 17.1189 17.9962 19.0327 20.0175 b = 9.9213 1.0143 bint = 9.7889 10.0537 0.9930 1.0357 即回归方程为:y=9.9213+1.0143x 2. 2.多项式曲线拟合函数:polyfit( ) 调用格式:p=polyfit(x,y,n) [p,s]= polyfit(x,y,n) 说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。矩阵s用于生成预测值的误差估计。(见下一函数polyval) 程序: x=0:.1:1; y=[.3 .5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2] n=3; p=polyfit(x,y,n) xi=linspace(0,1,100); z=polyval(p,xi); %多项式求值 plot(x,y,’o’,xi,z,’k:’,x,y,’b’) legend(‘原始数据’,’3阶曲线’) 结果: p = 16.7832 -25.7459 10.9802 -0.0035 多项式为:16.7832x3-25.7459x2+10.9802x-0.0035 曲线拟合图形:

数值计算插值法与拟合实验

实验报告三 一、实验目的 通过本实验的学习,各种插值法的效果,如多项式插值法,牛顿插值法,样条插值法,最小二乘法拟合(即拟合插值),了解它们各自的优缺点及插值。 二、实验题目 1、 插值效果比较 实验题目:将区间[]5,5-10等份,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与)(x f y =的图形进行比较: 211)(x x f +=;x x f arctan )(=;4 2 1)(x x x f +=。 (1) 做拉格朗日插值; (2) 做三次样条插值。 2、 拟合多项式实验 实验题目:给定数据点如下表所示: i x -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 i y -4.45 -0.45 0.55 0.05 -0.44 0.54 4.55 分别对上述数据做三次多项式和五次多项式拟合,并求平方误差,作出离散函数()i i y x ,和拟合函数的图形。 三、实验原理 n 阶拉格朗日插值 设已知n x x x ,,,10 及()()()x L n i x f y n i i ,,,1,0 ==为不超过n 次的多项式,且满足 插值条件()().,,1,0n i y x L i i n ==由对()x L 2的构造经验,可设 ()()()()(),11000 n n n i i i n y x l y x l y x l y x l x L +++==∑= 其中,()()n i x L i ,,1,0 =均为n 次多项式且满足() .,,1,0,, ,0, ,1n j i j i j i x l j i =?? ?≠==不难验 证,这样构造出的()x L n 满足插值条件。因此问题归结为求()()n i x l i ,,1,0 =的表达式。因 ()i j x i ≠是n 次多项式()x l i 的n 个根,故可设

插值法与数据拟合法

第七讲插值方法与数据拟合 § 7.1 引言 在工程和科学实验中,常常需要从一组实验观测数据(x i , y i ) (i= 1, 2, …, n) 揭示自变量x与因变量y 之间的关系,一般可以用一个近似的函数关系式y = f (x) 来表示。函数f (x) 的产生办法因观测数据与要求的不同而异,通常可采用两种方法:插值与数据拟合。 § 7.1.1 插值方法 1.引例1 已经测得在北纬32.3?海洋不同深度处的温度如下表: 根据这些数据,我们希望能合理地估计出其它深度(如500米、600米、1000米…)处的水温。 解决这个问题,可以通过构造一个与给定数据相适应的函数来解决,这是一个被称为插值的问题。 2.插值问题的基本提法 对于给定的函数表 其中f (x) 在区间[a, b] 上连续,x0,x1,…,x n为[a, b] 上n + 1个互不相同的点,要求在一个性质优良、便于计算的函数类{P(x)} 中,选出一个使 P(x i ) = y i,i= 0, 1, …, n(7.1.1) 成立的函数P(x) 作为 f (x) 的近似,这就是最基本的插值问题(见图7.1.1)。 为便于叙述,通常称区间[a, b] 为插值区间,称点x0,x1,…,x n为插值节点,称函数类{P(x)} 为插值函数类,称式(7.1.1) 为插值条件,称函数P(x) 为插值函数,称f (x) 为被插函数。求插值函数P(x) 的方法称为插值法。 § 7.1.2 数据拟合 1.引例2 在某化学反应中,已知生成物的浓度与时间有关。今测得一组数据如下: 根据这些数据,我们希望寻找一个y = f (t) 的近似表达式(如建立浓度y与时间t之间的经验公式等)。从几何上看,就是希望根据给定的一组点(1, 4.00),…,(16, 10.60),求函数y = f (t) 的图象的一条拟合曲

相关主题
文本预览
相关文档 最新文档