使用scheme语言实现n阶行列式值的计算
利用递归计算代数余子式(的值)的思想通过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阶行列式值的计算相关推荐
- c语言实验作业在dev蜗居的思路,关于C语言的问题:如何用C语言实现n阶行列式和矩阵的值...
满意答案 玻璃鞋syt 2013.06.30 采纳率:49% 等级:11 已帮助:4945人 输入: 3---7 2---1 得出错误结果. 而当输入n=3 0---1---3 3---0--- ...
- python语言必刷题——BMI值的计算
本文涵盖了三种基本的BMI计算类型!! 输入身高体重并计算BMI 当前计算BMI的程序中 height, weight 都是固定值,请将程序更改为从键盘获取输入,再计算 BMI. 先输入身高(单位:米 ...
- 【C语言】解说float取值范围计算过程
微信公众号: 1.先给出实型变量取值范围 实型变量可以分为单精度(float)(4字节).双精度(double)(8字节).长双精度(long double)(8字节)三种类型. 在 VC6.0 do ...
- c语言编写程序计算行列式值,求行列式的值,用C语言怎么写啊? 如何求行列式的值...
导航:网站首页 > 求行列式的值,用C语言怎么写啊? 如何求行列式的值 求行列式的值,用C语言怎么写啊? 如何求行列式的值 相关问题: 匿名网友: 行列式计算公式知道吧,给你个源码参考,大一时写 ...
- n阶行列式计算----c语言实现(完结)
花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...
- C语言展开法和全排列法实现n阶行列式计算
在这里向大家介绍两种实现n阶行列式计算的方法 目录 1.展开法 2.全排列法 一.展开法: 展开法的实现思想就是利用递归不断将行列式某一行或者某一列的n-1个(假设行列式为n行n列)置为0,剩余一个置 ...
- 使用c语言计算3阶行列式
很多学线性代数的小伙伴在计算3阶行列式的时候总会感到很麻烦,数据量大而且容易看错.我们在知道计算方法后就可以使用c语言写出计算3阶行列式的代码: #include.h> int main() { ...
- 用c语言求解n阶线性矩阵方程组,用C语言求解N阶线性矩阵方程Axb简单解法.docx
用C语言求解N阶线性矩阵方程Axb简单解法 用C语言求解N阶线性矩阵方程Ax=b的简单解法一.描述问题:题目:求解线性方程组Ax=b,写成函数.其中,A为n×n的N阶矩阵,x为需要求解的n元未知数组成 ...
- 【机器学习|数学基础】Mathematics for Machine Learning系列之线性代数(2):n阶行列式、对换
文章目录 前言 1.3 n阶行列式 1.4 对换 1.4.1 排列的对换 概念 定理1 内容 证明 推论 1.4.2 行列式的另一种表示方法 定理2 内容 证明 结语 前言 Hello!小伙伴! 非常 ...
最新文章
- Keil错误fatal error: UTF-16 (LE) byte order mark detected
- 并发库应用之三 线程池与定时器应用
- 模型预测控制_模型预测控制(MPC)算法之一MAC算法
- 计算机怎么会自动开机,Windows10系统电脑半夜会自动开机如何解决
- Mouse Detected Problem
- Layui 数据表格动态cols(字段)动态变化
- [ZT]如何实现打印输出到Adobe PDF格式文件
- nnie svp算法代码解读
- Android APK反编译技巧全讲解
- 千兆以太网RJ45接口连线引脚定义
- 如何实现跨项目共享token
- linux nfs 测试 读写,部署NFS与测试NFS
- 机器学习 面试题-第二章 线性模型(大厂必问,历经半年整理)
- 材料研究生转行,可以做哪些准备规划
- Android.AsyncTask
- 生成器之Send方法--python
- X猜想:比尔离开后的微软帝国
- Coprime AtCoder Beginner Contest 215
- 实验吧CTF练习题---安全杂项---异性相吸解析
- 10多个LearnDash示例和演示:从这些在线教育网站获得灵感!
热门文章
- PHP类计算机专业毕业设计题目选题课题
- org.apache.ibatis.exceptions.PersistenceException:
- Scripted Pipeline 实现Declarative pipeline的类似post功能
- Spring常用的拓展接口分门别类
- 经济数据预测 | Python实现机器学习(MLP、XGBoost)金融市场预测
- CTFshow——web入门——文件上传
- PHP抓取全国省市区数据
- Android好书《Android9编程通俗演义》
- 计算机图形学bazzer茶壶制作_书籍推荐:艺术化绘制的图形学原理与方法
- 【PAT乙级】1086 就不告诉你