浅谈秦九韶算法

浅谈秦九韶算法

好像FFT要用到,所以就学习一下
听说还是高中必修三的内容?

秦九韶算法的应用:

当我们知道 x 的值时,求下列式子的值:

f(x)=a0+a1x+a2x2+a3x3++an1xn1+anxn

一开始看到这个式子,我们肯定会想到直接带 x 进去乘不就行了吗
那秦九韶还提出来干什么
我们发现单单一个 xn 就需要 n1 次乘法,那么一共就需要 i=1n1i 次乘法,和 n 次加法,如下 n=5 时:

f(x)=a0+a1x+a2x+a3x+a4x+a5x

就需要 10 次乘法和 5 次加法。
显然这个十分复杂,所以才要用到奏九韶算法
秦九韶算法就是将上述式子一步步化简成如下式子:

f(x)=((anx+an1)x+an2)x++a1)x+a0

我们发现这个虽然还是要用到 n 次加法,但是乘法次数下降到了 n1 次,所以这个只需要 O(n)的时间就可以实现了。

code

代码十分短

void qinjiushao()
{
    for(int i=n-1;i>=1;i--)
        ans*=x,ans+=a[i];
}
posted @   2020fengziyang  阅读(302)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示