线性代数实践及MATLAB入门的第一版序

如题所述

第1个回答  2016-06-01

陈怀琛与龚杰民两位教授所编写的《线性代数实践与MATLAB入门》由科学计算软件MATLAB入门与线性代数实践两篇共九章所组成。书末有一个附录,对美国国家科学基金项目——“用软件工具增强线性代数教学(ATLAST)”进行了简单的介绍。
线性代数是围绕求解线性方程组而发展起来的一门学问,它的基本概念有向量、行列式、矩阵、线性变换、特征值和线性空间等,解析几何是线性方程组的几何背景。随着线性代数的发展,人们发现,使用它的基本概念,许多学科和许多数学分支中的问题有了几何意义,或者几何意义更加丰富凸显,不少深入而复杂的题目可以用简洁的形式来表述;还有,借助于符号的可比性,常常能够启发人们发现有效的求解方法,即算法。在历史上,人们曾经研究过这样一个题目:如果只用直尺,不用圆规,能够解决哪些作图题?今天,在这里,也设想一个问题:如果不准使用线性代数的概念和理论,许多学科将会变得如何的支离破碎,达不到今日的深度。所以我们说不仅理工科专业,甚至大学的几乎所有专业,线性代数是一门必修课,是一门基础课。
线性代数由理论和计算两部分所组成。
20世纪50年代我国在理工科各专业开设线性代数课程时,以介绍理论部分为主。那时,人们已经认识到,线性代数有广泛的应用,但教材中往往限于讲授在二次型中的应用。这是因为当时计算机和编制相关程序的工作离我国的实际情况甚远。虽然已经认识到计算机能够快速高效地求解线性代数中的各种数字题目,但在教材中只能淡淡地指出这个方向而已。
改革开放以来,虽然提倡直接使用国外的教材(也就是说,采用国外的教学大纲),注意计算机的应用,提倡开设使用科学计算软件的数学实验课程,开设某些科学计算软件的师资培训班等,但是除了使用国外教材外,还远没有改变各个课程,线性代数课依然是一片“宁静的沃土”。
现在的科学计算软件已经发展到使用非常方便、功能异常强大,一经使用便令人惊叹不已的地步,科学计算软件已经成为科学工作者的高级计算器。实验室和编写程序的良好的环境,加上我国经济迅速发展,计算机广泛普及,让大学各个专业的学生全都学会使用这些软件应该是刻不容缓的事情。
本书介绍了大量的实际应用题目,把科学计算软件和线性代数密切结合,充分利用软件的可视化功能产生的图形和动画补充了现行教材的不足。它明显地接受了美国ATLAST计划所产生的先进成果影响,是一本有特色的配套教材;因此,它的出版无疑是非常及时的。值得指出的是,比照美国的实践,我国原有的教材内容和教学水平应该说是落后了十几年。
正在或者已经学过线性代数的人员(大学生,研究生,各方工程技术人员),定能从学习本书而加深理解线性代数和软件MATLAB这两门学问的知识以及它们之间联系的重要性,并从大量应用实际问题拓宽思路。本书每章末有足够练习题,读者可以从上机做实验中培养技能和乐趣,提高学习线性代数的积极性。此外,本书还可成为使用软件MATLAB解决有关线性代数问题的人员的上机参考手册。
我赞成线性代数理论和实践两部分由同一个教师施教,并相信讲授线性代数的教师对于本书中的各个方面的内容,例如令人深思的学术观点,有趣的历史资料,众多有用的应用题,附录中介绍的美国学者的敬业精神、集体主义和工作经验等,都会产生极大的兴趣。
使用本书时可能发生的困难有两点:
一是在增加不多的学时中,如何组织这个实验任务。按本书参考文献[1],美国实施这门课程总共用35学时(他们也喊学时不够),可见理论和实际的结合可能产生事半功倍的效果,这当然有一个探索的过程。
二是少数教师可能对使用软件MATLAB进行教学感到困难。
我在过去二十多年的教学生涯中,曾经几次随班听课,甚至随班参加考试过高级算法语言Pascal、C。虽然多次企盼自己能够编写某些程序,可是事情就那么困难,几个回合败下阵来,再加工作忙碌,无奈放弃,而后畏难情绪迟迟不能消去。近几年,为科研工作所迫,硬着头皮,熬!摸索三个月,算是开始能为我编制程序服务了。
科学计算软件和数学的关系非常密切。有人说大同小异。殊不知,许多时候,所编程序之所以通不过,错误就出在那些小异上。
毕竟是要进入一个崭新的学科,我们当然要认真学习;它既是一门科学,当然一定能够学会,而且那么多的人已经学会了。
今天的科学计算软件和算法语言已经大不一样了。打一个不那么恰当的比喻:改革开放初期,曾经流行过一本英语教材,叫《英语会话900句》。它分成若干个部分,包含各个场合所常用的句子,问路、学习、买东西,还有开会等。现在流行的科学计算软件也是这么一种模式,它们都有自己的“900句”。由若干个函数库所组成,分别为各个任务提供种种函数和命令。当您拿起一个软件,首先按照教材中的例题,边读边在计算机上试算一些最基本的语句,以初步了解该软件的功能。当您学习线性代数时,无需全面熟悉其他各个分支的语句。随着学习的进程,每次学习四、五个语句,就能让计算机开始为您服务。当您掌握若干个语句之后,发现某些规律,学习不仅更加容易,而且延展到别的问题往往也能沿着同一思路得到解决。当您找不到现成的语句解决所提的题目,则需要组合若干基本语句来完成。为了我们的教学工作,也为了今后自身的科研工作,花一定时间来逐步掌握一两个科学计算软件,让它们成为自己的一个终生的学术助手和伙伴,无论如何都是值得的。我也是一名数学老师,即便在“熬”的日子里,也不断地从中得到许多的乐趣,现在,在我写书,算题,科研等工作的过程中,面对屏幕显示的结果,不时自言自语地惊叹说:“太好了!”深深感激科学计算软件给我的帮助。
本书作者陈怀琛教授是计算机科学、机械、电子和控制等学科的专家。具有丰富的教学实践经验和教学管理经验,对我国21世纪大学工科专业学生如何培养的问题,有许多很有价值的见解。作者对当前国内外的工科线性代数课程的施教情况十分关心。龚杰民教授是软件专家,二十年前就出版了关于C语言的教材。他们不仅亲自执笔编写这本教材,还正面提出了具体改革的见解。听说西安电子科技大学领导已经决定教改立项,将由陈教授亲自负责使用本书书稿,先对该校全体线性代数教师组织培训研讨班,再点面结合地对部分一年级大学生用本教材进行施教,有系统地开展试验,实在是一件大好的事情。
祝这项工作成功!
秦裕瑗
2005年 中秋节于武汉科技大学
前 言
线性代数的重要性现在比过去任何时候都更加令人刮目相看。在20世纪后半期,线性代数的应用继续扩大到了越来越多的新领域。它在数学课程中的角色已经上升到可与微积分相匹敌。线性代数的这种发展首先是由于人们所研究问题的规模愈来愈大,愈来愈复杂,牵涉的变量成百上千,这样复杂的问题,目前只能把变量之间的关系简化为线性才有可能求解。所以大规模的线性代数问题就成为热门的数学工具。除了上述的“需求牵引”之外,线性代数发展的另一个动力是“技术推动”,那就是计算机技术的推动。几十年来计算机硬软件的飞速发展给线性代数的研究和教学提供了前所未有的空间和机遇,线性代数课程教学上的许多新面貌、新方法都来自于计算机技术的新发展。
计算机如何推动了线性代数的应用
线性代数是一门应用性很强,但又在理论上进行了高度抽象的数学学科。一方面,中学生就学过了二元一次代数方程的解法,代入法和消去法大概每个人都会记忆一辈子,这就是最简单的线性代数。当把方程的阶次提高到了三元一次以上时,它不但要求较高级的抽象思维能力,而且也要求用十分烦琐的计算步骤才能解决问题。对于数学家,他们重视前者,这无可厚非;但对于大多数工科学生,他们更需要的是能应用它的理论,指导完成实际的计算。事实上,线性代数的那种单调、机械、枯燥的运算,只是由于计算机的出现才赋予了在应用方面的生命力。
举一个典型的例子,Wassily Leontief教授把美国的经济用500个变量的500个线性方程来描述。1949年夏,由于当时大学的计算机(Mark II)能力所限,Leontief把系统简化为42个变量的42个线性方程,编程并用穿孔卡输入程序和数据就用了几个月,最后计算机运行了56小时才求出了解。当Leontief在1973年成为诺贝尔经济学奖得主时,这项工作以“第一个有实际意义的利用计算机求解大规模数学模型”列为其得奖的理由之一。他的成就和获奖成为各国科学界用线性代数建立工程和经济模型的巨大动力,推动了这门科学的迅速发展。可以看出,离开了计算机,线性代数在工程中就很难有用武之地。这也反映在美国的大学工科教育中,表现出对这门课的日益重视;课堂上固然着重讲线性代数理论,但同时给学生加上大作业或课程设计等实践环节。大学中的大型计算机很大程度上也支持了这门课的实践环节,使用的软件主要是FORTRAN或COBOL语言。线性代数的教学不能离开计算机是美国工科教育界的共识。
20世纪80年代,出现了个人计算机并迅速普及。新的硬件也带动了新的软件,出现了新颖的科学计算语言,也称为数学软件,因为它具有高效、可视化和推理能力等特点,故在大学教育和科学研究中,迅速地取代了FORTRAN和BASIC语言。这类软件中商品化的有MATLAB、MATHEMATICA、MATHCAD、MAPLE等,它们的功能大同小异,但各有所长。目前在美国大学工科中,流行最广的是MATLAB语言。
MATLAB是“矩阵实验室”(Matrix Laboratory)的缩写,它是一种以矩阵运算为基础的交互式程序语言,当然它特别适合于线性代数,并能更广泛地适应科学和工程计算及绘图的需求。与其他计算机语言相比,MATLAB的特点是简捷和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高。它用解释方式工作,键入程序立即得出结果,人机交互性能好,易于调试并为科技人员所乐于接受。特别是它可适应多种平台,并且随计算机硬软件的更新及时升级,因此MATLAB语言在国外的大学工学院中,特别是数值计算用得最频繁的电子信息类学科中,已成为每个学生必须掌握的工具。它大大提高了课程教学、解题作业、分析研究的效率。我们学习掌握MATLAB,不仅可以直接帮助学习线性代数,而且也可以说是在科学计算工具上与国际接轨。
国内外线性代数教学的差距
从美国在线性代数教学中使用计算机的历史可以看出,个人计算机和科学计算软件的普及迅速推动了这门课程的教学方法改善,使得计算机的使用不限于大作业,也可以用于日常课程教学。1990年,美国成立了线性代数课程研究组(Linear Algebra Curiculum Study Group-LACSG),然后,在国家科学基金会(NSF)资助下组织了数学和工科专家的一次会议,提出了线性代数课程改革的五点建议,简称为LACSG Recommendations(见参考文献[3]),其要点是:(1)首先要满足非数学专业面向应用的需要;(2)要以矩阵运算为基础;(3)要从学生的水平和需求出发;(4)要采用最新的软件工具;(5)对想要数学学位的学生应另开相关课程以提高其抽象性。1992年美国国家科学基金会(NSF)资助了一个ATLAST计划,ATLAST是Augment The Teaching of Linear Algebra through the Use of Software Tools(用软件工具增强线性代数教学)的缩写。该计划在1992年到1997年六个暑期组织了十八个教师研讨班。共有来自各大学的425名教师参加。参加者接受了使用MATLAB软件包的训练,详情可参阅附录B。
在使用MATLAB方面,从他们的教材发展来看,在1995年算起的头几年,主要反映在采用MATLAB的习题并介绍MATLAB入门,见参考文献[7]~[9]。到近十年就开始把MATLAB掺合到线性代数的各章中去,主要是对有些理论提供计算机的演示和验证,反映在参考文献[1]~[5]中。当然线性代数的整个理论体系,并不受使用计算机而有所改变。
在我国,线性代数课在理工科本科教学的加强开始于改革开放以后,是学习国外先进经验的结晶。当时大学中还没有计算机,虽然利用世行贷款,花了不少钱买了一些大型计算机,但线性代数课并没有用。因为课程内容不作改革,有计算机也用不成,当前的情况就足以为证。如果说以前是出于无奈,那么在个人计算机已经如此普及的情况下,还不用计算机,那就是固步自封了。所以线性代数课中不谈计算机、教线性代数的老师几乎不使用计算机,已经成为我国线性代数教育界与发达国家的明显差距。于是我国的线性代数课程出现了不尽如人意的状况——理论抽象愈来愈深,应用和实际计算很少结合,它成了一门学生感到抽象、冗繁而枯燥的课程。
由于缺乏感性的、实践的基础和应用的推动,后续课程又往往怕烦而避开矩阵方程,教出来的学生当然是理论上害怕矩阵、实践中不会用矩阵算题的。可以做一个测试:在学生学完线性代数课以后,让他们解一个四元一次代数方程,看他们用什么工具解?要多少时间?做对的有多少比例?按现在的教材和教法,绝大多数学生解这个题用的完全是中学里学的方法:用计算器一个数一个数地算乘法和加法,谁也不会用线性代数去解。而且计算的效率和正确率极低。要知道,许多后续课程都需要用线性代数,比这个四元一次方程要复杂得多,解这么简单的题目还这样的少慢差费,大学工科后续课程怎么能用线性代数呢?又怎么谈得上为工科教育打好数学基础呢?
如果在课程中增加4~6学时的实践内容,情况就会完全不同。像上面的测试题,用计算机解,一分钟就可解决问题,正确率100%。对复杂的问题,提高效率更为明显。通过实践不仅方便了计算,而且对理论和概念的理解也会加深,并节省很多时间。本来,线性代数的理论和实践是应该融合并在一起实施的,因为这门课的特点就应该理论与实际相结合。不过现在在我国实现这个任务似乎还相当艰巨,首先要从上到下达成共识,然后要修改教学计划,接着还要编写新的教材和培养大批合格的师资。
本书的内容安排
在我国,每年学习线性代数课程的大学生大概有100万人之多,教这门课的老师应该有上万人。要推动“用计算机提高线性代数教学水平”的事业,不是一两年就能做到的,美国还花了六年时间呢!现在我们的线性代数教学水平比美国已经落后了十多年,所以要奋起直追。我的建议是分两步走。
第一步是单独开设“线性代数实践课”,与线性代数同步实施。其好处是暂时不影响原来教师们的备课和教材,并且让少量的实践领头老师能集中精力,给更多的学生讲课,也培训现有的老师;这些老师也同时承担实践课的辅导任务,这有利于提高他们的计算机使用水平,为以后全面承担这门课程创造条件。第二步是把实践课与理论课合并实施,除了师资外,最主要的是编一本把理论与实践紧密结合的好教材。
在我们的方案中,实践课的计划是一个学分,按16学时计算。考虑到我国线性代数课程大都放在大学一年级,此前大一新生未必学过MATLAB,而且以线性代数作为学习MATLAB的切入点有很大的好处,所以把线性代数实践与MATLAB入门合成一门课实施比较合适。初步安排讲课约10~12学时,其中介绍MATLAB语言入门约4学时,讲解线性代数实践原理和程序6~8学时,上机时间预计10~12小时。我们根据这样一个思路编写了这本教材。这本书虽然有实践的部分,但它是从实际应用的角度对线性代数的概念进行了整体的剖析和归纳,并与工程实践有大量的联系,其范围超出了一般的数学实验,故取名为“线性代数实践”。
本教材中MATLAB入门部分基本上就是参考文献[4]、[5]两本书中的语言篇,对于线性代数实践而言,主要用到的是第2章和第4章4.2节;虽然书的篇幅多了一些,但这样可以维持MATLAB基本函数的完整性,使这本书兼有MATLAB的手册功能,同时也便于利用本书作者的一套四小时讲课光盘,让老师不必花时间为MATLAB备课。实验课安排的时间最好在线性代数开课一个月以后,这样衔接比较好。这门课程可促进学生用计算机的经常化,故不要速战速决,以拉开到八周以上为好。
线性代数部分则是参考国外2000年后新出版的教材(见参考文献[1]~[4])和2003年出版的ATLAST Manual(见参考文献[7])等资料编写的,其中也利用了作者在多本著作中用矩阵建模和解决难题的实例(见参考文献[10]~[12])。为了尽量加强与线性代数理论部分的衔接,能帮助学生既避免烦琐刻板的四则运算,又能真正体会到线性代数中的推理思路,我们设计了一些简单的MATLAB子程序,来完成高斯消元、行阶梯简化、行交换等任务。为了加强线性代数的几何形象教学,我们又设计了一些快速简便绘制直线和平面图形的函数;另外,还采用了ATLAST Manual提供的某些矩阵生成子程序和演示程序。
因为全国各大学的差别很大,例如专业不同、上课的学期不同(大一上、大一下、大二上都有),造成学生的基础不同,所以书中的实例就不得不取宽一些,并尽量避开微积分。实例并不需要全讲,有的可留给后续课程中让学生自学,书中的小字部分在初学时也可跳过。我们认为,工科大学生能用计算机和MATLAB解线性代数方程的问题,那么这门实践课的主要目标可以说基本达到了。
本书由陈怀琛负责总的策划与编写,龚杰民担任国外教材资料的翻译及部分习题的选编。由于我们还没见过同类书名的书籍和教材,写书时很难找到可以直接参考的体系,这个新生事物,还缺乏实践经验,再加上要赶上2005级部分新生进行试点,编写时间紧迫。我们的想法和做法,肯定有很多不当之处,欢迎批评指正。更希望各方面的专家和读者通过自己的教学实践向我们提出改进的建议。我们的电子邮件地址为致谢
本书荣幸地由武汉科技大学秦裕瑗教授审阅,作为一位在欧美7国14校进行过讲学、有多部专著的我国数学界前辈,他不但博学,而且其严肃认真的治学态度和不断接受新事物的进取精神给我们以很大的激励。在年逾80之际,他仍在孜孜不倦地学习科学计算软件(Mathematica和MATLAB)并把它用到自己的著作《运筹学简明教程》中,实在令人肃然起敬。与此相反,我们看到有些年纪不过四五十岁的中年教师,已经不想学计算机了。在这里,我们特别希望广大的线性代数课老师,能以秦教授为榜样,把自己用科学计算语言武装起来,尽快把我国的线性代数课程用计算机武装起来,创造一个崭新的教学局面。
作 者
2005-8-28于西安电子科技大学

相似回答