zoukankan      html  css  js  c++  java
  • Interpolation

    记笔记
    本文基本上不包含个人理解


    1

    Given (finR([a,b])) 以及它在 ({x_i}_{i=0}^nsubset[a,b]) 集合内各点处的值
    如果函数集合 (Phi) 中的函数 (phi(x)) satisfies (phi(x_i)=f(x_i),quad i=0,1,cdots,n)
    那么 (phi) 是函数集合 (Phi)(f) 的一个 interpolation

    这种简单的插值问题等价于确定系数 ({a_i}_{i=0}^n) 使得

    [left[ egin{array}{l} 1 & x_0 & x_0^2 & cdots & x_0^n \ 1 & x_1 & x_1^2 & cdots & x_1^n \ vdots &vdots &vdots &&vdots \ 1 & x_n & x_n^2 & cdots & x_n^n end{array} ight] left[ egin{array}{l} a_0\ a_1\ vdots\ a_n end{array} ight] = left[ egin{array}{l} f(x_0)\ f(x_1)\ vdots\ f(x_n) end{array} ight] ]

    可以知道,满足插值条件的不超过 (n) 次的插值多项式是唯一的
    同时有插值余项

    [R_n(x)=f(x)-phi(x)=dfrac{f^{(n+1)}(xi)}{(n+1)!}omega_{n+1}(x) ]

    式中

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


    2

    拉格朗日插值。

    [l_i(x)=dfrac{omega_{n+1}(x)}{(x-x_i){omega'}_{n+1}(x_i)} ]

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

    其中 (omega'_{n+1}(x_i)=prodlimits_{j=0\j e i}^{n}(x_i-x_j))
    有一道经典例题叫做证明拉格朗日基函数的和为一。
    有两种方法,第一种方式:因为拉格朗日基函数只与 (x) 有关,所以任意选一个简单的 (f) 就可以证明
    第二种方式:因为拉格朗日基函数的和是个不超过 (n) 次的多项式,并且在 (n+1) 个点处值为 (1) 所以是常函数

    反插值法:……。
    用的时候注意必须要满足单调性条件。


    3

    牛顿插值法:
    不难得知 (L_n(x)-L_{n-1}(x)=Aomega_n(x)) 其中 (A) 为常数,显然就是 (L_n(x)) 的首项系数
    所以 (A=sumlimits_{i=0}^ndfrac{f(x_i)}{{omega'}_{n+1}(x_i)}) 即差商 (f[x_0,x_1,cdots,x_n])

    [f[x_a,cdots,x_b]=dfrac{f[x_a,cdots,x_{b-1}]-f[x_{a+1},cdots,x_{b}]}{x_a-x_b} ]

    以及差分和牛顿向前插值公式,在此略过


    4

    带导数的插值问题,Hermite插值

    如果带完全导数,那么分别设 (alpha_i(x),quad beta_i(x)) 两个 (2n+1) 次多项式
    满足

    [left{ egin{array}{lcl} alpha_i(x_j)=delta_{ij}, \ alpha'_i(x_j)=0. end{array} ight.qquad j=0,1,2,cdots,n ]

    [left{ egin{array}{lcl} eta_i(x_j)=0, \ eta'_i(x_j)=delta_{ij}. end{array} ight.qquad j=0,1,2,cdots,n ]

    (H_{2n+1}(x)=sumlimits_{i=0}^nf(x_i)alpha_i(x)+sumlimits_{i=0}^nf'(x_i)eta_i(x))
    嗯,(alpha_i(x)=(A_ix+B_i){l_i}^2(x)=left[1+2(x_i-x)sumlimits_{k=0\k e i}^ndfrac{1}{x_i-x_k} ight]{l_i}^2(x))
    (eta_i(x)=(x-x_i){l_i}^2(x)) 。。
    可以证得满足带导数一共 (2n) 个插值条件的不超过 (2n+1) 次的多项式唯一。

    带不完全导数的
    例如

    [left{ egin{array}{l} H_3(x_i)=f(x_i),quad i=0,1,2\ {H'}_3(x_0)=f'(x_0). end{array} ight.]

    比较简单,如果只带一个的话可以直接设系数,求导解出
    或者直接用带重节点的差商表。表中 (f[x_r,x_r]) (比如说例题就是 (f[x_0,x_0]))替换成 (f'(x_r))


    5

    分段插值

    三次样条
    (MATLAB)conds — End conditions:
    'clamped' | 'complete' | 'not-a-knot' | 'periodic' | 'second' | 'variational'

    clamped=complete:已知转角(边界一阶导)
    second:已知弯矩(边界二阶导)
    variational:即natural,自然边界条件
    periodic:周期性边界条件(左右边界一阶导相等,二阶导相等)
    not-a-knot:it requires that the third derivative of the spline is continuous at (x_0) and (x_{n-1})

    求解过程:矩阵又大还多,不码了
    进行一个书的搬
    《数值分析原理》
    《数值分析原理》


    6

    B-Spline

    定义略

    [B_{j,m}(x)=frac{x_j-x_{j-m-1}}{x_{j-1}-x_{j-m-1}}B_{j-1,m-1}(x)-frac{x-x_{j}}{x_j-x_{j-m}}B_{j,m-1}(x) ]

    [B'_{j,m}(x)=mleft[dfrac{B_{j-1,m-1}(x)}{x_{j-1}-x_{j-m-1}}-dfrac{B_{j,m-1}(x)}{x_{j}-x_{j-m}} ight] ]

    [BC=F ]

    对于 (m=3) 即 cubic b-spline
    (C=[c_1,cdots,c_{n+3}]^{ m T})
    (F=[f'(x_0),f(x_0),f(x_1),cdots,f(x_n),f'(x_n)]^{ m T})
    (B=left[ egin{array}{l} b'_1(x_0)&b'_2(x_0)&b'_3(x_0)&0&cdots&0&0&0\ b_1(x_0)&b_2(x_0)&b_3(x_0)&0&cdots&0&0&0\ 0&b_2(x_1)&b_3(x_1)&b_4(x_1)&cdots&0&0&0\ 0&0&b_3(x_2)&b_4(x_2)&cdots&0&0&0\ vdots&vdots&vdots&vdots&&vdots&vdots&vdots\ 0&0&0&0&cdots&b_{n+1}(x_n)&b_{n+2}(x_n)&b_{n+3}(x_n)\ 0&0&0&0&cdots&b'_{n+1}(x_n)&b'_{n+2}(x_n)&b'_{n+3}(x_n)\ end{array} ight])
    里面 (b_k(x)=B_{k,3}(x))(b')同理
    求出系数 (c_1,cdots,c_{n+3})
    得到 (3) 次样条插值函数:(s(x)=sumlimits_{k=1}^{n+3}c_kB_{k,3(x)})

    补贴一张图

  • 相关阅读:
    Spring集成MyBatis
    UpdatePanel的简单用法(转)
    updatePanel导致JS失效的解决办法(转)
    sql面试题(学生表_课程表_成绩表_教师表)
    javascript深入理解js闭包
    T-SQL利用Case When Then多条件判断
    T-SQL排名函数
    DataTable字符串类型的数字,按照数字类型排序
    Sql 行转列问题总结
    行转列:SQL SERVER PIVOT与用法解释
  • 原文地址:https://www.cnblogs.com/ccryolitecc/p/15327280.html
Copyright © 2011-2022 走看看