怎么两边同时取ln_浅谈多项式ln和exp

这篇博客主要探讨了在OIer中常常困惑的多项式ln和exp。作者指出,由于无法在模域下定义多项式的自然对数,所以将多项式ln定义为多项式与麦克劳林级数的复合。对于多项式exp,讨论了如何使用它来计算任意次多项式的幂,但要注意常数项的逆元的二次剩余问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ca44018b9e7bd5d73bb2d56b3e2d0a1b.png

作为一名辣鸡OIer,在搞多项式算法的时候可能最为含混不清的就是多项式的ln和exp了。于是作者就想略微总结一下,启到抛砖引玉的作用。

多项式ln

给定多项式

,求

第一眼看上去:对数?你在逗我吗,多项式取个对数还叫多项式...?

事实上我们是无法在模域下定义多项式的自然对数的,因此我们把它定义为一个多项式和麦克劳林级数的复合,也就是给出一个多项式

,则有

注意这里常数项必须为

。也就是说求对数的多项式必须满足

考虑对其求导后的结果

,有
(常数项默认为0)。于是对右边的式子在
的意义下做多项式求逆和多项式乘法,最后积分,就得到了左边的形式。

由于左右两边事实上不在模意义下做的话都可以展开成麦克劳林级数的形式并且形式相同,这里取模只是为了截取前面的一段。

多项式exp

给定多项式

,求

看到这种

的指数形式显然非常不好处理,于是采用等式两边同时
的方式。设
,则有
。构造函数
,牛顿迭代即可。

多项式

次幂

这里要多说一句的是

次幂。显然对于指数的整数部分可以快速幂,小数部分运用
进行求解。事实上当
的常数项不为
的时候我们是可以进行这样的运算的,可以直接把
乘到前面去(
的常数项的逆),于是可以用
来进行求解。但是注意到
如果仅仅是求ln的话是不能乘上逆元的,因为把
拆开来之后变成了
,而
本身就是没有定义的。

任意次的多项式的幂都可以用这个来计算。开放的时候要注意常数项的逆元的二次剩余的存在性问题,并且可能这种方法会比多项式开方一些。

符号多项式的操作,已经成为表处理的典型用例。在数学上,一个一元多项式Pn(x)可按升幂写 成: Pn(x) = p0+ p1x+ p2x2+….+ pnxn 它由n+1个系数唯一确定,因此,在计算机里,它可用一个线 性表P来表示: P = (p0 ,p1 ,p2 ,… pn)每一项的指数i隐在其系数pi的序号里。 假设Qm(x)是一元m次多项式,同样可用线性表Q来表示:Q = (q0 ,q1 ,q2 ,… qm)。 不失一般性,设m<n,则两个多项式相加的结果 Rn(x) = Pn(x)+Qm(x)可用线性表R表示:R = (p0+q0 , p1+q1 , p2 +q2 , … , pm +qm , pm+1 ,… pn)。显然,我们可以对P、QR采用顺序存储结构, 使得多项式相加的算法定义十分简洁。至此,一元多项式的表示及相加问题似乎已经解决了。 然而在通常的应用中,多项式的次数可能很高且变化很大,使得顺序存储结构的最大长度很难 决定。特别是在处理形如:S(x) = 1+3x10000+2x20000的多项式时,就要用一长度为20001的线性表来 表示,表中仅有三个非零元素,这种对内存空间的浪费是应当避免的,但是如果只存储非零系数项 则显然必须同时存储相应的指数。 一般情况下的一元n次多项式可写成: Pn(x) = p1x e1 + p2x e2 + … + pmx em 其中 pi,是指数为 ei 的项的非零系数,且满足 0 ≤ e1 < e2 < …< em = n,若用一个长度为 m 且 每个元素有两个数据项(系数项指数项)的线性表便可唯一确定多项式 Pn(x)。 ((p1 ,e1) , (p2 ,e2) , … ,(pm,em)) 在最坏情况下,n+1(=m)个系数都不为零,则比只存储每项系数的方案要多存储一倍的数据。但 是,对于 S(x)类的多项式,这种表示将大大节省空间。 本题要求选用线性表的一种合适的存储结构来表示一个一元多项式,并在此结构上实现一元多 项式的加法,减法乘法操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值