曲线拟合与插值理论与实例

合集下载

实验报告书-曲线拟合与插值

实验报告书-曲线拟合与插值

东南大学《数学实验》报告学号09008123 姓名郭晨成绩实验内容:曲线拟合与插值一实验目的三次样条插值函数的求解及应用二预备知识(1)熟悉正规方程、差分表、插商表的概念(2)熟悉“\”、polyfit、polyval、interp1、spline、cscvn等Matlab 命令三实验内容与要求已知某平原地区的一条公路经过如下坐标点,请用不同的插值方法绘出这条公路(不考虑公路的宽度)。

对于表中给出的数据,编程计算三次样条插值函数估计的公路长度。

X(m) 0 30 50 70 80 90 120 148 170 180Y(m) 80 64 47 42 48 66 80 120 121 138X(m) 202 212 230 248 268 271 280 290 300 312Y(m) 160 182 200 208 212 210 200 196 188 186X(m) 320 340 360 372 382 390 416 430 478 440Y(m) 200 184 188 200 202 240 246 280 296 308X(m) 420 380 360 340 320 314 280 240 200Y(m) 334 328 334 346 356 360 392 390 400思路:由于道路曲折,出现了一个x值对应2个y值的情况,,所以将道路分为2个函数进行拟合。

Matlab命令clear% 全部采样点X=[0,30,50,70,80,90,120,148,170,180,202,212,230,248,268,271,280,290,300,312,320,340,360,372,382,390,416,430,478,440,420,380,360,340,320,314,280,240,200];Y=[80,64,47,42,48,66,80,120,121,138,160,182,200,208,212,210,200,196,188,186,200,184,188, 200,202,240,246,280,296,308,334,328,334,346,356,360,392,390,400];% 第一段n1=29;X1=[0,30,50,70,80,90,120,148,170,180,202,212,230,248,268,271,280,290,300,312,320,340,36 0,372,382,390,416,430,478];Y1=[80,64,47,42,48,66,80,120,121,138,160,182,200,208,212,210,200,196,188,186,200,184,18 8,200,202,240,246,280,296];Z1=0:1:478;m1=length(Z1);gdao1=[-8/15,1/3];lmd1(1)=1;mu1(n1)=1;for i=1:n1-1h1(i)=X1(i+1)-X1(i);endd1(1)=6*((Y1(2)-Y1(1))/h1(1)-gdao1(1))/h1(1);d1(n1)=6*(gdao1(2)-(Y1(n1)-Y1(n1-1))/h1(n1-1))/h1(n1-1);for i=2:n1-1lmd1(i)=h1(i)/(h1(i-1)+h1(i));mu1(i)=1- lmd1(i);d1(i)=6*((Y1(i+1)-Y1(i))/h1(i)-(Y1(i)-Y1(i-1))/h1(i-1))/(h1(i-1)+h1(i));endA1(1,1)=2;A1(1,2)=1;A1(n1,n1-1)=1;A1(n1,n1)=2;for i=2:n1-1A1(i,i-1)=mu1(i);A1(i,i)=2;A1(i,i+1)=lmd1(i);endM1=inv(A1)*d1';for k=1:m1for i=1:n1-1if Z1(k)>=X1(i)&Z1(k)<=X1(i+1)S1(k)=M1(i)*(X1(i+1)-Z1(k))^3/(6*h1(i))+M1(i+1)*(Z1(k)-X1(i))^3/(6*h1(i))+(Y1(i)-M1(i)*h 1(i)^2/6)*(X1(i+1)-Z1(k))/h1(i)+(Y1(i+1)-M1(i+1)*h1(i)^2/6)*(Z1(k)-X1(i))/h1(i);breakendendend% 第二段n2=11;X2=[200,240,280,314,320,340,360,380,420,440,478];Y2=[400,390,392,360,356,346,334,328,334,308,296];Z2=200:1:478;m2=length(Z2);gdao2=[-1/4,-6/19];lmd2(1)=1;mu2(n2)=1;for i=1:n2-1h2(i)=X2(i+1)-X2(i);endd2(1)=6*((Y2(2)-Y2(1))/h2(1)-gdao2(1))/h2(1);d2(n2)=6*(gdao2(2)-(Y2(n2)-Y2(n2-1))/h2(n2-1))/h2(n2-1);for i=2:n2-1lmd2(i)=h2(i)/(h2(i-1)+h2(i));mu2(i)=1- lmd2(i);d2(i)=6*((Y2(i+1)-Y2(i))/h2(i)-(Y2(i)-Y2(i-1))/h2(i-1))/(h2(i-1)+h2(i));endA2(1,1)=2;A2(1,2)=1;A2(n2,n2-1)=1;A2(n2,n2)=2;for i=2:n2-1A2(i,i-1)=mu2(i);A2(i,i)=2;A2(i,i+1)=lmd2(i);endM2=inv(A2)*d2';for k=1:m2for i=1:n2-1if Z2(k)>=X2(i)&Z2(k)<=X2(i+1)S2(k)=M2(i)*(X2(i+1)-Z2(k))^3/(6*h2(i))+M2(i+1)*(Z2(k)-X2(i))^3/(6*h2(i))+(Y2(i)-M2(i)*h 2(i)^2/6)*(X2(i+1)-Z2(k))/h2(i)+(Y2(i+1)-M2(i+1)*h2(i)^2/6)*(Z2(k)-X2(i))/h2(i);breakendendendplot(Z1,S1,Z2,S2,X,Y,'o') % 绘图% 估算公路长度L=0;for t=1:477L=L+((Z1(t)-Z1(t+1))^2+(S1(t)-S1(t+1))^2)^0.5;endfor t=1:277L=L+((Z2(t)-Z2(t+1))^2+(S2(t)-S2(t+1))^2)^0.5 End结果输出:L = 1.0163e+003插值图像。

