数学算法课件_第1页
数学算法课件_第2页
数学算法课件_第3页
数学算法课件_第4页
数学算法课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章算法初步

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

2、步骤(以求8251和6105的最大公约数的过程为例)第一步用两数中较大的数除以较小的数,求得商和余数8251=6105×1+2146结论:8251和6105的公约数就是6105和2146的公约数,求8251和6105的最大公约数,只要求出6105和2146的公约数就可以了。为什么呢?第二步对6105和2146重复第一步的做法

6105=2146×2+1813

同理6105和2146的最大公约数也是2146和1813的最大公约数。

2020年9月28日3一、辗转相除法(欧几里得算法)1、定义:所谓辗转相除法,就是完整的过程8251=6105×1+21466105=2146×2+18132146=1813×1+3331813=333×5+148333=148×2+37148=37×4+0例:用辗转相除法求225和135的最大公约数225=135×1+90135=90×1+4590=45×2显然37是148和37的最大公约数,也就是8251和6105的最大公约数显然45是90和45的最大公约数,也就是225和135的最大公约数思考:从上面的两个例子中可以看出计算的规律是什么?S1:用大数除以小数S2:除数变成被除数,余数变成除数S3:重复S1,直到余数为02020年9月28日4完整的过程8251=6105×1+21466105=214

辗转相除法是一个反复执行直到余数等于0才停止的步骤,这实际上是一个循环结构。m=n×q+r用程序框图表示出右边的过程r=mMODnm=nn=rr=0?是否8251=6105×1+21466105=2146×2+18132146=1813×1+3331813=333×5+148333=148×2+37148=37×4+0思考:辗转相除法中的关键步骤是哪种逻辑结构?

2020年9月28日5辗转相除法是一个反复执行直到余数等于0才停止的步骤,程序框图:开始输入m,nr=mMODnm=nr=0?是否n=r

输出m结束思考:你能把辗转相除法编成一个计算机程序吗?2020年9月28日6程序框图:开始输入m,nr=mMODnm=nr程序:INPUT“m,n=”;m,nDOr=mMODnm=nn=rLOOPUNTILr=0PRINTmEND2020年9月28日7程序:INPUT“m,n=”;m,n2020年9月28日1.定义:所谓更相减损术,就是对于给定的两个数,用较大的数减去较小的数,然后将差和较小的数构成新的一对数,再用较大的数减去较小的数,反复执行此步骤直到差数和较小的数相等,此时相等的两数便为原来两个数的最大公约数。二、更相减损术2、方法:例:用更相减损术求98与63的最大公约数.解:由于63不是偶数,把98和63以大数减小数,并辗转相减98-63=35

63-35=28

35-28=7

28-7=2121-7=1414-7=7所以,98和63的最大公约数等于7

2020年9月28日81.定义:所谓更相减损术,就是对于给定的两个数,用较大的数减INPUTm,nIFm<nTHENa=mm=nn=aENDIFK=0WHILEmMOD2=0ANDnMOD2=0m=m/2n=n/2k=k+1WENDd=m-nWHILEd<>n

IFd>nTHENm=d

ELSEm=nn=d

ENDIFd=m-nWENDd=2k*dPRINTdEND思考:你能根据更相减损术设计程序,求两个正整数的最大公约数吗?2020年9月28日9INPUTm,nELSE思考:你能根据更相减损(1)设计求多项式当x=5时的值的算法,并写出程序。(2)有没有更高效的算法?能否探求更好的算法,来解决任意多项式的求解问题?三、秦九韶算法引导学生把多项式变形为:思考:从内到外,如果把每一个括号都看成一个常数,那么变形后的式子中有哪些“一次式”?x的系数依次是什么?2020年9月28日10(1)设计求多项式当x=5时的值的算法,并写出程序。三、秦九(3)若将x的值代入变形后的式子中,那么求值的计算过程是怎样的?

将变形前x的系数乘以x的值,加上变形前的第2个系数,得到一个新的系数;将此系数继续乘以x的值,再加上变形前的第3个系数,又得到一个新的系数;继续对新系数做上面的变换,直到与变形前的最后一个系数相加,得到一个新的系数为止。这个系数即为所求多项式的值。这种算法即是“秦九韶算法”(4)用秦九韶算法求多项式的值,与多项式组成有直接关系吗?用秦九韶算法计算上述多项式的值,需要多少次乘法运算和多少次加法运算?

计算只与多项式的系数有关,

2020年9月28日11(3)若将x的值代入变形后的式子中,那么求值的计算过程是怎样《数书九章》——秦九韶算法

设是一个n次的多项式对该多项式按下面的方式进行改写:思考:当知道了x的值后该如何求多项式的值?这是怎样的一种改写方式?最后的结果是什么?2020年9月28日12《数书九章》——秦九韶算法

设是一个n次的多项式对该多项式要求多项式的值,应该先算最内层的一次多项式的值,即然后,由内到外逐层计算一次多项式的值,即最后的一项是什么?这种将求一个n次多项式f(x)的值转化成求n个一次多项式的值的方法,称为秦九韶算法。思考:在求多项式的值上,这是怎样的一个转化?2020年9月28日13要求多项式的值,应该先算最内层的一次多项式的值,即然后,由内程序框图:这是一个在秦九韶算法中反复执行的步骤,因此可用循环结构来实现。输入ai开始输入n,an,xi>=0?输出v结束v=vx+aii=i-1YNi=n-1V=an秦九韶算法的特点:

