数学算法课件.ppt

上传人:牧羊曲112 文档编号:2157226 上传时间:2023-01-21 格式:PPT 页数:32 大小:913.50KB
返回 下载 相关 举报
数学算法课件.ppt_第1页
第1页 / 共32页
数学算法课件.ppt_第2页
第2页 / 共32页
数学算法课件.ppt_第3页
第3页 / 共32页
数学算法课件.ppt_第4页
第4页 / 共32页
数学算法课件.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数学算法课件.ppt》由会员分享,可在线阅读,更多相关《数学算法课件.ppt(32页珍藏版)》请在三一办公上搜索。

1、2020年9月28日,1,第一章 算法初步 1.3 算法案例,2020年9月28日,2,例:求下面两个正整数的最大公约数:,(1)求25和35的最大公约数(2)求49和63的最大公约数,所以,25和35的最大公约数为5,所以,49和63的最大公约数为7,思考:除了用这种方法外还有没有其它方法?,例:如何算出8251和6105的最大公约数?,辗转相除法与更相减损术,2020年9月28日,3,一、辗转相除法(欧几里得算法),1、定义:所谓辗转相除法,就是对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原

2、来两个数的最大公约数。,2、步骤(以求8251和6105的最大公约数的过程为例),第一步 用两数中较大的数除以较小的数,求得商和余数8251=61051+2146,结论:8251和6105的公约数就是6105和2146的公约数,求8251和6105的最大公约数,只要求出6105和2146的公约数就可以了。,为什么呢?,第二步 对6105和2146重复第一步的做法6105=21462+1813同理6105和2146的最大公约数也是2146和1813的最大公约数。,2020年9月28日,4,完整的过程,8251=61051+2146,6105=21462+1813,2146=18131+333,1

3、813=3335+148,333=1482+37,148=374+0,例:用辗转相除法求225和135的最大公约数,225=1351+90,135=901+45,90=452,显然37是148和37的最大公约数,也就是8251和6105的最大公约数,显然45是90和45的最大公约数,也就是225和135的最大公约数,思考:从上面的两个例子中可以看出计算的规律是什么?,S1:用大数除以小数,S2:除数变成被除数,余数变成除数,S3:重复S1,直到余数为0,2020年9月28日,5,辗转相除法是一个反复执行直到余数等于0才停止的步骤,这实际上是一个循环结构。,m=n q r,用程序框图表示出右边的

4、过程,r=m MOD n,m=n,n=r,r=0?,是,否,思考:辗转相除法中的关键步骤是哪种逻辑结构?,2020年9月28日,6,程序框图:,思考:你能把辗转相除法编成一个计算机程序吗?,2020年9月28日,7,程序:,INPUT“m,n=”;m,nDO r=m MOD n m=n n=rLOOP UNTIL r=0PRINT mEND,2020年9月28日,8,1.定义:所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。,二、更相减损术,

5、2、方法:,例:用更相减损术求98与63的最大公约数.,解:由于63不是偶数,把98和63以大数减小数,并辗转相减,9863356335283528728721217141477,所以,98和63的最大公约数等于7,2020年9月28日,9,INPUT m,nIF mn IF dn THEN m=d,ELSE m=n n=d END IF d=m-nWENDd=2 k*dPRINT dEND,思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?,2020年9月28日,10,(1)设计求多项式,当x=5时的值的算法,并写出程序。(2)有没有更高效的算法?能否探求更好的算法,来解决任意多

6、项式的求解问题?,三、秦九韶算法,引导学生把多项式变形为:,思考:从内到外,如果把每一个括号都看成一个常数,那么变形后的式子中有哪些“一次式”?x的系数依次是什么?,2020年9月28日,11,(3)若将x的值代入变形后的式子中,那么求值的计算过程是怎样的?,将变形前x的系数乘以x的值,加上变形前的第2个系数,得到一个新的系数;将此系数继续乘以x的值,再加上变形前的第3个系数,又得到一个新的系数;继续对新系数做上面的变换,直到与变形前的最后一个系数相加,得到一个新的系数为止。这个系数即为所求多项式的值。这种算法即是“秦九韶算法”,(4)用秦九韶算法求多项式的值,与多项式组成有直接关系吗?用秦九

7、韶算法计算上述多项式的值,需要多少次乘法运算和多少次加法运算?,2020年9月28日,12,数书九章秦九韶算法,对该多项式按下面的方式进行改写:,思考:当知道了x的值后该如何求多项式的值?,这是怎样的一种改写方式?最后的结果是什么?,2020年9月28日,13,要求多项式的值,应该先算最内层的一次多项式的值,即,然后,由内到外逐层计算一次多项式的值,即,最后的一项是什么?,这种将求一个n次多项式f(x)的值转化成求n个一次多项式的值的方法,称为秦九韶算法。,思考:在求多项式的值上,这是怎样的一个转化?,2020年9月28日,14,程序框图:,这是一个在秦九韶算法中反复执行的步骤,因此可用循环结

