多项式牛顿迭代(应用:求逆,开根,对数exp)

多项式牛顿迭代

给定多项式g(x)g(x)g(x),求f(x)f(x)f(x),满足g(f(x))≡0(modxn)g(f(x)) \equiv 0 \pmod {x ^ n}g(f(x))0(modxn)

泰勒展开

对于现有得f(x)f(x)f(x),构造一个多项式g(x)g(x)g(x),使得f(n)(x)=g(n)(x)f^{(n)}(x) = g ^{(n)} (x)f(n)(x)=g(n)(x),也就是两者得nnn阶导数是相等的。

假设g(x)=a0+a1x+a2x2+⋯+an−1xn−1+anxng(x) = a_0 + a_1 x + a_2 x ^ 2 + \dots + a_{n - 1} x ^{n -1} + a_n x ^ng(x)=a0+a1x+a2x2++an1xn1+anxn

考虑通过(0,f(0))(0, f(0))(0,f(0))来构造,显然有g(0)=a0=f(0)g(0) = a_0 = f(0)g(0)=a0=f(0),对任意阶倒数相同有g(n)=n!an=f(n)(0)g ^{(n)} = n ! a_n = f ^{(n)}(0)g(n)=n!an=f(n)(0),则an=f(n)(0)n!a_n = \frac{f^{(n)}(0)}{n!}an=n!f(n)(0)

所以构造出g(x)=f(0)+f(1)(0)1!x+f(2)(0)2!x2+⋯+f(n−1)(0)(n−1)!xn−1+f(n)(0)n!xn…g(x) = f(0) + \frac{f^{(1)}(0)}{1!} x + \frac{f^{(2)}(0)}{2!} x ^ 2 + \dots + \frac{f^{(n - 1)}(0)}{(n - 1) !} x^{n - 1} + \frac{f^{(n)}(0)}{n !} x ^ n \dotsg(x)=f(0)+1!f(1)(0)x+2!f(2)(0)x2++(n1)!f(n1)(0)xn1+n!f(n)(0)xn

对于任意点(x0,f(x0))(x_0, f(x_0))(x0,f(x0)),可得g(x)=f(0)+f(1)(0)1!(x−x0)+f(2)(0)2!(x−x0)2+⋯+f(n−1)(0)(n−1)!(x−x0)n−1+f(n)(0)n!(x−x0)n…g(x) = f(0) + \frac{f^{(1)}(0)}{1!} (x - x_0) + \frac{f^{(2)}(0)}{2!} (x - x_0) ^ 2 + \dots + \frac{f^{(n - 1)}(0)}{(n - 1) !} (x - x_0)^{n - 1} + \frac{f^{(n)}(0)}{n !} (x - x_0) ^ n \dotsg(x)=f(0)+1!f(1)(0)(xx0)+2!f(2)(0)(xx0)2++(n1)!f(n1)(0)(xx0)n1+n!f(n)(0)(xx0)n

牛顿迭代

迭代求函数零点

对于f(x)f(x)f(x),任意选取一个点(x0,f(x0))(x_0, f(x_0))(x0,f(x0))作为当前我们预估的零点,取他的泰勒展开前两项g(x)=f(0)+f′(x)(x−x0)g(x) = f(0) + f'(x)(x - x_0)g(x)=f(0)+f(x)(xx0)

解出方程g(x)=0g(x) = 0g(x)=0,得到x1x_1x1,然后重复上述操作,最后xnx_nxn会趋近于我们所要的正解。

考虑如何应用到多项式上

边界条件n=1n = 1n=1时,[x0]g(f(x))=0[x ^0]g(f(x)) = 0[x0]g(f(x))=0,的解单独求出。

假设我们已经求得膜x⌈n2⌉x ^{\lceil\frac{n}{2} \rceil}x2n下的解f0(x)f_0(x)f0(x),要求膜xnx ^nxn下的解f(x)f(x)f(x),得到该点的泰勒展开:
∑i=0∞g(i)(f0(x))i!(f(x)−f0(x))nf(x)−f0(x)前面的项已经被截了,所以最低次幂是大于⌈n2⌉的有(f(x)−f0(x))i≡0(modxn),i>=2有g(f0(x))+g′(f0(x))(f(x)−f0(x))≡0(modxn)f(x)≡f0(x)−g(f0(x))g′(f0(x))(modxn)\sum_{i = 0} ^{\infty} \frac{g ^{(i)}(f_0(x))}{i !}(f(x) - f_0(x)) ^n\\ f(x) - f_0(x)前面的项已经被截了,所以最低次幂是大于\lceil \frac{n}{2} \rceil的\\ 有(f(x) - f_0 (x)) ^ i \equiv 0 \pmod {x ^ n}, i >= 2\\ 有g(f_0(x)) + g'(f_0(x))(f(x) - f_0(x)) \equiv 0 \pmod {x ^ n}\\ f(x) \equiv f_0(x) - \frac{g(f_0(x))}{g'(f_0(x))} \pmod {x ^ n}\\ i=0i!g(i)(f0(x))(f(x)f0(x))nf(x)f0(x),2n(f(x)f0(x))i0(modxn),i>=2g(f0(x))+g(f0(x))(f(x)f0(x))0(modxn)f(x)f0(x)g(f0(x))g(f0(x))(modxn)

