数学建模 插值与拟合

在实际问题中,1个函数 y = f ( x ) y=f(x) y=f(x)往往是通过实验观测得到的,仅已知 f ( x ) f(x) f(x)在某区间 [ a , b ] [a,b] [a,b]上一系列点处的值 y i = f ( x i )   ( i = 0 , 1... n ) y_i=f(x_i)\,(i=0,1...n) yi=f(xi)(i=0,1...n)当需要这些点间某点 x x x处的函数值时,常用较简单的,满足一定条件的函数 φ ( x ) φ(x) φ(x)来近似替代 f ( x ) f(x) f(x).插值法是1种常用方法,其得到的插值函数 φ ( x ) φ(x) φ(x)满足 φ ( x i ) = y i   ( i = 1 , 2... n ) φ(x_i)=y_i\,(i=1,2...n) φ(xi)=yi(i=1,2...n)拟合是另1种常用方法,但不要求过所有已知点,而只要求在某种意义下总偏差最小

一.插值方法
1.插值的概念:

已知在平面上的1组离散点,求1条能将所有这些点按次序连接起来的曲线(及函数),这样的过程就称为插值.得到的函数称为插值函数.通过插值函数计算得到的 x x x点处的函数值也称为 x x x插值.现在假设已知 n + 1 n+1 n+1个点 ( x i , y i )   ( i = 0 , 1... n ) (x_i,y_i)\,(i=0,1...n) (xi,yi)(i=0,1...n),下面求各种插值函数

2.分段线性插值:

