【转载】秦九韶算法 Horner算法
秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法。在西方被称作霍纳算法(Horner algorithm或Horner scheme),是以英国数学家威廉·乔治·霍纳命名的.
把一个n次多项式f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0]改写成如下形式:
f(x)=a[n]x^n+a[n-1]x^(n-1))+......+a[1]x+a[0]
=(a[n]x^(n-1)+a[n-1]x^(n-2)+......+a[1])x+a[0]
=((a[n]x^(n-2)+a[n-1]x^(n-3)+......+a[2])x+a[1])x+a[0]
=......
=(......((a[n]x+a[n-1])x+a[n-2])x+......+a[1])x+a[0].
求多项式的值时,首先计算最内层括号内一次多项式的值,即
v[1]=a[n]x+a[n-1]
然后由内向外逐层计算一次多项式的值,即
v[2]=v[1]x+a[n-2]
v[3]=v[2]x+a[n-3]
......
v[n]=v[n-1]x+a[0]
这样,求n次多项式f(x)的值就转化为求n个一次多项式的值。
(注:中括号里的数表示下标)
结论:对于一个n次多项式,至多做n次乘法和n次加法。
意义
该算法看似简单,其最大的意义在于将求n次多项式的值转化为求n个一次多项式的值。在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,用于减少CPU运算时间。
个人总结:
1、直接带入计算,时间复杂度T(n)=n(n+1)/2∈Θ(n²);
2、按照上面算法,时间复杂度T(n)=n∈Θ(n);
可知,上述算法能够降低时间复杂度,加快计算效率。
【转载】秦九韶算法 Horner算法相关推荐
- 秦九韶算法 Horner算法
秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法.在西方被称作霍纳算法(Horner algorithm或Horner scheme),是以英国数学家威廉·乔治·霍纳命名的. 把一个n次 ...
- 转载︱案例 基于贪心算法的特征选择
本文转载于R语言中文社区,详情链接 相关帖子 转载︱案例 基于贪心算法的特征选择 用GA算法设计22个地点之间最短旅程-R语言实现 ---------------------------------- ...
- 【转载】我的算法图书
转载自https://www.jianshu.com/p/c3c167a523e4,感谢原作者分享 算法 @(读书)[算法|内功|经典] 算法荐书(程序员练功+大众科普) 入门第一书,你一定能看懂 啊 ...
- 算法总结---最常用的五大算法(算法题思路)
算法总结---最常用的五大算法(算法题思路) 一.总结 一句话总结: [明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组] [最简实例分析:比如思考dijkstra:假设先只 ...
- 滴滴算法大赛算法解决过程 - 拟合算法
拟合 概论 Gap的预测,是建立在一个拟合函数上的.也有一些机器学习的味道. 总的Gap函数 = 函数(时间,地区) TimeID : 时间片编号 DistricID:地区编号 Traffic:交通流 ...
- 回溯java算法_聊聊算法——回溯算法
"递归只应天上有,迭代还须在人间",从这句话我们可以看出递归的精妙,确实厉害,递归是将问题规模逐渐减小, 然后再反推回去,但本质上是从最小的规模开始,直到目标值,思想就是数学归纳法 ...
- 最短路最基本算法———Floyd算法
关于floyd算法 算法简介 实现思想 核心代码 后记 一.floyd简介 引自百度百科 在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路 ...
- 【坐在马桶上看算法】算法10:二叉树
二叉树是一种特殊的树.二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树.更加严格的递 归定义是:二叉树要么为空,要么由根结点.左子树和右子树组成, ...
- python实现五大基本算法_算法基础:五大排序算法Python实战教程
排序是每个算法工程师和开发者都需要一些知识的技能. 不仅要通过编码实现,还要对编程本身有一般性的了解. 不同的排序算法是算法设计如何在程序复杂性,速度和效率方面具有如此强大影响的完美展示. 让我们来看 ...
- 【一周一算法】算法2:邻居好说话——冒泡排序
[啊哈!算法] 简化版的桶排序不仅仅有上一节所遗留的问题,更要命的是:它非常浪费空间!例如需要排序数的范围是0~2100000000之间,那你则需要申请2100000001个变量,也就是说要写成int ...
最新文章
- android binder
- UA MATH563 概率论的数学基础 中心极限定理3 推导一元随机变量独立性的判断方法
- DOS系统功能调用表(INT 21H)
- CVE-2015-1635(MS15-034)-HTTP.sys远程代码执行复现
- HDU 6071 Lazy Running(同余最短路的应用)
- 期望最大化(EM)算法真如用起来那么简单?
- 从0到1搭建spark集群---企业集群搭建
- CSS3特殊图形制作
- Python集合框架
- 基于java固定资产管理系统设计(含源文件)
- 网络安全2:各种经典渗透方式合集
- 云上PDF怎么删除页眉页脚_word页眉处理技巧:用VBA快速删除批量页眉页脚
- python 豆瓣电影top250_Python数据可视化:豆瓣电影TOP250
- GYM 101350 M. Make Cents? ( STL
- SQLException: #22001你知道这个错误码吗
- Windows NT
- 怎样做一次好的活动策划?
- 电脑C盘空间严重不足,教你5招!电脑内存瞬间多出10个G
- python加密安装方法_安装Python加密错误
- 硬件描述语言(HDL)基础——过程块