插值与拟合应用举例

插值与拟合应用举例

插值与拟合1. 插值与拟合的基本概念插值与插值函数:已知由()g x (可能未知或非常复杂)产生的一批离散数据(,),0,1,,i i x y i n = ,且n+1个互异插值节点011n n a x x x x b -=<<<<= ,在插值区间内寻找一个相对简单的函数 ()f x ,使其满足下列插值条件:再利用已求得的 ()f x 计算任一非插值节点的近似值,这就是插值。

其中()f x 称为插值函数, ()g x 称为被插函数。

最小二乘拟合: 已知一批离散的数据 (,),0,1,,i i x y i n = ,i x 互不相同,寻求一个拟合函数 ()f x ,使()i f x 与i y 的误差平方和在最小二乘意义下最小。

在最小二乘意义下确定的 ()f x 称为最小二乘拟合函数。

温度问题在12小时内,每隔1小时测量一次温度。

温度依次为:5,8,9,15,25,29,31,30,22,25,27,24。

(单位:℃)(1) 试估计在3.2h ,6.5h ,7.1h ,11.7h 的温度值,并画出其图形。

(2) 每隔1/10h 估计一次温度值,并画出其图形。

请你找出跟上述12个数据拟合的最好的一条曲线,请分别用分段线性插值、三次样条插值方法(至少用两条不同的曲线,并比较它们拟合好坏的程度)hours=1:12;temps=[5,8,9,15,25,29,31,30,22,25,27,24];t=interp1(hours,temps,[3.2,6.5,7.1,11.7]) %线性插值 T=interp1(hours,temps,[3.2,6.5,7.1,11.7],'spline') %三次样条插值 计算结果为 t =10.2000 30.0000 30.9000 24.9000 T =9.6734 30.0427 31.1755 25.3820每隔1/10h 估计一次温度值并画出其图形: hours=1:12;temps=[5,8,9,15,25,29,31,30,22,25,27,24]; h=1:0.1:12;t=interp1(hours,temps,h,'spline');plot(hours,temps,'+',h,t,hours,temps,'r:') xlabel('时间'),ylabel('温度')三次多项式拟合: hours=1:12;temps=[5,8,9,15,25,29,31,30,22,25,27,24]; a=polyfit(hours,temps,3) temps1=polyval(a,hours);plot(hours,temps,'ro',hours,temps1,'b.')得到320.00650.32837.1281 4.4343y x x x =--+-,图形如下:四次多项式拟合:得到4320.02730.7158 5.770712.225112.5884y x x x x =-+-+比较拟合的好坏:设ˆi y为拟合函数的值,i y 为测量值,则残差2ˆ()iiie y y=-∑ 。

第四章插值和曲线拟合

第四章插值和曲线拟合
第四章 插值和曲线拟合
在实际问题和科学实验中所遇到的函数y=f(x),往往
没有解析表达式 , 只能根据试验观察或其它方法提供一
系列点的函数值; 有时尽管可以写出表达式,但是比较
复杂, 直接使用它感到不方便。我们经常需要利用已知
的数据去寻求某个简单的函数φ (x)来逼近f(x),即用φ (x)
作为f(x)的近似表达式。本章的插值法和曲线拟合就是
φ (xi) = yi ,
插值法的几何意义
插值法的几何意义就是通过n+1个点: (xi,yi) (i=0,1,2,…,n) 作一条近似曲线y= φ (x) 代替y=f(x)。如下图所示。 y=f(x) (xn,yn) y= φ (x) y
(x1,y1) (x0,y0) (x2,y2)
(xn-1,yn-1)
三、n次拉格朗日插值
仿照P2 (x)的构造方法,可得出 Pn(x)=L0(x)y0+L1(x)y1+…+Ln(x)yn 其中 L0(x)=[(x-x1)(x-x2)…(x-xn)]/ [(x0-x1)(x0-x2)…(x0-xn)] Lk(x)= [(x-x0)…(x-xk-1)(x-xk+1) …(x-xn)] /[(xk-x0)…(xk-xk-1)(xk-xk+1) …(xk-xn)] ( k = 0, 1, …, n ) 这就是n次拉格朗日插值多项式。 也可写为 n n n x x k P ( x ) L ( x ) y y n i i i x x i 0 i 0 k 0 , k i i 或 k
线性插值举例
例 解 或 已知 1001/2 =10,1211/2 =11 求 1151/2 P1(x) = y0+(y1-y0)/(x1-x0)*(x-x0) P1(115) = 10+(11-10)/(121-100)*(115-100)

数值计算3-插值和曲线拟合

数值计算3-插值和曲线拟合

数值计算...........3.-.插值和曲线拟合插值法是实用的数值方法,是函数逼近的重要方法。

在生产和科学实验中,自变量x与因变量y的函数y = f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。

当要求知道观测点之外的函数值时,需要估计函数值在该点的值。

如何根据观测点的值,构造一个比较简单的函数y=φ(x),使函数在观测点的值等于已知的数值或导数值。

用简单函数y=φ(x)在点x处的值来估计未知函数y=f(x)在x点的值。

寻找这样的函数φ(x),办法是很多的。

φ(x)可以是一个代数多项式,或是三角多项式,也可以是有理分式;φ(x)可以是任意光滑(任意阶导数连续)的函数或是分段函数。

函数类的不同,自然地有不同的逼近效果。

