【线性代数】行列式的概念
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
递归法生成全排列
using CSV, DataFrames, Tables
function OE(sigma) # 判断奇偶置换n=length(sigma); out=1for i=1:nfor j=1:n-1if sigma[j] > sigma[j+1]out=-out; sigma[j],sigma[j+1]=sigma[j+1], sigma[j]endendendreturn(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==1m=[cpl; seq]open("rankfull_sol.txt","a") do iofor i=1:ns=m[i]; write(io, "$s,")endwrite(io,"\n");endelsefor i=1:lths=seq[i]; idx=0;list=zeros(Int,lth-1)for j=1:lthif !(seq[j]==s)idx=idx+1; list[idx]=seq[j]endendcpl=[cpl; s];rankfull(list,n,cpl)cpl=remove_last(cpl)endend
end
function det_defn(A) # 定义法求行列式lth=size(A,1)seq=1:lthglobal ranksol=[seq];lth=length(seq); cpl=[]; iters=factorial(lth)tryrankfull(seq,lth,cpl)catch nothingendio=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:lthsigma[i,j]=file[i][j]endendDETs=0*A[1,1]for i=1:itersPrs=1for j=1:lthPrs=Prs*M[j,sigma[i,j]]endDETs=DETs+ OE(sigma[i,:])*Prsendreturn(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
邻近对换算法生成全排列
function ranking(lth) # 邻近对换全排列生成器prd=1; arr=zeros(Int64,lth);for i=1:lth arr[i]=i endfor i=1:lth prd=prd*i endjx=lth ; dr=-1; s=0;for j=1:prdif dr<0if jx>1arr[jx],arr[jx+dr] = arr[jx+dr],arr[jx]jx=jx+drelsearr[lth],arr[lth-1] = arr[lth-1],arr[lth]dr=-drendelseif jx<ltharr[jx],arr[jx+dr] = arr[jx+dr],arr[jx];jx=jx+drelsearr[1],arr[2] = arr[2],arr[1]; dr=-drendendopen("ranking_sol.txt","a") do iofor i=1:lths=arr[i]; write(io, "$s,")endwrite(io,"\n");end end
end
function det_defn2(A) # 定义法求行列式lth=size(A,1)seq=1:lthglobal ranksol=[seq];lth=length(seq); cpl=[]; iters=factorial(lth)try rm("ranking_sol.txt")catchnothingendranking(lth)io=open("ranking_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:lthsigma[i,j]=file[i][j]endendDETs=0*A[1,1]for i=1:itersPrs=1for j=1:lthPrs=Prs*M[j,sigma[i,j]]endDETs=DETs+ OE(sigma[i,:])*Prsendreturn(DETs)
end
M=[4//1 3 2 ;3 2 1 ;2 1 4]
a= det_defn2(M)
-160//1
相关文章:
【线性代数】行列式的概念
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…...
Android SystemUI——StatusBar视图创建(六)
上一篇文章我们介绍了 StatusBar 的构建过程,在 makeStatusBarView() 中获得 FragmentHostManager,用来管理 StatusBar 的窗口。 一、状态栏视图 在得到 FragmentHostManager 实例对象之后,还会继续调用 addTagListener() 方法设置监听对象,然后获取 FragmentManager 并开…...
Picocli 命令行框架
官方文档 https://picocli.info/ 官方提供的快速入门教程 https://picocli.info/quick-guide.html 使用 Picocli 创建命令行应用程序 Picocli 是一个用于构建 Java 命令行应用的强大框架,它简化了参数解析和帮助消息生成的过程。 下面是如何使用 Picocli 构建简单命…...
spring-cloud-starter-gateway 使用中 KafkaAppender的问题
公司需要将应用日志上报到kafka,以供分析与查看。 结合logback可以完成此功能,大致配置如下: <appender name"KafkaAppender" class"com.github.danielwegener.logback.kafka.KafkaAppender"><encoder class&…...
【全套】基于分类算法的学业警示预测信息管理系统
【全套】基于分类算法的学业警示预测信息管理系统 【摘 要】 随着网络技术的发展基于分类算法的学业警示预测信息管理系统是一种新的管理方式,同时也是现代学业预测信息管理的基础,利用互联网的时代与实际情况相结合来改变过去传统的学业预测信息管理中…...
Elasticsearch Python 客户端是否与自由线程 Python 兼容?
作者:来自 Elastic Quentin_Pradet 在这篇文章中,我们将进行一些实验,看看 Python Elasticsearch 客户端是否与新的 Python 3.13 自由线程(free-threading)版本兼容,其中 GIL 已被删除。 介绍 但首先&…...
基于大语言模型的组合优化
摘要:组合优化(Combinatorial Optimization, CO)对于提高工程应用的效率和性能至关重要。随着问题规模的增大和依赖关系的复杂化,找到最优解变得极具挑战性。在处理现实世界的工程问题时,基于纯数学推理的算法存在局限…...
#CSS混合模式:解决渐变背景下的文字可见性问题
在现代网页设计中,渐变背景的使用越来越普遍。然而,当我们在渐变背景上放置文字时,常常会遇到一个问题:文字在某些背景颜色下可能变得难以阅读。今天,我们将探讨一个优雅的解决方案:使用CSS混合模式。 问题…...
Vue2+OpenLayers给标点Feature添加信息窗体(提供Gitee源码)
目录 一、案例截图 二、安装OpenLayers库 三、代码实现 3.1、信息窗体DOM元素 3.2、创建Overlay 3.3、创建一个点 3.4、给点初始化点击事件 3.5、完整代码 四、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、代码实现 初始化变量: d…...
实战threeJS数字孪生开源 数字工厂
threeJS数字孪生 数字工厂 设备定位 基于three.js的数字工厂开源项目介绍 一、项目概述 本项目是一款基于three.js的数字工厂项目,旨在通过3D可视化技术,为工业制造领域提供一个直观、高效、智能的生产监控与管理平台。该项目结合了现代前端技术栈&…...
【Python基础篇】——第3篇:从入门到精通:掌握Python数据类型与数据结构
第3篇:数据类型与数据结构 目录 Python中的数据类型概述列表(List) 创建列表列表的基本操作列表方法列表推导式 元组(Tuple) 创建元组元组的基本操作元组的不可变性 字典(Dictionary) 创建字典…...
算法3(力扣83)-删除链表中的重复元素
1、题目:给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 2、实现( 因为已排序,所以元素若重复,必然在其下一位)(这里为在vscod…...
HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部
HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载 效果展示 使用方法 import LoadingText from "../components/LoadingText" import PageToRefresh from "../components/PageToRefresh" import FooterBar from "../components/…...
.NET8.0多线程编码结合异步编码示例
1、创建一个.NET8.0控制台项目来演示多线程的应用 2、快速创建一个线程 3、多次运行程序,可以得到输出结果 这就是多线程的特点 - 当多个线程并行执行时,它们的具体执行顺序是不确定的,除非我们使用同步机制(如 lock、信号量等&am…...
SpringBoot项目中解决CORS跨域资源共享问题
在Spring Boot项目中解决CORS(跨域资源共享)问题,可以通过以下几种方法: 1. 使用CrossOrigin注解 这是最简单的方法,适用于单个控制器或控制器方法级别的跨域配置。你可以在控制器类或具体的方法上使用CrossOrigin注…...
Android string.xml中特殊字符转义
项目中要在string.xml 中显示特殊符号 空格: (普通的英文半角空格但不换行) 窄空格: (中文全角空格 (一个中文宽度)) (半个中文宽度,但两个空格比一个中文…...
解析传统Workflow、AI Workflow与AI Agent概念,并通过Coze案例探讨利用AI工作流构建应用的实践流程
传统工作流 工作流入门这篇就够了 BPMN.JS中文教程 BPMN 工作流引擎解析 定义:工作流是在计算机支持下业务流程的自动或半自动化,其通过对流程进行描述以及按一定规则执行以完成相应工作。 应用:随着计算机技术的发展以及工业生产、办公自动…...
光谱相机的光谱分辨率可以达到多少?
多光谱相机 多光谱相机的光谱分辨率相对较低,波段数一般在 10 到 20 个左右,光谱分辨率通常在几十纳米到几百纳米之间,如常见的多光谱相机光谱分辨率为 100nm 左右。 高光谱相机 一般的高光谱相机光谱分辨率可达 2.5nm 到 10nm 左右&#x…...
android Recyclerview viewholder统一封装
Recyclerview holder 统一封装 ViewHolder类 import android.annotation.SuppressLint import android.content.Context import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.os.Build import android.os.CountDownTimer import…...
Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)
本文介绍在Windows电脑中,下载、部署NVM(node.js version management)环境,并基于其安装不同版本的Node.js的方法。 在之前的文章Windows系统下载、部署Node.js与npm环境的方法(https://blog.csdn.net/zhebushibiaoshi…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...
