zoukankan      html  css  js  c++  java
  • 多点求值与暴力插值

    暴力插值

    给你 (n) 个点 ((x_i,y_i)) ,要求求出这个 (n-1) 次多项式 (F(x))

    我们有

    [F(x)=sum_{i=1}^ny_ifrac{!prodlimits_{1le jle n,i ot=j}!!!!(x-x_j)}{!prodlimits_{1le jle n,i ot=j}!!!!(x_i-x_j)} ]

    感性愉悦认识一下这个拉格朗日插值

    复杂度 (O(n^2))


    多点求值

    给你 (X={x_0,x_1,x_2,dots,x_{m-1}}) 和 一个 (n) 次多项式 (A) ,要求求出 (Y={A(x_0),A(x_1),A(x_2),dots,A(x_{m-1})})

    将需要求的点值分成两个子任务 (X_1={x_0,x_1,dots,x_{lfloorfrac{m}{2} floor}},X_2={x_{lfloorfrac{m}{2} floor+1},x_{lfloorfrac{m}{2} floor+2},dots,x_{m-1}})

    若已经完成了 (X_1)(X_2) 两个子任务的多点求值,且分别用 (X_1)(X_2) 两个集合中的点插值得到的多项式为 (A_1(x),A_2(x))

    考虑构造两个多项式 (P_1(x)=prodlimits_{0le ile lfloorfrac{m}{2} floor}(x-x_i))(P_2(x)=prodlimits_{lfloorfrac{m}{2} floor<i<m}(x-x_i))

    考虑 (A(x)=Q_1(x)P_1(x)+A_1(x)) ,我们将 (xin X_1) 的点代入,发现左边这个式子是成立的。

    于是我们可以得到 (A_1(x)=A(x) mod P_1(x))

    (A_2) 同理,然后我们可以两边递归求解

    可以发现对于所有的 (P) 实际上在做分治合并的过程中都可以求,我们只需要存下来就可以了

    根据主定理可以得到复杂度为 (O(nlog^2 n))

    多项式取余

    [A(x)=Q(x)B(x)+R(x) ]

    其中 (deg A=n,deg B=m,deg R=n-m,m<n)

    定义翻转操作 (A^r=x^nA(frac{1}{x})),其中 (n=deg A)

    (x=frac{1}{x}) ,并将两边同乘 (x^n)

    [egin{aligned} &x^nA(frac{1}{x})=x^{n-m}Q(frac{1}{x})x^mB(frac{1}{x})+x^{n-m+1}x^{m-1}R(frac{1}{x})\ Rightarrow&A^r(x)equiv Q^r(x)B^r(x)pmod {x^{n-m+1}} end{aligned} ]


    代码晚点补

  • 相关阅读:
    python split的用法
    大学排名爬虫
    一直在报错:ModuleNotFoundError: No module named 'bs4'.
    微信小程序部署到线上环境
    mybatis关联三张表查询对应字段名
    WPF图像裁剪控件
    git创建标签并推送到远程
    Windows7、10的热键屏蔽
    WPF使用SVG简单整理
    Visual Studio 注册码和下载
  • 原文地址:https://www.cnblogs.com/butterflydew/p/11041754.html
Copyright © 2011-2022 走看看