多项式计算的Horner法则(秦九韶法则)

f(x) = a0+a1*x+a2*x2+...+an-1*xn-1+an*xn

  =a0+x(a1+x(a2+...+x(an-1+anx)...))

算法:

Poly =0;
for(i = n;i >=0 ;i--)
    Poly = x * Poly + A[i];
时间: 2024-10-10 19:43:09

多项式计算的Horner法则(秦九韶法则)的相关文章

多项式计算的Horner 方法

Horner 算法是以英国数学家 William George Horner 命名的一种多项式求值的快速算法,实际上,这种快速算法在他之前就已经被Paolo Ruffini使用过了.而中国数学家秦九韶提出这种算法要比William George Horner 早600多年. P(x) 是一个多项式: 我们希望计算x取某个特殊值x0时多项式的值p(x0). 构造一个序列: 那么这个序列b0的值就是多项式的值了. 用程序实现如下: double horner(double p[], int n, d

数学之路-python计算实战(3)-霍纳法则

假设有n+2个实数a0,a1,-,an,和x的序列,要对多项式Pn(x)= anx ^n+a(n-1)x^(n-1)+-+a1x+a0求值,直接方法是对每一项分别求值,并把每一项求的值累加起来,这种方法十分低效,它需要进行n+(n-1)+-+1=n(n+1)/2次乘法运算和n次加法运算.有没有更高效的算法呢?答案是肯定的.通过如下变换我们可以得到一种快得多的算法,即Pn(x)= anx ^n+a(n-1)x^(n-1)+-+a1x+a0=((-(((anx +an-1)x+an-2)x+ an-

多项式计算的效率测试

多项式计算调用库函数pow方法和秦九韶算法,我们来测算下他们的运行效率 计算函数f(x)=1+(Σxi/i)(i从1取到m); 用ctime时间函数来测试运行时间,带入x=0.9来计算 #include<iostream>#include<cmath>;#include<ctime>using namespace std;double Fn1(double x);double Fn2(double x);#define m 1000000000clock_t start

求幂运算、多项式乘法及Horner法则的应用

一,两种不同的求幂运算 求解x^n(x 的 n 次方) ①使用递归,代码如下: 1 private static long pow(int x, int n){ 2 if(n == 0) 3 return 1; 4 if(n == 1) 5 return x; 6 if(n % 2 == 0) 7 return pow(x * x, n / 2); 8 else 9 return pow(x * x, n / 2) * x; 10 } 分析: 每次递归,使得问题的规模减半.2到6行操作的复杂度为

多项式计算之秦九韶算法

多项式求值与秦九韶算法 一.引言 多项式函数常常用于描述现实世界的各种规律,而在用计算机计算多项式的值的时候,不同算法的计算时空复杂度通常不一样.如一个n次多项式 f(x)=a[n]x^n+a[n-1]x^(n-1)+......+a[1]x+a[0],我们的常规计算办法是,直接计算,这样我们的时间复杂度为:O(n^2) 下面我们介绍秦九韶算法: 其核心思想:后面每一次计算都依赖于前面计算的结果,这样以减少重复的计算. 简单引例: 计算 x^8 直接算将算8次乘法,而这8次都是必要的吗?显然不是

vijos - P1739计算系数 (多项式计算 + 杨辉三角形 + 高速幂)

P1739计算系数 Accepted 标签:NOIP提高组2011[显示标签] 描写叙述 给定一个多项式(ax + by)^k,请求出多项式展开后x^n * y^m项的系数. 格式 输入格式 共一行,包括5个整数,分别为a,b,k.n,m,每两个整数之间用一个空格隔开. 输出格式 输出共1行,包括一个整数,表示所求的系数.这个系数可能非常大.输出对10007取模后的结果. 例子1 例子输入1[复制] 1 1 3 1 2 例子输出1[复制] 3 限制 1s 提示 对于30%的数据,有0 ≤ k ≤

calc 多项式计算 (STL版和非STL版) -SilverN

计算(calc.cpp) [问题描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*”,“/”,“^”求出的值就是密码.小明数学学得不好,还需你帮他的忙.(“/”用整数除法) [输入] 输入文件calc.in共1行,为一个算式. [输出] 输出文件calc.out共1行,就是密码. [输入样例]calc.in 1+(3+2)*(7^2+6*9)/(2) [输出样例]calc.out

算法笔记02--归纳法之多项式求职(Horner规则)

多项式求值 假设有n+2个实数a0,a1,...,an和x的序列,求多项式 p_nx = a_nx^n + a_n-1x^n-1 + ...+ a_1x + a_0; 则需要乘法:n+n-1 + ...+2+1 = n(n+1)/2 需要加法:n 可见算法效率为O(n^2) 而p_nx = ((...((((a_n)x + a_n-1)x + a_n-2)x + a_n-3)....)x + a_1x) + a_0 因此思路: p_0x = a_n p_1x = xp_0x + a_n-1 p_

用于多项式计算的霍纳方法