通过一次式的反复计算,逐步得出高次多项式的值,对于一个n次多项式,只需做n次乘法和n次加法即可。2020年9月28日14程序框图:这是一个在秦九韶算法中反复执行的步骤,因此可用循环程序:INPUT“n=”;nINPUT“an=“;aINPUT“x=“;xv=ai=n-1WHILEi>=0PRINT“i=“;iINPUT“ai=“;av=v*x+ai=i-1WENDPRINTvEND2020年9月28日15程序:INPUT“n=”;n2020年9月28日15四、进位制1、什么是进位制?进位制是人们为了计数和运算方便而约定的记数系统。进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字符号的个数称为基数,基数为n,即可称n进位制,简称n进制。

比如:

满二进一,就是二进制;

满十进一,就是十进制;满十二进一,就是十二进制;

满六十进一,就是六十进制基数:“满几进一”就是几进制,几进制的基数就是几.2020年9月28日16四、进位制1、什么是进位制?进位制是人们为了计数和运算方便而2、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举例说明.最常见的进位制应该是我们数学中的十进制,比如一般的数值计算,但是并不是生活中的每一种数字都是十进制的.古人有半斤八两之说,就是十六进制与十进制的转换.比如时间和角度的单位用六十进位制,计算“一打”数值时是12进制的。电子计算机用的是二进制。2020年9月28日172、最常见的进位制是什么?除此之外还有哪些常见的进位制?请举

式中1处在百位,第一个3所在十位,第二个3所在个位,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-22020年9月28日18式中1处在百位,第一个3所在十位,第二个3所在个位,5

实际上,十进制数只是计数法中的一种,但它不是唯一记数法。除了十进制数,生产生活中还会遇到非十进制的记数制。如时间:60秒为1分,60分为1小时,它是六十进制的。两根筷子一双,两只手套为一副,它们是二进制的。其它进制:二进制、七进制、八进制、十二进制、六十进制……二进制只有0和1两个数字,七进制用0~6七个数字十六进制有0~9十个数字及ABCDEF六个字母.2020年9月28日19实际上,十进制数只是计数法中的一种,但它不是其它进制:

为了区分不同的进位制,常在数的右下角标明基数,十进制一般不标注基数.例如十进制的133.59,写成133.59(10)七进制的13,写成13(7);二进制的10,写成10(2)

一般地,若k是一个大于1的整数,那么以k为基数的k进制可以表示为一串数字连写在一起的形式:2020年9月28日20为了区分不同的进位制,常在数的右下角标明基数,十进制十进制的构成十进制由两个部分构成例如:3721其它进位制的数又是如何的呢?第一、它有0~9十个数字;第二、它有“数位”,即从右往左为个位、十位、百位、千位等等。(用10个数字来记数,称基数为10)表示有:1个1,2个十,7个百即7个10的平方,3个千即3个10的立方十进制:“满十进一”2020年9月28日21十进制的构成十进制由两个部分构成例如:3721其它进位制的数其它进制数化成十进制数公式2020年9月28日22其它进制数化成十进制数公式2020年9月28日22二进制二进制是用0、1两个数字来描述的.如11001二进制的表示方法区分的写法:11001(2)或者(11001)2八进制呢?如7342(8)k进制呢?anan-1an-2…a1(k)?2020年9月28日23二进制二进制是用0、1两个数字来描述的.如11001二进制的二进制与十进制的转换1、二进制数转化为十进制数例1:将二进制数110011(2)化成十进制数。解:根据进位制的定义可知所以,110011(2)=51.2020年9月28日24二进制与十进制的转换1、二进制数转化为十进制数例1:将二进制例2、设计一个算法,将k进制数a(共有n位)转换为十进制数b。(1)算法步骤:第一步,输入a,k和n的值;第二步,将b的值初始化为0,i的值初始化为1;第三步,b=b+ai*ki-1,i=i+1第四步,判断i>n是否成立.若是,则执行第五步,否则,返回第三步;第五步,输出b的值.2020年9月28日25例2、设计一个算法,将k进制数a(共有n位)转换为十进制数b(2)程序框图:开始输入a,k,nb=0i=1把a的右数第i位数字赋给tb=b+t*ki-1i=i+1i>n?否是输出b结束2020年9月28日26(2)程序框图:开始输入a,k,nb=0i=1把a的右数第i(3)程序:INPUT“a,k,n=”;a,k,nb=0i=1t=aMOD10DOb=b+t*k^(i-1)a=a\10t=aMOD10i=i+1LOOPUNTILi>nPRINTbEND2020年9月28日27(3)程序:INPUT“a,k,n=”;a,k,n2020**上面的程序如采用get函数,可简化为:INPUTa,k,ni=1b=0WHILEi<=nt=GETa[i]b=t*k^(i-1)+bi=i+1WENDPRINTbEND备注:GET函数用于取出a的右数第i位数2020年9月28日28**上面的程序如采用get函数,可简化为:INPUTa,方法:除2取余法,即用2连续去除89或所得的商,然后取余数。例、把89化为二进制数解:根据“逢二进一”的原则,有89=2×44+1=2×

(2×22+0)+1=2×(2×(2×11+0)+0)+1=2×(2×(2×

(2×5+1)+0)+0)+15=2×2+1=2×(2×(2×(2×(22+1)+1)+0)+0)+189=1×26+0×25+1×24+1×23+0×22+0×21+1×20所以:89=1011001(2)=2×(2×(2×(23+2+1)+0)+0)+1=2×(2×(24+22+2+0)+0)+1=2×(25+23+22+0+0)+1=26+24+23+0+0+2089=2×44+14

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论