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

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

相关推荐
盛寒18 小时前
向量与向量组的线性相关性 线性代数
线性代数·算法
灰灰的C旅程1 天前
详细理解向量叉积
线性代数
ComputerInBook1 天前
矩阵之方阵与行列式的关系
线性代数·矩阵·行列式·线性变换·方阵的行列式
The_Killer.1 天前
格密码--数学基础--06对偶空间与对偶格
学习·线性代数·密码学
passxgx2 天前
9.2 埃尔米特矩阵和酉矩阵
线性代数·矩阵
盛寒2 天前
等价矩阵和等价向量组
线性代数·算法·矩阵
WoShop商城源码2 天前
短视频矩阵系统的崛起:批量发布功能与多平台矩阵的未来
人工智能·线性代数·其他·矩阵
dongzhenmao2 天前
P1484 种树,特殊情形下的 WQS 二分转化。
数据结构·c++·windows·线性代数·算法·数学建模·动态规划
mit6.8242 天前
矩阵 | 时域频域傅里叶变换
线性代数·矩阵
The_Killer.2 天前
格密码--数学基础--02基变换、幺模矩阵与 Hermite 标准形
线性代数·矩阵·密码学