行列式基本知识及代码实现
2023-03-15 22:51:06 时间
参考链接:https://cloud.tencent.com/developer/article/1594842
另外参考了张宇的考研视频。
1. 基本知识
一、行列式的定义与性质
1. 几何法定义
二阶行列式的值为平时四边形的面积。
面积表示如下:
三阶行列式表示的是平行六面体的体积。
依次类推:n阶行列式表示的就是n个n维向量为邻边的n维图形的体积。
可以把行列式看作一个算式。
2. 逆序法定义
有以下相关点:
(1)展开后有n!个项;
(2)每项取自不同行、不同列n个元素的乘积;
(3)行下标顺序排列后,每项前乘以。
称作j1 j2 ... jn的逆序数。
逆序数的概念:平时我们说的1 2叫做顺序,4 3就叫做逆序(也就是大的数在前,小的数在后)。
如t(6 4 1 2 3 5)的逆序数就是8。
3. 展开法定义
行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和。
2. python代码实现
python的numpy库提供了用于进行行列式计算的库函数,使用起来很方便。
代码实现如下:
1 # encoding: utf-8 2 3 import os 4 import numpy as np 5 from numpy.linalg import det 6 7 8 def test_2d_linalg(): 9 D2 = np.arange(4).reshape(2, 2) 10 val = det(D2) 11 print (D2) 12 print (val) 13 14 15 def test_3d_linalg(): 16 D3 = np.arange(9).reshape(3, 3) 17 val = det(D3) 18 print (D3) 19 print (val) 20 21 22 def test_multiD_linalg(): 23 data = [[1, 2, 3, 4, 5], [2, 2, 2, 1, 1], [3, 1, 2, 4, 5], [1, 1, 1, 2, 2], [4, 3, 1, 5, 0]] 24 d5 = np.array(data) 25 print (d5) 26 print (det(d5)) 27 28 29 if __name__ == "__main__": 30 31 test_2d_linalg() 32 33 test_3d_linalg() 34 35 test_multiD_linalg()
输出结果:
1 [[0 1] 2 [2 3]] 3 -2.0 4 [[0 1 2] 5 [3 4 5] 6 [6 7 8]] 7 0.0 8 [[1 2 3 4 5] 9 [2 2 2 1 1] 10 [3 1 2 4 5] 11 [1 1 1 2 2] 12 [4 3 1 5 0]] 13 26.99999999999999
总结:对如何用工具或代码生成数学公式还不了解,导致这篇博客写得很僵硬。
相关文章
- 一步一步学ROP之linux_x86篇
- TaintDroid深入剖析之启动篇
- TDDL动态数据源开源-基本说明
- Solr监控
- APK瘦身记,如何实现高达53%的压缩效果
- Consistent Hashing算法及相关技术
- 关于输入提示功能实现前的基本参考
- Solr/Lucene日志分析-查询热点词-脚本工具
- 《Apache Flink 官方文档》前言
- 简约设计
- 刻意练习-如何从新手到大师
- Chubby - lock service for loosely-coupled distributed systems
- 法院HP EVA8400删除VDISK后数据恢复
- TDH_Socket开源介绍
- 《Java NIO文档》非阻塞式服务器
- 通过eclipse调试MapReduce任务
- Emacs + Clojure配置的几个Tip
- 分布式消息中间件Metaq发布1.4.3
- Clojure世界:利用HouseMD诊断clojure
- Clojure笔记:用好type hint