|||
这学期在网上讲线性代数,对一些在教室黑板上很容易说清楚的问题,都得搬到计算机上进行,关键是看不见学生的反映,有人说出些小作业随时让学生做,可是,数学课不同于其它课,信息量知识量大做题耗时不必说,很多抽象思维的东西是需要现场交流的,虽然也是直播,有的只可”意会”的内容很不好远程”言传身教”。
这样,师生都守着电脑上课,也是可利用的,正好这届学生已学过C语言课,所以上线性代数,我也试着引入用C语言计算一些问题。同时用自然语言、数学语言、计算机语言,从不同的角度描述和理解同一数学问题也许更好。教材上来就讲行列式,并且用什么“对换”“逆序”来讲,想想学生看着PDF电子文件也够头痛的。
线性代数,对学了C语言的同学该这样开始学:递归方法计算行列式
我先简单引入向量,就是一列有序的数,这是学生熟悉且好掌握的,简单介绍矩阵,让学生和C语言二维数组联系起来,再正式开讲方阵的行列式。引入矩阵的余子阵概念,即方阵A中划去某元素所在行及所在列的元素后剩余元素所组成的n-1阶方阵,记为Aij,就可自然引出用如下递归定义计算行列式det(A)或|A|。
如果A是1阶方阵, A只有一个元素,det(A)为A的值,即det(A)=A。否则n>1时,行列式值为:
根据这个定义,先讲一些示例,按着以上算法,再介绍C程序。虽然有的同学C语言学的不怎么好,但大概思路还是可接受的。
主程序调用: det(A,N)
我写的det函数为:
(倒数第四行delete [] A1k;,还是学生告我他的编译器对“delete A1k”有警告而改正的。)
这个定义,开始可能难点,但再熟悉一下二阶行列式的计算,就可很自然地理解行列式的性质,如对换、数乘、倍加变换对行列式值的影响。也很容易理解行列式的按行、列展开。
有了以上行列式计算的程序,也容易理解克拉默法则解线性方程组、求伴随矩阵等程序。
教材上也没涉及行列式的几何意义,只是一味的算算算,行列式其实是代表向量组所组成的平行四边形有向面积(三维是体积),画了如下图简单介绍,了解几何意义也对以后学习矩阵或向量组的秩时为什么用到行列式,有个直观的映像。对线性变换导致的空间变换也好理解,对|AB|=|A||B|=|B||A|=|BA|等性质看起来也很直观了。
通过举例分析一些复杂的行列式计算,学生基本能掌握行列式这一章。
另外,递归程序计算行列式时,随着n的增大,计算量是很大的,如以下四阶矩阵,
算4阶矩阵的行列式共调用det(A)的次数为 1+4+4*3+4*3*2=41次。
对于5阶,是1, 5, 5*4, 5*4*3, 5*4*3*2 =206次, 对于6阶1237次,7阶8860,8阶69281次。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 12:13
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社