用主元连乘法定义行列式—工科线性代数现代化和大众化的思路之二摘要:提出了用主元连乘积法来定义行列式,可以把高斯消元法与行列式有机地联系起来,大大简化行列式的理论讲授难度,可以避开的许多困惑的概念,并且使行列式的计算和编程十分方便快捷。这从1995到2004的十年间,为了把科学计算软件用于机械、电子、控制等类工科课程,我写了五本书,涉及十多门课程,解了超百道的线性代数问题,真正体验了后续课程和工程问题对线性代数的需要。发现工科线性代数现代化和大众化的首要手段是引进机算。其次,许多老师根本不知道工程上是如何应用线性代数的,凭想象选材。造成在内容上,“有用的不教,教了的没用”。本文只就行列式的用法和算法问题做些探讨。一、工科后续课究竟如何用行列式的?工科学生遇到的主要线性代数问题是解方程组。其阶数通常为五阶以上,直到成百上千。求解的基本原理是高斯消元法,采用的工具是计算机,用手工笔算是不可能的。不过现在的大学数学就是偏偏只教笔算,只管解三阶以下的题目。“不教机算”的问题我已谈得很多,2009年高教司已立项“用MATLAB和建模实践改造工科线性代数”来解决这个问题,有19所大学,45000名学生参与了试点,深受师生欢迎,现在正在继续推广,本文就不多说了。在这里我要谈的是线性代数中的一个困难的理论问题——行列式,应该如何教。大家知道,“行列式不为零”是判断线性方程组解存在的根据,从数学上看,必不可少。因此现在的线性代数老师教给学生的是这样一个概念:拿来一个线性方程组,先算它的系数行列式,如果它不等于零,再去求解;否则就不算了。实际情况远非如此,我解的上百道矩阵应用题目,都是直接求解方程,没有先算行列式“判解”这个步骤。其原因何在呢?1.先判解,后求解,这样的操作顺序要有一个前提,那就是,判解应该比求解容易。如果求解快,判解慢,那有何必多此一举去“判解”呢?因此,计算复杂度是关键,当前线性代数中不考虑计算复杂度是一个大的缺陷。2.方程组求解现在都用高斯消元法,数学上早有证明,那是最快的方法。行列式的计算法则随定义而定,现有三种定义方法[1]:显式法、代数余子式法和主元连乘积法。我国的现有教材从来都不讲第三种,而前两种定义下的计算复杂度极高。三阶及以上的系统,判解远慢于求解。阶数愈高,两者的差距愈大。因此,判解实际上是不进行的。3.消元法求解的过程中,已经经历了解的存在性的判断。只要消元所得的行阶梯矩阵的主对角线上的元素不为零,方程组就有解;主元出现零,方程就无解。其实,求出了行阶梯矩阵,用主元连乘积的定义,已经可以很方便地通过N-1次连乘,得到行列式的值,所以求解和求行列式几乎是同时完成的,并不需要多付出双倍以至千百倍的无用功来先判解的。尤其是使用计算机解题时,如果出现了某个零主元,计算机会发出出错告警,指出系数行列式接近或等于于零。二、用主元连乘积法定义行列式1.设二阶方阵开始,设二阶方阵的系数矩阵为,只用第三类初等变换来消元,所得的行阶梯矩阵为:,对角项(主元)的连乘积D不为零,得到D=ad-bc≠0这个D=ad-bc就称为矩阵A的行列式。可见,二阶线性方程组主元的连乘积就等于行列式。如果用矩阵的下标来标注元素,其行列式为。2..三阶方程组的行列式设三阶方程组的系数矩阵为则只用第三类初等变换的高斯消元法求得其上三角矩阵如下:要求三个对角元素的连乘积不为零。结果为:可见用主元连乘积也同样可定义三阶系数矩阵的行列式。为了使行列式的值具有唯一性,必须限定消元变换中不使用第一类(会改变正负号)和第二类(会改变乘数)初等变换。3.向高阶行列式的演绎由此可以推想,将N阶系数方阵用高斯消元法变换为上三角方阵,其对角线上所有主元的连乘积就是该方阵的行列式,即。我们已经知道,消元法解方程时,若主元不等于零,解就存在并可用除法求得。所以,在这个定义下,判断行列式是否为零与判断诸主元是否为零是等价的。反过来说,用消元法如能求出方程组的解,则此方程组系数矩阵的主元,因而行列式必不等于零,再用行列式去判解是多此一举。许多数学书上对此定义方法早有定论。比如在[1]中...