当前位置:文档之家› 中国古代数学中的算法案例(上课)

中国古代数学中的算法案例(上课)

• 为了证明这个公式,我国魏晋时期数 学家刘徽写了一篇1800余字的注记, 这篇注记就是数学史上著名的“割圆 术”。
刘徽形容他的“割圆术”
说:割之弥细,所失弥少, 割之又割,以至于不可割, 则与圆合体,而无所失矣。
简单来说所谓“割圆 术”,是用圆内接正多边 形的周长去无限逼近圆周 并以此求取圆周率的方法。
(2) (98,280 ) (98,182 ) (98,84) (14,84) (14,70) (14,56) (14,42) (14,28) (14,14)
开始 输入a,b
a≠b N
输出b
a=a-b
Y Y
b=b-a
N a>b
结束
程序:
a=input(“a=”); b=input(“b=”);
r≠0 N
输出b
r=a mod b b=r a=b
Y
结束
a=input(“a=”); b=input(“b=”); r=modulo(a,b); while r<>0
a=b; b=r; r=modulo(a,b); end b
• 更相减损术和辗转相除法的主要区别在于:
前者所使用的运算是“减”,后者是“除”。
2 78 36 3 39 18 13 6
所以:78和36的最大公约数是2×3=6
思考: 假设a和b的最大公约数p,那么a-b,或 是b-a是否能被p整除?
例如,求78和36的最大公约数: 更相减损术 等值算法
(78,36) → (42,36) → (6,36) → (6,30) → (6,24) → (6,18) → (6,12) → (6,6).
所以:78和36的最大公约数是6
理论依据:由a-b=r → a=b+r,得(a, b) 与(b, r)有相同的公约数.
假设a,b的最大公约数是 p,则a mp,b np, r a b (m n) p 所以p为b, r的约数, 假设q为b, r的最大公约数, b xq, r yq,且q p 所以a b r xq yq (x y)q, 所以a与b的最大公约数为 q,与已知假设矛盾
x=1;
n=2*n;
s=6*sqrt(3)/4;
x=sqrt((x/2)^2+(1-
for i=1 : 1 : 5
h)^2);
h=sqrt(1-(x/2)^2); end
print(%io(2), n, s)
秦九韶(1208年-1261年)南宋 官员、数学家,与李冶、杨辉、 朱世杰并称宋元数学四大家。字 道古,汉族,自称鲁郡(今山东 曲阜)人,生于普州安岳(今属 四川)。精研星象、音律、算术、 诗词、弓剑、营造之学,历任琼 州知府、司农丞,后遭贬,卒于 梅州任所,著作《数书九章》, 其中的大衍求一术、三斜求积术 和秦九韶算法是具有世界意义的 重要贡献。
(2016全国卷8)中国古代有计算多 项式值的秦九韶算法,右图是实现 该算法的程序框图.执行该程序框 图,若输入的x=2,n=2,依次输 入的a为2,2,5,则输出的(C )
(A)7 (B)12 (C)17 (D)34
f (x) (2x 2)x 5
(2015全国卷2(8))右边程序框图的算法思
∴ f(8) =173568
5次加法,5次乘法
怎样用程序框图表示秦九韶算法 ?
观察秦九韶算法的数学模型,计算vk时 要用到vk-1的值,若令v0=an,我们可以得 到下面的递推公式: v0=an vk=vk-1·x+an-k (k=1, 2, …, n)
这是一个在秦九韶算法中反复执行的 步骤,可以用循环结构来实现。
简介
• 更相减损术是出自 《九章算术》的一 种求最大公约数的 算法,它原本是为 约分而设计的。 但它适用于任何需 要求最大公约数的 场合。
例1 :用等值算法(更相减损术)求下列 两数的最大公约数。 (1)225,135; (2)98,280.
答案: (1) 45;
(2) 14.
(1) (225,135) (90,135) (90,45) (45,45)
从内到外,如果把每一个括号都看成一个 常数,那么变形后的式子中有哪些“一次 式”?x的系数依次是什么?
计算的过程可以列表表示为: f(x) =((((2x-5)x-4)x+3)x-6)x+7, x=5
v0=2 v1=v0x-5=2×5-5=5 秦九韶算法 v2=v1x-4=5×5-4=21 v3=v2x+3=21×5+3=108 v4=v3x-6=108×5-6=534 v5=v4x+7=534×5+7=2677
路源于我国古代数学名著《九章算术》中的 “更相减损术”。执行该程序框图,若输入a,b 分(别为A)140,18,则输出的B a=
(B)2 (C)4 (D)14
.秦九韶是我国南宋时期的数学 家,普州(现四川省安岳县)人, 他在所著的《数书九章》中提出 的多项式求值的秦九韶算法,至 今仍是比较先进的算法.如图所 示的程序框图给出了利用秦九韶 算法求某多项式值的一个实 例.若输入 n ,x 的值分别为
中国古代数学中的算法案例
1. 求两个正整数最大公约数的算法
定义
• 如果有一个自然数a能被自然数b整除, 则称a为b的倍数,b为a的约数。几个 自然数公有的约数,叫做这几个自然数 的公约数。公约数中最大的一个公约数, 称为这几个自然数的最大公约数。
1. 求两个正整数最大公约数的算法
问题:求78和36的最大公约数。
∴ f(5) =2677
总结:这样共作了5次加法,5次乘法.
《数书九章》——秦九韶算法
设 f (x) 是一个n 次的多项式
f (x) an xn an1xn1 a1x a0
对该多项式按下面的方式进行改写: f (x) an xn an1xn1 a1x a0
第一,从半径为1的圆内接正六边形开始, 计算它的面积S6; 第二,逐步加倍圆内接正多边形的边数,分 别计算圆内接正十二边形,正二十四边形, 正四十八边形,…的面积,到一定的边数 (设为2n)为止,得到一列递增的数,
S6,S12,S24,S48,…,S2n. 第三,S2n近似等于圆面积。
下面的关键是找出正n边形的面积与正2n 边形的面积之间的关系,以便递推。
gxn
g(1

hn )
(n 6)
正2n边形的边长为 x2n
(
xn 2
)2