在许多应用中,通常要用一个解析函数(一、二元函数)来描述观测数据。

根据测量数据的类型:1.测量值是准确的,没有误差。

2.测量值与真实值有误差。

这时对应地有两种处理观测数据方法:1.插值或曲线拟合。

2.回归分析(假定数据测量是精确时,一般用插值法,否则用曲线拟合)。

MATLAB中提供了众多的数据处理命令。

有插值命令,有拟合命令,有查表命令。

一维插值插值定义为对数据点之间函数的估值方法,这些数据点是由某些集合给定。

当人们不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。

例如,当数据点是某些实验测量的结果或是过长的计算过程时,就有这种情况。

interp1(x,y,xi,method)x和y为既有数据的向量,其长度必须相同。

xi为要插值的数据点向量。

method插值方法,‘nearest’/‘linear’/‘cubic’/‘spline’之一,分别为最近点插值/线性插值/分段三次Hermite插值/三次样条插值。

例x=[1.0 2.0 3.0 4.0 5.0]; %输入变量数据xy=[11.2 16.5 20.4 26.3 30.5]; %输入变量数据yx1=2.55; %输入待插值点xy11=interp1(x,y,x1,'nearest') %最近点插值方法的插值结果y12=interp1(x,y,x1,'linear') %线性插值方法的插值结果y13=interp1(x,y,x1,'cubic') %三次Hermite插值方法的插值结果y14=interp1(x,y,x1,'spline') %样条插值方法的插值结果y11 =20.4000y12 =18.6450y13 =18.6028y14 =18.4874plot(x,y)或许最简单插值的例子是MATLAB的作图。

曲线插值、拟合

曲线插值、拟合

根据被插值函数自变量个数,插值问题 分为一维插值、二维和多维插值;根据是 用分段直线、多项式或样条函数来作为插 值函数,插值问题又可分为线性插值、多 项式插值和样条插值。 MATLAB提供了一维、二维、三维、N 维数据插值函数interp1、interp2、interp3 、interpn,以及三次样条插值函数spline. 1.一位数据插值 调用格式: Y1=interp1(X,Y,X1,method) 注:根据X,Y的值,计算函数在X1处的值。
例2 某实验对一根长10米的钢轨进行热源温 度传播测试。用x表示测量点距离(m),用h 表示测量时间(s),用T表示测量所得各点温 度(c),测量结果如下。试用3次多项式插值 求一分钟内每隔10s,钢轨每隔0.5m处的温度
0 0 30 60 95 88 67
2.5 14 48 64
5 0 32 54
2.曲线拟合的实现 采用最小二乘法进行曲线拟合时,实际 上就是求一个系数向量,即为多项式的系数 。在MATLAB中,用polyfit函数来求的最小 二乘拟合多项式的系数,用polyval函数按所 得的多项式计算所给点上函数近似值。 polyfit函数的调用格式: [P,S]=polyfit(X,Y,m) 函数根据采样点X和采样点函数值Y,产 生一个m次多项式P及其在采样点的误差向量 S。
曲线拟合
1.曲线拟合 曲线拟合:用一个简单的函数去逼近 一个复杂的或者未知的函数。 依据的条件:在一个区间或一个区域 上的有限个采样点的函数值。 为此构造函数y=g(x)去逼近f(x),这里 不要求曲线个g(x)严格通过采样点,但希 望能尽量靠近这些点,就是是误差在某种 意义上达到最小。
MATLAB曲线拟合的最优标准是采用 最小二乘原理,所构造的g(x)是一个次数小 于离散点的多项式。设测得n个离散数据点 (xi,yi)(i=1,…n), 欲构造一个m(m<n)次多项式p(x): m m1 a x a x am x am1 2 p(x)= 1 在这里就是使上述拟合多项式在各个 节点处的偏差p(xi)-yi的平方和达到最小。

插值与拟合原理范文

插值与拟合原理范文

插值与拟合原理范文一、插值的原理插值是指根据已知数据的取值,在给定的数据区间内推测未知数据的取值。

插值的原理是基于一个假设,即在给定的区间内,数据的取值变化是连续而平滑的。

常见的插值方法包括线性插值、多项式插值和样条插值。

其中,线性插值是最简单的一种方法。

线性插值假设给定的两个点(x1,y1)和(x2,y2),两个点之间段的取值变化是线性的,可以通过直线的方程来计算中间点的值。

例如,在区间[1,3]上已知两个点(1,2)和(3,4),可以通过线性插值方法计算出点(2,?)的值。

根据线性插值的原理,点(2,?)的值应该等于直线y=2x的值,在这个例子中,点(2,?)的值为2×2=4多项式插值是一种更精确的插值方法。

多项式插值的原理是基于一个假设,即给定的n个点(x1, y1), (x2, y2), ..., (xn, yn)可以被一个n-1次多项式唯一地表示。

通过这个假设,可以根据已知数据点构造一个多项式函数,并通过求解多项式的系数来计算任意点的取值。

例如,在区间[1,3]上已知两个点(1,2)和(3,4),可以通过多项式插值方法构造一个二次多项式函数y=ax^2+bx+c,并通过求解a, b, c的值来计算任意点的值。

样条插值是一种更加平滑的插值方法。

样条插值的原理是将插值区间划分为若干小的子区间,在每个子区间内通过一个较低次数的多项式来拟合数据。

通过连接每个子区间内的多项式函数,可以获得整个插值区间内的光滑曲线。

通过样条插值方法,可以更好地拟合非线性数据,提高插值结果的准确性。

二、拟合的原理拟合是指根据已知的数据样本,确定一个数学模型来描述数据的变化趋势。

