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

博文

求行列式的三种算法及C程序

已有 6878 次阅读 2021-1-23 22:35 |个人分类:线性代数|系统分类:教学心得

“你学过《线性代数》和《C语言》吗?”, “学过,……我便考你一考。计算行列式用C语言怎样写?”,,,“不能写罢?……我教给你,记着!这些算法应该记着。将来做项目当老板的时候要用”,,,“对呀对呀!行列式的算法有三样写法,你知道么?”


在前面的博文中已提到计算行列式的两种算法,即:

一、按第一行展开的递归方法,链接如下:

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

 

二、利用初等行变换,化成上三角矩阵求对角线元素乘积的方法,链接如下:

http://blog.sciencenet.cn/blog-797552-1227970.html

 

三、一般教材还给出一种按完全展开式计算的方法,即,每行取一元素按元素列下标的“全排列”和“逆序数”奇偶性构成n个元素的乘积,对这n!项求和。


这种方法也是通过递归的方式,生成1到n个数的全排列。每生成一个排列存放到数组P中,用A[i*(m+1)+P[i]-1]取对应元素。编写这个算法,琢磨了很久,主要是求全排列不好处理,最后参考了的《算法竞赛》(罗勇军、郭卫斌著)书中递归打印全排列的算法思想才调试通。

  主函数及相关测试数据和输出矩阵函数如下:


行列式1.png

运行结果:

行列式3.png


本文第一段是写完博文后又加的,改自<孔乙己>,写完程序想教给学生,经常有孔乙己的这种感觉,穷困、迂腐,好为人师,却常遇这种尴尬。<孔乙己>原文为:

你读过书么?我略略点一点头。他说,读过书,……我便考你一考。茴香豆的茴字,怎样写的?我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,不能写罢?……我教给你,记着!这些字应该记着。将来做掌柜的时候,写账要用。我暗想我和掌柜的等级还很远呢,而且我们掌柜也从不将茴香豆上账;又好笑,又不耐烦,懒懒的答他道,谁要你教,不是草头底下一个来回的回字么?孔乙己显出极高兴的样子,将两个指头的长指甲敲着柜台,点头说,对呀对呀!……回字有四样写法,你知道么?我愈不耐烦了,努着嘴走远。孔乙己刚用指甲蘸了酒,想在柜上写字,见我毫不热心,便又叹一口气,显出极惋惜的样子。


   



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

上一篇:构树
下一篇:用特征值求递推关系的通项公式
收藏 IP: 61.149.223.*| 热度|

1 宁利中

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

数据加载中...
扫一扫,分享此博文

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

GMT+8, 2024-11-25 14:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部