特殊矩阵.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
特殊矩阵

第九讲 编程与数学 教了几年的程序设计,这样一个问题始终困扰着我:让学生懂得一个程序是正确的并不困难;难的是讲明这个程序是怎样编写出来的。对于数学课,也有同样的感觉,这说明程序设计与数学还是有许多共同的地方。这次研讨班分配我的题目是“编程和数学”,我想借此机会谈谈我的思考,希望能有所用。也许文不对题,也许不很正确,仅供参考。 数学包括数学知识和数学方法两方面,数学课程教给我们的主要是数学知识,数学方法则不然,我学过的数学课从没有教给我数学方法。数学方法是靠数学知识的学习过程中的思考、推导、总结、积累才能获得。数学知识是对于客观规律的描述,而数学方法是认知客观规律的途径。 顾名思义,计算机是一个计算的机器。在计算机诞生之初,计算机的任务仅限于解决数学问题,人们说计算机只会“啃数字”,计算机编程与数学的关系极为密切,所以那时候程序员都由数学家担任。到了20世纪80年代,计算机的应用大大地推广了。时至今日,计算机几乎进入了人类活动的各个方面,加上编程工具的极大改善,不同行业的人都加入了编程的行列。除了科学计算以外,编程不再总要求高深的数学知识,要求更多的是数学方法。编程者不懂数学不行,但是把高等数学提前灌输给中、小学生是很不恰当的。我主张在程序设计教学中要强调掌握数学方法,提高学生的创新能力。 所谓数学方法,或者说编程中的数学方法,就是从众多对象中找出共同属性的方法。在程序设计领域,用“求同存异”来说明这种方法似乎更生动、更准确。结构化程序设计告诉我们,任何程序都可以只用三种简单的结构——顺序结构、分支结构和循环结构来实现。只有通过求同存异掌握了多个对象的相同处和不同处,才能有一个循环结构统一处理它们的相同处,并用分支结构分别处理不同处。 至今还没有看到介绍编程中的数学方法的资料,只有深入理解编程实例,在编程过程中坚持采用数学方法,不断实践,才会有所提高。本文给出了作者编写的程序例子,从中可以看到,程序设计必须始于相当长的数学思考,好的程序是想出来的。需要说明,数学方法应该体现在所有程序设计之中,决不限于本文所涉及的题目。 第1节 数列 在小学初赛题中常有求数列通项公式的题目。所谓数列,就是数的序列,也就是一串数。通常这串数是有规律的,这个规律反映在通项公式上。例如: 现有数列1、2、1、2、3、1、2、3、4、1、…,求其第200项。 当然我们可以先看出规律——数列由许多段组成,第1段是1、2;第2段是1、2、3,然后按此规律一直写下去,直到200项为止。这样做麻烦,容易错。用数学方法可以这样想, 假定第200项处在第i段上,其前有i-1个段,这i-1个段共有数 2+3+4+…+i=(i+2)*(i-1)/2个,显然i是满足不等式: (i+2)*(i-1)/2200 即 i*(i+1)402 的最大的i。为求此i,可以解2次不等式,但这超出小学范围。我们可以采取试探法,:i取20的话i*(i+1)=420,所以i取19为解,此时i*(i+1)=380402第200项处在第19段上,。,其前有18个段含数(19+2)*18/2=189个,因此第200项是第19段上的第200-189=11个数,其值等于11。 总结一下我们的做法,对于任意给定的n(如200),首先求出第n项所在段号i: i=MAX{j | j*(j+1)2*n+2, j=0,1,2,…} 而后求出 第n项的值=n-(i+2)*(i-1)/2 例2,现有数列1、2、4、7、11、…,用an表示第n项,例如a1 =1, a2 =2,a3=4,求a10、a50 。 观察此数列,发现它不是等差数列,而前后项之差却构成了一个等差数列: n 1 2 3 4 5 an 1 2 4 7 11 an-an-1 - 1 2 3 4 通过此表会发现,数列第一项为1,以后各项都等于等于前一项的值加前一项的序号: a1=1, an=an-1+(n-1) 这是一组递推公式,可以反复代入: an = an-1+(n-1)= an-2+(n-2)+(n-1) = a1+1+2+3+…+(n-1) 得到公式 an = 1+n*(n-1)/2 容易算出: a10=1+10*9/2=46 a50=1+50*49/2=1226 例3,对于任给的n,有数列: 1,2,3,…,n-1,n,n-1,…,3,2,1。我们用t(n,p)表示该数列的第p项,用s(n,p)表示该数列的前p项之和。例如,t(4,6)是数列1,2,3,4,3,2,1的第6个数,所以t(4,6)=2,而 s(4,6)=1+2+3+4+3+2=15。请分别算出t(10,15)、s(1

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档