实验1 秦九韶算法
(贺俊杰 2020022060)
一、实验目的
本次实验以完成秦九韶算法为契机,深入了解高效计算多项式结果的数值计算方法,同时加深对Matlab 环境的熟悉。
二、算法分析
对于n 次多项式:
1110()n n n n n P x a x a x a x a −−=++
+ (1)
可改写为嵌套形式:
1210()((()))n n n n p x a x a x a x a x a −−=+++
+ (2)
在(1)式中,n i n i a x −−需要计算n i −次乘法运算(其中0,1,
1i n =−)和n 次加法运算,共需要进行
(1)2
n n
+次乘法运算和n 次加法运算。 而在(2)式中,仅需要经过n 次乘法运算和n 次加法运算,能够极大地减少运算次数,提高运算
效率。
根据程序设计地习惯,把公式(2)写成下来等价的地推形式:
(1,2,
)
n n k y a y y x a k n −⇐⎧⎨
⇐⋅+=⎩ (3)
三、算法代码实现
秦九韶算法Matlab 实现如下:
Qinjiu.m 文件
其中a 为多项式系数从高次向低次排列数组(缺项系数为0),n 为多项式多高次数,x 为变量。
四、实验结果
1、 设543()851f x x x x =++−,计算()f x 在1,1.5,2.1,3x =上的值。 编写run_qinjiu.m 代码文件如下所示:
run_qinjiu.m 文件
取多项式系数a = [8, 5, 1, 0, 0, -1],运行结果如下图所示:
图1 run_qinjiu.m 运行结果
由图可知算法能正确运行。
韶2、 利用Matlab 库中的horner 命令,可直接把多项式变为如(2)
式的嵌套形式。 编写run_horner.m 代码文件如下所示:
程序运行结果如下图所示:
从图中可看出,horner库函数可正确地将多项式转为嵌套形式。
发布评论