拟合的原理是基于一个假设,即给定的数据点可以通过选定的数学模型进行近似表示。

常见的拟合方法包括线性回归、多项式拟合和非线性拟合。

其中,线性回归是最简单的一种拟合方法。

线性回归的原理是假设给定的数据点符合一个线性函数模型y=ax+b,通过最小化实际数据点与拟合直线之间的距离,可以求解出最优的拟合直线的斜率a和截距b。

插值与曲线拟合实验报告

插值与曲线拟合实验报告

插值与曲线拟合实验报告实验目的:1. 了解插值和曲线拟合的原理和方法;2. 掌握梯形公式的应用;3. 掌握拉格朗日插值多项式和牛顿插值多项式的构造方法;4. 掌握用MATLAB进行数据拟合的方法。

实验仪器:1. 计算机;2. MATLAB软件。

实验原理:插值:给定一组数据点,插值就是在这些数据点之间插入某些值,以尽量接近原函数的方式得到一个新的函数。

插值方法有很多种,其中比较常用的是拉格朗日插值多项式和牛顿插值多项式。

拉格朗日插值多项式:以一种通用的方式构造多项式,使其通过给定的一组数据点。

构造方法是依据n个数据点(x1,y1),(x2,y2),…,(xn,yn)构造n-1次函数L(x),使得L(xi)=yi且有L(xj)=0(j不等于i)。

该多项式的形式为:L(x)=y1*L1(x)+y2*L2(x)+…+yn*Ln(x)其中,Lk(x)的构造方法是:Lk(x)=(x-x1)(x-x2)…(x-xk-1)(x-xk+1)…(x-xn) /(xk-x1)(xk-x2)…(xk-xk-1)(xk-xk+1)…(xk-xn)牛顿插值多项式:采用递推公式构造,其形式为:其中,f(x0,x1)表示在x0和x1之间的斜率,f(x0,x1,x2)表示在x0、x1和x2之间的曲率,以此类推。

曲线拟合:给定一组数据点,拟合就是寻找一个函数或者曲线,以最优化的方式拟合这些数据点,从而对未知的数据点进行预测。

拟合方法有很多种,其中比较常用的是线性方程、最小二乘法和多项式拟合。

最小二乘法:使用这种方法时,需要有一个数学模型,以此作为拟合函数。

当给定输入-输出数据时,使用最小二乘法以最小化误差平方和的方式来确定函数中未知的参数。

在MATLAB中使用polyfit函数实现多项式拟合。

实验结果:选择数据点如下:x = [1,2,3,4,5];y = [0.7652, 0.6347, 0.4496, 0.2499, 0.0621];使用梯形公式计算插值结果为 0.3865;使用拉格朗日插值多项式计算插值结果为 0.3865;使用牛顿插值多项式计算插值结果为 0.3865。

数学实验8-曲线拟合及插值

数学实验8-曲线拟合及插值

23
a =1.0e+006 *
-0.00000000000014
0.00000000107892 -0.00000304878595
0.00381927346813
-1.79012132225427
仿真结果表明, 人口增加的模型用多项式拟合能 比较准确地反映人口自然增长的规律,对长期预 测具有指导意义。
8
7 0 2 4 6 8 10 12 14 16 18 20
The length of the label is
L= 26.3809 (m)
% prog45.m This program is to fit the data by polynomial %
format long t=linspace(0,20,21); x=linspace(0,20,100); P=[9.01,8.96,7.96,7.97,8.02,9.05,10.13,11.18,12.26,13.2 8,13.32,12.61,11.29,10.22,9.15,7.90,7.95,8.86,9.81,10.8 0,10.93]; [a,s]=polyfit(t,P,12); yy=polyval(a,x); plot(x,yy,'r*--',t,P,'b+-'); L=0; for i=2:100 L=L+sqrt((x(i)-x(i-1))^2+(yy(i)-yy(i-1))^2); end disp('The length of the label is L=');disp(L);
实验13 人口数量预测模型实验
实验目的
1、学会用MATLAB软件 进行数据拟合 2、掌握在最小二乘意 义下数据拟合的理论和 方法. 3、通过对实际问题的 分析和研究,初步掌 握建立数据拟合数学 模型的方法

第九讲 数据插值与拟合

第九讲 数据插值与拟合

最常用的确定待定系数的方法是,曲线拟合的最小二乘法
二、 插值与拟合
1、插值方法 (1)分段线性插值 分段线性插值的提法如下:
(2)分段三次埃尔米特插值
在插值问题中,如果除了插值节点的函数值给定外,还 要求在节点的导数值为给定值,即插值问题变为
相当于在每一小段上应满足四个条件(方程),可以确 定四个待定参数.三次多项式正好有四个系数,所以可 以考虑用三次多项式函数作为插值函数,这就是分段三 次埃尔米特插值,它与分段线性插值一起都称为分段多 项式插值
x,y,z是已知样本点的坐标,可以是任意分布的。
X0,y0是期望的插值位置,即被插值节点, 可以是单点, 向量或者网格型矩阵
插值方法,除了上面的 方法外,还有一个是4.0版本提供 的一个插值方法,选项为’v4’
四、曲线拟合的matlab实现
1、已知函数原型的 (1)多项式拟合
y a1 x n a n x a n1 假设已知函数原型为
(2)、一般二维分布的数据插值
在实际应用问题中,大部分的数据以实测的多组 (xi,yi,zi)给出,所以不能直接使用interp2()函数。 Matlab中提供了另一个函数griddata( ),用来专 门解决这类问题。其调用格式如下
Z=griddata(x,y,z,x0,y0,’method’)
(3)一般的曲线拟合
假设已知函数原型是一般的函数,可以是多项式,可以 是线性,也可以是非线性的,一般情况下用这个来求解 非线性情况 Matlab在优化工具箱中提供的求解一般的曲线拟合函 数lsqcurvefit(),其调用格式如下 p=lsqcurvefit(‘Fun’,p0,xdata,ydata)
其中Fun表示函数Fun(p,data)的M函数文件,p0表示 函数的初值.。

