标题：线性代数实践及MATLAB入门
图书信息
作　者：陈怀琛 编著 
出 版 社： 电子工业出版社
出版时间： 2009-1-1 
页　数：276页
开　本： 16开
I S B N ：9787121072239
所属分类： 图书 >> 计算机/线性代数 >>MATLAB语言
定价：29.80元
内 容 简 介
本书第1版是根据“用软件工具提高线性代数教学”的指导思想，参照美国1992—1997国家科学基金项目ATLAST的思路编写成的线性代数补充教材，其目的是补充我国现有教材忽视应用的缺陷。它分为两篇，第一篇介绍线性代数所用的软件工具MATLAB语言，可以作为教材，也可以作为手册使用；第二篇介绍线性代数实践，包括三方面的内容：一是利用MATLAB的可视化功能，给线性代数中的概念赋予了几何形象；二是给线性代数中烦琐的计算提供了简明的算法和程序；三是给出了各个工程和经济领域中使用线性代数建模的大量实例。本书第2版在对第1版进行修订的基础上增加了第10章，扩展了在机械和电子专业后续课程中10多个较深的矩阵建模和求解的实例。 
本书既可作为大学本科线性代数的配套教材，也可作为广大理工和经管领域的教师、工程师、高年级本科生和研究生深入学习矩阵建模和掌握其计算机解法的参考读物。
作者简介
陈怀琛教授，1953年毕业于张家口军事电信工程学院（现为西安电子科技大学），留校任教，先后在机械系、自动控制系和电子工程系讲授过十多门课程。1980年，他赴美国费城宾夕法尼亚大学系统工程系做访问学者进修：回国后，曾任西安电子科技大学副校长，主管科研和研究生教育工作，曾兼任中国自动化学会理事等职。
1995年以来，陈教授致力于推动大学课程和教学的计算机化，目的是使教师和学生都使用计算机取代计算器来解决各课程中的计算问题。他主持编写了《控制系统CAD和MATLAB语言》、《数字信号处理及其MATLAB实现》、《MATLAB及其在理工课程中的应用指南》、《MATLAB及其在电子信息课程中的应用》、《数字信号处理教程——MATLAB释义与实现》等一系列将MATLAB应用于大学课程的教材著作。
第2版序
2005年，作者根据十年来编书中使用矩阵的体会和美国线性代数教材改革的做法，编著了本书第1版。那时所写的前言，主要反映国外的经验，希望国内效仿。交稿以后，作者在西安电子科技大学申请了“用软件工具提高线性代数教学水平”的教改基金项目，举办了一个由40多位教师参加的培训班，组织几位教师进行了连续三届共800多名学生参加的教学改革试点，此项目后来又得到了教育部理工科处及数学教指委数学基础课程分教指委的支持，并在2008年5月进行了鉴定。这第2版的序言就着重介绍近三年来我们教改的经历和体会。
教改的基本指导原则是两条：一是“需求牵引，面向应用”，根据对机械和电子专业后续课大量应用的分析，提出本课程的目标是能解6阶以上的线性代数问题；二是“技术推动，引入机算”，借现代化手段之助，做到抽象与形象的结合，笔算与机算的结合，基础课和专业课的结合。我们具体进行了以下几方面的工作。
一、对课程的教学要求进行了全局的论证四个现代化对教育现代化的要求首先表现在对专业课要求日益扩展和加深，再由专业课反映到基础课，促进整个教学计划的改革创新。要保证高的教学水平，必须经常对这条需求链进行论证，国外大学经常进行的ABET论证就包括这个内容。遗憾的是，没有见到国内对线性代数课程做过这样的论证，似乎无人关心课程内容该如何满足专业课的需要。我们在进行这项工作时，以量大面广的机械、电子专业为对象，分析其后续课程在矩阵建模和计算方面的需求，以确定线性代数课程的任务。
根据十多年来把科学计算用于多门课程的编书实践，我们找到了这两个专业大学三年级前能用到线性方程的十多门课程：化学、高等数学、电路、理论力学、材料力学、计算方法、传热学、物理、计算机图形学、信号与系统、数字信号处理、机械振动、机器人学等（其用矩阵建模和计算的例题都已列入本版书中）。但在实际教材中，这些课程都基本上不用矩阵计算，原因在于目前线性代数所教的内容与后续课的需求脱节。
脱节的第一个表现是阶次N（指方程数和变量数中的大者），化学方程配平的阶次是反应式前后物质的总数，每边三种物质，N就是6。静力学中空间单物体平衡有6个方程，多一个物体，方程就加倍。电路图的节点数就对应于方程数，可见大学课程需要的N至少是6以上，而工程实践中将达到几百和几千。第二个表现是方程组类型，在物理实验和各种测量学中，都使用冗余数据提高精度，遇到的往往是超定方程，而现有课程多数不讲超定方程。第三个表现是数域，交流电路、信号处理遇到的往往是复数代数方程。
根据以上的分析，教改中我们将课程的实践目标定位为：在保持原有理论和实践水平的基础上，使学生学会高效地解6阶以上、复数、超定线性代数问题。新旧教学要求的对比可以用图来说明。图中白色部分是现在大纲的覆盖区，它一般只能解3阶问题，求特征值只到2阶。灰色部分是因计算复杂而难以笔算的，黑色区则是根本没教算法的，此外因为只限于实数问题，白色区又都缩小一半。新提出的目标是学生会解的问题能覆盖全图，包括实数和复数方程，阶次可以扩展到几十、几百阶，从而可与后续课程实现无缝衔接。
百分之八十以上的后续课程的题目都不会落入白色区域，会做本书题目的线性代数老师大概只是凤毛麟角，所以我国线性代数的教育水平也可见一斑了。
二、关于如何引入计算软件的问题人们为什么不愿用矩阵解题呢？因为若没有矩阵运算的工具，即使是低阶的题目，其效率也低于代入法和消去法，人们宁可用中学的解题方法。至于N >4的高阶复数问题，更是望洋兴叹，因此若不教工具，后续课程都不愿意用矩阵。许多学生反映：他们学了线性代数在本科就没有用过，只在考研时有用；这就根本无法体现线性代数在教学计划中的基础课地位，至于让学生懂得线性代数在科学计算中的重要地位就更谈不上了。
要达到解高阶复数方程的目标，唯一的方法是用计算机，特别是要用最优秀的软件工具。其实不仅是计算机帮助了线性代数，线性代数对科学计算的帮助也非常大。计算机比计算器的优越性主要不在于单次运算速度快，而在于它能够对海量数据进行连续的运算处理，海量数据的最好组织方法便是矩阵。例如算一个1024点的傅里叶变换，就要用信号数组乘一个1024×1024的方阵，它包含100多万个数据（见本书例10.9）。没有矩阵的概念，这么大量的数据如何赋值、如何摆放都成问题。所以在学习矩阵之前很难充分发挥计算机的能力，而在学习线性代数的时候完成由计算器向计算机的转变是最合适的选择。
有一些老师对线性代数课使用计算机提出异议，其理由是学生用计算机算题，必然会放松笔算，不动脑筋，影响他们对基本概念的理解。有人甚至以禁止小学生用计算器作为论据，认为在大学一年级禁止用计算机是合理的。
持上述观点的老师，大概没有算过6阶以上的应用题，不知道手工做几百次乘法不许出错是什么滋味，更不知道CAD在现代化中的重要性。所以，怕学生“偷懒”而不教学生先进的知识，对教育和科学事业是极为有害的。历史上“新技术让人变懒”的论调不知重复了多少次，都不过证明了自己“懒”于跟进时代而已。在开放的信息社会中，我们应该提倡大学生从网上、从全世界去寻找解决任何问题的最新技术，怎么可以封堵知识呢？从一定意义上说，人如果不想“偷懒”，就没有各种机器的发明和科技的进步。用科学方法来“偷懒”是要提倡的行为。大学如果不大力提倡学最新知识，那怎样能培养“创新人才”呢？在让学生掌握更多知识和计算技能的同时，为了避免他们囫囵吞枣，在出习题和提问的时候，要拐弯，要让他们动脑筋，不能简单抄袭，那是教学的艺术；但绝不能只教笨办法，不教新技术。否则，还有什么“三个面向”？这样培养出的学生与发达国家培养出的同档次人才来比，不是成了无知的傻瓜吗？
在我们的教学实践中，共有800多名学生参加了教改试点，试点的学生普遍为刚进大学就能接触到现代化工具而兴高采烈，并因自己既会笔算、又会机算而自豪。不仅他们的实践解题能力大大超越了普通班，而且他们的理论考试成绩也高于普通班。我们倒没有在理论教育上下特别的工夫，其提高的原因可能是：（1）大量的实例和形象化教学，提高了学生学习的积极性；（2）我们在课程中提倡笔算与机算相结合；（3）学生在计算上节省出的时间，有利于他们更多进行概念的思考。实践证明，怕学生偷懒的担心是多余的。
我们觉得，教育部门确实要对学生从小学到大学的科学计算能力的全程培养做出规划。防止学生上网成瘾的最好方法不是封堵，而是引导他们用计算机来学习和算题。“计算机要从娃娃抓起！”从国际上看，大一学生学会用计算机算题，无论如何是不嫌早了。
三、关于如何培养学生抽象思维能力的问题过去线性代数课程教学中，既缺乏应用实例，用数字运算又太烦琐，因此只好把 “抽象思维能力”作为课程主要的培养目标，但我们不赞成这种提法。第一是目标欠妥，工科大一的新生，感性知识还很少，三维空间概念还有待建立，工程实际知识几乎空白，根本没有抽象思维的基础；老师们放着图中或书本中大量未解决的实际问题不学不教，却要去教空洞的“抽象思维”，是本末倒置、有害无益的；第二是方法不对，只讲理论，不联系实际，就能培养抽象思维能力吗？根本不行！如果学生对自己熟悉的课程领域都不会用矩阵建模解题，怎么可能指望他们对更深奥的问题进行抽象思考呢？这是人类的思维规律啊！
不管老师还是学生，都要经过大量从感性上升到理性的训练，才能培养抽象思维能力。所以我们在教课时要利用软件工具的优势，使抽象概念形象化；要大量介绍矩阵建模的实例，使学生体会到使用矩阵的优越性。事实上，见多了就会模仿。只有让学生看到线性代数在自己熟悉的各门课程中都能建模，而且解题快捷，他们就能逐渐学会用矩阵建模了。
我在20世纪70年代开始遇到矩阵，但只用它推理，没法用它算题；1995年接触了MATLAB，发现它在解矩阵问题方面的特殊优势，只要写出矩阵表达式，问题都可快速得解。于是我在各门课程中都尝试用矩阵建模和解题，写出了涉及十多门课程的多本教材（见参考文献[10]~[12]），并就逐渐地在前人没做过的领域使用矩阵建模了。其中具有创新价值的基础性工作是把信号流图抽象为矩阵模型，并且用MATLAB求解。
目前国内外所有的信号与系统、信号处理及自动控制教材讲信号流图时，所用的解法都是1953年由梅森提出的以图论为基础的公式，既没有证明、用起来又很烦琐，更无法用计算机编程。掌握了MATLAB工具后，我就力求把信号流图也表现为矩阵，并终于得到了成功（见参考文献[8,9]），使得不管多复杂的连续和离散的信号流图都可以方便地靠计算机求解。在本书中，它反映在8.6.3节，8.6.4节和10.11节中。这说明抽象思维既需要大量建模实践为基础，又要掌握先进的解题工具，才有动力；而且要靠长期的科研实践，不是靠一门只讲理论、不联系实际的数学课所能培养出来的。
四、理工结合和师资培训问题工科线性代数属于工程数学，要把数学用于工程，教师必须既有坚实的数学基础，又有必要的工程知识。线性代数的教改加进了数学软件，教师必须要较好地掌握软件的编程；此外，还要有教学经验的积累。线性代数是一个量大面广的课程，每年有100～200万学生要上这门课，全国的线性代数教师可能多达1～2万人。其中有的是数学专业出身，有的是工程专业出身，要适应笔算和机算兼顾的教学要求，是要下一番工夫才能胜任的。
有人提出，数学课必须由学数学出身的人教才能教好，这是很片面的。另外，有些学校的工程系为了给本系老师争工作量，以为线性代数简单、好教，不经辅导培训就让新上岗的工科教师来应付，这也是不对的。需求和应用是学科发展的导向，工程数学要更好地服务于应用，既需要出身于数学而对工程有兴趣的老师，也需要出身于工程而对数学有兴趣的教师。他们都可以对工科数学的教改作出较大贡献。反之，出身于数学专业而对工程不感兴趣的老师，或出身于工程专业而对数学不感兴趣的老师，肯定教不好工科数学。根据我们的体会，工科线性代数教改中这两类教师的结合非常重要，绝不应该有门户之见，各自要学习对方的长处，克服自己的不足。我们新编的《工程线性代数（MATLAB版）》教材就是在工程专业和数学专业教师合作下完成的。
国外的经验值得我们借鉴。美国关于线性代数的教改的五条LACSG Recommendations就是由数学专家和工程界的权威开会联合提出的。美国大学的工程数学教学工作也有些就由工程系承担，例如斯坦福大学的概率论和数理统计课程。即使由数学系教授任教的工程数学，由于大学分专业晚，而且数学教授从事与工程结合的科研项目也多，他们的工程知识普遍比中国教师强得多，这可从其线性代数教材（见参考文献[1]~[4]）所具有丰富的工程背景看出。为了推动课程改革走向正确的方向，必须加强教师培训和考核，不管出身如何，任课教师应该对工程和数学都有很大的兴趣，愿意把两者更好地结合。要根据坚实的数学基础、必要的工程知识，良好的编程能力和丰富的教学经验四方面的条件对教师进行培训、考核和遴选。
五、需要进一步探索的问题为了便于检验教改的效果和应对考研，我们的改革是有约束条件的，那就是保持线性代数原有理论内容不变，只增加实践内容和提高解题水平。这就必然要增加课时，增加的一个学分中，MATLAB占4学时，上机10机时（合5学时），线性代数实践占6学时。如果不算MATLAB的9学时，线性代数多用了6学时，其中包括多讲了超定方程解法和与计算有关的额外理论（如计算速度和精度、条件数、奇异值分解等）。
其实，线性代数理论的学时数确有减少的余地。美国的LACSG Recommendations建议全课面向非数学专业，突出应用性；不再强调抽象思维，只对数学系另外开课加强抽象性。有些大学干脆把工科线性代数改名为“矩阵应用”，这些措施都是为了减少原来的线性代数课过于抽象的 “数学味“。我认为，如果研究生统考的试题能同步改革，减少抽象性，突出应用性，那么理论部分减少6个学时应该是不困难的。当然这还有待于大家的探索，也需要教指委等教学指导部门和行政、考试部门的正确指导和干预。
六、教指委和本校专家对本项目的鉴定意见
2008年5月，由教育部高等学校数学与统计学教指委数学基础课程分教学指导委员会和西安电子科技大学联合组织了鉴定小组，对这个实施了多年的项目进行了验收鉴定。鉴定意见指出：
“本项目从工程技术应用的视角，审视了线性代数课程教学内容和教学方法，将工程背景、应用实例和现代科学计算软件融入了线性代数教学，符合国内外教学改革的方向和国际潮流，有助于实现“提高教育现代化水平”的目标，在国内线性代数课程教学中属于首创。
课题组编写的《线性代数实践及MATLAB入门》和《工程线性代数（MATLAB版）》两本教材，较好地体现了经典理论与现代计算手段相结合，将抽象概念形象化，使一些复杂的计算问题得以实现，激发了学生学习的兴趣，培养了解决问题的能力，提高了教学质量，为后续相关课程中应用线性代数知识打下了很好的基础。
本课题组的改革思想和取得的改革经验具有示范意义，出版的教材和教学实践在校内外产生了较大的影响，课题组举办的卓有成效的师资培训班以及所提供的程序集、课件和其他教学资料，为本项目的推广应用创造了良好的条件。
专家组高度评价了该项目组两年多来在线性代数课程教学改革中所取得的显著成果，一致认为：该项目改革理念先进，特色鲜明，具有创新性，是一项高水平的教学改革成果，具有很好的推广价值。”
我们将更好地贯彻专家组的意见，为在全国推广这一成果而努力，对本书的修订就是措施之一，也希望全国有更多的大学和老师参与。美国在全国推广“用软件工具提高线性代数教学”的项目用了六年的时间，所以不下大的力气，我国是很难在同样时间内做到这一点的。而线性代数课中是否学会了软件工具，会直接影响几乎所有后续课程现代化的进程，当然也会影响我国教育现代化的进程。
对已学过线性代数理论的人员，包括高年级学生、教师和工程技术人员等，进行在岗培训，补上线性代数实践这一课也是一个很重要的方面，不然他们就没法解决工程实际问题。为了更好地面向这些读者，在本书的第2版中我们增加了第10章，增补了一些机械和电子专业后续课中较深的线性代数应用实例，低年级大学生则可不学这一章。
七、出版说明由于把计算机与线性代数相结合，本书在印刷排版上出现了一些新问题，需要把两者更好地融合起来。我们作了如下处理：
（1）在叙述文中，全部按原有线性代数书的排版规则，即使遇到MATLAB函数或语句，矩阵仍用黑斜体，下标则仍用小号字，如[p,lamda]=eig(A3)。
（2）书中所有人机交互的部分等用白体。即在输入计算机的MATLAB完整程序段或程序行中全用正白体，如A1=A3*A4，因为计算机不接受黑斜体矩阵，下标也不能用小号字。这与我们提供的下载程序集一致。程序运行后计算机显示的结果也全用正白体。如：
输入 [p,lamda]=eig(A3)
得到 
（3）除了说明矩阵阶数Am×n之外，乘号运算符不用×，统一采用*，或完全省略，如A*B或AB。
陈怀琛 2008年7月于美国硅谷
第1版序
陈怀琛与龚杰民两位教授所编写的《线性代数实践与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于西安电子科技大学
目 录
第一篇 MATLAB语言入门第1章 MATLAB语言概述 2
1.1 MATLAB语言的发展 2
1.2 MATLAB语言的特点 3
1.3 MATLAB的工作环境 4
1.3.1 命令窗 4
1.3.2 图形窗 6
1.3.3 文本编辑窗 8
1.4 演示程序 8
第2章 基本语法 10
2.1 变量及其赋值 10
2.1.1 标识符与数 10
2.1.2 矩阵及其元素的赋值 11
2.1.3 复数 12
2.1.4 变量检查 13
2.1.5 基本赋值矩阵 15
2.2 矩阵的初等运算 16
2.2.1 矩阵的加减乘法 16
2.2.2 矩阵除法及线性方程组的解 18
2.2.3 矩阵的乘方和幂次函数 20
2.2.4 矩阵结构形式的提取与变换 21
2.3 元素群运算 22
2.3.1 数组及其赋值 22
2.3.2 元素群的四则运算和幂次运算 23
2.3.3 元素群的函数 24
2.4 逻辑判断及流程控制 25
2.4.1 关系运算 25
2.4.2 逻辑运算 27
2.4.3 流程控制语句 28
2.5 基本绘图方法 32
2.5.1 直角坐标中的两维曲线 32
2.5.2 线型、点型和颜色 33
2.5.3 多条曲线的绘制 34
2.5.4 屏幕控制和其他二维绘图 35
2.5.5 三维曲线和曲面 40
2.5.6 特殊图形和动画 42
2.5.7 彩色、光照和图像 44
2.5.8 低层图形屏幕控制功能 46
2.6 M文件及程序调试 48
2.6.1 主程序文件 49
2.6.2 人机交互命令 50
2.6.3 函数文件 51
2.6.4 文件编辑器及程序调试 53
第3章 MATLAB的开发环境和工具 54
3.1 MATLAB与其他软件的接口关系 54
3.1.1 与磁盘操作系统的接口关系 54
3.1.2 与文字处理系统WinWord的关系 57
3.1.3 图形文件的转储 58
3.1.4 低层输入输出函数库 58
3.1.5 与C和FORTRAN子程序的动态链接 60
3.2 MATLAB的文件管理系统 60
3.2.1 安装后的MATLAB文件管理系统 60
3.2.2 MATLAB自身的用户文件格式 61
3.2.3 文件管理和搜索路径 61
3.2.4 与目录和搜索有关的命令 62
3.2.5 搜索顺序 63
3.3 MATLAB 6.x的开发环境 63
3.3.1 桌面系统的内容 63
3.3.2 桌面命令菜单简介 64
3.3.3 MATLAB 6.x的用户界面 65
第4章 MATLAB的其他函数库 67
4.1 数据分析函数库（datafun函数库） 67
4.1.1 基本的数据分析 67
4.1.2 用于场论的数据分析函数 69
4.1.3 用于随机数据分析的函数 69
4.1.4 用于相关分析和傅里叶分析的函数 70
4.2 矩阵的分解与变换（matfun函数库） 72
4.2.1 线性方程组的系数矩阵 72
4.2.2 矩阵的分解 73
4.2.3 矩阵的特征值分析 75
4.2.4 特殊矩阵库（specmat） 75
4.3 多项式函数库（polyfun） 76
4.3.1 多项式的四则运算 77
4.3.2 多项式求导、求根和求值 78
4.3.3 多项式拟合 79
4.3.4 多项式插值 80
4.3.5 线性微分方程的解（residue） 82
4.4 函数功能和数值积分函数库（funfun） 83
4.4.1 函数功能和数值积分函数库的主要子程序 83
4.4.2 非线性函数的分析 84
4.4.3 任意函数的数值积分 86
4.5 字符串函数库（strfun） 88
4.5.1 字符串的赋值 89
4.5.2 字符串语句的执行 89
4.5.3 字符串输入输出 90
4.6 稀疏矩阵函数库（sparfun） 90
4.7 图形界面函数库（guitools） 92
4.8 数据类型函数库（datatypes） 93
4.8.1 结构阵列 94
4.8.2 单元阵列 95
4.8.3 类和对象 96
4.9 符号数学（Symbolic Math）工具箱简介 99
4.9.1 Symbolic工具箱的主要功能 99
4.9.2 符号数学式的基本表示方法 99
4.10 习题 101
第二篇 线性代数实践第5章 预备知识 106
5.1 实验在线性代数中的重要性 106
5.2 实验部分的内容组成 108
5.3 直线和平面的快速绘制程序 109
5.4 随机整数矩阵的生成程序 112
5.5 特殊矩阵的生成程序 113
5.6 线性代数建模与应用概述 113
5.7 习题 115
第6章 用行阶梯法解线性方程 118
6.1 线性方程组的MATLAB表示方法 118
6.2 初等行变换和高斯消元子程序 121
6.3 行阶梯形式的生成 123
6.4 MATLAB中的行阶梯生成函数 126
6.5 用行阶梯法解欠定方程组 127
6.6 应用实例 130
6.6.1 平板稳态温度的计算 130
6.6.2 化学方程的配平 131
6.6.3 电阻电路的计算 133
6.6.4 交通流量的分析 134
6.7 习题 136
第7章 用矩阵运算法解线性方程 138
7.1 矩阵运算规则的MATLAB实现 138
7.2 初等变换乘子矩阵的生成 142
7.3 行列式的定义和计算 145
7.4 矩阵的秩和矩阵求逆 148
7.5 用矩阵“除法”解线性方程 150
7.6 应用实例 151
7.6.1 网络的矩阵分割和连接 151
7.6.2 用逆阵进行保密编译码 152
7.6.3 减肥配方的实现 153
7.6.4 弹性梁的柔度矩阵 154
7.6.5 网络和图 156
7.7 习题 158
第8章 用向量空间解线性方程组 161
8.1 向量和向量空间 161
8.2 向量空间和基向量 164
8.3 向量的内积和正交性 167
8.4 齐次解空间 171
8.5 超定方程的解——最小二乘问题 173
8.6 应用实例 177
8.6.1 价格平衡模型 177
8.6.2 宏观经济模型 179
8.6.3 信号流图模型 180
8.6.4 数字滤波器系统函数 182
8.7 习题 184
第9章 线性变换及其特征 187
9.1 平面上线性变换的几何意义 187
9.2 二维矩阵特征值的几何意义 189
9.3 三维空间中线性变换的几何意义 193
9.4 基变换与坐标变换 197
9.5 特征值和特征向量的MATLAB求法 198
9.6 对称矩阵对角化与二次型主轴 201
9.7 奇异值分解简介 206
9.8 应用实例 209
9.8.1 人口迁徙模型 209
9.8.2 产品成本的计算 211
9.8.3 情报检索模型 212
9.9 习题 214
第10章 后续课矩阵建模增补 216
10.1 多项式插值问题 216
10.2 坐标测量仪测定中的拟合问题 217
10.3 天体轨道测量的曲线拟合问题 219
10.4 静力学问题 221
10.5 材料力学的静不定问题 222
10.6 二自由度机械振动的模态分析 224
10.7 交流稳态电路的复数矩阵解 226
10.8 线性系统零输入响应的计算 227
10.9 计算频谱用的DFT矩阵 228
10.10 最优化有限冲激响应（FIR）数字滤波器设计 230
10.11 信号流图的矩阵建模和计算机求解 232
10.12 自动控制系统的矩阵建模 235
结束语 238
附录A 关于MATLAB基本部分函数索引的说明 240
附录B 有关美国“用软件工具增强线性代数教学”计划的资料 241
参考文献 251[1]