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

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

3. 求多项式的值的算法 求多项式f(x)=2x5-5x4-4x3+3x2-6x+7当 x=5时的值的算法。 一般的解决方案 直接计算
2×55-5×54-4×53+3×52-6×5+7的值。 上述算法一共做了解15次乘法运算,5
次加法运算. 有没有更高效的算法?
用提取公因式的方法多项式变形为
f(x)= 2x5-5x4-4x3+3x2-6x+7 =x4(2x-5)-4x3+3x2-6x+7 =x3((2x-5)x-4)+3x2-6x+7 ………… =((((2x-5)x-4)x+3)x-6)x+7
x2n
(xn)2 2
(1hn)2
于是由 S 6 6
3 4
求得S12=3;
S24≈3.105828;……
按照这样的思路,刘徽把圆 内接正多边形的面积一直算 到了正3072边形,并由此而 求得了圆周率 为3.14和 3.1416 这两个近似数值。这个结果 是当时世界上圆周率计算的 最精确的数据。
设圆的半径为1,正n边形
的边长AB为xn,弦心距
OG为hn;面积为Sn,根据
勾股定理,得:
hn
1
xn 2
2
,
x2n x2n21hn2
(n6)
容易知道x6=1,
正2n边形的面积等于正n
边形的面积加上n个等腰三
角形的面积,即
1 S2nSnng 2g xng (1hn) (n6)
正2n边形的边长为
中国古代数学中的算法案例
1. 求两个正整数最大公约数的算法
定义
•如果有一个自然数a能被自然数b整除, 则称a为b的倍数,b为a的约数。几个自 然数公有的约数,叫做这几个自然数的公 约数。公约数中最大的一个公约数,称为 这几个自然数的最大公约数。
1. 求两个正整数最大公约数的算法
问题:求78和36的最大公约数。
祖冲之(429~500) 南北朝时 期杰出的数学家和天文学家,在 数学方面,祖冲之推算出圆周率 π的不足近似值(朒数) 3.1415926和过剩近似值(盈数) 3.1415927,指出π的真值在盈、 朒两限之间,即3.1415926<π<
3.1415927
程序:
n=6;
s=s+n*x*(1-h)/2;
∴ f(8) =173568
5次加法,5次乘法
怎样用程序框图表示秦九韶算法 ?
观察秦九韶算法的数学模型,计算vk时 要用到vk-1的值,若令v0=an,我们可以得 到下面的递推公式: v0=an vk=vk-1·x+an-k (k=1, 2, …, n)
这是一个在秦九韶算法中反复执行的 步骤,可以用循环结构来实现。
练习:2求 8和 812的 3 最大公约数 ( 2 , 1 8 ) 3 ( 8 1 , 3 4 2 ) 2 ( 4 3 , 3 ) 2 9 ( 3 , 3 )9
第一步:输入两个 正整数a,b(a>b);
第二步:求出a÷b 的余数r;
第三步:若r≠0,令 a=b,b=r,,重复第 二步;若r=0,执行第 四步
(B)2 (C)4 (D)14
.秦九韶是我国南宋时期的数学 家,普州(现四川省安岳县)人, 他在所著的《数书九章》中提出 的多项式求值的秦九韶算法,至 今仍是比较先进的算法.如图所 示的程序框图给出了利用秦九韶 算法求某多项式值的一个实 例.若输入 n ,x 的值分别为
4,3,则输出的v的值为( C )
A.20 B.61 C.183 D.543
f( x ) (x (3 ) x ( 2 ) x 1 ) x x 4 3 x 3 2 x 2 x
这种计算方法,称之为秦九韶方法。直到今
天,这种算法仍是世界上多项式求值的最先进的 算法。其最大的意义在于将求n次多项式的值转化 为求n个一次多项式的值。在人工计算时,利用秦 九韶算法和其中的系数表可以大幅简化运算;对 于计算机程序算法而言,加法比乘法的计算效率 要高很多,所以此算法极大地缩短了CPU运算时 间。
递推 vk 公 v v0 k 1x 式 a nan k其 为中 k1 ,2,3 , n
n (1 n )
直接计算多项式乘法 2 次,
加法 n 次?
用秦九韶算法计算多项式
乘法 n 次,加法 n 次?
练习:用秦九韶算法求多项式f(x)=5x5+2x4+3x3+x-8当 x=8时的值,并回答需要几次乘法?几次加法?
(2016全国卷8)中国古代有计算多 项式值的秦九韶算法,右图是实现 该算法的程序框图.执行该程序框 图,若输入的x=2,n=2,依次输 入的a为2,2,5,则输出的(C )
(A)7 (B)12 (C)17 (D)34
f(x)(2x2)x5
(2015全国卷2(8))右边程序框图的算法思
路源于我国古代数学名著《九章算术》中的 “更相减损术”。执行该程序框图,若输入a,b 分(别为A)140,18,则输出的B a=
(2 )(9,2 8)8 (9 0,1 8 )8 (9 2,百度文库 8 ) 4(1,8 4 )4 (1,7 4 ) 0(1,5 4 ) 6(1,4 4 ) 2(1,2 4 ) 8(1,1 4 )4
开始 输入a,b
a≠b N
输出b
a=a-b
Y Y
b=b-a
N a>b
结束
程序:
a=input(“a=”); b=input(“b=”);
所以:78和36的最大公约数是6
理论依据:由a-b=r → a=b+r,得(a, b) 与(b, r)有相同的公约数.
假 a ,b 设 的最大 p ,则 a 公 m ,b 约 p n,r p 数 a b 是 (m n )p 所以p为b,r的约数 , 假q设 为 b,r的最大b公 x,q 约 ry数 ,q且 q , p 所 a b 以 r x q y q ( x y ) q , 所以 a与b的最大公q约 ,与数 已为 知假设矛盾
第四步:输出最大 公约数b.
开始 输入a,b r = a Mod 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
• 更相减损术和辗转相除法的主要区别在于:
while a<>b if a>b a=a-b;
else b=b-a;
end end print(%io(2), b, “两数的最大公约数为:” )
• 辗转相除法最早出现 在欧几里得的几何原本 中(大约公元前300年)
欧几里得
辗转相除法
(2)98,280.
(98,280)→(98,84) →(14,84)
∴ f(5) =2677
总结:这样共作了5次加法,5次乘法.
《数书九章》——秦九韶算法 设f (x) 是一个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
• 更相减损术是出自 《九章算术》的一 种求最大公约数的 算法,它原本是为 约分而设计的。
但它适用于任何需 要求最大公约数的 场合。
例1 :用等值算法(更相减损术)求下列 两数的最大公约数。 (1)225,135; (2)98,280.
答案: (1) 45;
(2) 14.
( 1 )( 2 , 1 2 ) 3 ( 9 5 , 1 5 ) 0 3 ( 9 , 4 5 ) 0 ( 5 4 , 4 ) 5 5
假a,设 b的最大p,公 则 a约 m,b p 数 n,p a是 b tr 所 r a 以 b m t n p p (m tn )p ,t所 p 为 b 以 ,r 的,约 假q设 为 b,r的最大b公 x,q 约 ry数 ,q且 q , p 所 a b 以 r t x q y ( q t x y t ) q , 所以 a与b的最大公q约 ,与数 已为 知假设矛盾
从内到外,如果把每一个括号都看成一个 常数,那么变形后的式子中有哪些“一次 式”?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
• 为了证明这个公式,我国魏晋时期数 学家刘徽写了一篇1800余字的注记, 这篇注记就是数学史上著名的“割圆 术”。
刘徽形容他的“割圆术”
说:割之弥细,所失弥少, 割之又割,以至于不可割, 则与圆合体,而无所失矣。
简单来说所谓“割圆 术”,是用圆内接正多边 形的周长去无限逼近圆周 并以此求取圆周率的方法。
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年)南宋 官员、数学家,与李冶、杨辉、 朱世杰并称宋元数学四大家。字 道古,汉族,自称鲁郡(今山东 曲阜)人,生于普州安岳(今属 四川)。精研星象、音律、算术、 诗词、弓剑、营造之学,历任琼 州知府、司农丞,后遭贬,卒于 梅州任所,著作《数书九章》, 其中的大衍求一术、三斜求积术 和秦九韶算法是具有世界意义的 重要贡献。
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).
第一,从半径为1的圆内接正六边形开始, 计算它的面积S6; 第二,逐步加倍圆内接正多边形的边数,分 别计算圆内接正十二边形,正二十四边形, 正四十八边形,…的面积,到一定的边数 (设为2n)为止,得到一列递增的数,
S6,S12,S24,S48,…,S2n. 第三,S2n近似等于圆面积。
下面的关键是找出正n边形的面积与正2n 边形的面积之间的关系,以便递推。
开始 输入x,n;a0,a1,a2,…,an
k=n, v=an
k>0


k=k-1
v=v*x +ak
输出S 结束
Scilab语言:
x=input("x="); n=input("n="); result=input("The first xishu"); for i=1 : 1 : n
a=input("xishu: "); result=result*x+a; end disp(result,"The result is:");
( 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 k ( ( a n x a n 1 ) x a n ( k 1 ) ) x a n k
前者所使用的运算是“减”,后者是“除”。
从算法思想上看,两者并没有本质上的区别,但是在 计算过程中,如果遇到一个数很大,另一个数比较小 的情况,可能要进行很多次减法才能达到一次除法的
效果,所以辗转相除法更好一些。
2.割圆术
• 早在我国先秦时期,《墨经》上就已 经给出了圆的定义。我国古代数学经 典《九章算术》在第一章“方田”章 中写到“半周半径相乘得积步”,也 就是我们现在所熟悉的面积公式。
解: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
相关文档
最新文档