zoukankan      html  css  js  c++  java
  • 笔记-多项式相关操作

    多项式求导

    函数(f(x))的导函数(f^{'}(x))有如下性质:

    ((f(x)pm g(x))^{'}=f^{'}(x)pm g^{'}(x))

    ((f(x)g(x))^{'}=f^{'}(x)g(x)+f(x)g^{'}(x))

    而且对于单项式(f(x)=x^n),其导数(f^{'}(x)=nx^{n-1}),所以其(k(kleq n))阶导数(f^{(k)}(x)=frac{n!}{(n-k)!}x^{n-k})

    相应的,对于多项式(f(x)=sum_{i=0}^na_ix^i),其导数(f(x)=sum_{i=0}^{n-1}a_{i+1}(i+1)x^i),其(k(kleq n))阶导数(f^{(k)}=sum_{i=0}^{n-k}a_{i+k}frac {(i+k)!}{i!}x^i)

    (T(n)=O(n))

    多项式积分

    在一定程度上,积分是求导的逆运算

    (f(x)=sum_{i=0}^{n-1}a_ix_i)

    (int f^{'}(x)cdot dx=sum_{i=1}^{n}frac {a_{i-1}}{i}x^i)

    (T(n)=O(n))

    注意同一多项式求导需要逆序

    多项式翻转

    NOIP考点,但有个式子可以留意:(f^{R}(x)=x^nf(frac 1x))

    多项式求逆

    单个元素的逆元应该是是会求的,比如说一个数(t)的逆元在膜质数意义下为(t^{p-2})

    但现在要求求一个多项式的逆元,联想到在模数为(x)时可以快速求得其逆元为(a(0)^{-1}),可以考虑从这里开始递推

    对于题目可设
    (a*bequiv 1pmod {x^{2p}}\a*cequiv 1pmod {x^p})

    即已知(a,c)(b)

    (a*bequiv 1pmod {x^p}\a*cequiv 1pmod {x^p})

    (Rightarrow b-cequiv 0pmod {x^p})

    (Rightarrow b^2-2bc+c^2equiv 0 pmod {x^{2p}})

    同乘(a)

    (Leftrightarrow ab^2-2abc+ac^2equiv 0 pmod {x^{2p}})

    考虑到(abequiv 1pmod {x^{2p}})

    (Leftrightarrow b-2c+ac^2equiv 0 pmod {x^{2p}})
    (Leftrightarrow bequiv 2c-ac^2 pmod {x^{2p}})

    (T(n)=O(nlog_2 n))

    牛顿迭代法

    可以用来比较高效地求解多项式函数(f(x)=sum_{i=0}^na_ix^i)零点的近似解,大致过程是,选取(x_0)作为零点的近似值(当然这个近似值很可能差距很大,但经过若干次牛顿迭代后将会接近零点),然后求过点((x_o,f(x_0)))关于(f(x))的切线(l),然后得到直线(l)的零点(x_1)作为新的近似值,如此反复,得到的(x_i)会收敛

    求解使得(F(f(x))=0pmod {x^n})的多项式(f(x))

    可以用类似多项式求逆的方法,从(mod x^1)的情况下开始推导至(mod x^n)的情况,(mod x^1)的情况可以直接求得,设当前(F(f_0(x))equiv 0pmod {x^{lceil frac k2 ceil}}),现在要求解(F(f(x))equiv 0pmod {x^k}),在(f_0(x))处展开(F(f(x)))

    [F(f(x))=F(f_0(x))+sum_{i=1}^{+infty} F^{(i)}(f_0(x))(f(x)-f_0(x))^i ]

    由于(f(x))(f_0(x))中前(lceil frac k2 ceil)项是相同的,所以多项式((f(x)-f_0(x))^t)(tgeq 2)时在(mod x^k)情况下为(0),所以

    [F(f(x))=F(f_0(x))+F^{'}(f_0(x))(f(x)-f_0(x)) ]

    由于(F(f(x))equiv 0pmod {x^k}),所以可推得

    [f(x)=f_0(x)-frac{F(f_0(x))}{F^{'}(f_0(x))} ]

    这个式子貌似很有用

    多项式开根

    已知(g(x)),求解(f(x)^2equiv g(x)pmod {x^n})

    (f(x)^2-g(x)equiv 0pmod {x^n})

    则有(F(f(x))equiv f_0(x)^2-g(x)pmod {x^n}\F^{'}(f(x))equiv 2f_0(x)pmod {x^n})

    由上述牛顿迭代得到的式子可知

    (f(x)equiv f_0(x)-frac{F(f_0(x))}{F^{'}(f_0(x))}pmod {x^n})

    (f(x)equiv f_0(x)-frac {f_0(x)^2-g(x)}{2f_0(x)}pmod {x^n})

    (f(x)equiv frac {f_0(x)^2+g(x)}{2f_0(x)}pmod {x^n})

    (T(n)=O(nlog_2n))

    另外常数项如果非1则需要求二次剩余,然而我并不会

    多项式求ln

    已知(f(x)),求解(ln(f(x)))

    ((ln f(x))^{'}=frac {d ln f(x)}{d~f(x)}cdot frac{d~f(x)}{dx}=(ln f(x))^{'}cdot f^{'}(x)=frac{f^{'}(x)}{f(x)})

    所以

    (ln f(x)=large int small(ln f(x))^{'}=large int small frac {f^{'}(x)}{f(x)})

    (T(n)=O(nlog_2n))

    多项式求exp

    已知(g(x)),求解(f(x)=e^{g(x)})

    (F(f(x))=ln f(x)-g(x)equiv 0pmod {x^n})

    则有(F^{'}(f(x))equiv frac 1{f(x)})

    由上述牛顿迭代得到的式子可知

    (f(x)equiv f_0(x)-frac{F(f_0(x))}{F^{'}(f_0(x))}pmod {x^n})

    (f(x)equiv f_0(x)-frac {ln f_0(x)-g(x)}{frac 1{f_0(x)}}pmod {x^n})

    (f(x)equiv f_0(x)(1-ln f_0(x)+g(x))pmod {x^n})

    (T(n)=O(nlog_2n))

    多项式求k次方

    暴力(O(nlog_2nlog_2k))

    但数学就是那么神奇,转个弯可以加速

    (f(x)^k=(e^{ln f(x)})^k=e^{kcdot ln f(x)})

    (T(n)=O(nlog_2n))

    多项式除法&取模

    已知(n)次多项式(A(x))(m)次多项式(B(x)),求解(n-m)次多项式(f(x))(k(k<m))次多项式(g(x)),使得(A(x)=f(x)B(x)+g(x))

    消除(g(x))的影响,将(f(x))翻转

    (x^nA(frac 1x)=x^nf(frac 1x)B(frac 1x)+x^ng(frac 1x))

    (Leftrightarrow x^nA(frac 1x)=x^{n-m}f(frac 1x)x^mB(frac 1x)+x^{n-m+1}x^{m-1}g(frac 1x))

    (Leftrightarrow A^R(x)=f^R(x)B^R(x)+x^{n-m+1}g^R(x))

    这个式子在模(x^{n-m+1})的情况下,关于(g^R(x))的项恒为零,同时(deg~f^R(x)<n-m+1)不受影响,就可以得到(f^R(x))的真实值(f^R(x)=frac {A^R(x)}{B^R(x)}mod {x^{n-m+1}}),对(f^R(x))翻转可得(f(x)),同时计算出(g(x)=A(x)-f(x)B(x))

  • 相关阅读:
    L1-046. 整除光棍
    L2-014. 列车调度
    L2-009. 抢红包
    L2-005. 集合相似度
    L2-021. 点赞狂魔
    L1-033. 出生年
    设计模式之生成器模式
    设计模式之抽象工厂模式
    设计模式之工厂方法模式
    设计模式之简单工厂模式
  • 原文地址:https://www.cnblogs.com/penth/p/9470258.html
Copyright © 2011-2022 走看看