算法案例——秦九韶算法

算法案例——秦九韶算法
算法案例——秦九韶算法

秦九韶算法习题

1.3算法案例---秦九韶算法 1、利用秦九韶算法求多项式1153723+-+x x x 在23=x 的值时,在运算中下列哪个值用不到( ) A 、164 B 、3767 C 、86652 D 、85169 2、利用秦九韶算法计算多项式1876543x f(x )23456++++++x x x x x = 当x=4的值的时候,需要做乘法和加法的次数分别为( ) A 、6,6 B 、5,6 C 、5,5 D 、6,5 3、利用秦九韶算法求多项式1352.75.38123)(23456-++-++=x x x x x x x f 在6=x 的值,写出详细步骤。 4、下图的框图是一古代数学家的一个算法的程序框图,它输出的 结果s 表示( ) A 、3210a a a a +++的值 B 、300201032x a x a x a a +++的值 C 、303202010x a x a x a a +++的值 D 、以上都不对

5、已知n 次多项式1011()n n n n n P x a x a x a x a --=++++, 如果在一种算法中,计算0k x (k =2,3,4,…,n )的值需要k -1次 乘法, (1)计算30()P x 的值需要9次运算(6次乘法,3次加法),那么计算0()n P x 的值需要多少次运算? (2)若采取秦九韶算法:0011(),()()k k k P x a P x xP x a ++==+(k =0, 1,2,…, n -1),计算30()P x 的值只需6次运算,那么计算0()n P x 的值共需要多少次运算? (3)若采取秦九韶算法,设a i =i+1,i=0,1,…,n ,求P 5(2)(写出采取秦九韶算法的计算过程)

高中数学例题:秦九韶算法

高中数学例题:秦九韶算法 例4.利用秦九韶算法求2345()10.50.166630.041680.00835f x x x x x x =+++++在x=0.2时的值.写出详细计算过程. 【思路点拨】秦九韶算法是我国南宋的数学家秦九韶首先提出来的. (1)特点:它通过一次式的反复计算,逐步计算高次多项式的求值问题,即将一个n 次多项式的求值问题,归结为重复计算n 个一次式1()i i a x a -+.即1210()((()))n n n f x a x a x a x a x a --=++++. (2)具体方法如下:已知一个一元n 次多项式1110()n n n n f x a x a x a x a --=++++0.当x=x 0,我们可按顺序一项一项地计算,然后相加,求得0()f x . 【答案】1.2214024 【解析】 v 0=0.00835, v 1=v 0x+0.04168=0.00835×0.2+0.04168=0.043 35, v 2=v 1x+0.16663=0.04335×0.2+0.16663=0.1753, v 3=v 2x+0.5=0.1753×0.2+0.5=0.53506, v 4=v 3x+1=0.53506×0.2+1=1.107012, v 5=v 4x+1=1.107012×0.2+1=1.2214024. 【总结升华】秦九韶算法的原理是 01(1,2,3,,) n k k n k v a v v x a k n --=??=+=?. 在运用秦九韶算法进行计算时,应注意每一步的运算结果,像这

种一环扣一环的运算,如果错一步,则下一步,一直到最后一步就会 全部算错.同学们在计算这种题时应格外小心. 举一反三: 【变式1】用秦九韶算法求多项式764 =++++当x=2时 f x x x x x ()85321 的值. 【答案】1397 【解析】 765432 =++?++?+?++=+++++++ ()85030021((((((85)0)3)0)0)2)1 f x x x x x x x x x x x x x x x . v0=8, v1=8×2+5=21, v2=21×2 4-0=42, v3=42×2 4-3=87, v4=87×2+0=174, v5=174×2+0=348, v6=348×2+2=698, v7=698×2+1=1397, 所以,当x=2时,多项式的值为1397. 【变式2】用秦九韶算法计算多项式65432 f x x x x x x x =++++++ ()654327 在x=0.4时的值时,需做加法和乘法的次数和是() A.10 B.9 C.12 D.8 【答案】 C

秦九韶算法实验报告

《数值计算》实验报告 学院:软件学院 专业:软件工程 班级:2班 实验名称 秦九昭算法 姓名 爱上辰 学号 1402120217 成绩 实验报告内容要求: 一.实验目的 编写秦九韶算法程序,并用该程序计算多项式623)(35+-+=x x x x f 在1.1=x ,2.1,3.1的值。 二.实验原理 秦九韶算法实际上就是多项式的化简。根据秦九昭算法,变换成计算机语言,求多项式的值时,首先计算最内层括号内一次多项式的值,然后由内向外逐层计算一次多项式的值,这样,求n 次多项式f(x)的值就转化为求n 个一次多项式的值。 三.实验环境 Visual Studio 2013,C++语言 四.实验过程(编写的程序) #include"iostream" using namespace std; void main() { int n; float a[100], x, v[100];//存放系数 cout << "请输入项数:" << endl; cin >> n; cout << "请输入X 的值:" << endl; cin >> x; for (int i = 0; i < n; i++)//对每项系数进行赋值 { cout << "请输入第" << i + 1 << "项的系数:" << endl; cin >> a[i]; } v[0] = a[0];//秦九昭算法第一次赋值 for (int j = 1; j< n;j++)//开始秦九昭算法的循环 v[j] = v[j-1] * x + a[j]; cout << "当x=" << x <<"时,f(x)="<< v[n-1] <

人教版高中数学必修三(教案)1.3 秦九韶算法

第二课时 1.3.2 算法案例---秦九韶算法 教学要求:了解秦九韶算法的计算过程,并理解利用秦九韶算法可以 减少计算次数、提高计算效率的实质;理解数学算法与计算机算法的 区别,理解计算机对数学的辅助作用. 教学重点:秦九韶算法的特点及其程序设计. 教学难点:秦九韶算法的先进性理解及其程序设计. 教学过程: 一、复习准备: 1. 分别用辗转相除法和更相减损术求出两个正数623和1513的最大 公约数. 2. 设计一个求多项式5432 x=时的值的 ()254367 =--+-+当5 f x x x x x x 算法. (学生自己提出一般的解决方案:将5 x=代入多项式进行计算 即可) 提问:上述算法在计算时共用了多少次乘法运算?多少次加法运算? 此方案有何优缺点?(上述算法一共做了5+4+3+2+1=15次乘法 运算,5次加法运算. 优点是简单、易懂;缺点是不通用,不能解决 任意多项式的求值问题,而且计算效率不高.) 二、讲授新课: 1. 教学秦九韶算法: ①提问:在计算x的幂值时,可以利用前面的计算结果,以减少计 算量,即先计算2x,然后依次计算2x x?,2() ??,2 x x x ???的值, x x x x (()) 这样计算上述多项式的值,一共需要多少次乘法,多少次加法?(上 述算法一共做了4次乘法运算,5次加法运算) ②结论:第二种做法与第一种做法相比,乘法的运算次数减少了, 因而能提高运算效率,而且对于计算机来说,做一次乘法所需的运算 时间比做一次加法要长得多,因此第二种做法能更快地得到结果. ③更有效的一种算法是: 将多项式变形为: , 5432 =--+-+= ()254367 f x x x x x x 依次计算2555 ?-=, ?+=,10856534 ?-=,55421 ?-=,2153108 ?+= 534572677 故(5)2677 f=. ――这种算法就是“秦九韶算法”. (注意变形,强 调格式) ④练习:用秦九韶算法求多项式432 x=时的 =+-++当4 f x x x x x ()2351 值.

《算法案例:秦九韶算法》教学教案

秦九韶算法 学习目标 1.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质。 2.掌握数据排序的原理能使用直接排序法与冒泡排序法给一组数据排序,进而能设计冒泡排序法的程序框图及程序,理解数学算法与计算机算法的区别,理解计算机对数学的辅助作用。 学习重难点 重点:1.秦九韶算法的特点 2.两种排序法的排序步骤及计算机程序设计 难点:1.秦九韶算法的先进性理解 2.排序法的计算机程序设计 学法与学习用具 学法:1.探究秦九韶算法对比一般计算方法中计算次数的改变,体会科学的计算。 2.模仿排序法中数字排序的步骤,理解计算机计算的一般步骤,领会数学计算在计算机上实施的要求。 学习用具:电脑,计算器,图形计算器 学习设想 (一)创设情景,揭示课题 我们已经学过了多项式的计算,下面我们计算一下多项式 1)(2345+++++=x x x x x x f 当5=x 时的值,并统计所做的计算的种类及计算次数。 根据我们的计算统计可以得出我们共需要10次乘法运算,5次加法运算。 我们把多项式变形为:1)))1(1(1()(2+++++=x x x x x x f 再统计一下计算当5=x 时的值时需要的计算次数,可以得出仅需4次乘法和5次加法运算即可得出结果。显然少了6次乘法运算。这种算法就叫秦九韶算法。 (二)研探新知

1.秦九韶计算多项式的方法 01210 123120 1322110 12211)))((())(()()(a a x a x a x a a x a x a x a x a a x a x a x a x a a x a x a x a x a x f n n n n n n n n n n n n n n n n n n n +++++==+++++=+++++=+++++=-------------- 例1 已知一个5次多项式为8.07.16.25.325)(2345-+-++=x x x x x x f 用秦九韶算法求这个多项式当5=x 时的值。 解:略 思考:(1)例1计算时需要多少次乘法计算?多少次加法计算? (2)在利用秦九韶算法计算n 次多项式当0x x =时需要多少次乘法计算和多少次加法计算? 练习:利用秦九韶算法计算15.033.016.041.083.0)(2345+++++=x x x x x x f 当5=x 时的值,并统计需要多少次乘法计算和多少次加法计算? 例2 设计利用秦九韶算法计算5次多项式 0122334455)(a x a x a x a x a x a x f +++++=当0x x =时的值的程序框图。 解:程序框图如下:

必修3-1-9 秦九韶算法

秦九韶算法 编号:必修3-1-9 内容:P37~39 学习目标:理解秦九韶算法,能够利用秦九韶算法求多项式函数的值,通过秦九韶算法案例的学习,进一步体会算法思想. 学习重点:秦九韶算法求多项式函数的值. 导学过程: 一.复习回忆: 1.辗转相除法:m=n×q+r ,(0≤r<n) 被除数和除数的最大公约数也是除数和余数的最大公约数. gcd(m,n)=gcd(n,r) 2.更相减损术: a-b=c,(a>b) 被减数与减数的最大公约数也是减数与差的最大公约数. gcd(a,b)=gcd(b,c) 3.辗转相除法和更相减损术,是求两个正整数的最大公约数的优秀算法,我们将算法转化为程序后,就可以由计算机来执行运算,实现了古代数学与现代信息技术的完美结合. 二.动手实践: 例1 例1.已知函数f(x)=8x7+5x6+3x4+2x+1, (1)求f(-1); (2)求f(2). 解:(1)f(-1)=8×(-1)7+5×(-1)6+3×(-1)4+2×(-1)+1 =-8+5+3-2+1=-1. (2) ∵f(x)=8x7+5x6+0.x5+3x4+0.x3+0.x2+2x1+1.x0 ∴f(x)=((((((8x+5)x+0)x+3)x+0)x+0)x+2)x+1 记v0=8,v1=8x+5,则 v1=v0x+5=8×2+5=21, v2=v1x+0=21×2+0=42, v3=v2x+3=42×2+3=87, v4=v3x+0=87×2+0=174, v5=v4x+0=174×2+0=348, v6=v5x+2=348×2+2=698, v7=v6x+1=698×2+1=1397, 故f(2)=v7=1397. 小结:求多项式函数的值: (1)缺项添零;(2)依次提公因式;(3)由内向外逐层计算. 三.自主学习: P37-39 四.理解学习: P37-39秦九韶算法 1.把多项式函数该写成一次式的形式: f(x)=a n x n+a n-1x n-1+…+a1x+a0=(a n x n-1+a n-1x n-2+…+a2x+a1)x+a0 =((a n x n-2+a n-1x n-3+…+a2)x+a1)x+a0=……… =(…((a n x+a n-1)x+a n-2)x+…+a1)x+a0. 2.对应f(x) =(…((a n x+a n-1)x+a n-2)x+…+a1)x+a0,由内向外逐层计算一次多项式的值, 其算法步骤为: 第一步,计算v1=a n x+a n-1. 第二步,计算v2=v1x+a n-2. 第三步,计算v3=v2x+a n-3. …第n步,计算v n=v n-1x+a0. 3.秦九韶算法:P37-38 上述求多项式函数值的算法称为秦九韶算法.该算法大大提高了运算效率. 五.理解学习: P38思考 用秦九韶算法求n次多项式f(x)=a n x n+a n-1x n-1+…+a1x+a0,当x=x0时的值, 需要多少次乘法运算?多少次加法运算? 秦九韶算法把运算次数由至多 2)1 ( n n次乘法运算和n次加法运算,减少为至多n次乘法运算和n次加法运算,大大提高了运算效率.

秦九韶算法及其例题

秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法。在西方被称作霍纳算法(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运算时间。

第2课时案例2秦九韶算法

第2课时案例2 秦九韶算法 导入新课 思路1(情境导入) 大家都喜欢吃苹果吧,我们吃苹果都是从外到里一口一口的吃,而虫子却是先钻到苹果里面从里到外一口一口的吃,由此看来处理同一个问题的方法多种多样.怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值呢?方法也是多种多样的,今天我们开始学习秦九韶算法. 推进新课 新知探究 提出问题 (1)求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值有哪些方法?比较它们的特点. (2)什么是秦九韶算法? (3)怎样评价一个算法的好坏? 讨论结果: (1)怎样求多项式f(x)=x5+x4+x3+x2+x+1当x=5时的值呢? 一个自然的做法就是把5代入多项式f(x),计算各项的值,然后把它们加起来,这时,我们一共做了1+2+3+4=10次乘法运算,5次加法运算. 另一种做法是先计算x2的值,然后依次计算x2·x,(x2·x)·x,((x2·x)·x)·x的值,这样每次都可以利用上一次计算的结果,这时,我们一共做了4次乘法运算,5次加法运算. 第二种做法与第一种做法相比,乘法的运算次数减少了,因而能够提高运算效率,对于计算机来说,做一次乘法运算所用的时间比做一次加法运算要长得多,所以采用第二种做法,计算机能更快地得到结果. (2)上面问题有没有更有效的算法呢?我国南宋时期的数学家秦九韶(约1202~1261)在他的著作《数书九章》中提出了下面的算法: 把一个n次多项式f(x)=a n x n+a n-1x n-1+…+a1x+a0改写成如下形式: f(x)=a n x n+a n-1x n-1+…+a1x+a0 =(a n x n-1+a n-1x n-2+…+a1)x+ a0 =((a n x n-2+a n-1x n-3+…+a2)x+a1)x+a0 =… =(…((a n x+a n-1)x+a n-2)x+…+a1)x+a0. 求多项式的值时,首先计算最内层括号内一次多项式的值,即 v1=a n x+a n-1, 然后由内向外逐层计算一次多项式的值,即 v2=v1x+a n-2, v3=v2x+a n-3, … v n=v n-1x+a0, 这样,求n次多项式f(x)的值就转化为求n个一次多项式的值. 上述方法称为秦九韶算法.直到今天,这种算法仍是多项式求值比较先进的算法. (3)计算机的一个很重要的特点就是运算速度快,但即便如此,算法好坏的一个重要标志仍然是运算的次数.如果一个算法从理论上需要超出计算机允许范围内的运算次数,那么这样的算法就只能是一个理论的算法. 应用示例 例1 已知一个5次多项式为f(x)=5x5+2x4+3.5x3-2.6x2+1.7x-0.8, 用秦九韶算法求这个多项式当x=5时的值. 解:根据秦九韶算法,把多项式改写成如下形式: f(x)=((((5x+2)x+3.5)x-2.6)x+1.7)x-0.8, 按照从内到外的顺序,依次计算一次多项式当x=5时的值: v0=5; v1=5×5+2=27; v2=27×5+3.5=138.5; v3=138.5×5-2.6=689.9; v4=689.9×5+1.7=3 451.2;

算法案例---秦九韶算法

§1.3算法案例---秦九韶算法 高二数学组 梅 杰 一.教学目标 1.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质; 2.能利用秦九韶算法进行一些多项式的计算,能用循环结构表示算法步骤。 二.教学重难点 1.理解秦九韶算法体现的思想; 2.用循环结构表示算法步骤。 三.教学过程 (一)创设情景,揭示课题 问题1 :请同学们设计一个算法,计算8.07.16.25.324)(2345-+-++=x x x x x x f 当5=x 时的值。 学生可能会提出两种做法: 做法一:把5代入多项式的每一项,计算每一项的值,然后相加; 做法二:先计算x 的幂,可以利用前面的计算结果,以减少计算量,即先计算x 2,然后 依次计算x 2.x,( x 2.x).x,( ( x 2.x).x).x 的值,再各项相加。 结合学生的做法,进行比较点评: ①有哪些优点?哪些不足? ②计算次数各是多少?有哪些计算种类? [做法一有15次乘法运算,5次加法运算;做法二有9次乘法运算,5次加法运算] 对于计算机来说,做一次乘法运算所用时间要比做一次加法要长的多,所以算法好坏的一个重要标志仍然是运算的次数 问题2 :上述问题1还有没有更有效的算法呢? 老师引导学生从因式分解的角度,将多项式变形为: 8.0)7.1)6.2)5.3)24(((()(-+-++=x x x x x x f 思考:从内到外,如果把每一个括号都看成一个常数,那么变形后的式子中有哪些“一次式”?x 的系数依次是什么? 思考:让学生回顾整个计算过程,用此种方法一共进行了多少次乘法、加法运算? 点评:一共进行了5次乘法,5次加法运算,相比较前两种做法,此做法更快、更方便,而且在计算过程中,只与多项式的系数有关。 这种算法就是“秦九韶算法”,在此可以介绍下秦九韶生平。【见附页】 (二)研探新知 问题1:怎样用秦九韶算法求一般的多项式0111)(a x a x a x a x f n n n n ++++=-- 当 x=x 0时的值?

相关文档
最新文档