应用

多项式求逆

对于给定的h(x),有g(f(x))=1f(x)−h(x)≡0(modxn)f(x)≡f0(x)−1f0(x)−h(x)−1f02(x)(modxn)f(x)≡2f0(x)−h(x)f02(x)(modxn)f(x)≡f0(x)(2−h(x)f0(x))(modxn)对于给定的h(x),\\ 有g(f(x)) = \frac{1}{f(x)} - h(x) \equiv 0 \pmod {x ^ n}\\ f(x) \equiv f_0(x) - \frac{\frac{1}{f_0(x)} - h(x)}{-\frac{1}{f_0 ^ 2(x)}} \pmod{x ^n}\\ f(x) \equiv 2f_0(x) - h(x) f_0 ^ 2(x) \pmod {x ^ n}\\ f(x) \equiv f_0(x)(2 - h(x)f_0(x)) \pmod {x ^ n}\\ h(x)g(f(x))=f(x)1h(x)0(modxn)f(x)f0(x)f02(x)1f0(x)1h(x)(modxn)f(x)2f0(x)h(x)f02(x)(modxn)f(x)f0(x)(2h(x)f0(x))(modxn)

多项式开根

对于给定的h(x)有g(f(x))=f2(x)−h(x)≡0(modxn)f(x)≡f0(x)−f02(x)−h(x)2f0(x)(mod()xn)f(x)≡f02(x)+h(x)2f0(x)(modxn)f(x)≡2−1f0(x)+2−1h(x)f0−1(x)(modxn)对于给定的h(x)\\ 有g(f(x)) = f ^ 2(x) - h(x) \equiv 0 \pmod {x ^ n}\\ f(x) \equiv f_0(x) - \frac{f_0 ^2(x) - h(x)}{2f_0(x)} \pmod (x ^n)\\ f(x) \equiv \frac{f_0 ^ 2(x) + h(x)}{2f_0(x)} \pmod {x ^ n}\\ f(x) \equiv 2 ^{-1} f_0(x) + 2 ^{-1} h(x) f_0 ^{-1}(x) \pmod {x ^n}\\ h(x)g(f(x))=f2(x)h(x)0(modxn)f(x)f0(x)2f0(x)f02(x)h(x)(mod()xn)f(x)2f0(x)f02(x)+h(x)(modxn)f(x)21f0(x)+21h(x)f01(x)(modxn)

多项式exp⁡\expexp

