中国古代数学中的算法案例

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出b 结束
开始
c=a mod b b=c a=b Y
a=input(“a=”); b=input(“b=”); c=modulo(a,b); while c<>0 a=b; b=c; c=modulo(a,b); end b

更相减损术和辗转相除法的主要区别在于: 前者所使用的运算是“减”,后者是“除”。从
例: 已知一个五次多项式为
5 4 3
f ( x) 5x 2 x 3.5x 2.6 x 1.7 x 0.8
2
用秦九韶算法求这个多项式当x = 5的值。 解: 将多项式变形:
f ( x) ((((5 x 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 3451.2 v5 3451.2 5 0.8 17255.2
v5=v4x+7=534×5+7=2677
=(2x4-5x3-4x2+3x-6)x+7 v4=v3x-6=108×5-6=534 =((2x3-5x2-4x+3)x-6)x+7 v3=v2x+3=21×5+3=108 =(((2x2-5x-4)x+3)x-6)x+7 v2=v1x-4=5×5-4=21

刘徽形容他的“割圆术” 说:割之弥细,所失弥少, 割之又割,以至于不可割, 则与圆合体,而无所失矣。 简单来说所谓“割圆 术”,是用圆内接正多边 形的周长去无限逼近圆周 并以此求取圆周率的方法。
按照这样的思路, 刘徽把圆内接正多 边形的面积一直算 到了正3072边形, 并由此而求得了圆 周率 为3.14和 3.1416 这两个近似数值。 这个结果是当时世 界上圆周率计算的 最精确的数据。
更相减损术
简介

更相减损术是出自 《九章算术》的一 种求最大公约数的 算法,它原本是为 约分而设计的。 但它适用于任何需 要求最大公约数的 场合。
如何使用

求98与63的最大公约数。 解:由于63不是偶数,把98和63以大数减小数,并
辗转相减:

98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7
.x-5=2×5-5=5 v =v =((((2x-5)x-4)x+3)x-6)x+7 1 0
V1 V2
v0=2
所以,当x=5时,多项wk.baidu.com的值是2677.
例1:用秦九韶算法求多项式 f(x)=2x5-5x4-4x3+3x2-6x+7当x=5时的值. 解: f(x)=((((2x-5)x-4)x+3)x-6)x+7
阅读下列程序, a=INPUT “x=”; 说明它解决的 n=0 实际问题是什 y=0 么? WHLE n<5 y=y+(n+1)*a∧n n=n+1 END PRINT (%io(2),y)
求多项式 在x=a时的值.
f (x ) = 1 + 2x + 3x 2 + 4x 3 + 5x 4
例:设计求多项式f(x)=2x5-5x4-4x3+3x2-6x+7
当x=5时的值的算法,并写出程序. 程序
x=5 f=2*x^5-5*x^4-4*x^3+3*x^2-6*x+7 PRINT f END
?问:上面算法中,共用了多少次乘法和加法? 有没有稍微高效的算法?
例:求f(x)=2x5-5x4-4x3+3x2-6x+7在x=5时的值。 分析:可以利用前面的计算结果,以减少计算量 2 2 即先计算x ,然后依次计算 x x 的值.
中国古代数学中的算法案例
最大公约数
定 义

如果有一个自然数a能被自然数b整除, 则称a为b的倍数,b为a的约数。几个自 然数公有的约数,叫做这几个自然数的 公约数。公约数中最大的一个公约数, 称为这几个自然数的最大公约数。
求得最大公约数的方法
• 辗转相除法 (欧几里得算法) • 更相减损术 (出自《九章算术》)
算法思想上看,两者并没有本质上的区别,但是在计 算过程中,如果遇到一个数很大,另一个数比较小的 情况,可能要进行很多次减法才能达到一次除法的效 果,所以辗转相除法更好一些。
割圆术
早在我国先秦时期,《墨经》上就已 经给出了圆的定义。我国古代数学经 典《九章算术》在第一章“方田”章 中写到“半周半径相乘得积步”,也 就是我们现在所熟悉的公式。 为了证明这个公式,我国魏晋时期数 学家刘徽写了一篇1800余字的注记, 这篇注记就是数学史上著名的“割圆 术”。
秦九韶(1208年-1261年) 南宋官员、数学家,与李冶、杨辉、 朱世杰并称宋元数学四大家。字道 古,汉族,自称鲁郡(今山东曲阜) 人,生于普州安岳(今属四川)。 精研星象、音律、算术、诗词、弓 剑、营造之学,历任琼州知府、司 农丞,后遭贬,卒于梅州任所,著 作《数书九章》,其中的大衍求一 术、三斜求积术和秦九韶算法是具 有世界意义的重要贡献。
所以,当x = 5时,多项式的值等于17255.2
程序?
开始
输入n,an,x的值
v=an i=n-1
i=i-1 v=vx+ai
i≥0? 否 输出v 结束 输入ai

N =INPUT n=”; A =INPUT“an=”; X =INPUT“x=”; v=a i=n-1 WHILE i>=0 i=PRINT “i=”; a=INPUT ai=”; v=v*x+a i=i-1 END PRINT(io(2),V)
然后由内向外 逐层计算一次 多项式的值, 即
v5=v4x+7=534×5+7=2677
v4=v3x-6=108×5-6=534
v3=v2x+3=21×5+3=108
v2=v1x-4=5×5-4=21
v1=v0x-5=2×5-5=5
v0=2 所以,当x=5时,多项式的值是2677.
《数书九章》——秦九韶算法
( an x
n 1
an1 x
n2
(( an x n2 an1 x n3 a2 ) x a1 ) x a0

((an x an1 ) x an2 ) x a1 ) x a0
f ( x) ((an x an1 ) x an2 ) x a1 ) x a0
要求多项式的值,应该先算最内层的一次多项式的值,即
v1 an x an1
然后,由内到外逐层计算一次多项式的值,即
v2 v1 x an2

v3 v2 x an3 vn vn1 x a0
最后的一 项是什么?
这种将求一个n次多项式f(x)的值转化成求n个一 次多项式的值的方法,称为秦九韶算法。
( x x) x
2
(( x x) x) x
2
?问:上面算法中,共用了多少次乘法和加法 ?问:能否有更好的算法 ,来解决任意多项式 ?
的求值问题?
《数书九章》——秦九韶算法
例1:求f(x)=2x5-5x4-4x3+3x2-6x+7在x=5时的值。
f(x)=2x5-5x4-4x3+3x2-6x+7
设f(x)是一个n次的多项式
f(x)=anxn+an-1xn-1+an-2xn-2+……+a1x+a0.
对该多项式按下面的方式进行改写:
f ( x) an x an1 x
n
n 1
a1 x a
a1 ) x a0
这是怎样的一 种改写方式? 最后的结果是 0 什么?

这是一个辗转相 处的过程……
∴ 3就是288和123的最大公约数。
理论依据
a nb r r a nb
得 a, b 与
b, r
有相同的公约数
第一步:输入两个 正整数a,b(a>b); 输入a,b 第二步:求出a÷b c = a Mod b 的余数r; 第三步:令a=b, b=c,若r≠0,重复第二 步; 第四步:输出最大 c≠0 公约数b. N
辗转相除法
辗转相除法

辗转相除法最早出现 在欧几里得的几何原本 中(大约公元前300 年),所以它是现在仍 在使用的算法中最早出 现的。
欧几里得
如何使用

以求288和123的最大公约数为例,操作如下: S1:288÷123=2……42 S2:123÷42=2……39 S3:42÷39=1……3 S4:39÷3=13
∴98和63的最大公约数等于7。
ab r a br
理论依据
ab r a br
a, b
得 a, b 与
b, r 有相同的公约数
开始 输入a,b
a=a-b Y a≠b N 输出b Y a> b
b=b-a N
结束
程序: a=input(“a=”); b=input(“b=”); while a<>b if a>=b a=a-b; else b=b-a; end end print(%io(2), “两数的最大公约数为:” ,
相关文档
最新文档