数学模型数据插值与曲线拟合

数学模型数据插值与曲线拟合

实验一数据插值与曲线拟合【实验目地】1.了解数据插值、曲线拟合地概念和原理.2.掌握一维、二维地数据插值方法.3.掌握多项式拟合方法和一般曲线拟合方法.【实验内容】<把题目和相应地完整命令写在下列文本框内)1.数据插值有什么插值方式?曲线拟合依据地基本原理是什么?数据插值与曲线拟合有什么不同点?答: <1)、数据插值方式有最邻近插值、线性插值、三次样条插值、立方插值和分段线性插值.<2)、曲线拟合依据地基本原理是构造一个相对简单地函数y p(x) ,使它在某种意义下最优,我们常用地最优标准是最小二乘法原理,也就是使得上述拟合地曲线在各点n) y )2达到最小.处地偏差 p( x i ) y i地平方和( p(xi ii 1<3)、数据插值与曲线拟合地不同点:若要求所求曲线 <面)通过所给所有数据点, 就是插值问题;若不要求曲线 <面)通过所有数据点, 而是要求它反映对象整体地变化趋势 , 这就是数据拟合, 又称曲线拟合或曲面拟合.曲线插值与拟合都是要根据一组数据构造一个函数作为近似 , 由于近似地要求不同 , 二者在数学方法上是完全不同地 .2、某实验室对一根长 10M地钢轨进行热源地温度在 60 秒内传播测试 .x: 表示测量点 ,h: 测量时间 ,t: 测量得到地温度. 数据如下表0 2.557.510xth09514000 30884832126 606764544841(1)用线性插值求出在 25 秒时 3.6M 处钢轨地温度 .(2)用样条插值求出在这 60 秒内每隔 20 秒, 钢轨每隔 1M处地温度 .解: <1)M 文件:x=[0,2.5,5,7.5,10] 。

h=[0,30,60] 。

t=[95,14,0,0,0 。

88,48,32,12,6。

67,64,54,48,41] 。

t1=interp2(x,h,t,3.6,25,'cubic'>运行结果: t1 =34.5049所以在 25 秒时 3.6M 处地温度为 34.5049<2) M 文件:x=[0,2.5,5,7.5,10] 。

拉格朗日插值和曲线拟合

拉格朗日插值和曲线拟合

插值和曲线拟合摘要:本文简介拉格朗日插值,它的算法及程序和拉格朗日在实际生活中的运用。

运用了拉格朗日插值的公式,以及它在MATLAB 中的算法程序,并用具体例子说明。

拉格朗日插值在很多方面都可以运用,具有很高的应用价值。

关键字:拉格朗日插值 曲线拟合 数值解 截断误差一、问题描述与分析已知函数表sin 6π=0.5000,sin 4π=0.7071,sin 3π=0.8660,分别由线性插值与抛物插值求sin 92π的数值解,并由余项公式估计计算结果的精度。

1、插值法的概念插值法是实用的数值方法,是函数逼近的重要方法。

在生产和科学实验中,自变量x 与因变量y 的函数(x)f y =的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。

当要求知道观测点之外的函数值时,需要估计函数值在该点的值。

如何根据观测点的值,构造一个比较简单的函数(x)φ=y ,使函数在观测点的值等于已知的数值或导数值。

用简单函数在(x)φ=y 点x 处的值来估计未知函数(x)φ=y 在x 点的值。

寻找这样的函数)(x φ,办法是很多的。

)(x φ可以是一个代数多项式,或是三角多项式,也可以是有理分式;)(x φ可以是任意光滑(任意阶导数连续)的函数或是分段函数。

函数类的不同,自然地有不同的逼近效果。

在许多应用中,通常要用一个解析函数(一、二元函数)来描述观测数据。

2、拉格朗日插值:已知函数(x)f y =在若干点i x 的函数值i y =()i x f (i=0,1,⋅⋅⋅,n )一个差值问题就是求一“简单”的函数(x)p :)(i x p =i y ,i=0,1,⋅⋅⋅,n, (1)则(x)p 为(x)f 的插值函数,而(x)f 为被插值函数会插值原函数,0x ,1x ,2x ,...,n x 为插值节点,式(1)为插值条件,如果对固定点-x 求)(-x f 数值解,我们称-x 为一个插值节点,)x (_f ≈)(-x p 称为-x 点的插值,当-x ∈[min(0x ,1x ,2x ,...,n x ),max(0x ,1x ,2x ,...,n x )]时,称为内插,否则称为外插式外推,特别地,当(x)p 为不超过n 次多项式时称为n 阶Lagrange 插值。

数学建模——拟合与插值

数学建模——拟合与插值
xi 0.1 0.2 0.4 0.5 0.6 0.7 0.8 0.9 1 yi 1.978 3.28 6.16 7.34 7.66 9.58 9.48 9.30 11.2
即要求 出二次多项式: f(x)a1x2a2xa3
11
中 的 A(a1,a2,a3) 使得:
[f (xi)yi]2 最小
i1
fun是一个事先建立的 定义函数F(x,xdata) 的 M-文件, 自变量为x和 xdata
选项见无 迭代初值 已知数据点 约束优化
18
25.03.2020
2. lsqnonlin
已知数据点: xdata=(xdata1,xdata2,…,xdatan) ydata=(ydata1,ydata2,…,ydatan)
+
+
y=f(x) +
x i 为点(xi,yi) 与曲线 y=f(x) 的距离
6
25.03.2020
线性最小二乘拟合 f(x)=a1r1(x)+ …+amrm(x)中 函数{r1(x), …rm(x)}的选取 1. 通过机理分析建立数学模型来确定 f(x);
2. 将数据 (xi,yi) i=1, …n 作图,通过直观判断确定 f(x):
2)计算结果:A = [-9.8108, 20.1293, -0.0317]
f(x) 9.81x0 2 8 2.1 02x9 0 3 .0317
16
25.03.2020
用MATLAB作非线性最小二乘拟合
两个求非线性最小二乘拟合的函数:
lsqcurvefit、lsqnonlin。
相同点和不同点:两个命令都要先建立M-文件fun.m,定义函 数f(x),但定义f(x)的方式不同。

