函数插值与曲线拟合
常用函数的逼近和曲线拟合
常用函数的逼近和曲线拟合在数学中,函数逼近和曲线拟合都是常见的问题。
函数逼近是指找到一个已知函数,尽可能地接近另一个函数。
而曲线拟合则是给定一组数据点,找到一条曲线来描述这些数据点的分布。
本文将讨论常用的函数逼近和曲线拟合方法。
一、函数逼近1. 插值法插值法是最简单的函数逼近方法之一。
它的基本思想是:给定一组已知点,通过构造一个多项式,使得该多项式在这些点处的函数值与已知函数值相等。
插值法的优点是精度高,缺点是易产生龙格现象。
常用的插值多项式有拉格朗日插值多项式和牛顿插值多项式。
拉格朗日插值多项式的形式为:$f(x)=\sum_{i=0}^{n}y_{i}\prod_{j=i,j\neq i}^{n}\frac{x-x_{j}}{x_{i}-x_{j}}$其中,$x_{i}$是已知点的横坐标,$y_{i}$是已知点的纵坐标,$n$是已知点的数量。
牛顿插值多项式的形式为:$f(x)=\sum_{i=0}^{n}f[x_{0},x_{1},...,x_{i}]\prod_{j=0}^{i-1}(x-x_{j})$其中,$f[x_{0},x_{1},...,x_{i}]$是已知点$(x_{0},y_{0}),(x_{1},y_{1}),...,(x_{i},y_{i})$的差商。
2. 最小二乘法最小二乘法是一种常用的函数逼近方法。
它的基本思想是:给定一组数据点,找到一个函数,在这些数据点上的误差平方和最小。
通常采用线性模型,例如多项式模型、指数模型等。
最小二乘法的优点是适用性广泛,缺点是对于非线性模型要求比较高。
最小二乘法的一般形式为:$F(x)=\sum_{i=0}^{n}a_{i}\varphi_{i}(x)$其中,$a_{i}$是待求的系数,$\varphi_{i}(x)$是一组已知的基函数,$n$是基函数的数量。
最小二乘法的目标是使得$\sum_{i=1}^{m}[f(x_{i})-F(x_{i})]^{2}$最小,其中$m$是数据点的数量。
常用数值分析方法3插值法与曲线拟合
p1(x)y1yx2 2 xy11(xx1)(变形)
xx1xx22y1xx2xx11y2
A1(x)
A2(x)
插值基函数
X.Z.Lin
3.2.3 抛物线插值
已知:三点(x1,y1)、(x2,y2)、(x3,y3) 求:其间任意 x 对应的 y 值
y (x3, y3)
y=f(x) (x2, y2) y=p2(x)
(1)算术平均值
n
xi
x i1 n
(2)标准偏差
n xi2 N xi 2 n
i1
i1
n1
(3)平均标准偏差
E
n
(4)剔出错误数据??可可疑疑数数 据据
Q 数据排序(升):x1,x2,…,xn;
最大与最小数据之差;
值 可疑数据与其最邻近数据之间的差
法 求Q值:
Qxnxn1 或 Qx2x1
3.1 实验数据统计处理
3.1.1 误差
系统误差 经常性的原因
影响比较恒定
偶然误差
偶然因素
正态分布规律
校正
过失误差
统计分析
-3σ -2σ -σ 0 σ 2σ 3σ 图6.1 平行试验数据的正态分布图
操作、计算失误
错误数据
剔出
21:39 07.02.2021
2/37
X.Z.Lin
3.1.2 数据的统计分析
A3(x)(x(x3 xx11))((xx3xx22))
21:39 07.02.2021
9/37
X.Z.Lin
3.2.4 Lagrange插值的一般形式
已知:n点(x1,y1)、(x2,y2)……(xn,yn) 求:其间任意 x 对应的 y 值
MATLAB中的曲线拟合与插值
MATLAB 中的曲线拟合和插值在大量的使用领域中,人们经常面临用一个分析函数描述数据(通常是测量值)的任务。
对这个问题有两种方法。
在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。
这种方法在下一节讨论。
这里讨论的方法是曲线拟合或回归。
人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。
图11.1说明了这两种方法。
标有'o'的是数据点;连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。
11.1 曲线拟合曲线拟合涉及回答两个基本问题:最佳拟合意味着什么?应该用什么样的曲线?可用许多不同的方法定义最佳拟合,并存在无穷数目的曲线。
所以,从这里开始,我们走向何方?正如它证实的那样,当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。
数学上,称为多项式的最小二乘曲线拟合。
如果这种描述使你混淆,再研究图11.1。
虚线和标志的数据点之间的垂直距离是在该点的误差。
对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。
这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。
最小二乘这个术语仅仅是使误差平方和最小00.20.40.60.81-2024681012xy =f (x )Second O rder C urv e Fitting图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作为阶次,得到最简单的线性近似。
插值法和曲线拟合的主要差异
插值法和曲线拟合的主要差异
插值法和曲线拟合是数据处理和分析中常用的方法,它们的主要差异如下:
1. 目标不同:
- 插值法的主要目标是通过已知数据点的函数值推断未知数据点的函数值,以填充数据的空缺部分或者进行数据的重构。
- 曲线拟合的主要目标是通过已知数据点拟合出一条函数曲线,以描述数据点之间的趋势或模式。
2. 数据使用方式不同:
- 插值法使用已知数据点的函数值作为输入,通过构造插值函数来推断未知数据点的函数值。
- 曲线拟合使用已知数据点的函数值作为输入,并通过选择合适的拟合函数参数,使得拟合函数与数据点尽可能接近。
3. 数据点要求不同:
- 插值法要求已知数据点间的函数值比较准确,以保证插值函数的质量,并要求数据点间的间距不会过大,避免出现过度插值或者不稳定的现象。
- 曲线拟合对于数据点的要求相对较松,可以容忍噪声、异常值等因素,因为它不需要将函数曲线完全通过所有数据点。
4. 应用场景不同:
- 插值法常见应用于信号处理、图像处理等领域,可以用于填充缺失数据、图像重构等任务。
- 曲线拟合常见应用于数据分析、模型建立等领域,可以用
于描述数据间的趋势、拟合科学模型等。
综上所述,插值法和曲线拟合在目标、数据使用方式、数据点要求和应用场景等方面存在明显的差异。
插值与拟合方法
插值与拟合方法在实际中,常常要处理由实验或测量所得到的一批离散数据.插值与拟合方法就是要通过这些数据去确定某一类已知函数的参数或寻找某个近似函数,使所得到的近似函数与已知数据有较高的拟合精度.插值问题:要求这个近似函数(曲线或曲面)经过所已知的所有数据点.通常插值方法一般用于数据较少的情况.数据拟合:不要求近似函数通过所有数据点,而是要求它能较好地反映数据的整体变化趋势。
共同点:插值与拟合都是根据实际中一组已知数据来构造一个能够反映数据变化规律的近似函数的方法,由于对近似要求的准则不同,因此二者在数学方法上有很大的差异.插值问题的一般提法:已知某函数)(x f y =(未知)的一组观测(或试验)数据),,2,1)(,(n i y x ii⋅⋅⋅=,要寻求一个函数)(x φ,使iiy x =)(φ),,2,1(n i ⋅⋅⋅=,则)()(x f x ≈φ.实际中,常常在不知道函数)(x f y =的具体表达式的情况下,对于i x x =有实验测量值iy y =),,2,1,0(n i ⋅⋅⋅=,寻求另一函数)(x φ使满足:)()(i i i x f y x ==φ),,2,1,0(n i ⋅⋅⋅=称此问题为插值问题,并称函数)(x φ为)(x f 的插值函数,nx x x x ,,,,21⋅⋅⋅称为插值节点,),,2,1,0()(n i y x ii⋅⋅⋅==φ称为插值条件,即)()(iiix f y x ==φ),,2,1,0(n i ⋅⋅⋅=,则)()(x f x ≈φ.(1) 拉格朗日(Lagrange )插值设函数)(x f y =在1+n 个相异点nx x x x ,,,,21⋅⋅⋅上的函数值为ny y y y ,,,,21⋅⋅⋅,要求一个次数不超过n 的代数多项式nnnx a x a x a a x P +⋅⋅⋅+++=221)(使在节点i x 上有),,2,1,0()(n i y x P ii n ⋅⋅⋅==成立,称之为n 次代数插值问题,)(x P n称为插值多项式.可以证明n 次代数插值是唯一的.事实上: 可以得到j n j n i i j in y x x xx x P j i ∑∏==⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫⎝⎛--=≠00)()( 当1=n 时,有二点一次(线性)插值多项式:101001011)(y x x x x y x x x x x P --+--=当n =2时,有三点二次(抛物线)插值多项式:2120210121012002010212))(())(())(())(())(())(()(y x x x x x x x x y x x x x x x x x y x x x x x x x x x P ----+----+----=(2)牛顿(Newton ) 插值牛顿插值的基本思想:由于)(x f y =关于二节点10,x x 的线性插值为)()()()()()()()()(00101000010101x x x x x f x f x p x x x x x f x f x f x p ---+=---+= 假设满足插值条件)2,1,0()()(2===i x p y x f iii的二次插值多项式一般形式为))(()()(1212x x x x c x x c c x p --+-+= 由插值条件可得⎪⎩⎪⎨⎧=--+-+=-+=)())(()()()()(21202202101011000x f x x x x c x x c c x f x x c c x f c 可以解出⎪⎪⎪⎩⎪⎪⎪⎨⎧------=--==020101121220101100)()()()()()(),(x x x x x f x f x x x f x f c x x x f x f c x f c所以))(()())(()()(10211020102x x x x c x p x x x x c x x c c x p --+=--+-+=类似的方法,可以得到三次插值多项式等,按这种思想可以得到一般的牛顿插值公式.函数的差商及其性质对于给定的函数)(x f ,用),,,(10n x x x f ⋅⋅⋅表示关于节点nx x x ,,,1⋅⋅⋅的n 阶差商,则有一阶差商:01011)()(),(x x x f x f x x f --=,121221)()(),(x x x f x f x x f --= 二阶差商:021021210),(),(),,(x x x x f x x f xx x f --=n 阶差商:0110211),,,(),,,(),,,(x x x x x f x x x f x x x f n n n n -⋅⋅⋅-⋅⋅⋅=⋅⋅⋅-差商有下列性质:(1)差商的分加性:∑∏=≠=-=⋅⋅⋅nk nk j j j kk n x xx f xx x f 0)(01)()(),,,(.(2)差商的对称性:在),,,(1nx x x f ⋅⋅⋅中任意调换jix x ,的次序其值不变.牛顿插值公式: 一次插值公式为))(,()()(01001x x x x f x f x p -+=二次插值公式为))()(,,()())()(,,())(,()()(1021011021001002x x x x x x x f x p x x x x x x x f x x x x f x f x p --+=--+-+=于是有一般的牛顿插值公式为)())()(,,,()()())()(,,,())()(,,())(,()()(11010111010102100100----⋅⋅⋅--⋅⋅⋅+=-⋅⋅⋅--⋅⋅⋅+⋅⋅⋅+--+-+=n n n n n n x x x x x x x x x f x p x x x x x x x x x f x x x x x x x f x x x x f x f x p可以证明:其余项为))(())()(,,,,()(11010n n n x x x x x x x x x x x x f x R --⋅⋅⋅--⋅⋅⋅=-实际上,牛顿插值公式是拉格朗日插值公式的一种变形,二者是等价的.另外还有著名的埃尔米特(Hermite )插值等.(3)样条函数插值方法样条,实质上就是由分段多项式光滑连接而成的函数,一般称为多项式样条.由于样条函数的特殊性质,决定了样条函数在实际中有着重要的应用.样条函数的一般概念定义 设给定区间],[b a 的一个分划b x x x a n=<⋅⋅⋅<<=∆1:,如果函数)(x s 满足条件:(1) 在每个子区间),,2,1](,[1n i x x ii ⋅⋅⋅=-上是k 次多项式; (2) )(x s 及直到k -1阶的导数在],[b a 上连续.则称)(x s 是关于分划△的一个k 次多项式样条函数,nx x x ,,,1⋅⋅⋅称为样条节点,121,,,-⋅⋅⋅n x x x 称为内节点,nx x ,0称为边界节点,这类样条函数的全体记作),(k S P∆,称为k 次样条函数空间.若),()(k S x s P∆∈,则)(x s 是关于分划△的k 次多项式样条函数.k 次多项式样条函数的一般形式为∑∑=-=+-+=ki n j k j jii k x x k i x x s 011)(!!)(βα其中),,1,0(k i i=α和)1,,2,1(-=n j jβ均为任意常数,而)1,,2,1(,0,)()(-=⎪⎩⎪⎨⎧<≥-=-+n j x x x x x x x x jj kj kj在实际中最常用的是2=k 和3的情况,即为二次样条函数和三次样条函数. 二次样条函数:对于],[b a 上的分划b x x x a n=<⋅⋅⋅<<=∆1:,则)2,()(!2!2)(11222102∆βαααP n j j jS x x x x x s ∈-+++=∑-=+其中)1,2,1(,0,)()(22-=⎪⎩⎪⎨⎧<≥-=-+n j x x x x x x x x j j j j . 三次样条函数:对于],[b a 上的分划b x x xa n =<⋅⋅⋅<<=∆10:,则)3,()(!3!3!2)(1133322103∆βααααP n j j jS x x x x x x s ∈-++++=∑-=+其中)1,2,1(,0,)()(33-=⎪⎩⎪⎨⎧<≥-=-+n j x x x x x x x x jjj j .1 二次样条函数插值)2,()(2∆∈P S x s 中含有2+n 个待定常数,故应需要2+n 个插值条件,因此,二次样条插值问题可分为两类:问题(1):已知插值节点ix 和相应的函数值),,2,1,0(n i y i⋅⋅⋅=,以及端点0x (或n x )处的导数值0'y (或ny '),求)2,()(2∆∈PS x s 使得⎩⎨⎧'=''='⋅⋅⋅==))(()(),,2,1,0()(20022n n i i y x s y x s n i y x s 或(5.1)问题(2):已知插值节点ix 和相应的导数值),,2,1,0(n i y i⋅⋅⋅=',以及端点0x (或n x )处的函数值0y (或ny ),求)2,()(2∆∈P S x s 使得⎩⎨⎧==⋅⋅⋅='='))(()(),,2,1,0()(20022n n i i y x s y x s n i y x s 或(5.2)事实上,可以证明这两类插值问题都是唯一可解的.对于问题(1),由条件(5.1)⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧'=+='==-+++==++==++=∑-=00210211222102121211112020201002)(,,3,2,)(2121)(21)(21)(y x x s n j y x x x x x s yx x x s y x x x s j j i i j i jj j ααβααααααααα 引入记号T n ),,,,,(11210-=ββααα X 为未知向量,T nn y y y y ),,,,(10'= C 为已知向量, ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---=-0010)(21)(21211)(212110211211021212212222211200x x x x x x x x x x x x x x x n n n n n A 于是,问题转化为求方程组C AX =的解Tn ),,,,,(1121-=ββααα X 的问题,即可得到二次样条函数的)(2x s 的表达式.对于问题(2)的情况类似.2.三次样条函数插值由于)3,()(3∆∈P S x s 中含有3+n 个待定系数,故应需要3+n 个插值条件,因此可将三次样条插值问题分为三类: 问题(1):已知插值节点jx 和相应的函数值),,2,1,0(n j y j⋅⋅⋅=,以及两个端点0x ,n x 处的导数值0'y ,ny ',求)3,()(3∆∈PS x s 使满足条件⎪⎩⎪⎨⎧='='⋅⋅⋅==),0()(),,1,0()(33n j y x s n j y x s j j j j(5.3)问题(2):已知插值节点jx 和相应的函数值),,2,1,0(n j y j⋅⋅⋅=,以及两个端点0x ,nx 处的二阶导数值0y '',n y '',求)3,()(3∆∈PS x s 使满足条件⎪⎩⎪⎨⎧=''=''⋅⋅⋅==),0()(),,1,0()(33n j y x s n j y x s j j j j(5.4)问题(3):类似地,求)3,()(3∆∈PSx s 使满足条件⎪⎩⎪⎨⎧=+=-==)2,1,0)(0()0(),,1,0()(0)(3)(33k x s x s n j y x s k n k j j(5.5)这三类插值问题的条件都是3+n 个,可以证明其解都是唯一的〔8〕.一般的求解方法可以仿照二次样条的情况处理方法,在这里给出一种更简单的方法.仅依问题(1)为例,问题(2)和问题(3)的情况类似处理.由于在)3,()(3∆PS x s ∈区间],[b a 上是一个分段光滑,且具有二阶连续导数的三次多项式,则在子区间],[1+j jx x 上)(3x s ''是线性函数,记),,,1,0)((3n j x s d jj =''=为待定常数.由拉格朗日插值公式可得nj x x h h x x d h x x d x s j j j jj j jj j ,,1,0,,)(1113=-=-+-=''+++显然jjj h d dx s -='''+13)(在],[1+j jx x上为常数.于是在],[1+j j x x 上有31233)(6)(2))(()(j jjj j j j j j x x h d d x x d x x x s y x s --+-+-'+=+(5.6)则当1+=j x x 时,由(5.6)式和问题(1)的条件得121231362)()(+++=-++'+=j j jj j j j j j j y h d d h d h x s y x s故可解得)2(6)(113+++--='j j j jjj j d d h h y y x s(5.7)将(5.7)式代入(5.6)式得)1,,1,0](,[,)(6)(2)()2(6)(1312113-=∈--+-+-⎥⎥⎦⎤⎢⎢⎣⎡+--+=++++n j x x x x x h d d x x d x x d d h h y y y x s j j j jj j j jj j j j j j j j(5.8) 在],[1j j x x-上同样的有),,2,1](,[,)(6)(2)()2(6)(131112111111113n j x x x x x h d d x x d x x d d h h y y y x s j j j j j j j j j j j j j j j j =∈--+-+-⎥⎥⎦⎤⎢⎢⎣⎡+--+=------------(5.9) 根据)(3x s的一阶导数连续性,由(5.9)式得)()2(6)0(311113j j j j j j j j x s d d h h y y x s '=++-=-'---- 结合(5.7)式整理得⎪⎪⎭⎫ ⎝⎛---+=++++--+-+----11111111162j j j j j j j j j j j j j j j j j h y y h y y h h d h h h d d h h h 引入记号⎪⎪⎭⎫ ⎝⎛---+=+=--+--111116,j j j j j j j j j j j j j h y y h y y h h c h h h a ,111--+=-j j j j h h h a .则)1,,2,1(,2)1(11-==++-+-n j c d a d d a j j j j j j(5.10)再由边界条件:nny x s y x s '=''=')(,)(33得⎪⎪⎩⎪⎪⎨⎧⎪⎪⎭⎫ ⎝⎛--'=+⎪⎪⎭⎫ ⎝⎛'--=+----111100010106262n n n n n n n h y y y h d d y h y y h d d(5.11)联立(5.10),(5.11)式得方程组C D A =⋅(5.12)其中⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---=----2121212112112200n n n n a a a a a aA ,⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=-n n d d d d 110 D ,⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--'⎪⎪⎭⎫ ⎝⎛'--=----111110001066n n n n n n hy y y h c c y h y y h C 由方程组(6.12)可以唯一解出),,1,0(n j d j=,代入(5.8)式就可以得三次样条函数)(3x s 的表达式.B样条函数插值方法磨光函数实际中的许多问题,往往是既要求近似函数(曲线或曲面)有足够的光滑性,又要求与实际函数有相同的凹凸性,一般插值函数和样条函数都不具有这种性质.如果对于一个特殊函数进行磨光处理生成磨光函数(多项式),则用磨光函数构造出样条函数作为插值函数,既有足够的光滑性,而且也具有较好的保凹凸性,因此磨光函数在一维插值(曲线)和二维插值(曲面)问题中有着广泛的应用.由积分理论可知,对于可积函数通过积分会提高函数的光滑度,因此,我们可以利用积分方法对函数进行磨光处理.定义 若)(x f 为可积函数,对于0>h ,则称积分⎰+-=22,1)(1)(hx h x h dt t f h x f为)(x f 的一次磨光函数,h 称为磨光宽度.同样的,可以定义)(x f 的k 次磨光函数为)1()(1)(22,1,>=⎰+--k dt t f h x f hx h x h k h k事实上,磨光函数)(,x f h k 比)(x f 的光滑程度要高,且当磨光宽度h 很小时)(,x f h k 很接近于)(x f .等距B样条函数对于任意的函数)(x f ,定义其步长为1的中心差分算子δ如下:⎪⎭⎫ ⎝⎛--⎪⎭⎫ ⎝⎛+=2121)(x f x f x f δ在此取0)(+=x x f ,则002121+++⎪⎭⎫ ⎝⎛--⎪⎭⎫ ⎝⎛+=x x x δ是一个单位方波函数(如图5-1),记0)(+=Ωx x δ.并取1=h ,对)(0x Ω进行一次磨光得++++-+++-+++--+-+=-=⎥⎥⎦⎤⎢⎢⎣⎡⎪⎭⎫ ⎝⎛--⎪⎭⎫ ⎝⎛+==⎰⎰⎰⎰)1(2)1(2121)()(11212100212101x x x dt t dt t dt t t dt t x x xx x x x x x ΩΩ显然)(1x Ω是连续的(如图5-2).)(1x Ωo1-1/2 0 1/2 x -1 0 1 x 图5-1图5-2类似地可得到k 次磨光函数为kk j jk j k j k x k C x ++=+⎪⎭⎫ ⎝⎛-++-=Ω∑21!)1()(11 实际上,可以证明:)(x kΩ是分段k 次多项式,且具有1-k 阶连续导数,其k 阶导数有2+k个间断点,记为)1,,2,1,0(21+⋅⋅⋅=+-=k j k j x j.从而可知)(x kΩ是对应于分划+∞<<⋅⋅⋅<<<-∞∆+110:k x x x 的k 次多项式样条函数,称之为基本样条函数,简称为k 次B样条.由于样条节点为)1,,2,1,0(21+⋅⋅⋅=+-=k j k j xj是等距的,故)(x k Ω又称为k 次等距B样条函数.对于任意函数)(x f 的k 次磨光函数,由归纳法可以得到 [4,8] :⎪⎭⎫⎝⎛+≤≤--Ω=⎰∞+∞--22)()(1)(1,h x t h x dt t f htx h x f k h k 特别地,当1)(=x f 时,有1)(11⎰+∞∞--=-dt htx hk Ω,从而1)(⎰+∞∞-=dx x k Ω,且当k ≥1时有递推关系⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-Ω⎪⎭⎫ ⎝⎛---⎪⎭⎫ ⎝⎛+Ω⎪⎭⎫ ⎝⎛++=Ω--212121211)(11x x k x k x k x k k k一维等距B样条函数插值等距B样条函数与通常的样条如下的关系: 定理设有区间],[b a 的均匀分划nab h n j jh x x j -=⋅⋅⋅=+=),,,1,0(:0∆,则对任意 k 次样条函数),()(k S x S p k ∆∈都可以表示为B样条函数族1021-=-=⎭⎬⎫⎩⎨⎧⎪⎭⎫⎝⎛+---n j k j k k j h x x Ω的线性组合[14].根据定理 5.1,如果已知曲线上一组点()jjy x ,,其中),,1,0,0(0n j h jh x x j⋅⋅⋅=>+=,则可以构造出一条样条磨光曲线(即为B样条函数族的线性组合)⎪⎭⎫⎝⎛--=∑--=j h x x c x S n kj k j k 01)(Ω 其中)1,,1,(-⋅⋅⋅+--=n k k j c j为待定常数.用它来逼近曲线,既有较好的精度,又有良好的保凸性.实际中,最常用的是3=k 的情况,即一般形式为⎪⎭⎫ ⎝⎛--=∑+-=j h x x c x S n j j 01133)(Ω 其中3+n 个待定系数)1,,0,1(+⋅⋅⋅-=n j c j可以由三类插值条件确定.由插值条件(5.3)得()()()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧'=-'='==-='=-'='∑∑∑+-=+-=+-=n n j j n i n j j i n j j y j n c h x S ni y j i c x S y j c h x S 113311330113031)(,,1,0,)(1)(ΩΩΩ(5.13)注意到)(3x Ω的局部非零性及其函数值:61)1(,32)0(33=±=ΩΩ,当2≥x 时0)(3=x Ω;且由)21()21()(223--+='x x x ΩΩΩ知,21)1(,0)0(33=±'='ΩΩ,当2≥x 时0)(3='x Ω.则(5.13)中的每一个方程中只有三个非零系数,具体的为⎪⎩⎪⎨⎧'=+-==++'=+-+-+--n n n i i i i y h c c n i y c c c y h c c 2,,1,0,6421111011(5.14)由方程组(5.14)容易求解出)1,,0,1(+⋅⋅⋅-=n j c j,即可得到三次样条函数)(3x S 表达式.类似地,由插值条件(5.4)得待定系数的)1,,0,1(+⋅⋅⋅-=n j c j所满足的方程组为⎪⎩⎪⎨⎧''=+-==++''=+-+-+--nn n n i i i i y h c c c n i y c c c y h c c c 21111021012,,1,0,642(5.15)由插值条件(5.5)得待定系数的)1,,0,1(+⋅⋅⋅-=n j cj所满足的方程组为⎪⎪⎩⎪⎪⎨⎧==++=-+---=-++-=-+-+-+-+--+--+--ni y c c c c c c c c c c c c c c c c c c c i i i i n n n n n n n n ,,1,0,640)()(2)(0)(0)(0)()(4)(1111011111111011(5.16)方程组(5.15),(5.16)也都是容易求解的.注:上述等距B样条插值公式也适用于近似等距的情形,但在端点0x 和n x 处误差可能较大,实际应用时,为了提高在端点0x 和nx 处的精度,可以适当向左右延拓几个节点.二维等距B样条函数插值设有空间曲面),(y x f z =(未知),如果已知二维等距节点()()τj y ih x y x ji++=0,,)0,(>τh 上的值为),,2,1,0;,,2,1,0(m j n i z ij⋅⋅⋅=⋅⋅⋅=,则相应的B样条磨光曲面的一般形式为⎪⎭⎫ ⎝⎛--⎪⎭⎫⎝⎛--=∑∑--=--=j y y i h x x c y x s l m lj k ij n ki τΩΩ0011),( 其中),,2,1,0;,,2,1,0(m j n i c ij⋅⋅⋅=⋅⋅⋅=为待定常数,l k ,可以取不同值,常用的也是2,=l k 和3的情形.这是一种具有良好保凸性的光滑曲面(函数),在工程设计中是常用的,但只能使用于均匀分划或近似均匀分划的情况.(4) 最小二乘拟合方法最小二乘拟合方法的思想:由于一般插值问题并不总是可解的(即当插值条件多于待定系数的个数时,其问题无解),同时,问题的插值条件本身一般是近似的,为此,只要求在节点上近似地满足插值条件,并使它们的整体误差最小,这就是最小二乘拟合法.最小二乘拟合方法可以分为线性最小二乘拟合方法和非线性最小二乘拟合方法.线性最小二乘拟合方法设{}m k kx 0)(=φ是一个线性无关的函数系,则称线性组合∑==mk k k x a x 0)()(φφ为广义多项式.如三角多项式:∑∑==+=mk k mk kkx b kx ax 0sin cos )(φ.设由给定的一组测量数据),(iiy x 和一组正数),,2,1(n i w i⋅⋅⋅=,求一个广义多项式∑==mk k k x a x 0)()(φφ使得目标函数[]21)(∑=-=ni i i i y x w S φ(5.17)达到最小,则称函数)(x φ为数据),,2,1)(,(n i y x ii⋅⋅⋅=关于权系数),,2,1(n i w i⋅⋅⋅=的最小二乘拟合函数,由于)(x φ关于待定系数ia 是线性的,故此问题又称为线性最小二乘问题. 注意:这里{}m k kx 0)(=φ可根据实际来选择,权系数iw 的选取更是灵活多变的,有时可选取1=i w ,或nw i 1=,对于nw i1=,则相应问题称为均方差的极小化问题.最小二乘拟合函数的求解要使最小二乘问题的目标函数(5.17)达到最小,则由多元函数取得极值的必要条件得),,2,1,0(0m k a Sk==∂∂ 即),,2,1,0(0)()(10m k x y x a w i k ni i m k i k k i ⋅⋅⋅⋅==⎥⎦⎤⎢⎣⎡-∑∑==φφ 亦即),,2,1,0()()()(001m k x y w a x x w n i i k i i j mj n i i k i j i ⋅⋅⋅⋅==⎥⎦⎤⎢⎣⎡∑∑∑===φφφ(5.18)是未知量为ma a a a ,,,,21⋅⋅⋅的线性方程组,称(5.18)式为正规方程组.实际中可适当选择函数系{}m k kx 0)(=φ,由正规方程组解出ma a a a ,,,,210⋅⋅⋅,于是可得最小二乘拟合函数∑==mk kk x a x 0)()(φφ.一般线性最小二乘拟合方法将上面一元函数的最小二乘拟合问题推广到多元函数,即为多维线性最小二乘拟合问题.假设已知多元函数),,,(21nx x x f y ⋅⋅⋅=的一组测量数据);,,,(21iniiiy x x x ⋅⋅⋅),,2,1(m i ⋅⋅⋅=和一组线性无关的函数系{}N k nk x x x 021),,,(=⋅⋅⋅φ,求函数∑=⋅⋅⋅=⋅⋅⋅Nk n k k n x x x a x xx 02121),,,(),,,(φφ对于一组正数mw w w ,,,21⋅⋅⋅,使得目标函数[]2121),,,(∑=⋅⋅⋅-=mi ni i i i i x x x y w S φ达到最小.其中待定系数N a a a a,,,,210⋅⋅⋅由正规方程组),,2,1,0(),(),(0N k y a Nj k j k j⋅⋅⋅==∑=φφφ确定,此处ini i i k mi i k ni i i k mi ni i i j i k j y x x x w y x x x x x x w ),,,(),(),,,(),,,(),(21121121⋅⋅⋅=⋅⋅⋅⋅⋅⋅=∑∑==φφφφφφ注:上面的函数φ关于ia 都是线性的,这就是线性最小二乘拟合问题,对于这类问题的正规组总是容易求解的.如果φ关于ia 是非线性的,则相应的问题称为非线性最小二乘拟合问题.非线性最小二乘拟合方法假设已知多元函数),,,(21nx x x f y ⋅⋅⋅=的一组测量数据);,,,(21iniiiy x x x ⋅⋅⋅),,2,1(m i ⋅⋅⋅=,要求一个关于参数),,2,1,0(N j a j⋅⋅⋅=是非线性的函数),,,;,,,(1021Nn a a a x x x ⋅⋅⋅⋅⋅⋅=φφ对一组正数mw w w ,,,21⋅⋅⋅使得目标函数[]21102110),,,;,,,(),,,(∑=⋅⋅⋅⋅⋅⋅-=⋅⋅⋅mi N ni i i i i N a a a x x x y w a a a S φ达到最小,则称之为非线性最小二乘问题.这类问题属于无约束的最优化问题,一般问题的求解是很复杂的,通常情况下,可以采用共轭梯度法、最速下降法、拟牛顿法和变尺度法等方法求解.实例:黄河小浪底调水调沙问题问题的提出2004年6月至7月黄河进行了第三次调水调沙试验,特别是首次由小浪底、三门峡和万家寨三大水库联合调度,采用接力式防洪预泄放水,形成人造洪峰进行调沙试验获得成功.整个试验期为20多天,小浪底从6月19日开始预泄放水,直到7月13日恢复正常供水结束.小浪底水利工程按设计拦沙量为75.5亿立方米,在这之前,小浪底共积泥沙达14.15亿吨.这次调水调试验一个重要目的就是由小浪底上游的三门峡和万家寨水库泄洪,在小浪底形成人造洪峰,冲刷小浪底库区沉积的泥沙.在小浪底水库开闸泄洪以后,从6月27日开始三门峡水库和万家寨水库陆续开闸放水,人造洪峰于29日先后到达小浪底,7月3日达到最大流量2700立方米/每秒,使小浪底水库的排沙量也不断地增加.下面是由小浪底观测站从6月29日到7月10日检测到的试验数据:表5-1: 试验观测数据单位:水流为立方米/每秒,含沙量为公斤/立方米·84··85·注:以上数据主要是根据媒体公开报道的结果整理而成的,不一定与真实数据完全相符.现在,根据试验数据建立数学模型研究下面的问题:(1) 给出估算任意时刻的排沙量及总排沙量的方法;(2) 确定排沙量与水流量的变化关系.模型的建立与求解对于问题(1),根据所给问题的试验数据,要计算任意时刻的排沙量,就要确定出排沙量随时间变化的规律,可以通过插值来实现.考虑到实际中排沙量应该是随时间连续变化的,为了提高精度,我们采用三次B样条函数进行插值.下面构造三次B样条函数)(x S y =.由试验数据,时间是每天的早8点和晚8点,间隔都是12个小时,共24个点)24,,2,1(⋅⋅⋅=i t i.为了计算方便,令)23,,,1,0(122128⋅⋅⋅=+⎥⎦⎤⎢⎣⎡⋅+-=i i t x i i(5.19)则it 对应于)23,,1,0(1⋅⋅⋅=+=i i x i.于是以)23,,1,0(⋅⋅⋅=i x i为插值节点(等距),步长1=h .其相应的排沙量为)23,,1,0(⋅⋅⋅=i y i 对应关系如下表:·86·表5-2: 插值数据对应关系单位:排沙量为公斤函数)(x S y =所满足的条件为 (1)23,,1,0,)(⋅⋅⋅==i y x S ii;(2) 3500)(,56400)(2223222323231212-=--≈'='=--≈'='x x y y x S y x xy yx S y .取)(x S 的三次B样条函数一般形式为∑-=⎪⎭⎫⎝⎛--=24103)(j j j h x x c x S Ω·87·其中)24,,1,0,1(⋅⋅⋅-=j cj为待定常数,1=h .在这里⎪⎪⎪⎩⎪⎪⎪⎨⎧≥<<+-+-≤+-=Ω2,021,342611,3221)(23233x x x x x x x x x且易知⎪⎪⎪⎩⎪⎪⎪⎨⎧≥±===Ω2,01,610,32)(3x x x x和⎪⎪⎩⎪⎪⎨⎧≥±===Ω'2,01,210,0)(3x x x x 根据B样条函数的性质,)(x S ''在[]23,x x 上连续,则有()∑-=--'='='2413)(j jj xx c x S y Ω由插值条件(1),(2)可得到下列方程组()()()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧'=-'=''=-'='⋅⋅⋅==-=∑∑∑-=-=-=23241323024130241323)()(23,,1,0,)(y j c x S y j c x S i y j i c x S j j j j i j j i ΩΩΩ 即⎪⎩⎪⎨⎧'=+-'=+-⋅⋅⋅==++-+-23242311112223,,1,0,64y c c y c c i y c c c i i i i 将232324112,2y c c y c c '+='-=-代入前24个方程中的第一个和最后一个,便可得到方程组F AC =,其中·88·⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⋅⋅⋅⋅⋅⋅=⨯232102424,421410141014124c c c c C A ,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡'-'+=3400048000684000458400266626232322100 y y y y y y F显然A 为满秩阵,方程组F AC =一定有解,用消元法求解可得问题的解为56044.39830=c , 4117111.2031=c , 2159510.7882=c , 9189845.6433=c ,1203106.6364=c , 8239727.8115=c ,8249182.1166=c , 1263543.7217=c ,9287842.9988=c , 2302284.2839=c ,4317419.86810=c , 1304836.24311=c ,3307635.15912=c ,6305423.11913=c ,2270672.36214=c ,4240287.43115=c ,0154177.91216=c ,4103000.92017=c ,99818.406218=c , 43725.454719=c ,49279.775020=c ,32155.445221=c , 2098.444222=c ,7450.777923=c ,-450.777924311.2034,2232324011='+=='-=-y c c y c c . 将)24,,1,0,1(⋅⋅⋅-=j c j代入()∑-=--==24131)(j jj x c x S y Ω(5.20)即得排沙量的变化规律.由(5.19)和(5.20)式可得到第i 时间段(12小时为一段)内,任意时刻]12,0[∈t 的排沙量.则总的排沙量为()dt j t c dx x S Y j j⎰∑⎰-=--Ω==284824132411)(经计算可得1110844.1⨯=Y 吨,即从6月29日至7月10日小浪底水库排沙总量大约为1.844亿吨,此与媒体报道的排沙量基本相符.对于问题(2),研究排沙量与水量的关系,从试验数据可以看出,开始排沙量是随着水流量的增加而增长,而后是随着水流量的减少而减少.显然,变化规律并非是线性的关系,为此,我们问题分为两部分,从开始水流量增加到最大值2720立方米/每秒(即增长的过程)为一段,从水流量的最大值到结束为第二段,分别来研究水流量与排沙量的关系.具体数据如表5-3和5-4.表5-3: 第一阶段试验观测数据 单位:水流为立方米/每秒,含沙量为公斤/立方米表5-4: 第二阶段试验观测数据单位:水流为立方米/每秒,含沙量为公斤/立方米对于第一阶段,由表5-3用Matlab作图(如图5-3)可以看出其变化趋势,我们用多项式作最小二乘拟合.·90··91·图5-3设拟合函数为∑==mk kk x a x 1)(φ确定待定常数),,1,0(m k ak=使得211111102])([∑∑∑===⎥⎦⎤⎢⎣⎡-=-=i i i m k k i k i i y x a y x S φ有最小值.于是可以得到正规方程组为m k x y a x mj i k i i j i j k i ,,1,0,0111111 ==⎪⎭⎫⎝⎛∑∑∑===+ 当3=m 时,即取三次多项式拟合,则3,2,1,0,1113111321112111110111==⎪⎭⎫⎝⎛+⎪⎭⎫ ⎝⎛+⎪⎭⎫ ⎝⎛+⎪⎭⎫ ⎝⎛∑∑∑∑∑==+=+=+=k x y a x a x a x a x i k i i i k i i k i i k i i k i求解可得73321108423.1,103172.1,3.1784,-2492.9318--⨯=⨯-===a a a a .于是可得拟合多项式为332213)(x a x a x a a x +++=φ,最小误差为847.72=S ,拟合效果如图所示.·92·图:三次拟合效果,带*号的为拟合曲线.类似地,当4=m 时,即取四次多项式拟合,则正规方程组为4,3,2,1,0111411143111321112111110111==⎪⎭⎫⎝⎛+⎪⎭⎫ ⎝⎛+⎪⎭⎫ ⎝⎛+⎪⎭⎫ ⎝⎛+⎪⎭⎫ ⎝⎛∑∑∑∑∑∑==+=+=+=+=k x y a x a x a x a x a x i ki i i k i i k i i k i i k i i k i求解可得104633210109312.1,1094.1,102626.7,12.0624,-7434.6557---⨯-=⨯=⨯-===a a a a a 于是可得拟合多项式为443322104)(x a x a x a x a a x ++++=φ,最小误差为102.66=S ,拟合效果如图5-5所示.图5-5:四次拟合效果,带*号的为拟合曲线.从上面的三次多项式拟合和四次多项拟合效果来看,差别不大.基本可以看出排沙量与水流量的关系.图5-6:第二段三·93··94· 次多项式拟合效果对于第二阶段,由表5-4可以类似地处理.我们用线性最小二乘法作三次和四多项式拟合.拟合效果如图5-6和5-7所示,最小误差分别为5.459=S 和1.236=S . 从拟合效果来看,显然四次多项式拟合要比三次多项式拟合好的多.图5-7:第二段四次多项式拟合效果。
插值法和曲线拟合的主要差异
插值法和曲线拟合的主要差异引言在数学和统计学中,插值法和曲线拟合是两种常用的数据处理方法。
它们在数据分析、模型构建和预测等领域发挥着重要作用。
本文将详细介绍插值法和曲线拟合的定义、原理、应用以及它们之间的主要差异。
插值法定义插值法是一种通过已知数据点之间的函数关系来推断未知数据点的方法。
它基于一个假设,即已知数据点之间存在一个连续且光滑的函数,并且通过这个函数可以准确地估计其他位置上的数值。
原理插值法通过对已知数据点进行插值操作,得到一个近似函数,然后使用这个函数来估计未知数据点的数值。
常见的插值方法有拉格朗日插值、牛顿插值和样条插值等。
应用插值法在各个领域都有广泛应用,如地图制作中根据少量已知地理坐标点推算其他位置上的坐标;传感器测量中根据离散采样点推断连续时间序列上未采样到的数据;图像处理中通过已知像素点推测其他位置上的像素值等。
主要特点•插值法可以精确地通过已知数据点估计未知数据点的数值,适用于需要高精度估计的场景。
•插值法对输入数据的要求较高,需要保证已知数据点之间存在连续且光滑的函数关系。
•插值法只能在已知数据点之间进行插值,无法对整个数据集进行全局拟合。
曲线拟合定义曲线拟合是一种通过选择合适的函数形式,并调整函数参数来使得函数与给定数据集最为接近的方法。
它不仅可以对已知数据进行拟合,还可以根据拟合结果进行预测和模型构建。
原理曲线拟合首先选择一个适当的函数形式,如多项式、指数函数、对数函数等。
然后使用最小二乘法或最大似然估计等方法来确定函数参数,使得函数与给定数据集之间的误差最小化。
应用曲线拟合广泛应用于各个领域,如经济学中根据历史数据构建经济模型进行预测;物理学中通过实验数据来验证理论模型;生物学中根据实验测量数据拟合生长曲线等。
主要特点•曲线拟合可以对整个数据集进行全局拟合,能够更好地描述数据的整体趋势。
•曲线拟合可以选择不同的函数形式和参数,灵活性较高。
•曲线拟合可能存在过拟合或欠拟合的问题,需要通过模型评估和调整来提高拟合效果。
《数值分析》第5章 曲线拟合与函数插值
例如用函数
y Aebx
(5.8)
去拟合一组给定的数据,其中 A和 b是待定参这数时. ,可以在 (5.8) 式两端取
对数,得
ln y ln A bx
记 y ln y,a ln A,则上式可写成 y a b. x这样,仍可用最小二乘法解出
和 a (从而b 也就确定了 和 A) ,于b 是得到拟合函数
区间 [a,b]上是存在的,但往往不知道其具体的解析表达式,只能通过观察、
测量或实验得到一些离散点上的函数值.
我们希望对这种理论上存在的函数用一个比较简单的表达式近似地给出整体 上的描述.
此外,有些函数虽然有明确的解析表达式,但却过于复杂而不便于进行理论 分析和数值计算,我们同样希望构造一个既能反映函数特性又便于计算的简 单函数,近似替代原来的函数.
图5-1 人口增长的线性模型
5.1.1 最小二乘问题
设人口 y 与年份 x之间的函数关系为
y a bx
(5.1)
其中 a和 b 是待定参数. 由图5-1可知, (xi , yi并) 不是严格地落在一条直线上,
因此,不论怎样选择 和 a,都b不可能使所有的数据点
(x均i ,满yi )足关系
式 (5.1) .
s0 10, s1 545, s2 29785, u0 18.09, u1 987.78
于是正规方程组为
10 545 a 18.09 545 29785 b 987.78
5.1.2 最小二乘拟合多项式
解得 a 0.570,4 b 0.02,27于是 A ea 1.76,90所求拟合函数为
21 91
441
a1
163
91 441 2275 a2 777
解得 a0 26.8,a1 14.08,57 a2 ,2因此所求拟合多项式为
曲线插值、拟合
根据被插值函数自变量个数,插值问题 分为一维插值、二维和多维插值;根据是 用分段直线、多项式或样条函数来作为插 值函数,插值问题又可分为线性插值、多 项式插值和样条插值。 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的平方和达到最小。
曲线插值和曲线拟合
y
(x , y )
0 0
y L2 x
(x , y )
1 1
(x , y )
2 2
y f x
0
Байду номын сангаас
x
0
14 图2-3
x
1
x
例:(1,2), (0,0), (2,1), (3,3)
( x 0)(x 2)(x 3) l0 ( x ) (1 0)(1 2)(1 3) ( x 1)(x 0)(x 3) l2 ( x) (2 1)(2 0)(2 3) ( x 1)(x 2)(x 3) l1 ( x) (0 1)(0 2)(0 3) ( x 1)(x 0)(x 2) l3 ( x) (3 1)(3 0)(3 2)
设
g ( x) a00 ( x) ann ( x)
则
g ( xi ) f ( xi ) a00 ( xi ) ann ( xi ) a00 ( x0 ) a11 ( x0 ) an n ( x0 ) f ( x0 ) a (x ) a (x ) a (x ) f (x ) 0 0 1 1 1 1 n n 1 1 a00 ( xn ) a11 ( xn ) an n ( xn ) f ( xn ) 所以 a }n 有解,当且仅当系数行列式不为0 { i i 0
1 ai ( xi x0 ) ( xi xi 1 )(xi xi 1 ) ( xi xn ) ( x x0 ) ( x xi 1 )( x xi 1 ) ( x xn ) li ( xi x0 ) ( xi xi 1 )( xi xi 1 ) ( xi xn )
插值和拟合
插值和拟合都是函数逼近或者数值逼近的重要组成部分他们的共同点都是通过已知一些离散点集M上的约束,求取一个定义在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律的目的,即通过"窥几斑"来达到"知全豹"。
简单的讲,所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1, λ2,…,λ3), 使得该函数与已知点集的差别(最小二乘意义)最小。
如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。
表达式也可以是分段函数,这种情况下叫作样条拟合。
而插值是指已知某函数的在若干离散点上的函数值或者导数信息,通过求解该函数中待定形式的插值函数以及待定系数,使得该函数在给定离散点上满足约束。
插值函数又叫作基函数,如果该基函数定义在整个定义域上,叫作全域基,否则叫作分域基。
如果约束条件中只有函数值的约束,叫作Lagrange插值,否则叫作Hermite插值。
从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。
一、概念的引入1. 插值与拟合在现实生活中的应用l 机械制造:汽车外观设计l 采样数据的重新建构:电脑游戏中场景的显示,地质勘探,医学领域(CT)2.概念的定义l 插值:基于[a,b]区间上的n个互异点,给定函数f(x),寻找某个函数去逼近f(x)。
若要求φ(x)在xi处与f(xi)相等,这类的函数逼近问题称为插值问题,xi即是插值点l 逼近:当取值点过多时,构造通过所有点的难度非常大。
此时选择一个次数较低的函数最佳逼近这些点,一般采用最小二乘法l 光顾:曲线的拐点不能太多,条件:①二阶几何连续②不存在多余拐点③曲率变化较小l 拟合:曲线设计过程中用插值或通过逼近方法是生成的曲线光滑(切变量连续)光顾二、插值理论设函数y=f(x)在区间[a,b]上连续,在[a,b]上有互异点x0,x1,…,xn处取值y 0,y1,…,yn。
插值法与曲线拟合
故用线性插值求得的近似值为
y
(x , y ) 00
y L2x
(x , y ) 11
y f x
(x , y ) 22
0
x0
x1
x
图2-3
11515 100
121 121
11*115 100 121 100
10.714
15
仿上,用抛物插值公式(2.7)所求得的近似值为
例1 已知 100 10, 121 11, 144 12分别用线性插值和抛物插值
求 115 的值。
14
解 因为115在100和121之间,故取节点x0=100,x1=121相应地有
y0=10,y1=11,于是,由线性插值公式(2.5)可得
L1
(x)
10
*
x 121 100 121
11*
x 100 121 100
为插值多项式Pn (x) 的余项。
17
关于误差有如下定理2中的估计式。
定理2 设 f (x) 在区间 a,b
上有直到n+1阶导数,x0, x1,, xn
为区间 a,b 上n+1个互异的节点, Pn (x) 为满足条件:
Pn (xi ) f (xi )(i 0,1,, n)
(2.9)
的n次插值多项式,则对于任何 x a,b ,有
的n次插值多项式(2.2),这样,由(2.2)式可以求出n+1个n次插 插多项式 l0 (x), l1(x),,ln (x) 。容易看出,这组多项式仅与节点的取
法有关,称它们为在n+1个节点上的n次基本插值多项式或n次插值
基函数。
11
2.2 拉格朗日插值多项式
利用插值基函数立即可以写出满足插值条件(1.3)的n次插值
三次样条插值和曲线拟合–LonelyNights
三次样条插值和曲线拟合–LonelyNights很多东西不在手上用着就容易忘,尤其是书本知识。
就弄这么个类别,叫作“书到用时方恨少”,来记录这些知识。
曲线拟合是一个“数值计算“中的一个基本内容。
在实际的项目中,使用拟合的目的就是从有限个点得到一条平滑曲线。
曲线本身也是由点构成的,所以如何从有限个点得到曲线上的其它点,就是插值所关注的内容。
插值的方法有很多,把这些个点逐个用直线段连起来也是一种插值。
样条插值是一种工业设计中常用的、得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种。
Google 三次样条插值可以看得到不少材料,这里就不罗列公式了,直接看看在代码里,我们怎么做。
首先我们需要各个点的坐标,以x,y表示。
const int len =[_points count];float x[len];float y[len];for(int i =0; i < len; i++){CGPoint p =[[_points objectAtIndex:i] CGPointValue];x[i]= p.x;y[i]= p.y;}取变量x,y从算法中可以得知,我们的目标是样条插值函数,这是一个分段函数,x最高次数为三次,在各个点二次连续可导以保证最终函数曲线的光滑性。
我们每两个点求一个三次函数,我们有n个点,那么这里就需要4(n-1)个方程。
目前我们有n个点的坐标,有n-2个连接点,有n个函数两次连续可导,这里有n+n-2+2*(n-2)共4n-6个方程,还差两个条件。
这里一般有三种处理方法,最方便的,也是我们这里使用的是自然三次样条,也就是在首尾两个点上二次导为0。
具体计算不在此列举了,根据算法构建一个方程组求一组中间值sx,左边是一个三对角矩阵。
float h[len];float u[len];float lam[len];for(int i =0; i < len-1; i++){h[i]= x[i+1]- x[i];}u[0]=0;lam[0]=1;for(int i =1; i <(len -1); i++){u[i]= h[i-1]/(h[i]+ h[i-1]);lam[i]= h[i]/(h[i]+ h[i-1]);}float a[len];float b[len];float c[len];float m[len][len];for(int i =0; i < len; i++){for(int j =0; j < len; j++){m[i][j]=0;}if(i ==0){m[i][0]=2;m[i][1]=1;b[0]=2;c[0]=1;}else if(i ==(len -1)) {m[i][len -2]=1;m[i][len -1]=2;a[len-1]=1;b[len-1]=2;}else{m[i][i-1]= lam[i];m[i][i]=2;m[i][i+1]= u[i];a[i]= lam[i];b[i]=2;c[i]= u[i];}}求三对角矩阵,自下而上对角线上的参数是a,b,c当然需要得到方程组右边的值float g[len];g[0]=3*(y[1]- y[0])/h[0];g[len-1]=3*(y[len -1]- y[len -2])/h[len -2];for(int i =1; i < len -1; i++){g[i]=3*((lam[i]*(y[i]-y[i-1])/h[i-1])+u[i]*(y[i+1]-y[i])/h[i]);}下面就是求解这个方程组了,对于三对角矩阵,使用追赶法//< Solve the Equationsfloat p[len];float q[len];p[0]= b[0];for(int i =0; i < len -1; i++){q[i]= c[i]/p[i];}for(int i =1; i < len; i++){p[i]= b[i]- a[i]*q[i-1];}float su[len];float sq[len];float sx[len];su[0]= c[0]/b[0];sq[0]= g[0]/b[0];for(int i =1; i < len -1; i++){su[i]= c[i]/(b[i]- su[i-1]*a[i]);}for(int i =1; i < len; i++){sq[i]=(g[i]- sq[i-1]*a[i])/(b[i]- su[i-1]*a[i]);}sx[len-1]= sq[len-1];for(int i = len -2; i >=0; i--){sx[i]= sq[i]- su[i]*sx[i+1];}求得了参数,现在就得到分段插值函数了。
第8讲 excel 插值与拟合
常用插值方法
一维插值-一个自变量
线性插值、一次插值 非线性插值
二次插值 三次插值 三次样条插值
二维插值-两个自变量
1.1.1 线性插值
已知数据点x0,y0,x1,y1(x0<x1),求 在x处(x0<x<x1)相应的y值。 y1 解法:由x0,y0,x1,y1构造直线方程:
0.2 0.6 0.8
p
0.4
0.495
由表1-2的数据观测可得,DME 的饱和蒸气压和温度有正相关关系, 0.0 -30 -20 -10 0 10 20 30 40 如果以函数p=a+bt来拟合,则拟合函 t 数是一条直线。通过计算均方误差Q ( a , b )最小值而确定直线方程。
Q(a, b) ( p(ti ) pi ) (a bti pi ) 2
i 1 m
y
m
i
x
i 1 m i 1 2 i
m
i
m
x
i 1 m i 1
m
i
2 x i m
xi
i 1 m i 1
m
2 x i m m
( yi x xi xi yi ) /(m x ( xi ) 2 )
i 1 i 1 2 i i 1
b (m xi yi xi yi ) (m x ( xi ) 2 )
0.6
0.4 y=0.24845+0.00957 x+0.00015 x2 0.2
0.0 -30 -20 -10 0 10 20 30 40 50
温度 , t(℃ )
图1-4 DME饱和蒸气压和温度之间的 二次拟合
Matlab数学建模学习笔记——插值与拟合
Matlab数学建模学习笔记——插值与拟合⽬录插值与拟合插值和拟合的区别图⽚取⾃知乎⽤户yang元祐的回答插值:函数⼀定经过原始数据点。
假设f(x)在某区间[a,b]上⼀系列点上的值y_i=f(x_i),i=0,1,\dots,n。
插值就是⽤较简单、满⾜⼀定条件的函数\varphi(x)去代替f(x)。
插值函数满⾜条件\varphi(x_i)=y_i,i=0,1,\dots,n拟合:⽤⼀个函数去近似原函数,不要求过已知数据点,只要求在某种意义下它在这些点上的总偏差最⼩。
插值⽅法分段线段插值分线段插值就是将每两个相邻的节点⽤直线连起来,如此形成的⼀条折线就是就是分段线性插值函数,记作I_n(x),它满⾜I_n(x_i)=y_i,且I_n(x)在每个⼩区间[x_i,x_{i+1}]上是线性函数(i=0,1\dots,n-1)。
I_n(x)可以表⽰为I_n(x)=\sum_{i=0}^n y_il_i(x),其中l_i(x)= \begin{cases} \frac{x-x_{i-1}}{x_i-x_{i-1}},&x\in [x_{i-1},x_i],i \neq 0,\\ \frac{x-x_{i+1}}{x_i-x_{i+1}},&x\in [x_i,x_{i+1}],i \neq n,\\ 0,&其他 \end{cases}I_n(x)有良好的收敛性,即对x\in [a,b],有\lim _{n \rightarrow \infin}I_n(x)=f(x)⽤I_n(x)计算x点的插值的时候,只⽤到x左右的两个点,计算量与节点个数n⽆关。
但是n越⼤,分段越多,插值误差越⼩。
拉格朗⽇插值多项式朗格朗⽇(Lagrange)插值的基函数为\begin{aligned} l_i(x)&=\frac{(x-x_0)\cdots(x-x_{i-1})(x-x_{i+1})\cdots(x-x_n)}{(x_i-x_0)\cdots(x_i-x_{i-1})(x_i-x_{i+1})\cdots(x_i-x_n)}\\ &= \prod_{j=0\\j\neq i}^{n} \frac{x-x_j}{x_i -x_j},i=0,1,\cdots,n。
python曲线拟合与插值
python曲线拟合与插值在Python中,曲线拟合和插值可以通过多种方法实现,包括但不限于SciPy、NumPy、Pandas等库。
以下是一个使用SciPy库进行曲线拟合和插值的简单示例:```pythonimport numpy as npfrom scipy.interpolate import make_interp_spline, BSplineimport matplotlib.pyplot as plt#创建一些示例数据x=np.linspace(0,10,100)y=np.sin(x)+np.random.normal(0,0.1,100)#添加一些噪声#使用插值创建新的x值new_x=np.linspace(0,10,1000)#使用SciPy的make_interp_spline函数创建插值函数spl=make_interp_spline(x,y)#使用插值函数计算新的y值new_y=spl(new_x)#绘制原始数据和拟合曲线plt.figure(figsize=(8,6))plt.scatter(x,y,label='原始数据',color='blue',s=50)plt.plot(new_x,new_y,label='拟合曲线',color='red') plt.legend()plt.show()```在上述代码中,我们首先创建了一些示例数据,包括一组x值和对应的y值(这里我们使用了sin函数和一些随机噪声)。
然后,我们使用`make_interp_spline`函数创建了一个插值函数,该函数可以根据给定的x和y值生成新的y值。
最后,我们绘制了原始数据点和拟合曲线。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的模型和算法。
例如,如果你需要拟合的曲线是二次方或其他非线性函数,那么可能需要使用其他方法,如SciPy的curve_fit函数。
工程数值分析实验报告(3篇)
第1篇一、实验目的本次实验旨在通过数值分析的方法,对工程实际问题进行建模、求解和分析。
通过学习数值方法的基本原理和算法,提高解决实际工程问题的能力。
二、实验内容1. 线性方程组的求解2. 矩阵特征值与特征向量的计算3. 函数插值与曲线拟合4. 数值微分与积分三、实验步骤1. 线性方程组的求解(1)编写程序实现高斯消元法、克劳斯消元法和列主元素法(2)设计输入界面,用户输入增广矩阵的行和列,填写系数及常数项(3)分别运用三种方法求解线性方程组,比较求解结果的正确性、数值稳定性和计算效率2. 矩阵特征值与特征向量的计算(1)编写程序实现幂法、QR算法和逆幂法(2)设计输入界面,用户输入矩阵的行和列,填写矩阵元素(3)分别运用三种方法计算矩阵的特征值与特征向量,比较求解结果的准确性和计算效率3. 函数插值与曲线拟合(1)编写程序实现拉格朗日插值、牛顿插值和样条插值(2)设计输入界面,用户输入函数的自变量和函数值,选择插值方法(3)分别运用三种方法进行函数插值,比较插值结果的准确性和光滑性4. 数值微分与积分(1)编写程序实现有限差分法、龙格-库塔法和辛普森法(2)设计输入界面,用户输入函数的导数或积分的上下限,选择数值方法(3)分别运用三种方法进行数值微分和积分,比较求解结果的准确性和计算效率四、实验结果与分析1. 线性方程组的求解通过实验,我们发现列主元素法在求解线性方程组时具有较好的数值稳定性,计算效率也较高。
而高斯消元法和克劳斯消元法在处理大型稀疏矩阵时存在一定的困难。
2. 矩阵特征值与特征向量的计算实验结果表明,QR算法和逆幂法在计算矩阵特征值与特征向量时具有较高的准确性和计算效率。
幂法在处理大型稀疏矩阵时表现出较好的性能。
3. 函数插值与曲线拟合在函数插值和曲线拟合实验中,样条插值方法具有较好的准确性和光滑性。
拉格朗日插值和牛顿插值方法在处理简单函数时表现良好,但在处理复杂函数时可能存在精度问题。
曲线的插值与拟合matlab
在数学和统计学领域中,曲线的插值与拟合是一项重要的技术,它在数据分析、图像处理、工程计算等领域都有着广泛的应用。
曲线的插值与拟合可以帮助我们从有限的数据点中还原出连续的曲线,以便更好地理解数据的规律和特性。
1. 插值与拟合的概念在开始深入探讨曲线的插值与拟合之前,让我们先来了解一下这两个概念的含义。
插值是指通过已知数据点之间的连续函数,以得到介于已知数据点之间的数据点的值。
而拟合则是指通过已知数据点,找到拟合曲线以最好地逼近这些数据点。
2. 曲线插值的方法在实际操作中,我们可以使用不同的方法进行曲线的插值。
常见的方法包括线性插值、多项式插值、样条插值等。
在Matlab中,有丰富的函数库可以用来进行不同类型的曲线插值,例如interp1, interp2, interpn等,这些函数可以很方便地实现曲线的插值操作。
(1)线性插值线性插值是一种简单直接的插值方法,它通过已知的两个数据点之间的直线来逼近新的数据点。
虽然线性插值操作简单,但在一些情况下并不能很好地逼近数据的真实规律。
(2)多项式插值多项式插值是一种常用的插值方法,它通过已知数据点构造一个多项式函数来逼近数据。
在Matlab中,可以使用polyfit和polyval函数来实现多项式插值操作,通过调整多项式的阶数可以得到不同精度的逼近结果。
(3)样条插值样条插值是一种更加复杂但精确度更高的插值方法,它通过已知的数据点构造出一系列的局部插值函数来逼近数据。
在Matlab中,可以使用spline函数来进行样条插值操作,通过调整插值节点的数量和类型可以得到不同精度的逼近结果。
3. 曲线拟合的方法除了插值方法之外,曲线的拟合也是一种常用的数据处理方法。
在实际操作中,我们可以使用不同的方法来进行曲线的拟合。
常见的方法包括最小二乘法拟合、多项式拟合、非线性拟合等。
在Matlab中,有丰富的函数库可以用来进行不同类型的曲线拟合,例如polyfit, lsqcurvefit, nlinfit等,这些函数可以很方便地实现曲线拟合操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n
| x - xi
i=0
|
作为误差估计上限。
当 f(x) 为任一个次数 n 的多项式时, f (n1)( x) 0,
可知 Rn ( x) 0 ,即插值多项式对于次数 n 的多项式 是精确的。
Quiz: 给定 xi = i +1, i = 0, 1, 2, 3, 4, 5. 下面哪个是 l2(x)的图像?
最常用的插值函数是多…项? 式。
(x) f(x)
x0
x1
x2
x
x3
x4
4.1 拉格朗日插值 /* Lagrange Interpolation */
求 n 次多项式 Pn ( x) = a0 a1 x an xn 使得
Pn ( xi ) = yi , i = 0, ... , n
条件:无重合节点,即 i j xi x j
xi
)
推广:若 ( x0 ) = ( x1 ) = ( x2 ) = 0
0 ( x0 , x1 ), 1 i (=0x1 , x2 )
(x)有 n使+2得个不(同0 )的= 根(x10)…= 0xn x (0 ,1(n)使1) (得x ) =0(, )=x 0 (a, b)
f (n1) ( x ) - L(nn1)((xx)0-) F= ( x )=(n( x1)n!) == R0n(n1) ( x ) - F ( x) (n 1) ! 存在 (a, b) 使得 (n) ( ) = 0
反证:若不唯一,则除了Ln(x) 外还有另一 n 阶多项 式 Pn(x) 满足 Pn(xi) = yi 。 考察 Qn( x) = Pn( x) - Ln( x) , 则 Qn 的阶数 n 而 Qn 有 n + 1 个不同的根 x0 … xn
注:若不将多项式次数限制为 n ,则插值多项式不唯一。
n
例如 P( x) = Ln ( x) p( x) ( x - xi ) 也是一个插值 i=0
多项式,其中 p( x)可以是任意多项式。
4.1 Lagrange Interpolation
➢ 插值余项 /* Remainder */
设节点 a x0 x1 xn b ,且 f 满足条件 f C n[a,b] , f (n1)在[a , b]内存在, 考察截断误差 Rn( x) = f ( x) - Ln( x)
第4章 函数插值与曲线拟合
/* Interpolation and Approximation Theory */
当精确函数 y = f(x) 非常复杂或未知时,在一 系列节点 x0 … xn 处测得函数值 y0 = f(x0), … yn = f(xn),由此构造一个简单易算的近似函
数 (x) f(x),满足条件(xi) = f(xi) (i = 0, … n)。这里的 (x) 称为f(x) 的插值函数。
=
yi
。
i=0
每个与li节有点n 个有根关,x0而…与xi
li (x) = Ci (x - x0)...(x - xi
f …无x关n )...(x - xn
)
=
CiPLj no ali (ygxnr-oamnxgj i)eal
li (xi ) = 1
Ci
=
ji
( xi
1 - xj)
j=0
li ( x) =
P1 ( x)
=
y0
y1 x1
-
y0 x0
(x
-
x0 )
= x - x1 x0 - x1
y0 +
x - x0 x1 - x0
1
y1 = i=0 li ( x) yi
l0(x)
l1(x)
4.1 Lagrange Interpolation
The mathematician S. had to move to a new place. His wife didn't trust him very much, so when they stood down on the street with all their things, she asked him to watch their ten trunks, while she got a taxi. Some minutes later she returned. Said the husband: "I thought you said there were ten trunks, but I've only counted to nine!"
The wife said: "No, they're TEN!" "But I have counted them: 0, 1, 2, ..."
n1 li(x)
希望找到li(x),i = 0, …, n 使得 li(xj)=ij ;然后令
n
Pn ( x ) =
li ( x )
y i
,则显然有Pn(xi)
F(x) =
f (n1) ( x )
(n 1) !
ห้องสมุดไป่ตู้
Rn( x) =
f (n1) ( x ) (n 1) !
n
(x - xi )
i=0
4.1 Lagrange Interpolation
注: 通常不能确定 x , 而是估计 f (n1)( x) , Mn1 x(a,b)
将
M n1 (n 1)!
n
RRno(lxl)e’至s T少h有eornem+1:个若根( x) 充分Rn光(x)滑= ,F(x() xi=00)(=x - (xxi )1 ) = 0 ,则
任存意在固注定意 (这xx0里, xxi是1 )(i对使= 0得t, 求…,导(n),)
=考0察。
(t)
=
Rn
(t
)
-
F
(
x)
n
(t
-
n= 1
已称知为x拉0 氏, x基1 ;函y0数, y1/*,La求graPn1g(exB) =asais0 */,a1 x 使得
P满1( 足x0 )条= 件y0 l,i(Px1j)(=x1 )ij=/*yK1 ronecker Delta */
可见 P1(x) 是过 ( x0 , y0 ) 和 ( x1, y1 ) 两点的直线。
n ji
(x- xj) (xi - x j )
j=0
n
Ln ( x) = li ( x) yi i=0
4.1 Lagrange Interpolation
定理 (唯一性) 满足 P( xi ) = yi , i = 0, ... , n 的 n 阶插值多
项式是唯一存在的。 证明: (利用Vandermonde 行列式论证)