用Python来实现秦九韶算法_python秦九韶算法例题解析

liftword5个月前 (02-13)技术文章40

秦九韶介绍

秦九韶是我国古代数学家的杰出代表之一,他与李冶、杨辉、朱世杰并称宋元数学四大家。他的《数书九章》概括了宋元时期中国传统数学的主要成就,尤其是系统总结和发展了高次方程的数值解法与一次同余问题的解法,提出了相当完备的“正负开方术”和“大衍求一术”。对数学发展产生了广泛的影响。——《百度百科》

秦九韶聪敏勤学,宋绍定四年(公元1231),秦九韶考中进士,先后担任县尉、通判、参议官、州守等职。先后在湖北、安徽、江苏、浙江等地做官。南宋理宗景定元年(公元1260年)出任梅州太守,翌年卒于梅州。据史书记载,他“性机巧,星象、音律、算术以至营造无不精究”,还尝从李梅亭学诗词。他在政务之余,以数学为主线进行潜心钻研,且应用范围广泛:天文历法、水利水文、建筑、测绘、农耕、军事、商业金融等方面。

秦九韶算法

秦九韶算法一种多项式简化算法。该算法通过不断累乘和累加来减少求多项式值的运算次数,具有较高的效率和实用性(在西方被称作霍纳算法,是以英国数学家霍纳命名)。

该算法是一种将一元n次多项式的求值问题转化为n个一次式的算法。其大大简化了计算过程,即使在现代,利用计算机解决多项式的求值问题时,秦九韶算法依然是比较先进的算法。

怎样求多项式呢,例如:

求当x=5时的值是多少?

一个直接的做法,就是把5带入多项式

,计算各项的值,然后把他们都加起来,我们看一下需要多少次操作:

4次乘法运算

3次乘法运算

2次乘法运算

1次乘法运算

总共需要4+3+1+1=10次乘法运算,再把各项加起来,需要5次加法运算

那有没有更好的算法呢?

秦九韶在他的著作《数书九章》中提出了下面的算法:

把一个n次多项式改写成如下形式:

从推导结果来看,其过程是将高次方程转化为低次方程,然后逐步求解。

求多项式的值时,首先计算最内层括号内一次多项式的值(由内而外),即

...


这样,求n次多项式f(x)的值就转化为求n个一次多项式的值,秦九韶算法的核心思想是利用累加乘法来计算多项式


举例说明

假设有一个多项式 ,要计算在 x = 2 处的值。

使用秦九韶算法进行计算的步骤如下:

初始化 result = 0,从最高次幂开始遍历系数

第一步:result = result * 2 + 3 = 0 * 2 + 3 = 3

第二步:result = result * 2 + 2 = 3 * 2 + 2 = 8

第三步:result = result * 2 + 1 = 8 * 2 + 1 = 17

第四步:result = result * 2 + 5 = 17 * 2 + 5 = 39


我们每一步都利用了上一步的计算结果,有效地减少了多余的计算。

最终得到结果 result = 39,即多项式 f(x) 在 x = 2 处的值为 39。


Python语言实现

现在我们用Python语言来实现秦九韶算法计算多项式

, x=2的值

# 定义秦九韶算法函数
# coefficients:多项式系数列表
# x:代入参数
def qinjiushao(coefficients, x):
    result = 0
    for coeff in coefficients:
        result  = result * x + coeff 
    return result


# f(x) = 3x^5 -2x^4 + 3x^3 + x^2 -x +1
# 多项式系数列表
coefficients = [3, -2, 3, 1, -1, 1]  
x = 2  # 代入的值

result = qinjiushao(coefficients, x)
# 输出结果
print(result)   


输出结果

91


秦九韶算法的其他应用

多项式算法在很多领域有这广泛的应用,实际工作中,因为数据范围或者精度问题,有一种常用方法就是把数值类型以字符串的形式保存,这就涉及到字符串和数值类型的转换,比如字符串转换为整数的问题就可以看做成多项式的计算,利用秦九韶算法可以更加高效完成任务,还有其他领域:

  1. 工程计算:在工程计算中,经常需要计算多项式在给定点处的值。例如,在求解动力学方程时,需要计算多项式在给定时刻的值;在求解电路问题时,需要计算多项式在给定电压或电流下的值。
  2. 科学计算:在科学计算中,也经常需要计算多项式在给定点处的值。例如,在求解天体运动问题时,需要计算多项式在给定时间的值;在求解数值积分问题时,需要计算多项式在给定区间的值。
  3. 数学分析:在数学分析中,秦九韶算法可以用来计算多项式的导数和积分。
  4. 在计算机图形学中,秦九韶算法可以用来计算多项式曲线或曲面在给定点处的值。在图像处理中,秦九韶算法可以用来计算图像的灰度或颜色值。

总而言之,秦九韶算法是一种通用的多项式计算算法,在工程、科学、数学等领域都有着广泛的应用。

相关文章

数学之美:神奇的杨辉三角形,比西方早近600年,致敬古代数学家

小朋友们好,大朋友们好!我是猫妹,一名爱上Python编程的小学生。和猫妹学Python,一起趣味学编程。今日主题什么是杨辉三角形?杨辉三角形有什么规律?中国古代数学家杨辉。西方科学家帕斯卡。杨辉三角...

万字长文,全面解读小孩学编程?_小孩子学编程到底是干嘛的

呼声有时我们也会看到很多报道。例如2012年,日本在中小学中普及编程教育科目。2014年,英国教育大纲规定计算机编程是5-16岁儿童必修课程。2015年,美国政府投资40亿美元开展少儿编程教育,呼吁全...

100个python小例子(练习题)_python 简单例子

推荐阅读:最全的 NumPy 教程Python 入门必备知识100 个 Python 小例子Python 经典实用练手项目100+ Python 爬虫实战项目怎么自学python,大概要多久?哪些 P...