(1
hn
)2
于是由 S6 6
3 4
求得S12=3;
S24≈3.105828;……
按照这样的思路,刘徽把圆 内接正多边形的面积一直算 到了正3072边形,并由此而 求得了圆周率 为3.14和 3.1416 这两个近似数值。这个结果 是当时世界上圆周率计算的 最精确的数据。
(an xn1 an1xn2 a1)x a0
((an xn2 an1xn3 a2 )x a1)x a0

( (an x an1)x an2 )x a1)x a0
令vk ( (an x an1)x an(k1) )x ank
设圆的半径为1,正n边形
的边长AB为xn,弦心距
OG为hn;面积为Sn,根据
勾股定理,得:
hn
1

xn 2
2

,
x2n

xn 2
2

1
hn
2
(n 6)
容易知道x6=1,
正2n边形的面积等于正n
边形的面积加上n个等腰三
角形的面积,即
S2n

Sn

ng1 2
递推公式为vk
v0 an 其中,k vk1x ank
1,2,3
n
n(1 n)
直接计算多项式乘法 2 次,
加法 n 次?
用秦九韶算法计算多项式
乘法 n 次,加法 n 次?
练习:用秦九韶算法求多项式f(x)=5x5+2x4+3x3+x-8当 x=8时的值,并回答需要几次乘法?几次加法?
解:f(x)= 5x5+2x4+3x3+0x2+x-8
f(x) =((((5x+2)x+3)x+0)x+1)x-8, x=8
v0=5 v1=v0x+2=5×8+2=42
v2=v1x+3=42×8+3=339
v3=v2x+0=339×8+0=2712
v4=v3x+1=2712×8+1=21697
v5=v4x-8=21697×8-8=173568
4,3,则输出的v的值为( C )
A.20 B.61 C.183 D.543
f (x) ((( x 3)x 2)x 1)x x4 3x3 2x2 x
这种计算方法,称之为秦九韶方法。直到今
天,这种算法仍是世界上多项式求值的最先进的 算法。其最大的意义在于将求n次多项式的值转化 为求n个一次多项式的值。在人工计算时,利用秦 九韶算法和其中的系数表可以大幅简化运算;对 于计算机程序算法而言,加法比乘法的计算效率 要高很多,所以此算法极大地缩短了CPU运算时 间。
从算法思想上看,两者并没有本质上的区别,但是在 计算过程中,如果遇到一个数很大,另一个数比较小 的情况,可能要进行很多次减法才能达到一次除法的
效果,所以辗转相除法更好一些。
2.割圆术
• 早在我国先秦时期,《墨经》上就已 经给出了圆的定义。我国古代数学经 典《九章算术》在第一章“方田”章 中写到“半周半径相乘得积步”,也 就是我们现在所熟悉的面积公式。
相关主题