行列式

Java 矩阵行列式算法(非高斯消元)

≯℡__Kan透↙ 提交于 2020-04-15 16:16:34
【推荐阅读】微服务还能火多久?>>> 最近由于项目任务较少,手上有不少空闲的时间,所以抽空研究了一下矩阵行列式的算法。 先来说说行列式,以下摘自百度百科: 行列式在数学中,是由解线性方程组产生的一种算式。行列式的特性可以被概括为一个多次交替线性形式,这个本质使得行列式在欧几里德空间中可以成为描述“体积”的函数。 [1] 其定义域为nxn的矩阵A,取值为一个标量,写作det(A)或 | A | 。行列式可以看作是有向面积或体积的概念在一般的欧几里得空间中的推广。或者说,在n维欧几里得空间中,行列式描述的是一个线性变换对“体积”所造成的影响。无论是在线性代数、多项式理论,还是在微积分学中(比如说换元积分法中),行列式作为基本的数学工具,都有着重要的应用。 行列式概念最早出现在解线性方程组的过程中。十七世纪晚期,关孝和与莱布尼茨的著作中已经使用行列式来确定线性方程组解的个数以及形式。十八世纪开始,行列式开始作为独立的数学概念被研究。 十九世纪以后,行列式理论进一步得到发展和完善。矩阵概念的引入使得更多有关行列式的性质被发现,行列式在许多领域都逐渐显现出重要的意义和作用,出现了线性自同态和向量组的行列式的定义。 n阶行列式的计算公式: 设有n²个数,排列成n行n列的表 a11 a12 ... a1n a21 a22 ... a2n ... ... ... ... an1 an2 ...

线性代数三部曲(一)·行列式