对于给定的h(x)有g(f(x))=ln⁡f(x)−h(x)≡0(modxn)f(x)≡f0(x)−ln⁡f0(x)−h(x)1f0(x)(modxn)f(x)≡f0(x)(1−ln⁡f0(x)+h(x))(modxn)对于给定的h(x)\\ 有g(f(x)) = \ln f(x) - h(x) \equiv 0 \pmod {x ^ n}\\ f(x) \equiv f_0(x) - \frac{\ln f_0(x) - h(x)}{\frac{1}{f_0(x)}} \pmod {x ^ n}\\ f(x) \equiv f_0(x)(1 - \ln f_0(x) + h(x)) \pmod {x ^ n}\\ h(x)g(f(x))=lnf(x)h(x)0(modxn)f(x)f0(x)f0(x)1lnf0(x)h(x)(modxn)f(x)f0(x)(1lnf0(x)+h(x))(modxn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core 使用 K8S ConfigMap的正确姿势

背景ASP.NET Core默认的配置文件定义在 appsetings.json和 appsettings.{Environment}.json文件中。这里面有一个问题就是,在使用容器部署时,每次修改配置文件都需要重新构建镜像。当然你也可能会说,我的配置文件很稳定不需要修改&#xff0c…

2019-03-22-算法-进化(环形链表)

题目描述 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入&#xf…

ASP.NET Core on K8S深入学习(9)Secret Configmap

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。01—Secret关于Secret在应用启动过程中需要一些敏感信息,比如数据库用户名、密码,如果直接明文存储在容器镜像中是不安全的,K8S提供…

生成函数简单入门

生成函数 可表示为F(x)∑nankn(x)F(x) \sum\limits_{n} a_n k_n(x)F(x)n∑​an​kn​(x),对于不同类型的生成函数,有不同的核函数kn(x)k_n(x)kn​(x)。 普通生成函数:kn(x)xnk_n(x) x ^ nkn​(x)xn。 指数生成函数:kn(x)xnn!…

.NET Core 学习资料精选:进阶

2019.09月就要正式发布.NET 3.0了,对于前一篇博文《.NET Core 学习资料精选:入门》大家学的可还开心?这是本系列的第二篇文章:进阶篇,喜欢的园友速度学起来啊。对于还在使用传统.NET Framework 框架的园友,…

P4389 付公主的背包(生成函数,多项式exp)

P4389 付公主的背包 考虑生成函数有: ∏i1n11−xvi对其取对数得,∑i1nln⁡11−xviF(x)11−xv,G(x)ln⁡F(x)G(x)∫F′(x)F(x)dxG(x)∫vxv−11−xvdxG(x)∫∑n≥0vxvnv−1dxG(x)∑n≥0vxvnvvnvG(x)∑n≥0xv(n1)n1G(x)∑n≥1xvnn对于原式:∑i1n∑j1∞xvijj…

VS Code 1.38 发布!

今天(北京时间 2019 年 9 月 5 日),微软发布了 Visual Studio Code 1.38 版本。此版本主要更新的内容包括:Preserve case for global search and replace - 进行全局替换字符串时保留大小写。Settings editor string array valida…

HDU 5730 Shell Necklace(生成函数 多项式求逆)

Shell Necklace 由题意可得f[n]∑i1na[i]f[n−i]f[n] \sum\limits_{i 1} ^{n} a[i] f[n - i]f[n]i1∑n​a[i]f[n−i],设f[n]f[n]f[n]的生成函数为F(x)F(x)F(x),a[n]a[n]a[n]的生成函数为A(n)A(n)A(n) F(x)A(x)∑n≥0xn∑ijnaifn−i由于a00&#xff0c…

.NET Core 收徒,有缘者,可破瓶颈

最近感悟天命,偶有所得,故而打算收徒若干,以继吾之传承。有缘者,可破瓶颈,职场巅峰指日可待。入门基本要求:1、工作经验:1年或以上。2、拜师费用:3999元(RMB)…

【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程

一、前言在前面的文章中我们已经介绍了如何在Centos7系统中安装Docker以及利用Docker进行Asp.Net Core应用的部署。在本文中,我们将继续介绍利用Docker部署Nginx服务实现负载均衡。文章最后附有Nginx部署的视频全过程。注:查看公众号历史文章&#xff0c…

P2012 拯救世界2(指数型生成函数)

P2012 拯救世界2 三种基因,我们分别列出其生成函数: F(x)∑n≥0xnn!exG(x)∑n≥0x2n1(2n1)!12(∑n≥0xnn!−∑n≥0(−1)nxnn!)12(ex−e−x)H(x)∑n≥0x2n(2n)!12(∑n≥0xnn!∑n≥0(−1)nxnn!)12(exe−x)F(x) \sum_{n \geq 0} \frac{x ^ n}{n!} e ^ x\…

开源导入导出通用库Magicodes.ExporterAndImporter发布

导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨。GitHub地址:https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语…

第一个错误的版本

题目描述 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, …, n],你…

P4705 玩游戏(生成函数,多项式ln)

P4705 玩游戏 有ansk∑i1n∑j1m(aibj)knm先舍弃nm不管ansk∑r0k∑i1n∑j1mCkrairbjk−r∑r0k∑i1n∑j1mk!r!(k−r)!airbjk−rk!∑r0k(1r!∑i1nair)(1(k−r)!∑j1mbjk−r)不难发现这就是一个卷积的形式了,但是我们现在还不知道∑i1nair,∑i1mbir,(r∈[0,k])设A(x)为∑…

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶…

netcore 中的动态代理与RPC实现(微服务专题)

一、关于RPC的调用1. 调用者(客户端Client)以本地调用的方式发起调用;  2. Client stub(客户端存根)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体; …

多项式除法,多项式取模

多项式除法 给定一个nnn次多项式F(x)F(x)F(x)和mmm次多项式G(x)G(x)G(x),要求R(x),Q(x)R(x), Q(x)R(x),Q(x),满足F(x)R(x)G(x)Q(x)F(x) R(x)G(x) Q(x)F(x)R(x)G(x)Q(x)。 R(x)R(x)R(x)是一个n−mn - mn−m阶多项式,Q(x)Q(x)Q(x)是一个小于…

[翻译] .NET Core 3.0 Preview 9 发布

原文: Announcing .NET Core 3.0 Preview 9今天,我们宣布推出 .NET Core 3.0 Preview 9。就像 Preview 8 一样,我们专注于打磨 .NET Core 3.0 的最终版本,而不是添加新功能。如果这些最终版本看起来不像早期预览版那么令人兴奋,我…

南昌网络赛E Interesting Series

Interesting Series 可求得通项Fnan−1a−1F_n \frac{a ^ n - 1}{a - 1}Fn​a−1an−1​,一个等比数列的前nnn项和,value(s)Fsum(s)value(s) F_{sum(s)}value(s)Fsum(s)​。 题目要我们求的是Answer(K)∑s∈subsetofSand∣s∣Kvalue(s)Answer(K) \s…

谈谈“学习”这件事儿

曾经有童鞋在我博客留言:楼主你是如何学习的,肿么那么牛逼(注:真不牛逼,只不过我讲的你刚好不知道,在你心中就形成了好牛逼的样子)曾经也有童鞋加我好友,开头第一句则是:…