实验报告—拟合与插值

实验报告—拟合与插值

实验报告七拟合与插值一、曲线拟合1、多项式拟合【示例】以下步骤可对二维数据作多项式拟合。

已知:数据横坐标:a=[1 2 5 7 11 12];数据纵坐标:b=[ 32.78 32.65 27.25 25.55 19.24 14.65];【解】先将数据绘制成散点图:a=[1 2 5 7 11 12]; b=[ 32.78 32.65 27.25 25.55 19.24 14.65];plot(a,b, '-o') % 绘图,线型为实线,点型为空心圆点,颜色为默认的蓝色。

观察绘制出来的图形,大致在一条直线上,所以用一次多项式(直线)拟合:p= polyfit(a,b,1); y1=p (1)*a+p (2); % 线性拟合。

polyfit命令中的数字“1”表示用一次多项式。

% p是向量,各分量表示多项式从高到低的各个系数;y1是用这些系数构造的多项式的值。

hold on; plot(a,y1,'r') % 绘制图形,观察拟合效果。

颜色为红色。

也可以试着用三次多项式来拟合:q= polyfit(a,b,3); y2= q(1)*a.^3+q(2)*a.^2+q(3)*a+ q(4); % 3次多项式拟合hold on; plot(a,y2,'k') % 绘制曲线,观察拟合效果。

颜色为黑色。

【要求】执行以上命令,并仿照示例,对下列数据作多项式拟合,写出拟合多项式:数据横坐标:x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];数据纵坐标:y= [70.2 41.6 -9.1 -52 -100 -67.4 -112 -166 -104 -168 -103 -128 -90.5 -52.1 -10.4 60.6 85.9 153 199 301];024681012141618202、一般的最小二乘拟合【示例1】已知数据横、纵坐标分别为x =1:0.5:10; y=[0.84 2.24 3.64 3.74 1.2701 -4.29 -12.11 -19.79 -23.97 -21.34 -10.06 9.09 32.19 52.76 63.32 57.69 33.38 -6.78 -54.40];并已知该组数据满足 12sin()ay x a x =,其中12,a a 为待定系数。

数值分析插值与拟合实验

数值分析插值与拟合实验

数值分析插值与拟合实验数值分析是一门研究利用数字计算方法解决数学问题的学科。

插值与拟合是数值分析的重要内容之一,可以用于数据分析、信号处理以及数学建模等领域。

本实验将使用MATLAB软件进行插值与拟合的实验,主要包括插值多项式与拟合曲线的构造,以及评价拟合效果的方法。

实验一:插值多项式的构造1. Lagrange插值Lagrange插值是一种构造多项式来拟合已知数据点的方法。

给定n 个数据点(xi, yi),其中xi不相等,Lagrange插值多项式可以写成:P(x) = ∑(i=0 to n) yi * l_i(x)其中l_i(x)是Lagrange基函数,定义为:l_i(x) = ∏(j=0 to n,j!=i) (x-xj)/(xi-xj)通过计算l_i(x),然后将其乘以相应的数据点yi,最后相加就可以得到插值多项式P(x)。

2. Newton插值Newton插值使用差商的概念来构造插值多项式。

首先定义差商F[x0,x1,...,xn]如下:F[x0]=f(x0)F[x0,x1]=(f(x1)-f(x0))/(x1-x0)F[x0,x1,x2]=(F[x1,x2]-F[x0,x1])/(x2-x0)...F[x0,x1,...,xn] = (F[x1,x2,...,xn] - F[x0,x1,...,xn-1])/(xn-x0)其中f(x)是已知数据点的函数。

然后,利用差商来构造插值多项式:P(x) = ∑(i=0 to n) F[x0,x1,...,xi] * ∏(j=0 to i-1) (x-xj)通过计算差商F[x0,x1,...,xi]和对应的乘积∏(x-xj),最后相加得到插值多项式P(x)。

实验二:拟合曲线的构造1.多项式拟合多项式拟合是通过构造一个多项式函数来拟合已知数据点的方法。

假设给定n个数据点(xi, yi),可以使用多项式函数来表示拟合曲线:P(x) = a0 + a1*x + a2*x^2 + ... + an*x^n其中a0, a1, ..., an是待确定的系数。

第四讲:曲线曲面的插值与拟合方法

第四讲:曲线曲面的插值与拟合方法