8、构来实现。,输入ai,秦九韶算法的特点:,通过一次式的反复计算,逐步得出高次多项式的值,对于一个n次多项式,只需做n次乘法和n次加法即可。,2020年9月28日,15,程序:,INPUT“n=”;nINPUT“an=“;aINPUT“x=“;xv=ai=n-1WHILE i=0 PRINT“i=“;i INPUT“ai=“;a v=v*x+a i=i-1WENDPRINT vEND,2020年9月28日,16,四、进位制,1、什么是进位制?,进位制是人们为了计数和运算方便而约定的记数系统。,进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即

9、可称n进位制,简称n进制。,比如:,满二进一,就是二进制;满十进一,就是十进制;满十二进一,就是十二进制;满六十进一,就是六十进制,基数:,“满几进一”就是几进制,几进制的基数就是几.,2020年9月28日,17,2、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明,最常见的进位制应该是我们数学中的十进制,比如一般的数值计算,但是并不是生活中的每一种数字都是十进制的.古人有半斤八两之说,就是十六进制与十进制的转换.比如时间和角度的单位用六十进位制,计算“一打”数值时是12进制的。电子计算机用的是二进制。,2020年9月28日,18,式中1处在百位,第一个3所在十位,第二个3所在个

10、位,5和9分别处在十分位和百分位。十进制数是逢十进一的。,我们最常用最熟悉的就是十进制数,它的数值部分是十个不同的数字符号0,1,2,3,4,5,6,7,8,9来表示的。,十进制:,例如133.59,它可用一个多项式来表示:,133.59=1*102+3*101+3*100+5*10-1+9*10-2,2020年9月28日,19,实际上,十进制数只是计数法中的一种,但它不是唯一记数法。除了十进制数,生产生活中还会遇到非十进制的记数制。如时间:60秒为1分,60分为1小时,它是六十进制的。两根筷子一双,两只手套为一副,它们是二进制的。,其它进制:,二进制、七进制、八进制、十二进制、六十进制,二进

11、制只有0和1两个数字,七进制用06七个数字,十六进制有09十个数字及ABCDEF六个字母.,2020年9月28日,20,为了区分不同的进位制,常在数的右下角标明基数,十进制一般不标注基数.,例如十进制的133.59,写成133.59(10),七进制的13,写成13(7);二进制的10,写成10(2),2020年9月28日,21,十进制的构成,十进制由两个部分构成,例如:3721,其它进位制的数又是如何的呢?,(用10个数字来记数,称基数为10),表示有:1个1,2个十,7个百即7个10的平方,3个千即3个10的立方,2020年9月28日,22,其它进制数化成十进制数公式,2020年9月28日,

12、23,二进制,二进制是用0、1两个数字来描述的如11001,二进制的表示方法,区分的写法:11001(2)或者(11001)2,八进制呢?,如7342(8),k进制呢?,anan-1an-2a1(k)?,2020年9月28日,24,二进制与十进制的转换,1、二进制数转化为十进制数,例1:将二进制数110011(2)化成十进制数。,解:,根据进位制的定义可知,所以,110011(2)=51,2020年9月28日,25,例2、设计一个算法,将k进制数a(共有n位)转换为十进制数b。,(1)算法步骤:,第一步,输入a,k和n的值;,第二步,将b的值初始化为0,i的值初始化为1;,第三步,b=b+ai

13、*ki-1,i=i+1,第四步,判断in是否成立.若是,则执行第五步,否则,返回第三步;,第五步,输出b的值.,2020年9月28日,26,(2)程序框图:,2020年9月28日,27,(3)程序:,INPUT“a,k,n=”;a,k,nb=0i=1t=a MOD 10DO b=b+t*k(i-1)a=a10 t=a MOD 10 i=i+1LOOP UNTIL inPRINT bEND,2020年9月28日,28,*上面的程序如采用get函数,可简化为:,备注:GET函数用于取出a的右数第i位数,2020年9月28日,29,方法:除2取余法,即用2连续去除89或所得的商,然后取余数。,例、把

14、89化为二进制数,解:,根据“逢二进一”的原则,有,892441,2(2220)+1,2(2(2110)+0)+1,2(2(2(2 51)+0)+0)+1,5 2 21,2(2(2(2(221)1)0)0)1,89126025124123022021120,所以:89=1011001(2),2(2(2(2321)0)0)1,2(2(242220)0)1,2(2523+2200)1,2624+230020,892441,44 2220,22 2110,11 2 51,2(2(2(2(2 21)+1)+0)+0)+1,所以892(2(2(2(2 2 1)1)0)0)1,2、十进制转换为二进制,20

15、20年9月28日,30,注意:1.最后一步商为0,2.将上式各步所得的余数从下到上排列,得到:89=1011001(2),另解(除2取余法的另一直观写法):,5,2,2,2,1,2,0,1,0,余数,11,22,44,89,2,2,2,2,0,1,1,0,1,2020年9月28日,31,2020年9月28日,32,演讲完毕,谢谢观看!,Thank you for reading!In order to facilitate learning and use,the content of this document can be modified,adjusted and printed at will after downloading.Welcome to download!,汇报人:XXX 汇报日期:20XX年10月10日,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号