zoukankan      html  css  js  c++  java
  • 拉格朗日插值以及它的变形

    (本文中的数学公式或许需要耐心等待才能加载出来)

    首先,我们要知道,谁是拉格朗日:

    但其实这不重要,重要的是它的插值法;

    对于一个点值多项式,我们可以n^3地把它高斯消元得到一组系数解;

    但这太慢了;

    所以我们需要用到拉格朗日插值;

    先看一个公式

     $f(k)=sum_{i=0}^{n}y_{i}prod_{j eq i}^{n}frac{(k-x_{j})}{(x_{i}-x_{j})}$

    发现一个特点没有?这是一个多项式!(废话,这用你说?)

    然后还有一个特点:

    如果我们把第xi项带入,那么只要第i项存在(不为0),其他项都是0(因为其他项的分子一定会存在$x_{j}-x_{j}$,导致分子是0),且 $prod_{j eq i}^{n}frac{(k-x_{j})}{(x_{i}-x_{j})}$项一定是1.

    那么这样我们就得到了这个多项式(n+1个点确定唯一一个n次多项式);

    由公式可见:计算的复杂度是n^2的

    那么还有没有改进呢?

    答案肯定是有!

    1.在x取值连续时的做法

      我们假设x=1,2,3,...,n;

      那么将这些数代入公式,得到化简版:

     $f(x)=sum_{i=0}^{n}y_{i}prod_{j eq i}^{n}frac{(k-j)}{(i-j)}$

      发现什么了没有? 分子可以通过预处理前缀积$prod_{j=1}^{n}(k-j) $得到;

    那么分母呢?可以通过预处理阶乘得到(注意符号问题);

    这样得到了O(n)的算法;公式如下:

    $f(x)=sum_{i=0}^{n}y_{i}frac{pre_{i-1} imes suf_{i+1}}{(fac[i] imes fac[n-i])}$

  • 相关阅读:
    内容生成器.计数器及多列
    STT-MTJ(自旋转移矩磁隧道结)模型的Verilog-A语言描述(仅参考)
    将进酒-唐·李白
    三十六计、孙子兵法
    Keil新建工程步骤
    No.6 Verilog 其他论题
    2-4 Numpy+Matplotlib可视化(二)
    2-3 Numpy+Matplotlib可视化(一)
    0-0 列表,元组,字典,集合
    2-2 Numpy-矩阵
  • 原文地址:https://www.cnblogs.com/kamimxr/p/12091142.html
Copyright © 2011-2022 走看看