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} ]


    代码晚点补

  • 相关阅读:
    Idea的类中使用实体类(有@Data注解)的Get/Set方法报错
    Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断
    Window NodeJs安装
    Linux(CENTOS7) NodeJs安装
    Linux(CENTOS7) YUM方式安装mysql5.7
    根据M3U8地址下载视频
    Mysql时间范围分区(RANGE COLUMNS方式)
    Window Mysql5.7免安装版配置
    Window Jdk配置(win7/win10都可以)
    .net core2.0 读取appsettings.json
  • 原文地址:https://www.cnblogs.com/butterflydew/p/11041754.html
Copyright © 2011-2022 走看看