利用递归计算代数余子式(的值)的思想通过scheme语言来求算n阶行列式的值。

《线性代数》第六版同济大学第1章第5节介绍了行列式按行(列)展开的方法,其中提到:

引理: 一个n阶行列式,如果其中第i行所有元素除(i, j)元素aij外都为零,那么这行列式等于aij与它的代数余子式的乘积,即

定理: 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和,即:

所以根据上述定理,我们发现行列式按行(列)展开后,变成了若干缩小后的行列式,所以根据这种规律,可以采用递归的方法计算n阶行列式的值。

整个过程参考了c++递归方法计算n阶行列式这篇博文,下面是使用sheme递归方法计算n阶行列式的代码:

;det function: calculating the n*n determinant
(define (det n aa)
(if (= n 1)(vector-ref aa 0)(let ((bb (make-vector (* (- n 1) (- n 1)) 0))     ;bb(mov 0)  ;mov(sum 0.0);sum) ;bb;first loop(do ((arow 0 (+ 1 arow)))((> arow (- n 1)))(begin (do ((brow 0 (+ 1 brow)))((> brow (- n 2)))(begin (set! mov (if (> arow brow) 0 1))(do ((j 0 (+ 1 j)))((> j (- n 2)))(vector-set! bb (+ (* brow (- n 1)) j) (vector-ref aa (+ (* (+ brow mov) n) j 1)));vector-set!);do_third loop);begin_second);do_second loop(let ((flag (if (= (modulo arow 2) 0) 1 -1)))(set! sum (+ sum (* flag (vector-ref aa (* arow n))(det (- n 1) bb))));set!);let);begin_first);do_first loopsum);let
);if
);define;测试格式:调用函数det
;(det 阶数 行列式)

可以使用云算网来验证行列式值的计算结果。

Hope you have a nice day!~~~

使用scheme语言实现n阶行列式值的计算相关推荐

  1. c语言实验作业在dev蜗居的思路,关于C语言的问题:如何用C语言实现n阶行列式和矩阵的值...

    满意答案 玻璃鞋syt 2013.06.30 采纳率:49%    等级:11 已帮助:4945人 输入: 3---7 2---1 得出错误结果. 而当输入n=3 0---1---3 3---0--- ...

  2. python语言必刷题——BMI值的计算

    本文涵盖了三种基本的BMI计算类型!! 输入身高体重并计算BMI 当前计算BMI的程序中 height, weight 都是固定值,请将程序更改为从键盘获取输入,再计算 BMI. 先输入身高(单位:米 ...

  3. 【C语言】解说float取值范围计算过程

    微信公众号: 1.先给出实型变量取值范围 实型变量可以分为单精度(float)(4字节).双精度(double)(8字节).长双精度(long double)(8字节)三种类型. 在 VC6.0 do ...

  4. c语言编写程序计算行列式值,求行列式的值,用C语言怎么写啊? 如何求行列式的值...

    导航:网站首页 > 求行列式的值,用C语言怎么写啊? 如何求行列式的值 求行列式的值,用C语言怎么写啊? 如何求行列式的值 相关问题: 匿名网友: 行列式计算公式知道吧,给你个源码参考,大一时写 ...

  5. n阶行列式计算----c语言实现(完结)

    花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...

  6. C语言展开法和全排列法实现n阶行列式计算

    在这里向大家介绍两种实现n阶行列式计算的方法 目录 1.展开法 2.全排列法 一.展开法: 展开法的实现思想就是利用递归不断将行列式某一行或者某一列的n-1个(假设行列式为n行n列)置为0,剩余一个置 ...

  7. 使用c语言计算3阶行列式

    很多学线性代数的小伙伴在计算3阶行列式的时候总会感到很麻烦,数据量大而且容易看错.我们在知道计算方法后就可以使用c语言写出计算3阶行列式的代码: #include.h> int main() { ...

  8. 用c语言求解n阶线性矩阵方程组,用C语言求解N阶线性矩阵方程Axb简单解法.docx

    用C语言求解N阶线性矩阵方程Axb简单解法 用C语言求解N阶线性矩阵方程Ax=b的简单解法一.描述问题:题目:求解线性方程组Ax=b,写成函数.其中,A为n×n的N阶矩阵,x为需要求解的n元未知数组成 ...

  9. 【机器学习|数学基础】Mathematics for Machine Learning系列之线性代数(2):n阶行列式、对换

    文章目录 前言 1.3 n阶行列式 1.4 对换 1.4.1 排列的对换 概念 定理1 内容 证明 推论 1.4.2 行列式的另一种表示方法 定理2 内容 证明 结语 前言 Hello!小伙伴! 非常 ...

最新文章

  1. Keil错误fatal error: UTF-16 (LE) byte order mark detected
  2. 并发库应用之三 线程池与定时器应用
  3. 模型预测控制_模型预测控制(MPC)算法之一MAC算法
  4. 计算机怎么会自动开机,Windows10系统电脑半夜会自动开机如何解决
  5. Mouse Detected Problem
  6. Layui 数据表格动态cols(字段)动态变化
  7. [ZT]如何实现打印输出到Adobe PDF格式文件
  8. nnie svp算法代码解读
  9. Android APK反编译技巧全讲解
  10. 千兆以太网RJ45接口连线引脚定义
  11. 如何实现跨项目共享token
  12. linux nfs 测试 读写,部署NFS与测试NFS
  13. 机器学习 面试题-第二章 线性模型(大厂必问,历经半年整理)
  14. 材料研究生转行,可以做哪些准备规划
  15. Android.AsyncTask
  16. 生成器之Send方法--python
  17. X猜想:比尔离开后的微软帝国
  18. Coprime AtCoder Beginner Contest 215
  19. 实验吧CTF练习题---安全杂项---异性相吸解析
  20. 10多个LearnDash示例和演示:从这些在线教育网站获得灵感!

热门文章

  1. PHP类计算机专业毕业设计题目选题课题
  2. org.apache.ibatis.exceptions.PersistenceException:
  3. Scripted Pipeline 实现Declarative pipeline的类似post功能
  4. Spring常用的拓展接口分门别类
  5. 经济数据预测 | Python实现机器学习(MLP、XGBoost)金融市场预测
  6. CTFshow——web入门——文件上传
  7. PHP抓取全国省市区数据
  8. Android好书《Android9编程通俗演义》
  9. 计算机图形学bazzer茶壶制作_书籍推荐:艺术化绘制的图形学原理与方法
  10. 【PAT乙级】1086 就不告诉你