zoukankan      html  css  js  c++  java
  • 拉格朗日插值与拉格朗日反演

    题目

    【模板】拉格朗日插值

    拉格朗日公式

    拉格朗日插值法:$$F(x) = sumlimits_{k=0}^{n}{y_kfrac{prodlimits_{j ot= k}^{}{(x-x_j)}}{prodlimits_{j ot= k}^{}{(x_k-x_j)}}}$$

    我们先把右边那部分提出来看:$$ell {j}(x):=prod {{i=0,,i eq j}}^{{k}}{frac {x-x{i}}{x{j}-x_{i}}}={frac {(x-x_{0})}{(x_{j}-x_{0})}}cdots {frac {(x-x_{{j-1}})}{(x_{j}-x_{{j-1}})}}{frac {(x-x_{{j+1}})}{(x_{j}-x_{{j+1}})}}cdots {frac {(x-x_{{k}})}{(x_{j}-x_{{k}})}}$$

    举个例子吧:有二次函数上的三点(f(4)=10,f(5)=5.25,f(6)=1),求(f(18))

    求出三个基本式:

    [ell _{0}(x)={frac {(x-5)(x-6)}{(4-5)(4-6)}}ell _{1}(x)={frac {(x-4)(x-6)}{(5-4)(5-6)}}ell _{2}(x)={frac {(x-4)(x-5)}{(6-4)(6-5)}} ]

    即:

    [egin{aligned}p(x)&=f(4)ell _{0}(x)+f(5)ell _{1}(x)+f(6)ell _{2}(x)\ &=10cdot {frac {(x-5)(x-6)}{(4-5)(4-6)}}+5.25cdot {frac {(x-4)(x-6)}{(5-4)(5-6)}}+1cdot {frac {(x-4)(x-5)}{(6-4)(6-5)}}\ &={frac {1}{4}}(x^{2}-28x+136)end{aligned}]

    理解拉格朗日插值的做法:

    对于给定的k+1个点:((x_{0},y_{0}),ldots ,(x_{k},y_{k}))

    拉格朗日插值法的思路是找到一个(()在一点(x_{j})取值为(1),而在其他点取值都是(0)())多项式(ell _{j}(x))

    这样,多项式(y_{j}ell _{j}(x))在点(x_{j})取值为(y_{j}),而在其他点取值都是(0)

    而多项式(L(x):=sum _{{j=0}}^{{k}}y_{j}ell _{j}(x))就可以满足

    [L(x_{j})=sum _{{i=0}}^{{k}}y_{i}ell _{i}(x_{j})=0+0+cdots +y_{j}+cdots +0=y_{j} ]

    证明

    而我们怎么找到(ell _{j}(x))呢?

    在其它点取值为0的多项式容易找到,由于假定(x)两两互不相同,故只有当(x=x_j)时上面的取值才不等于(0)

    [egin{aligned}\ &(x-x_{0})cdots (x-x_{{j-1}})(x-x_{{j+1}})cdots (x-x_{{k}})Longrightarrow\ &(x_{j}-x_{0})cdots (x_{j}-x_{{j-1}})(x_{j}-x_{{j+1}})cdots (x_{j}-x_{{k}})end{aligned}]

    于是,将多项式除以这个取值,就得到一个满足“在(x_{j})取值为(1),而在其他点取值都是(0)的多项式”:

    (ell _{j}(x):=prod _{{i=0,\,i eq j}}^{{k}}{frac {x-x_{i}}{x_{j}-x_{i}}}={frac {(x-x_{0})}{(x_{j}-x_{0})}}cdots {frac {(x-x_{{j-1}})}{(x_{j}-x_{{j-1}})}}{frac {(x-x_{{j+1}})}{(x_{j}-x_{{j+1}})}}cdots {frac {(x-x_{{k}})}{(x_{j}-x_{{k}})}})
    这就是拉格朗日基本多项式

    用此公式能优化成(O(n^2))
    (F(x) = sumlimits_{k=0}^{n}{y_kfrac{prodlimits_{j ot= k}^{}{(x-x_j)}}{prodlimits_{j ot= k}^{}{(x_k-x_j)}}})

    特殊情况

    一个关于(x)(n)次多项式,当已经知道(F(x),xin [0,n])的值时,有一个特殊公式:

    [F(x)=sum_{i=0}^n(-1)^{n-i}F(i)frac{x(x-1)(x-2)...(x-n)}{(n-i)!i!(x-i)} ]

  • 相关阅读:
    python的类基础
    python导入模块
    python常用的内置函数
    python基础一数据类型之集合
    python函数-匿名函数
    python的函数(三)
    python的函数(二)
    python的函数(一)
    BZOJ4104:[Thu Summer Camp 2015]解密运算——题解
    BZOJ4033:[HAOI2015]树上染色——题解
  • 原文地址:https://www.cnblogs.com/y2823774827y/p/10722276.html
Copyright © 2011-2022 走看看