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

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

相关推荐
Despacito0o15 小时前
RGB矩阵照明系统详解及WS2812配置指南
c语言·线性代数·矩阵·计算机外设·qmk
唐山柳林15 小时前
现代化水库运行管理矩阵平台如何建设?
线性代数·矩阵
SZ1701102311 天前
泰勒展开式
线性代数·概率论
Akiiiira3 天前
【日撸 Java 三百行】Day 7(Java的数组与矩阵元素相加)
线性代数·矩阵
18538162800余--5 天前
短视频矩阵系统批量剪辑模式开发详解,支持OEM
线性代数·ui·矩阵·音视频·概率论
HappyAcmen5 天前
线代第二章矩阵第五、六、七节矩阵的转置、方阵的行列式、方阵的伴随矩阵
笔记·学习·线性代数·矩阵
18538162800余--6 天前
矩阵系统源码搭建 UI 设计开发指南,支持OEM
线性代数·ui·矩阵
豆沙沙包?6 天前
2025年- H17-Lc125-73.矩阵置零(矩阵)---java版
java·线性代数·矩阵
Code_流苏7 天前
《Python星球日记》 第36天:线性代数基础
线性代数·numpy·数据科学·向量空间·矩阵运算
雨落俊泉7 天前
2025-04-26-利用奇异值重构矩阵-美团
线性代数·矩阵·重构