将每2个相邻的节点用直线连起来,从而形成1条折线,这样的过程就称为分段线性插值.得到的函数称为分段线性插值函数,记为 I n ( x ) I_n(x) In(x),满足 I n ( x i ) = y i I_n(x_i)=y_i In(xi)=yi且在每个小区间 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1]上都是线性函数. I n ( x ) I_n(x) In(x)可表示为 I n ( x ) = ∑ i = 0 n y i l i ( x ) I_n(x)=\displaystyle\sum_{i=0}^ny_il_i(x) In(x)=i=0nyili(x)其中基函数 l i ( x ) l_i(x) li(x) l i ( x ) = { x − x i − 1 x i − x i − 1   ,   x i − 1 ≤ x ≤ x i , i ≠ 0 x − x i + 1 x i − x i + 1   ,   x i ≤ x ≤ x i + 1 , i ≠ n 0   , 其 他 l_i(x)=\begin{cases}\frac{x-x_{i-1}}{x_i-x_{i-1}}\,,\,x_{i-1}≤x≤x_i,i≠0\\\frac{x-x_{i+1}}{x_i-x_{i+1}}\,,\,x_i≤x≤x_{i+1},i≠n\\0\,,其他\end{cases} li(x)=xixi1xxi1,xi1xxi,i=0xixi+1xxi+1,xixxi+1,i=n0, I n I_n In具有良好的收敛性,即对 ∀ x ∈ [ a , b ] ∀x∈[a,b] x[a,b],有 lim ⁡ n → ∞ I n ( x ) = f ( x ) \displaystyle\lim_{n\to\infty}{I_n(x)}=f(x) nlimIn(x)=f(x)使用 I n ( x ) I_n(x) In(x)计算 x x x点的插值时,只用的了 x x x左右的2个节点,计算量与节点个数 n n n无关.但 n n n越大,分段就越多,从而插值误差越小.通常用函数表作插值计算时,分段线性插值就足够了

3.拉格朗日插值:

拉格朗日插值的基函数为 l i ( x ) l_i(x) li(x) l i ( x ) = ( x − x 0 ) . . . ( x − x i − 1 ) ( x − x i + 1 ) . . . ( x − x n ) ( x i − x 0 ) . . . ( x i − x i − 1 ) ( x i − x i + 1 ) . . . ( x i − x n ) = ∏ j = 0 j ≠ i n x − x j x i − x j   ( i = 0 , 1... n )     l_i(x)=\frac{(x-x_0)...(x-x_{i-1})(x-x_{i+1})...(x-x_n)}{(x_i-x_0)...(x_i-x_{i-1})(x_i-x_{i+1})...(x_i-x_n)}\\=\displaystyle\prod_{\underset{j≠i}{j=0}}^n\frac{x-x_j}{x_i-x_j}\,(i=0,1...n)\qquad\qquad\quad\:\:\, li(x)=(xix0)...(xixi1)(xixi+1)...(xixn)(xx0)...(xxi1)(xxi+1)...(xxn)=j=ij=0nxixjxxj(i=0,1...n)可知 l i ( x ) l_i(x) li(x) n n n次多项式,满足 l i ( x j ) = { 0   , j ≠ i 1   , j = i l_i(x_j)=\begin{cases}0\,,j≠i\\1\,,j=i\end{cases} li(xj)={0,j=i1,j=i从而拉格朗日插值函数 L n ( x ) L_n(x) Ln(x) L n ( x ) = ∑ i = 0 n y i l i ( x ) = ∑ i = 0 n y i ( ∏ j = 0 j ≠ i n x − x j x i − x j ) L_n(x)=\displaystyle\sum_{i=0}^ny_il_i(x)=\displaystyle\sum_{i=0}^ny_i(\displaystyle\prod_{\underset{j≠i}{j=0}}^n\frac{x-x_j}{x_i-x_j}) Ln(x)=i=0nyili(x)=i=0nyi(j=ij=0nxixjxxj)

4.样条插值

许多工程问题都对插值函数的光滑性有较高要求,需要曲线不仅要连续,而且要具有连续的曲率,这就导致了样条插值的诞生

(1)样条函数:

数学上将具有一定光滑性的分段多项式称为样条函数.具体来说,给定区间 [ a , b ] [a,b] [a,b]的1个划分 Δ : a = x 0 < x 1 < . . . < x n − 1 < x n = b Δ:a=x_0<x_1<...<x_{n-1}<x_n=b Δ:a=x0<x1<...<xn1<xn=b如果 S ( x ) S(x) S(x)满足:
①在每个小区间 [ x i , x i + 1 ]   ( i = 0 , 1... n − 1 ) [x_i,x_{i+1}]\,(i=0,1...n-1) [xi,xi+1](i=0,1...n1) S ( x ) S(x) S(x) m m m次多项式
S ( x ) S(x) S(x) [ a , b ] [a,b] [a,b]上具有 m − 1 m-1 m1阶连续导数
则称 S ( x ) S(x) S(x)为关于划分 Δ Δ Δ m m m样条函数,其图形为 m m m样条曲线.显然,折线是1次样条曲线

(2)样条插值:

利用样条函数进行插值,即取插值函数为样条函数,称为样条插值,例如分段线性插值是1次样条插值.以3次样条插值为例,已知 y = f ( x ) y=f(x) y=f(x) [ a , b ] [a,b] [a,b]上的 n + 1 n+1 n+1个节点 a = x 0 < x 1 < . . . < x n − 1 < x n = b a=x_0<x_1<...<x_{n-1}<x_n=b a=x0<x1<...<xn1<xn=b处的值 y i = f ( x i )   ( i = 0 , 1... n ) y_i=f(x_i)\,(i=0,1...n) yi=f(xi)(i=0,1...n).求 f ( x ) f(x) f(x)3次样条插值函数 S ( x ) S(x) S(x),满足
S ( x i ) = y i   ( i = 0 , 1... n ) ( 5.1 ) S(x_i)=y_i\,(i=0,1...n)\qquad(5.1) S(xi)=yi(i=0,1...n)(5.1)
②在每个小区间 [ x i , x i + 1 ]   ( i = 0 , 1... n − 1 ) [x_i,x_{i+1}]\,(i=0,1...n-1) [xi,xi+1](i=0,1...n1) S ( x ) S(x) S(x)是3次多项式,记为 S i ( x ) S_i(x) Si(x)
S ( x ) S(x) S(x) [ a , b ] [a,b] [a,b]上2阶连续可微
由条件②,不妨记 S ( x ) = { S i ( x ) , x ∈ [ x i , x i + 1 , i = 0 , 1... n − 1 ] } S i ( x ) = a i x 3 + b i x 2 + c i x + d i S(x)=\{S_i(x),x∈[x_i,x_{i+1},i=0,1...n-1]\}\\S_i(x)=a_ix^3+b_ix^2+c_ix+d_i S(x)={Si(x),x[xi,xi+1,i=0,1...n1]}Si(x)=aix3+bix2+cix+di其中 a i , b i , c i , d i a_i,b_i,c_i,d_i ai,bi,ci,di为待定系数,共 4 n 4n 4n个.由条件③,有 { S i ( x i + 1 ) = S i + 1 ( x i + 1 )   ( i = 0 , 1... n − 2 ) S i ′ ( x i + 1 ) S i + 1 ′ ( x i + 1 )   ( i = 0 , 1... n − 2 ) S i ′ ′ ( x i + 1 ) = S i + 1 ′ ′ ( x i + 1 )   ( i = 0 , 1... n − 2 ) ( 5.2 ) \begin{cases}S_i(x_{i+1})=S_{i+1}(x_{i+1})\,(i=0,1...n-2)\\S_i'(x_{i+1})S_{i+1}'(x_{i+1})\,(i=0,1...n-2)\\S_i''(x_{i+1})=S_{i+1}''(x_{i+1})\,(i=0,1...n-2)\end{cases}\qquad(5.2) Si(xi+1)=Si+1(xi+1)(i=0,1...n2)Si(xi+1)Si+1(xi+1)(i=0,1...n2)Si(xi+1)=Si+1(xi+1)(i=0,1...n2)(5.2) ( 5.1 ) , ( 5.2 ) (5.1),(5.2) (5.1),(5.2)式共包含 4 n − 2 4n-2 4n2个方程.为确定 S ( x ) S(x) S(x)的所有待定参数,还需要给出2个边界条件

(3)样条插值的边界条件:

常用的3次样条函数的边界条件有3种:
S ′ ( a ) = y 0 ′ , S ′ ( b ) = y n ′ S'(a)=y_0',S'(b)=y_n' S(a)=y0,S(b)=yn.由此建立的3次样条插值函数称为完备3次样条插值函数.特别地,若 y 0 ′ = y n ′ = 0 y_0'=y_n'=0 y0=yn=0,则样条曲线在端点处呈水平状态
若不知道 f ′ ( x ) f'(x) f(x),可要求 S ′ ( x ) , f ′ ( x ) S'(x),f'(x) S(x),f(x)在端点处近似相等.这时以 x 0 . . . x 3 x_0...x_3 x0...x3为节点作3次牛顿插值多项式 N a ( x ) N_a(x) Na(x),以 x n . . . x n − 3 x_n...x_{n-3} xn...xn3为节点作3次牛顿插值多项式 N b ( x ) N_b(x) Nb(x),要求 S ′ ( a ) = N a ′ ( a ) , S ′ ( b ) = N b ′ ( b ) S'(a)=N'_a(a),S'(b)=N'_b(b) S(a)=Na(a),S(b)=Nb(b)由此建立的3次样条插值函数称为拉格朗日3次样条插值函数
S ′ ′ ( a ) = y 0 ′ ′ , S ′ ′ ( b ) = y n ′ ′ S''(a)=y_0'',S''(b)=y_n'' S(a)=y0,S(b)=yn.特别地,当 y 0 ′ ′ = y n ′ ′ y_0''=y_n'' y0=yn时,称为自然边界条件
S ′ ( a + 0 ) = S ′ ( b − 0 ) , S ′ ′ ( a + 0 ) = S ′ ′ ( b − 0 ) S'(a+0)=S'(b-0),S''(a+0)=S''(b-0) S(a+0)=S(b0),S(a+0)=S(b0).此条件称为周期条件

二.拟合方法
1.概念:

曲线拟合是指已知1组(2维)数据,即平面上的 n n n个互不相同的点 ( x i , y i )   ( i = 1 , 2... n ) (x_i,y_i)\,(i=1,2...n) (xi,yi)(i=1,2...n),求1个函数(曲线) y = f ( x ) y=f(x) y=f(x),使 f ( x ) f(x) f(x)在某种准则下与所有数据点最为接近,即曲线拟合得最好

2.线性最小二乘法
(1)基本思路:

基本思路为,令 f ( x ) = ∑ i = 1 m a i r i ( x )   ( m < n ) ( 5.3 ) f(x)=\displaystyle\sum_{i=1}^ma_ir_i(x)\,(m<n)\qquad(5.3) f(x)=i=1mairi(x)(m<n)(5.3)其中 r i ( x ) r_i(x) ri(x)为预先选的的1组线性无关的函数, a i a_i ai为待定系数.拟合准则是使 y i y_i yi f ( x i ) f(x_i) f(xi)的距离 δ i δ_i δi的平方和最小,称为最小二乘准则

(2)系数的确定:

J ( a 1 . . . a m ) = ∑ i = 1 n δ i 2 = ∑ i = 1 n [ f ( x i ) − y i ] 2 ( 5.4 ) J(a_1...a_m)=\displaystyle\sum_{i=1}^nδ_i^2=\displaystyle\sum_{i=1}^n[f(x_i)-y_i]^2\qquad(5.4) J(a1...am)=i=1nδi2=i=1n[f(xi)yi]2(5.4)为求 a j a_j aj使 J J J最小,需要利用极值的必要条件 ∂ J ∂ a j = 0   ( j = 1 , 2... m ) \frac{\partial J}{\partial a_j}=0\,(j=1,2...m) ajJ=0(j=1,2...m),得到关于 a j a_j aj的线性方程组 ∑ i = 1 n r j ( x i ) [ ∑ k = 1 m a k r k ( x i ) − y i ] = 0 \displaystyle\sum_{i=1}^nr_j(x_i)[\displaystyle\sum_{k=1}^ma_kr_k(x_i)-y_i]=0 i=1nrj(xi)[k=1makrk(xi)yi]=0 ∑ k = 1 m a k [ ∑ i = 1 n r j ( x i ) r k ( x i ) ] = ∑ i = 1 n r j ( x i ) y i ( 5.5 ) \displaystyle\sum_{k=1}^ma_k[\displaystyle\sum_{i=1}^nr_j(x_i)r_k(x_i)]=\displaystyle\sum_{i=1}^nr_j(x_i)y_i\qquad(5.5) k=1mak[i=1nrj(xi)rk(xi)]=i=1nrj(xi)yi(5.5) R = [ r 1 ( x 1 ) . . . r m ( x 1 ) . . . . . . . . . r 1 ( x n ) . . . r m ( x n ) ] A = [ a 1 , a 2 . . . a m ] T Y = [ y 1 , y 2 . . . y n ] T R=\left[\begin{matrix}r_1(x_1)&...&r_m(x_1)\\...&...&...\\r_1(x_n)&...&r_m(x_n)\end{matrix}\right]\\A=[a_1,a_2...a_m]^T\\Y=[y_1,y_2...y_n]^T R=r1(x1)...r1(xn).........rm(x1)...rm(xn)A=[a1,a2...am]TY=[y1,y2...yn]T则方程组 ( 5.5 ) (5.5) (5.5)可表示为 R T R A = R T Y ( 5.6 ) R^TRA=R^TY\qquad(5.6) RTRA=RTY(5.6) { r j ( x ) , j = 1 , 2... m } \{r_j(x),j=1,2...m\} {rj(x),j=1,2...m}线性无关时, R R R列满秩, R T R R^TR RTR可逆,于是 ( 5.6 ) (5.6) (5.6)有唯一解 A = ( R T R ) − 1 R T Y A=(R^TR)^{-1}R^TY A=(RTR)1RTY

(2)基函数 r j ( x ) r_j(x) rj(x)的选取:

如果通过机理分析能够知道 x , y x,y x,y间的函数关系,则容易确定 r j ( x ) r_j(x) rj(x).若无法知道 x , y x,y x,y间的函数关系,则通常可将 ( x i , y i ) (x_i,y_i) (xi,yi)绘成图,直观地判定应用什么样的曲线去拟合;或者用几种曲线分别拟合,然后比较各自的 J J J.常用的曲线有:
①直线: y = a 1 x + a 2 y=a_1x+a_2 y=a1x+a2
②多项式: y = a 1 x m + . . . + a m x + a m + 1   ( y=a_1x^m+...+a_mx+a_{m+1}\,( y=a1xm+...+amx+am+1(通常 m = 2 , 3 m=2,3 m=2,3,不宜过高 ) ) )
③双曲线(单支): y = a 1 x + a 2 y=\frac{a_1}{x}+a_2 y=xa1+a2
④指数曲线: y = a 1 e a 2 x y=a_1e^{a_2x} y=a1ea2x
注意:对于指数曲线,拟合前需作变量代换,化为对 a 1 , a 2 a_1,a_2 a1,a2的线性函数

3.最小二乘优化:

在无约束最优化问题中,有一些重要的特殊情形,比如目标函数由若干个函数的平方和构成,写成 F ( x ) = ∑ i = 1 m f i 2 ( x )   ( x ∈ R ) F(x)=\displaystyle\sum_{i=1}^mf_i^2(x)\,(x∈R) F(x)=i=1mfi2(x)(xR)其中 x = [ x 1 , x 2 . . . x n ] T x=[x_1,x_2...x_n]^T x=[x1,x2...xn]T,一般假设 m ≥ n m≥n mn.把极小化这类问题 m i n    F ( x ) = ∑ i = 1 m f i 2 ( x ) min\,\:F(x)=\displaystyle\sum_{i=1}^mf_i^2(x) minF(x)=i=1mfi2(x)称为最小二乘优化问题

4.函数逼近
(1)概念:

如果已知1个较为复杂的连续函数 y ( x )   ( a ≤ x ≤ b ) y(x)\,(a≤x≤b) y(x)(axb),要求选择1个较简单的函数 f ( x ) f(x) f(x),在一定准则下最接近 y ( x ) y(x) y(x),这个过程就称为函数逼近

(2)最小平方逼近:

函数逼近常用的1种准则是最小平方逼近,即 m i n    J = ∫ a b [ f ( x ) − y ( x ) ] 2 d x ( 5.7 ) min\,\:J=\int_a^b[f(x)-y(x)]^2dx\qquad(5.7) minJ=ab[f(x)y(x)]2dx(5.7)与曲线拟合一样,选取1组函数 { r i ( x ) , i = 1 , 2... m } \{r_i(x),i=1,2...m\} {ri(x),i=1,2...m}来构造 f ( x ) f(x) f(x).即令 f ( x ) = ∑ i = 1 m a i r i ( x ) f(x)=\displaystyle\sum_{i=1}^ma_ir_i(x) f(x)=i=1mairi(x)带入 ( 5.7 ) (5.7) (5.7),求 a i a_i ai使 J J J达到最小.利用极值的必要条件可得 [ ( r 1 , r 1 ) . . . ( r 1 , r m ) . . . . . . . . . ( r m , r 1 ) . . . ( r m , r m ) ] [ a 1 . . . a m ] = [ ( y , r 1 ) . . . ( y , r m ) ] ( 5.8 ) \left[\begin{matrix}(r_1,r_1)&...&(r_1,r_m)\\...&...&...\\(r_m,r_1)&...&(r_m,r_m)\end{matrix}\right]\left[\begin{matrix}a_1\\...\\a_m\end{matrix}\right]=\left[\begin{matrix}(y,r_1)\\...\\(y,r_m)\end{matrix}\right]\qquad(5.8) (r1,r1)...(rm,r1).........(r1,rm)...(rm,rm)a1...am=(y,r1)...(y,rm)(5.8)这里 ( g , h ) = ∫ a b g ( x ) h ( x ) d x (g,h)=\int_a^bg(x)h(x)dx (g,h)=abg(x)h(x)dx当方程组 ( 5.8 ) (5.8) (5.8)的系数矩阵非奇异时,有唯一解

(3)使用多项式逼近:

最简单的方法是使用多项式进行逼近,即选取 r i ( x ) = x i − 1 r_i(x)=x^{i-1} ri(x)=xi1

如果能使 ∫ a b r i ( x ) r j ( x ) d x = 0   ( i ≠ j ) \int_a^br_i(x)r_j(x)dx=0\,(i≠j) abri(x)rj(x)dx=0(i=j),则方程组 ( 5.8 ) (5.8) (5.8)的系数矩阵将是对角矩阵,计算会被大大简化.满足这种性质的多项式称为正交多项式.例如勒让得多项式就是 [ − 1 , 1 ] [-1,1] [1,1]上的正交多项式,表达式为 P 0 ( x ) = 1 , P k ( x ) = 1 2 k k ! d k d x k ( x 2 − 1 ) k   ( k = 1 , 2... ) P_0(x)=1,P_k(x)=\frac{1}{2^kk!}\frac{d^k}{{dx}^k}(x^2-1)^k\,(k=1,2...) P0(x)=1,Pk(x)=2kk!1dxkdk(x21)k(k=1,2...)可以证明 ∫ − 1 1 P i ( x ) P j ( x ) d x = { 0   ( i ≠ j ) 2 2 i + 1   ( i = j ) P k + 1 ( x ) = 2 k + 1 k + 1 x P k ( x ) − k k + 1 P k − 1 ( x )   ( k = 1 , 2... ) \int_{-1}^1P_i(x)P_j(x)dx=\begin{cases}0\,(i≠j)\\\frac{2}{2i+1}\,(i=j)\end{cases}\\P_{k+1}(x)=\frac{2k+1}{k+1}xP_k(x)-\frac{k}{k+1}P_{k-1}(x)\,(k=1,2...) 11Pi(x)Pj(x)dx={0(i=j)2i+12(i=j)Pk+1(x)=k+12k+1xPk(x)k+1kPk1(x)(k=1,2...)常用的正交多项式还有第一类切比雪夫多项式,即 T n ( x ) = cos ⁡ ( n arccos ⁡ ( x ) )   ( − 1 ≤ x ≤ 1 , n = 0 , 1... ) T_n(x)=\cos{(n\arccos{(x)})}\,(-1≤x≤1,n=0,1...) Tn(x)=cos(narccos(x))(1x1,n=0,1...)拉盖尔多项式 L n ( x ) = e x d n d x n ( x n e − x )   ( x ≥ 0 , n = 0 , 1... ) L_n(x)=e^x\frac{d^n}{{dx}^n}(x^ne^{-x})\,(x≥0,n=0,1...) Ln(x)=exdxndn(xnex)(x0,n=0,1...)

5.实例(黄河小浪底调水调沙问题)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值