zoukankan      html  css  js  c++  java
  • 插值方法介绍

    1.插值多项式及存在唯一性

      在科学研究和生产实践活动中所遇到的大量函数,有相当一部分是通过观测或实验得到的,虽然其函数关系(y=f(x))在某个区间([a,b])上是存在的,但是却不知道具体的解析表达式,只能通过观测或实验得到一些离散点的函数值、导数值,因此希望对这样的函数用一个简单的解析表达式近视地给出整体上的描述。还有些函数,虽然有明确的解析表达式,但却由于解析表达式过于复杂而不便对其进行理论分析和数值计算,同时希望给出一个既能反映函数特性又适于数值计算的简单函数,来近似代替原来的函数。
      定义1:已知函数(y=f(x))在区间([a,b])(n+1)个不同点(aleq x_0 < x_1 < x_2 < cdots < x_n leq b)的函数值(f(x_0),f(x_1),cdots,f(x_n)),若存在一个简单函数(P(x)),使其经过(y=f(x))上的(n+1)个已知点((x_0,y_0),(x_1,y_1),cdots,(x_n,y_n))

    [P(x_i)=y_i=f(x_i), i=0,1,2,cdots,n (1) ]

    成立,则称(P(x))(f(x))插值函数,点(x_0,x_1,cdots,x_n)称为插值节点,包含插值节点的区间([a,b])称为插值区间,求插值函数(P(x))的方法称为插值方法。若(P(x))是次数不超过(n)的多项式,即

    [P_n(x) = a_0 + a_1 x + a_2 x^2 + cdots + a_n x^n (2) ]

    其中(a_i)是实数,则称(P(x))插值多项式,相应的插值方法称为多项式插值。若(P(x))为分段多项式,则称为分段插值。若(P(x))为三角多项式,则称为三角插值
      寻找满足(1)的插值函数(P(x))的方法很多。(P(x))既可以是代数多项式、三角多项式等有理函数,也可以是任意光滑或分段光滑函数。不同的插值函数(P(x)),逼近(f(x))的效果不同。寻找插值函数(P(x)),首先想到的是多项式函数,这是因为多项式函数不仅表达式简单,而且有很多很好的特性,如连续光滑、可微可积,另外由Weierstrass定理知,任意连续函数都可以用代数多项式作任意精度的逼近,同时,代数多项式还是其他各类插值的基础。
      定理1(插值多项式存在唯一性):设节点(x_0,x_1,cdots,x_n)互异,则在次数不超过(n)的多项式集合(H_n)中,满足条件(1)的插值多项式(P_n(x))存在且唯一。

    2. Lagrange插值

    2.1 Lagrange插值多项式

      求插值多项式(P_n(x)),可以通过求方程组(3)的解(a_0,a_1,cdots,a_n)得到,但这种算法计算量大,不便于实际应用。

    [left{ egin{aligned} a_0 + a_1 x_0 + cdots + a_n x_0^n & = y_0, \ a_0 + a_1 x_1 + cdots + a_n x_1^n & = y_1, \ vdots & (3) \ a_0 + a_1 x_n + cdots + a_n x_n^n & = y_n, end{aligned} ight. ]

      设(phi(c_1,c_1,cdots,c_n))是次数不超过(n)的多项式空间,构造(phi(c_1,c_1,cdots,c_n))的一组基函数(l_0(x),l_1(x),cdots,l_n(x)),使求插值多项式

    [L_n(x)=sum _{i=0}^{n} a_i l_i(x) (4) ]

    中的系数(a_i)变得更容易。
    (L_n(x))可写成

    [L_n(x) = (l_0(x),l_1(x),cdots,l_n(x))(a_0,a_1,cdots,a_n)^T (5) ]

    [L_n(x_i) = f(x_i), i=0,1,cdots,n. (6) ]

    [left[ egin{matrix} l_0(x_0) & l_1(x_0) & cdots & l_n(x_0) \ l_0(x_1) & l_1(x_1) & cdots & l_n(x_1) \ vdots & vdots & & vdots \ l_0(x_n) & l_1(x_n) & cdots & l_n(x_n) end{matrix} ight] left[ egin{matrix} a_0 \ a_1 \ vdots \ a_n end{matrix} ight] left[ egin{matrix} f(x_0) \ f(x_1) \ vdots \ f(x_n) end{matrix} ight] (7) ]

    若方程组(7)的系数矩阵为单位矩阵,则立即可得

    [a_i = f(x_i), i = 0,1,cdots,n. (8) ]

    要使方程组(7)的系数矩阵为单位矩阵,只需

    [l_i(x_j) = delta _{ij} = left { egin{aligned} 1, & & i = j, \ 0, & & i eq j, end{aligned} ight. i,j = 0,1,cdots,n. (9) ]

    于是在多项式空间(phi(c_1,c_1,cdots,c_n))内,寻求一组基函数(l_0(x),l_1(x),cdots,l_n(x)),使方程组(7)的系数矩阵为单位矩阵,就转化为构造满足条件(9)的基函数(l_i(x)),由于(l_i(x))(x=x_j(j=0,1,cdots,i-1,i+1,cdots,n))时的值为(0),故可令

    [l_i(x) = A(x-x_0)(x-x_1)cdots(x-x_{i-1})(x-x_{i+1})cdots(x-x_n) (10) ]

    其中(A)为待定常数。在式(10)中令(x=x_i),则可确定(A)

    [A = frac 1 {(x_i-x_0)(x_i-x_1)cdots(x_i-x_{i-1})(x_i-x_{i+1})cdots(x_i-x_n)} ]

    从而

    [egin{aligned} l_i(x) & = frac {(x-x_0)(x-x_1)cdots(x-x_{i-1})(x-x_{i+1})cdots(x-x_n)} {(x_i-x_0)(x_i-x_1)cdots(x_i-x_{i-1})(x_i-x_{i+1})cdots(x_i-x_n)} \ & = prod _{j=0, j eq i}^{n} frac {x-x_j}{x_i-x_j} (11) end{aligned} ]

    [omega_{n+1}(x) = prod _{i=0}^n (x-x_i) (12) ]

    [l_i(x) = frac {omega_{n+1}(x)}{(x-x_i)w'_{n+1}(x_i)} (13) ]

    于是可得满足条件(1)的(n)次插值多项式

    [L_n(x) = sum _{i=0}^n f(x_i)l_i(x) (14) ]

    (L_n(x))Lagrange插值多项式(l_i(x))Lagrange插值基函数

    2.2 线性插值与抛物线插值

      已知函数(y=f(x))在点(x_0,x_1)处的函数值分别为(y_0,y_1)。在式(14)中令(n=1),Lagrange插值多项式为

    [egin{aligned} L_1(x) & = f(x_0)l_0(x) + f(x_1)l_1(x) \ & = y_0 frac {x-x_1}{x_0-x_1} + y_1 frac {x-x_0}{x_1-x_0} \ & = y_0 + frac {y_1-y_0}{x_1-x_0}(x-x_0) end{aligned} (15) ]

    其中

    [l_0(x) = frac {x-x_1}{x_0-x_1}, l_1(x) = frac {x-x_0}{x_1-x_0} ]

    是经过两点((x_0,y_0),(x_1,y_1))的一条直线,因此这种方法通常称为线性插值
      已知函数(y=f(x))在点(x_0,x_1,x_2)处的函数值分别为(y_0,y_1,y_2)。在式(14)中令(n=2),Lagrange插值多项式为

    [egin{aligned} L_2(x) & = f(x_0)l_0(x) + f(x_1)l_1(x) + f(x_2)l_2(x) \ & = y_0 frac {(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)} + y_1 frac {(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)} + y_2 frac {(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} \ & = y_0 + frac {y_1-y_0}{x_1-x_0}(x-x_0) end{aligned} (16) ]

    其中

    [l_0(x) = frac {(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}, l_1(x) = frac {(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)}, l_2(x) = frac {(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} ]

    式(16)是二次函数,是经过((x_0,y_0),(x_1,y_1),(x_2,y_2))的抛物线,因此这种方法通常称为抛物线插值

    相关链接如下:

    知乎:littledy

    欢迎关注个人微信公众号:小邓杂谈,扫描下方二维码即可

    作者:littledy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    全方位深度剖析--性能测试之LoardRunner 介绍
    国外性能测试博客
    由我主讲的软件测试系列视频之性能测试系列视频讲座目录出炉了
    性能测试之系统监控工具nmon
    性能测试学习内容指南
    性能测试之操作系统计数器分析方法
    JAVA正则表达式:Pattern类与Matcher类详解
    (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
    border-collapse实现表格细线边框
    安卓造成内存泄露的几个原因
  • 原文地址:https://www.cnblogs.com/dysjtu1995/p/11114821.html
Copyright © 2011-2022 走看看