【线性代数】行列式的概念

d e t ( A ) = ∑ i 1 , i 2 , ⋯   , i n ( − 1 ) σ ( i 1 , ⋯   , i n ) a 1 , i 1 a 2 , i 2 , ⋯   , a n , i n det(A) =\sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)=i1,i2,⋯,in∑(−1)σ(i1,⋯,in)a1,i1a2,i2,⋯,an,in

i 1 , ⋯   , i n i_1,\cdots,i_n i1,⋯,in 是 1 , ⋯   , n 1,\cdots,n 1,⋯,n 的排列.

计算复杂度

O ( n ⋅ n ! ) O(n\cdot n!) O(n⋅n!)

{ 1 , 2 } \{1,2\} {1,2} 的全排列如下

排列 逆序数 奇偶性
1 , 2 1,2 1,2 0
2 , 1 2,1 2,1 1

a 1 , 1 a 1 , 2 a 2 , 1 a 2 , 2 \] \\left\[\\begin{matrix}a_{1,1} \&a_{1,2}\\\\ a_{2,1} \& a_{2,2}\\end{matrix}\\right\] \[a1,1a2,1a1,2a2,2

{ 1 , 2 , 3 } \{1,2,3\} {1,2,3} 的全排列如下

排列 逆序数 奇偶性
1 , 2 , 3 1,2,3 1,2,3 0
1 , 3 , 2 1,3,2 1,3,2 1
2 , 1 , 3 2,1,3 2,1,3 1
2 , 3 , 1 2,3,1 2,3,1 2
3 , 1 , 2 3,1,2 3,1,2 2
3 , 2 , 1 3,2,1 3,2,1 3

a 1 , 1 a 1 , 2 a 1 , 3 a 2 , 1 a 2 , 2 a 2 , 3 a 3 , 1 a 3 , 2 a 3 , 3 \] \\left\[\\begin{matrix}a_{1,1} \&a_{1,2} \& a_{1,3}\\\\ a_{2,1} \& a_{2,2}\& a_{2,3} \\\\ a_{3,1} \& a_{3,2} \& a_{3,3}\\end{matrix}\\right\] a1,1a2,1a3,1a1,2a2,2a3,2a1,3a2,3a3,3 ## 递归法生成全排列 ```julia using CSV, DataFrames, Tables function OE(sigma) # 判断奇偶置换 n=length(sigma); out=1 for i=1:n for j=1:n-1 if sigma[j] > sigma[j+1] out=-out; sigma[j],sigma[j+1]=sigma[j+1], sigma[j] end end end return(out) end function remove_last(seq) # 删除序列最后一个元素 lth=length(seq) z=copy(seq[1:lth-1]) return(z) end function rankfull(seq,n,cpl) # 递归全排列生成器 lth=length(seq) if lth==1 m=[cpl; seq] open("rankfull_sol.txt","a") do io for i=1:n s=m[i]; write(io, "$s,") end write(io,"\n"); end else for i=1:lth s=seq[i]; idx=0; list=zeros(Int,lth-1) for j=1:lth if !(seq[j]==s) idx=idx+1; list[idx]=seq[j] end end cpl=[cpl; s]; rankfull(list,n,cpl) cpl=remove_last(cpl) end end end function det_defn(A) # 定义法求行列式 lth=size(A,1) seq=1:lth global ranksol=[seq]; lth=length(seq); cpl=[]; iters=factorial(lth) try rankfull(seq,lth,cpl) catch nothing end io=open("rankfull_sol.txt","r") data=read(io,String) file = CSV.File(IOBuffer(data), header=false) CSV.write("fullrank.csv", file) close(io) sigma=zeros(Int64,iters,lth); for i=1:factorial(lth) for j=1:lth sigma[i,j]=file[i][j] end end DETs=0*A[1,1] for i=1:iters Prs=1 for j=1:lth Prs=Prs*M[j,sigma[i,j]] end DETs=DETs+ OE(sigma[i,:])*Prs end return(DETs) end M=[4//1 3 2 1; 3 2 1 4; 2 1 4 3; 1 4 3 2] a= det_defn(M) println("\n") println("defn=",a) ``` -160//1 ## 邻近对换算法生成全排列 ```julia function ranking(lth) # 邻近对换全排列生成器 prd=1; arr=zeros(Int64,lth); for i=1:lth arr[i]=i end for i=1:lth prd=prd*i end jx=lth ; dr=-1; s=0; for j=1:prd if dr<0 if jx>1 arr[jx],arr[jx+dr] = arr[jx+dr],arr[jx] jx=jx+dr else arr[lth],arr[lth-1] = arr[lth-1],arr[lth] dr=-dr end else if jx

相关推荐
老歌老听老掉牙3 小时前
平面旋转与交线投影夹角计算
python·线性代数·平面·sympy
呵呵哒( ̄▽ ̄)"7 小时前
线性代数:公共解
线性代数
呵呵哒( ̄▽ ̄)"8 小时前
线性代数:同解(1)
python·线性代数·机器学习
SweetCode8 小时前
裴蜀定理:整数解的奥秘
数据结构·python·线性代数·算法·机器学习
ElseWhereR2 天前
矩阵对角线元素的和 - 简单
线性代数·矩阵
y5236484 天前
PowerBI 矩阵,列标题自定义排序
线性代数·矩阵·powerbi
幻风_huanfeng5 天前
人工智能之数学基础:矩阵的相似变换的本质是什么?
人工智能·深度学习·线性代数·机器学习·矩阵·相似变换
passxgx5 天前
7.3 主成分分析(PCA)
线性代数
管理前沿6 天前
软件兼容性测试的矩阵爆炸问题有哪些解决方案
线性代数·矩阵
Ypuyu6 天前
[M模拟] lc3446. 按对角线进行矩阵排序(对角线遍历+公式推导+模板题)
线性代数·矩阵