第 四 讲 曲 线 曲 面 了解拉格朗日和分段线性插值的基本思想 的 了解三次样条插值的提法和思路
掌握插值函数 interp interp1 interp2 griddata
掌握水塔用水量的计算(水位-体积-流速-积分)
关于插值与拟合的区别…
2
插 值 与 拟 合 方 法
第 四 讲 曲 线 曲 面 的
面对工程实践和科学计算中的采集得到数据 (xi,yi),我们总是试图去揭示x与y之间的关系,即 用近似的y=f(x)来表示,那么我们通常可以采用两 种方法:插值与拟合 插值与拟合的区别在于—— 插值试图去通过已知点了解未知 点处的函数值;而拟合则在于在 整体上用某种已知函数去拟合数 据点列所在未知函数的性态。 关键区别在于插值要求必须经过已知点列,拟 合只求尽量靠近不必经过!拟合将在本讲下介绍~
拟曲 合线 方曲 法 面 的
x2
x1
q2
x0
q1
一维曲线等距插值函数interp
12
interp's syntax One-dimensional r times longer data interpolation y = interp(y,r)
插 值 与 拟 合 方 法 第 四 讲 曲 线 曲 面 的
14
插 值 与 拟 合 方 法
第 四 讲 曲 线 曲 面 的
二维曲面等距插值函数interp2
动画展示:三维空间中的曲面等距格点
15
插 值 与 拟 合 方 法
第 四 讲 曲 线 曲 面 的
二维曲面等距插值函数interp2
题例 粗糙山顶曲面的平滑处理(等距情形)
load mountain.mat %载入山顶地形数据 mesh(x,y,z) %绘制原始山顶地形图 插 值 与 拟 合 方 法 第 四 讲 曲 线 曲 面 的 xi=linspace(0,5,50); yi=linspace(0,6,80); [xii,yii]=meshgrid(xi,yi); zii=interp2(x,y,z,xii,yii,'spline'); %三次样条插值 figure; surf(xii,yii,zii) %绘制平滑处理后的山顶曲面 hold on; [xx,yy]=meshgrid(x,y); plot3(xx,yy,z+0.1,'ob');

3插值曲线拟合

3插值曲线拟合

1 在[-5, 5]上, 用n=11个等距分点作分段线 2 1 x
例4 对 y
性插值和三次样条插值, 用m=21个插值点作图,比较结果. x
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000
1 在[-5, 5]上, 用n=11个等距分点作分段线 2 1 x
四种插值方法比较
函数
格式
功能
zi=interp2(x,y,z,xi,yi)
二维插值。Z为由已知点的值组成的 矩阵,参量x与y是与z同维的已知点 的矩阵,且必须是单调的。xi与yi为 需要插值的点。若xi与yi中有在x与y 范围之外的点,则相应地返回NaN。
此格式默认x=1:n、y=1:m,其中 [m,n]=size(z)。再按 zi=interp2(x,y,z,xi,yi)情形进行计算。
x=-1:0.1:1; y=1./(1+9*x.^2); xi=-1:0.1:1; yi=interp1(x,y,xi); plot(x,y,'r-',xi,yi,'*')
例2. 在普通V带设计中,带轮的包角α与包角系数ka之间的关系如 表所示。求α=133.5°时的包角系数ka。
包角与包角系数
包角 ( °) 包角系 数 包角 ( °) 90 100 110 120 125 130 135 140
例 6 在飞机的机翼加工时, 由于机翼尺寸很大, 通常在图 纸上只能标出部分关键点的数据. 某型号飞机的机翼上缘 轮廓线的部分数据如下:
x=[0 4.74 9.05 19 38 57 76 95 114 133 152 171 190] y=[0 5.23 8.1 11.97 16.15 17.1 16.34 14.63 12.16 9.69 7.03 3.99 0] xi=[0:0.001:190] yi=interp1(x,y,xi,'spline') plot(xi,yi)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第11章曲线拟合与插值在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。

对这个问题有两种方法。

在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。

这种方法在下一节讨论。

这里讨论的方法是曲线拟合或回归。

人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。

图11.1说明了这两种方法。

标有'o'的是数据点;连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。

11.1 曲线拟合曲线拟合涉及回答两个基本问题:最佳拟合意味着什么?应该用什么样的曲线?可用许多不同的方法定义最佳拟合,并存在无穷数目的曲线。

所以,从这里开始,我们走向何方?正如它证实的那样,当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。

数学上,称为多项式的最小二乘曲线拟合。

如果这种描述使你混淆,再研究图11.1。

虚线和标志的数据点之间的垂直距离是在该点的误差。

对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。

这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。

最小二乘这个术语仅仅是使误差平方和最小的省略说法。

图11.1 2阶曲线拟合在MATLAB中,函数polyfit求解最小二乘曲线拟合问题。

为了阐述这个函数的用法,让我们以上面图11.1中的数据开始。

» x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];» y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];为了用polyfit,我们必须给函数赋予上面的数据和我们希望最佳拟合数据的多项式的阶次或度。

如果我们选择n=1作为阶次,得到最简单的线性近似。

通常称为线性回归。

相反,如果我们选择n=2作为阶次,得到一个2阶多项式。

现在,我们选择一个2阶多项式。

» n=2; % polynomial order» p=polyfit(x, y, n)p =-9.8108 20.1293 -0.0317polyfit的输出是一个多项式系数的行向量。

其解是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 '), ylabel(' y=f(x) '), title(' Second Order Curve Fitting ')将图作标志。

这些步骤的结果表示于前面的图11.1中。

多项式阶次的选择是有点任意的。

两点决定一直线或一阶多项式。

三点决定一个平方或2阶多项式。

按此进行,n+1数据点唯一地确定n阶多项式。

