zoukankan      html  css  js  c++  java
  • 多项式的各种操作

    多项式求逆

    给定多项式(A(x)),求一个多项式(B(x))满足(A(x)B(x)=1left( ext{mod} x^n ight))

    假设已求出多项式(C(x))满足(A(x)C(x)=1left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))

    又因为(A(x)B(X)=1left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))

    ( herefore A(x)left(B(x)-C(x) ight)=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))

    (ecause A(x) ot=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))

    ( herefore B(x)-C(x)=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight))

    ( herefore left(B(x)-C(x) ight)^2=0left( ext{mod} x^n ight))

    ( herefore B^2(x)+C^2(x)-2B(x)C(x)=0left( ext{mod} x^n ight))

    两边同乘(A(x))(A(x)C^2(x)+B(x)-2C(x)=0left( ext{mod} x^n ight))

    ( herefore B(x)=C(x)(2-C(x)A(x))left( ext{mod} x^n ight))

    多项式除法

    已知(A(x),B(x)),求(A(x)=B(x)D(x)+R(x))

    其中,(A(x))有n项,(B(x))有m项,(D(x))有n-m+1项,(R(x)<m-1)项。

    定义(A(x))的翻转(A^R(x)=x^{n-1}A(frac{1}{x})=sum_{i=0}^{n-1}a_{n-i-1}x^i)

    (left. egin{array}{rl}\ A^R(x)&=x^{n-1}Aleft(frac{1}{x} ight)\ &=x^{n-1}left(Bleft(frac{1}{x} ight)Dleft(frac{1}{x} ight)+Rleft(frac{1}{x} ight) ight)\ &=x^{n-m}Dleft(frac{1}{x} ight)x^{m-1}Bleft(frac{1}{x} ight)+x^{n-m+1}x^{m-2}Rleft(frac{1}{x} ight)\ &=D^R(x)B^R(x)+x^{n-m+1}R^R(x) end{array} ight.)

    ( herefore A^R(x)=B^R(x)D^R(x)( ext{mod} x^{n-m+1}))
    ( D^R(x)=frac{A^R(x)}{B^R(x)}( ext{mod} x^{n-m+1}))

    然后即可求出(D(x)),代回去即可求出(R(x))

    多项式牛顿迭代

    牛顿迭代:

    求函数(f(x))的零点:

    随便选一个点(x_0),把(f(x))泰勒展开,

    (f(x)=f(x_0)+f'(x_0)(x-x_0)+frac{f''(x_0)}{2!}(x-x_0)^2+frac{f'''(x_0)}{3!}(x-x_0)^3+cdots)

    然后只保留线性部分,得到

    (f(x)approx f(x_0)+f'(x_0)(x-x_0)=0)

    然后令(x_0leftarrow x_0-frac{f(x_0)}{f'(x_0)}),多次迭代后求出近似解。


    现在考虑的是多项式函数(f(A(x)))。考虑倍增:

    当n=1时,直接算出来。

    现在已经求出来(f(A_0(x))=0left( ext{mod} x^{lceilfrac{n}{2} ceil} ight)),那么考虑泰勒展开,

    (f(A(x))=f(A_0(x))+f'(A_0(x))(A(x)-A_0(x))+frac{f''(A_0(x))}{2}(A(x)-A_0(x))^2+cdots)

    因为(A(x))有n项,(A_0(0))(lceilfrac{n}{2} ceil)项,而他们的前(lceilfrac{n}{2} ceil)完全相同,那么(A(x)-A_0(x))的前(lceilfrac{n}{2} ceil)项为0,那么((A(x)-A_0(x))^2)及更高项的前n项均为0。所以对于多项式来说,保留线性部分得到的就是准确解。

    ( herefore A(x)=A_0(x)-frac{f(A_0(x))}{f'(A_0(x))})

    1. 多项式函数求导时,应把常数多项式看做常数来求导,例如:$$f(A(x))=A^2(x)+B(x)$$那么$$f'(A(x))=2A(x), ot=2A(x)+B'(x)$$(其实求的就是(frac{df}{dA})

    2. 多零点的函数,求出来的是哪个零点,取决于常数项取哪个零点,零点的数量取决于常数项的零点的个数。

    多项式对数

    (B(x)=ln(A(x))( ext{mod} x^n))

    (ln(A(x))=int(ln(A(x)))'=intfrac{A'(x)}{A(x)})

    只需要多项式求逆和多项式求导。

    多项式exp

    求出(e^{A(x)}( ext{mod} x^n))

    (f(x)=e^{A(x)}( ext{mod} x^n))

    (ln f(x)-A(x)=0( ext{mod} x^n))

    (g(f(x))=ln f(x)-A(x))

    然后牛顿迭代,

    [f(x)=f_0(x)-frac{ln f_0(x)-A(x)}{cfrac{1}{f_0(x)}} ]

    [f(x)=f_0(x)(1-ln f_0(x)+A(x)) ]

    多项式幂

    (A^k(x)( ext{mod} x^n))

    (A^k(x)=e^{kln A(x)}( ext{mod} x^n))

    警惕大常数。

    其中的k可以是个多项式。

    多项式三角函数

    [sin(A(x))( ext{mod }x^n) ext{和}cos(A(x))( ext{mod }x^n) ]

    用欧拉公式(e^{ix}=cos x+isin x)

    (e^{iA(x)}=cos A(x)+isin A(x))

    似乎这个没什么用。。。

    多项式开方

    已知(A(x)),求:

    [B^2(x)=A(x)( ext{mod }x^n) ]

    (g(f(x))=f^2(x)-A(x)),要求的就是这个函数的零点啦。

    那么套牛顿迭代,

    [f(x)=f_0(x)-frac{f_0^2(x)-A(x)}{2f_0(x)}=frac{f_0^2(x)+A(x)}{2f_0(x)} ]

    常数项上有个东西叫做二次剩余。


    例题

    代码

  • 相关阅读:
    Juniper常用命令
    jenkins编译代码git脚本报错
    sqlserver服务器常用的性能计数器
    C语言位操作
    【转】接口技术
    【转】带参数的主函数
    进程与线程的区别和联系
    【转】进程与线程的一个简单解释
    【转】什么是堆和栈,它们在哪儿?
    【转】话说C语言const用法
  • 原文地址:https://www.cnblogs.com/shanxieng/p/10530669.html
Copyright © 2011-2022 走看看