cambaluc的个人博客分享 http://blog.sciencenet.cn/u/cambaluc

博文

线性代数(1)_这样开始讲“行列式”

已有 3534 次阅读 2020-3-12 10:16 |个人分类:数学|系统分类:教学心得| 线性代数, 行列式, 递归, C语言

这学期在网上讲线性代数,对一些在教室黑板上很容易说清楚的问题,都得搬到计算机上进行,关键是看不见学生的反映,有人说出些小作业随时让学生做,可是,数学课不同于其它课,信息量知识量大做题耗时不必说,很多抽象思维的东西是需要现场交流的,虽然也是直播,有的只可意会的内容很不好远程言传身教

这样,师生都守着电脑上课,也是可利用的,正好这届学生已学过C语言课,所以上线性代数,我也试着引入用C语言计算一些问题。同时用自然语言、数学语言、计算机语言,从不同的角度描述和理解同一数学问题也许更好。教材上来就讲行列式,并且用什么“对换”“逆序”来讲,想想学生看着PDF电子文件也够头痛的。

线性代数,对学了C语言的同学该这样开始学:递归方法计算行列式

我先简单引入向量,就是一列有序的数,这是学生熟悉且好掌握的,简单介绍矩阵,让学生和C语言二维数组联系起来,再正式开讲方阵的行列式。引入矩阵的余子阵概念,即方阵A中划去某元素所在行及所在列的元素后剩余元素所组成的n-1阶方阵,记为Aij,就可自然引出用如下递归定义计算行列式det(A)|A|

如果A1阶方阵, A只有一个元素,det(A)A的值,即det(A)=A。否则n>1时,行列式值为:

1公式det.png

根据这个定义,先讲一些示例,按着以上算法,再介绍C程序。虽然有的同学C语言学的不怎么好,但大概思路还是可接受的。

主程序调用: det(A,N)

我写的det函数为:

C_det.png

(倒数第四行delete [] A1k;,还是学生告我他的编译器对“delete A1k”有警告而改正的。)

 

  这个定义,开始可能难点,但再熟悉一下二阶行列式的计算,就可很自然地理解行列式的性质,如对换、数乘、倍加变换对行列式值的影响。也很容易理解行列式的按行、列展开。

 

公式2.png

有了以上行列式计算的程序,也容易理解克拉默法则解线性方程组、求伴随矩阵等程序。

教材上也没涉及行列式的几何意义,只是一味的算算算,行列式其实是代表向量组所组成的平行四边形有向面积(三维是体积),画了如下图简单介绍,了解几何意义也对以后学习矩阵或向量组的秩时为什么用到行列式,有个直观的映像。对线性变换导致的空间变换也好理解,对|AB|=|A||B|=|B||A|=|BA|等性质看起来也很直观了。

平行四边形.png

通过举例分析一些复杂的行列式计算,学生基本能掌握行列式这一章。

 

另外,递归程序计算行列式时,随着n的增大,计算量是很大的,如以下四阶矩阵,

递归4阶.png

4阶矩阵的行列式共调用det(A)的次数为 1+4+4*3+4*3*2=41次。

对于5阶,是1, 5, 5*4, 5*4*3, 5*4*3*2 =206次,  对于61237次,78860869281次。




https://blog.sciencenet.cn/blog-797552-1223086.html

上一篇:准备上网课时用到的小程序段
下一篇:线性代数(2)_讲“矩阵乘法”
收藏 IP: 124.64.16.*| 热度|

2 吴斌 舒红

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 05:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部