于是,在上面的情况下,有11个数据点,我们可选一个高达10阶的多项式。

然而,高阶多项式给出很差的数值特性,人们不应选择比所需的阶次高的多项式。

此外,随着多项式阶次的提高,近似变得不够光滑,因为较高阶次多项式在变零前,可多次求导。

例如,选一个10阶多项式» pp=polyfit(x, y, 10) ;» format short e % change display format» pp.' % display polynomial coefficients as a columnans =-4.6436e+0052.2965e+006-4.8773e+0065.8233e+006-4.2948e+0062.0211e+006-6.0322e+0051.0896e+005-1.0626e+0044.3599e+002-4.4700e-001要注意在现在情况下,多项式系数的规模与前面的2阶拟合的比较。

还要注意在最小(-4.4700e-001)和最大(5.8233e+006)系数之间有7个数量级的幅度差。

将这个解作图,并把此图与原始数据及2阶曲线拟合相比较,结果如何呢?» zz=polyval(pp, xi); % evaluate 10th order polynomial» plot(x, y, ' o ' , xi, z, ' : ' , xi, zz) % plot data» xlabel(' x '), ylabel(' y=f(x) '), title(' 2nd and 10th Order curve Fitting ')在下面的图11.2中,原始数据标以'o',2阶曲线拟合是虚线,10阶拟合是实线。

注意,在10阶拟合中,在左边和右边的极值处,数据点之间出现大的纹波。

当企图进行高阶曲线拟合时,这种纹波现象经常发生。

根据图11.2,显然,‘越多就越好’的观念在这里不适用。

图11.2 2阶和10阶曲线拟合11.2 一维插值正如在前一节对曲线拟合所描述的那样,插值定义为对数据点之间函数的估值方法,这些数据点是由某些集合给定。

当人们不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。

例如,当数据点是某些实验测量的结果或是过长的计算过程时,就有这种情况。

或许最简单插值的例子是MATLAB的作图。

按缺省,MATLAB用直线连接所用的数据点以作图。

这个线性插值猜测中间值落在数据点之间的直线上。

当然,当数据点个数的增加和它们之间距离的减小时,线性插值就更精确。

例如,» x1=linspace(0, 2*pi, 60);» x2=linspace(0, 2*pi, 6);» plot(x1, sin(x1), x2, sin(x2), ' - ')» xlabel(' x '), ylabel(' sin(x) '), title(' Linear Interpolation ')图11.3 线性插值图11.3是sine函数的两个图,一个在数据点之间用60个点,它比另一个只用6个点更光滑和更精确。

如曲线拟合一样,插值要作决策。

根据所作的假设,有多种插值。

而且,可以在一维以上空间中进行插值。

即如果有反映两个变量函数的插值,z=f(x, y),那么就可在x之间和在y之间,找出z的中间值进行插值。

MATLAB在一维函数interp1和在二维函数interp2中,提供了许多的插值选择。

其中的每个函数将在下面阐述。

为了说明一维插值,考虑下列问题,12小时内,一小时测量一次室外温度。

数据存储在两个MATLAB变量中。

» hours=1:12; % index for hour data was recorded»temps=[5 8 9 15 25 29 31 30 22 25 27 24]; % recorded temperatures» plot(hours, temps, hours, temps,' + ') % view temperatures» title(' Temperature ')» xlabel(' Hour '), ylabel(' Degrees Celsius ')图11.4 在线性插值下室外温度曲线正如图11.4看到的,MATLAB画出了数据点线性插值的直线。

为了计算在任意给定时间的温度,人们可试着对可视的图作解释。

另外一种方法,可用函数interp1。

» t=interp1(hours, temps, 9.3) % estimate temperature at hour=9.3t =22.9000» t=interp1(hours, temps, 4.7) % estimate temperature at hour=4.7t =22» t=interp1(hours, temps, [3.2 6.5 7.1 11.7]) % find temp at many points!t =10.200030.000030.900024.9000interp1的缺省用法是由interp1(x, y, xo)来描述,这里x是独立变量(横坐标),y是应变量(纵坐标),xo是进行插值的一个数值数组。

另外,该缺省的使用假定为线性插值。

若不采用直线连接数据点,我们可采用某些更光滑的曲线来拟合数据点。

最常用的方法是用一个3阶多项式,即3次多项式,来对相继数据点之间的各段建模,每个3次多项式的头两个导数与该数据点相一致。

这种类型的插值被称为3次样条或简称为样条。

函数interp1也能执行3次样条插值。

» t=interp1(hours, temps, 9.3, ' spline ') % estimate temperature at hour=9.3t =21.8577» t=interp1(hours, temps, 4.7, ' spline ') % estimate temperature at hour=4.7t =22.3143» t=interp1(hours, temps, [3.2 6.5 7.1 11.7], ' spline ')t =9.673430.042731.175525.3820注意,样条插值得到的结果,与上面所示的线性插值的结果不同。

因为插值是一个估计或猜测的过程,其意义在于,应用不同的估计规则导致不同的结果。

一个最常用的样条插值是对数据平滑。

也就是,给定一组数据,使用样条插值在更细的间隔求值。

例如,» h=1:0.1:12; % estimate temperature every 1/10 hour» t=interp1(hours, temps, h, ' spline ') ;» plot(hours, temps, ' - ' , hours, temps, ' + ' , h, t) % plot comparative results» title(' Springfield Temperature ')» xlabel(' Hour '), ylabel(' Degrees Celsius ')在图11.5中,虚线是线性插值,实线是平滑的样条插值,标有' + '的是原始数据。

相关文档
最新文档