强颜欢笑 提交于 2020-04-06 07:06:46
Part1:从解方程组谈起 栗子 :试讨论以下方程的解. \[\begin{cases} a_{11}x_1+a_{12}x_2=b_1\qquad(1)\\ a_{21}x_1+a_{22}x_2=b_2\qquad(2) \end{cases} \] 解 :将 \((1)\) 乘以 \(a_{21}\) , \((2)\) 乘以 \(a_(11)\) 有 \[\begin{cases} a_{11}a_{21}x_1+a_{12}a_{21}x_2=a_{21}b_1\qquad(3)\\ a_{11}a_{21}x_1+a_{22}a_{11}x_2=a_{11}b_2\qquad(4) \end{cases} \] 消去 \(x_1\) 有 \[(a_{11}a_{22}-a_{12}a_{21})x_2=a_{11}b_2-a_{21}b_1 \] 即 \[x_2=\frac{a_{11}b_2-a_{21}b_1}{a_{11}a_{22}-a_{12}a_{21}} \] 重复对 \(x_2\) 消元,有 \[x_1=\frac{a_{22}b_1-a_{12}b_2}{a_{11}a_{22}-a_{12}a_{21}} \] 当 \(a_{11}a_{22}-a_{12}a_{21}\ne0\) 时,方程组有唯一解; 当 \(a_{11}a_{22}-a_{12

判断一个点是否在三角形及多边形的内部

爷,独闯天下 提交于 2020-03-17 10:32:18
判断一个点是否在三角形及多边形的内部 代码思路: 如果一个点在一个多边形的内部则依次链接多变形的两点,形成的有向直线,则该点必将都在这些有向直线的一侧,要不然都在左侧,要不然都在右侧。所以就是判断是否在一侧通过isLeft这个函数判断。 而这个函数使用的方法就是计算这三个点围成的面积,利用行列式公式,如果在左侧为正数,则自然在右侧就是负数,因为左右相当于行列式做了一次行交换,而这刚好为行列式带来了一个负数。 # include <iostream> # include <vector> using namespace std ; typedef struct PointF { float x ; float y ; PointF ( float x , float y ) : x ( x ) , y ( y ) { } PointF ( ) : x ( 0 ) , y ( 0 ) { } } PointF ; bool isLeft ( PointF a , PointF b , PointF c ) ; float triangleArea ( PointF a , PointF b , PointF c ) ; //判断一个点是否在一个三角形内 bool isInTriangle ( PointF triangle [ ] , int size , PointF point )

矩阵树定理

╄→尐↘猪︶ㄣ 提交于 2020-03-10 03:28:31
今天学习了矩阵树定理,就是求解无向图最小生成树个数的一个东西 首先需要构造无向图的基尔霍夫矩阵,我们记为矩阵K。矩阵K满足, K = D − A K = D - A K = D − A 其中D是这个无向图的度数矩阵,在对角线上值是每个点的度数,其他位置的值都是0,A是这个无向图的出入度矩阵,第 i i i 行 j j j 列元素表示点 i i i 到点 j j j 之间的边数 这个矩阵 K K K ,随意选择下标相同的一行一列挖去,那么剩下的行列式的值就是这个无向图的最小生成树个数。 行列式具有以下性质(针对行,列同理) 交换任意两行,行列式的值乘-1 如果任意两行相同,行列式的值为0 行列式中某一行的系数可以提取到行列式外 行列式中,某一行可以表示成两个数相加的形式,那么可以从这一行拆开,行列式的值就是拆分后两个行列式的和 行列式对应矩阵做第三类初等变换,某一行乘k加到另一行,行列式的值不变 通过这些性质,我们知道了行列式的值可以使用高斯消元来求解 P4111 [HEOI2015]小 Z 的房间 这是一个矩阵树的模板题,按上述的方式建图,并且最后注意高斯消元求解行列式的时候,我们需要取mod,因此我们要使用辗转相除的方法来完成一次消元,因此整体的时间复杂度 O ( n m 2 l o g ( n ) ) O(nm^2log(n)) O ( n m 2 l o g ( n ) )

行列式学习笔记

試著忘記壹切 提交于 2020-03-09 08:57:36
然而这东西 在OI里 好像并没有什么用 这上面的题不多,洛谷里连标签都没有 1.排列和逆序对 1.1排列 将n个数按任意顺序排序,得到长度为n的排列 显然有 \(n!\) 种不同排列 在一个排列种,对换其中两数,其他数不动,的得到另一个排列,叫做对换 1.2逆序对 对于排列 \(a_1,a_2,\dots a_n\) , \((i,j),i<j,\text{且}a_i>q_j\) 称为一个逆序对 好了可以认为以上都是废话 1.3 奇排列:逆序对数量是奇数 偶排列:逆序对数量是偶数 一些定理: 对换改变排列的奇偶性 设对换 \(a_i,a_j(i\leq j)\) 两个元素 考虑相邻的两个元素对换,逆序对数量 \(+1\text{或}-1\) ,改变排序奇偶性 我们对换 \(a_i,a_j\) 时每次都只对换相邻的两个元素 \(a_i,a_{i+1},\dots,a_j\) \(\rightarrow a_{i+1},a_i,a_{i+2},\dots ,a_j\) \(\rightarrow a_{i+1},a_{i+2},a_i,a_{i+3},\dots,a_j\) \(\dots\) \(\rightarrow a_{i+1},a_{i+2},\dots a_j,a_i\) 然后再用相同的方法把 \(a_j\) 向左移动 移动 \(i\) 时移动 \(j-i\) 次,移动 \

行列式及其应用

吃可爱长大的小学妹 提交于 2020-03-06 15:50:19
行列式 注意   本文参照 M I T MIT M I T 公开课, 可以看成是笔记。 什么是行列式   一个矩阵通常包括很多信息, 比如是否可逆等等。而对于每一个方阵, 都有一个数能够表示关于矩阵的很多信息, 这个数就叫做行列式。(本文从性质入手讲, 推导并不严谨, 不过这些性质都是经过严格证明了的)行列式也可以看做是从矩阵到实数的一个映射。要注意的是只有方阵才有行列式!!! 行列式的表示法   若 A A A 为方阵, 则其行列式可表示为: d e t ( A ) 或 ∣ A ∣ det(A)或\\ \left| A \right| d e t ( A ) 或 ∣ A ∣ 行列式的基本性质   行列式的基本性质有3条, 并且从这三条基本性质能够推出其他性质以及行列式的表达式。下面给出三条基本性质。    ① 单 位 矩 阵 的 行 列 式 为 1 ①单位矩阵的行列式为1 ① 单 位 矩 阵 的 行 列 式 为 1   对于这条性质没有过多的解释, 有点类似于定义, 将单位矩阵映射成为实数中的1, 也符合简便性。    ② 交 换 矩 阵 中 的 任 意 两 行 , 所 得 的 矩 阵 的 行 列 式 符 号 变 号 ②交换矩阵中的任意两行, 所得的矩阵的行列式符号变号 ② 交 换 矩 阵 中 的 任 意 两 行 , 所 得 的 矩 阵 的 行 列 式 符 号 变 号  

2 线性代数基础

感情迁移 提交于 2020-03-05 15:56:11
转自: https://blog.csdn.net/longxinchen_ml/article/details/51629328 1 基本概念和符号 线性代数可以对一组线性方程进行简洁地表示和运算。例如,对于这个方程组: 这里有两个方程和两个变量,如果你学过高中代数的话,你肯定知道,可以为x1 和x2找到一组唯一的解 (除非方程可以进一步简化,例如,如果第二个方程只是第一个方程的倍数形式。但是显然上面的例子不可简化,是有唯一解的)。在矩阵表达中,我们可以简洁的写作: 其中: 很快我们将会看到,咱们把方程表示成这种形式,在分析线性方程方面有很多优势(包括明显地节省空间)。 1.1 基本符号 以下是我们要使用符号: 符号 A ∈ R m×n 表示一个m行n列的矩阵,并且矩阵A中的所有元素都是实数。 符号x ∈ R n 表示一个含有n个元素的向量。通常,我们把n维向量看成是一个n行1列矩阵,即列向量。如果我们想表示一个行向量(1行 n 列矩阵),我们通常写作 x T ( x T 表示x的转置,后面会解释它的定义)。 一个向量x的第 i 个元素表示为x i : 我们用 a ij (或 A ij , A i , j ,等) 表示第 i 行第 j 列的元素: 我们用 a j 或 A : , j 表示A矩阵的第 j 列元素: 我们用 a T i 或 A i , : 表示矩阵的第i行元素:

线性代数知识点总结

我只是一个虾纸丫 提交于 2020-03-04 23:26:12
直观理解线性代数的本质 如何理解矩阵特征值以及特征向量? 一篇很好的文章 A x = λ x Ax = \lambda x A x = λ x 可以把A看成是一个线性变换,那么这个定义可以看成对于向量x而言,在A的作用下保持方向不变(可能反向),进行大小为 λ \lambda λ 的缩放。 特征向量所在的直线包含了所有特征向量. 矩阵乘以特征向量可以看成是矩阵在每个特征向量方向上的投影。通过求特征值和特征向量把矩阵数据投影在一个正交的空间,而且在各个方向的投影大小就是特征值。 最大特征值并不是说数据在所有方向的投影的最大值,而仅限于正交空间的某一方向。最大特征值的特征向量所对应的方向就是速度最大的方向。 其实是一种数据的处理方法,可以简化数据。 特征值特征向量的重要例子 :数据挖掘中PCA(主成分分析)用于数据降维 详情点击 什么是相似矩阵?有什么用? ![{%asset_img 2.png%}](https://img-blog.csdnimg.cn/202003041016572.png) 线性变换 例如: y ⃗ = A x ⃗ \vec{y} = A\vec{x} y ​ = A x (类似于一次函数 y = x) 线性变换通过指定基下的矩阵A来表示 同一个线性变换,不同基下的矩阵称为相似矩阵.(任意向量在不同的基中有不同的表示)

箭型行列式通项求解

拥有回忆 提交于 2020-03-02 16:49:52
我们把诸如下图形式的行列式称为箭型行列式。箭型行列式的特点是第一行和第一列均为1,而主对角线上的元素依次是递增的自然数。 对于箭型行列式的求解,我们给出递推数列的方法。 我们对行列式按第n行展开可以得到: 再次按第n列展开可以得到: 这时我们令 可以得到数列的递推公式如下: 根据数列一阶线性方程的公式: 代入初始值即可得到最终我们需要的通项公式 来源: CSDN 作者: 璇璇的宇宇 链接: https://blog.csdn.net/qq_30356779/article/details/104611101

MIT18.06线性代数(5) 行列式与马尔科夫矩阵和傅里叶级数的理解

拜拜、爱过 提交于 2020-02-21 06:34:13
行列式是一个数字。 行列式能尽可能的把矩阵的信息表示出来。比如行列式为0矩阵不可逆。 交换行或者列行列式变符号,这意味着交换矩阵它的行列式是1或者-1.因为交换矩阵可以把其他矩阵的行列交换。 行或者列乘个t,那么整个行列式的值需要乘个t。 行列式每行都有可加性 A − 1 = 1 d e t A A ∗ A^{-1}=\frac 1 {det A} A^* A − 1 = d e t A 1 ​ A ∗ ,其中 A ∗ A^* A ∗ 是伴随矩阵(当前元素是即去掉当前行当前列的矩阵行列式值) 行列式值等于当前行的各元素与对应代数余子式的线性加权和。 克拉默法则(Cramer’s Rule)求Ax=b中的x就是利用伴随矩阵求 A − 1 A^{-1} A − 1 ,然后 x = A − 1 b x=A^{-1}b x = A − 1 b 行列式的绝对值是行向量那几条边构成的几何体的体积(如果是二维那就是面积)。 特征值 特征值之和等于对角线元素之和 求特征值 d e t ( A − λ I ) = 0 det(A-\lambda I)=0 d e t ( A − λ I ) = 0 越部队称的矩阵特征值越可能是复数 特征值不同特征向量一定不线性相关,但是特征值相同不一定特征向量线性相关。 根据特征值和特征向量构造对角矩阵 矩阵对角化,本质就是利用Ax=λx这个来构造对角矩阵