逆矩阵

蓝桥杯---貌似化学---逆矩阵

爷,独闯天下 提交于 2020-03-07 02:27:57
试题 算法训练 貌似化学 资源限制   时间限制:1.0s 内存限制:256.0MB 问题描述   现在有a,b,c三种原料,如果他们按x:y:z混合,就能产生一种神奇的物品d。   当然不一定只产生一份d,但a,b,c的最简比一定是x:y:z   现在给你3种可供选择的物品:   每个物品都是由a,b,c以一定比例组合成的,求出最少的物品数,使得他们能凑出整数个d物品(这里的最少是指三者个数的总和最少) 输入格式   第一行三个整数,表示d的配比(x,y,z)   接下来三行,表示三种物品的配比,每行三个整数(<=10000)。 输出格式   四个整数,分别表示在最少物品总数的前提下a,b,c,d的个数(d是由a,b,c配得的)   目标答案<=10000   如果不存在满足条件的方案,输出NONE 样例输入 3 4 5 1 2 3 3 7 1 2 1 2 样例输出 8 1 5 7 实现思路 假设已经知道了答案x, y , z; 存在这样的关系 ( x y z ) ∗ ( a 1 b 1 c 1 a 2 b 2 b 3 a 2 b 2 b 3 ) = ( a b c ) (x \ y \ z) * \begin{pmatrix} a1 & b1 & c1 \\ a2 &b2 & b3 \\ a2 &b2 & b3 \end{pmatrix} = (a \ b \ c) ( x y

对称矩阵、方阵、逆矩阵、协方差矩阵

纵然是瞬间 提交于 2020-02-23 17:59:49
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 矩阵的高级函数:基于SVD算法(即奇异值分解法)的矩阵分解、通过SVD算法(即奇异值分解法)/特征值分解法来实现PCA算法、随机数矩阵 1.对称矩阵 2.方阵、逆矩阵 X是一个m行n列的矩阵,并不能保证其有逆矩阵,因此X需要乘以X的转置,即X乘以自身的转置矩阵,其结果为一个方阵, 方阵即行数和列数都为一样,这样便能保证其矩阵X有逆矩阵。 X是一个m行n列的矩阵,X的转置(自身的转置矩阵)是一个n行m列的矩阵,那么两者相乘结果为m行m列的方阵,方阵即行数和列数都为一样。 X是一个n行m列的矩阵,X的转置(自身的转置矩阵)是一个m行n列的矩阵,那么两者相乘结果为n行n列的方阵,方阵即行数和列数都为一样。 求X乘以X的转置的逆矩阵,即求X的方阵的的逆矩阵。 3.协方差矩阵 1.PCA算法中求协方差矩阵 2.特征脸法: 1.特征脸法是一种相对“古老”的人脸识别算法,而特征脸法的核心算法是PCA算法。 2.特征脸法中的经过零均值化处理后的m行n列图像矩阵: m为人脸图像的维度,n为人脸图像的样本数,行数为人脸图像的flatten后的维度数,列数为数据集的人脸图像的样本数, 人脸图像的flatten后向量作为列向量。 3

shader入门精要读书笔记06 数学基础

倖福魔咒の 提交于 2020-01-30 14:50:39
第四章 数学基础 一、坐标系 笛卡尔坐标系,分为二维三维。 二维坐标系 OpenGL是左下角为0,DirectX是左上角。 三维坐标系,3个坐标轴也被称为基矢量,长度为1的基矢量叫做标准正交基,长度不唯1的叫正交基。 三维笛卡尔坐标系又分为左手坐标系与右手坐标系。 Unity使用的是左手坐标系,摄像头的观察空间是右手坐标系(摄像头前方为z轴的负方向)。 二、点和矢量 矢量:有方向有模,没有位置。 点:只是一个位置。 矢量的加减乘除运算,模运算。 单位矢量:被归一化的矢量。通过在矢量上方加个^来表示是矢量的模。 单位矢量的运算:通过矢量除以矢量的模来进行计算。 单位矢量计算通常使用在法线方向、光源方向等。 矢量的点积(内积/点乘): 点积就是可以确定两个矢量的方向关系。投影长度=标量。 点乘结果>0 :两个矢量方向关系为<90°。(=0 : 垂直,<0 : >90°) 求适量的模可以将矢量对其自身进行点乘,运算后开方。 a·b=|a||b|cos夹角 矢量的叉积(外积/叉乘): 叉积结果是矢量,不满足交换律,叉积的结果是得到一个同时垂直于这两个矢量的新矢量。 使用左手定则,右手定则来判断在不同坐标系中,新得到的矢量方向。 |a×b|=|a||b|sin夹角 我们可以通过点乘(cos值)来确定某两个矢量的夹角关系。 还可以通过叉乘判断一个面的正面反面(通过确定面上的三个点的顺时针

矩阵的逆矩阵和行列式值的递归算法。

白昼怎懂夜的黑 提交于 2020-01-20 00:32:31
很久没有写过C语言,今天写了一个关于矩阵的算法 完整代码如下: #include<atlstr.h> #include<iostream> #include<string> using namespace std; //创建矩阵 float **Creat(int n) { float **array=new float*[n]; for(int i=0;i<n;i++) { array[i]=new float[n]; } printf("请输入矩阵:\n"); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { cin>>array[i][j]; } } return array; } //求行列式的值: float Value(float **array,int n) { float Result=0; if(n==1) return array[0][0]; float **temp=new float*[n-1]; for(int i=0;i<n-1;i++) { temp[i]=new float[n-1]; } for(int i=0;i<n;i++) { for(int j=0;j<n-1;j++) { for(int k=0;k<n-1;k++) { int flag; if(j<i) flag=0; else flag=1

位运算的诱惑,FFT摇身一变FWT(快速沃尔什变换)(未完待续)

烂漫一生 提交于 2020-01-13 10:41:41
目录 参考文献 例题 符号约定 通用思路 规律性 限制性 可行性 可分治性 矩阵 和运算 非运算 异或运算 代码 小结 未完待续 真的想点接触这个玩意。 cmd写的OI多项式💊是真的顶。 参考文献 人称OI药丸: https://www.luogu.com.cn/blog/command-block/wei-yun-suan-juan-ji-yu-ji-kuo-zhan ZFY:你又从洛谷日报上抄袭,烦不烦呀。 如果能有源码我还自己打!QAQ 例题 例题 符号约定 ZFY:抄袭的第一步。。。 文中的多项式和下标均为向量, \([]\) 表示向量拼接(但是 \([\) 命题 \(]\) 就是当命题成立时为 \(1\) )。 \(A_{i}\) 表示 \(A\) 中的第 \(i\) 位, \(i_{j}\) 表示 \(i\) 的二进制中从高往低的第 \(j\) 位。 ZWQ:你这和照搬有什么区别。。。为什么不能有自己的思考呢?像我一样。 \(⊕\) 为位运算,&为和运算,^为异或,|为非运算。 规定 \(n\) 为总位数,且一定是 \(2\) 的次幂,记为 \(2^u\) 。 \(C[k]=\sum\limits_{i⊕j==k,0≤i,j≤n-1}A[i]*B[i]\) ,写成 \((A*B=C)\) ,称为位运算 \(⊕\) 的卷积形式。 称 \(DWT(A)\) 为 \(A\)

选主元的高斯-约旦(Gauss-Jordan)消元法解线性方程组/求逆矩阵

我的未来我决定 提交于 2019-12-20 02:31:32
做数据结构课设时候查的资料,主要是看求逆矩阵方面的知识的。 选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵、解线性方程组(插一句:LM算法求解的一个步骤),等等。它的速度不是最快的,但是它非常稳定(来自网上的定义:一个计算方法,如果在使用此方法的计算过程中,舍入误差得到控制,对计算结果影响较小,称此方法为数值稳定的),同时它的求解过程也比较清晰明了,因而人们使用较多。下面我就用一个例子来告诉你Gauss-Jordan法的求解过程吧。顺便再提及一些注意事项以及扩展话题。 对本文中所提到的“主元”等概念的解释,可以参考 此链接 。 假设有如下的方程组: 写成矩阵形式就是:AX=B,其中: 且X=(X 1 , X 2 , X 3 ) T 。 现对矩阵A作初等变换,同时矩阵B也作同样的初等变换,则当A化为单位矩阵的时候,有: 显而易见,我们得到了方程组的解X=(1, 2, 4) T 。 所以,我们要以一定的策略,对A和B施以一系列的初等变换,当A化为单位矩阵的时候,B就为方程组的解。 选主元的G-J消元法通过这样的方法来进行初等变换:在每一个循环过程中,先寻找到主元,并将主元通过行变换(无需列变换)移动到矩阵的主对角线上,然后将主元所在的行内的所有元素除以主元,使得主元化为1;然后观察主元所在的列上的其他元素

马氏距离

匿名 (未验证) 提交于 2019-12-03 00:21:02
马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种 有效的 计算两个未知样本集的相似度的方法。与欧式距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的),并且是尺度无关的(scale-invariant),即独立于测量尺度。 主要是针对马氏距离的计算,很多博客没有说清楚,进行进一步的细化 两个样本: His1 = {3,4,5,6} His2 = {2,2,8,4} 它们的均值为: U = {2.5, 3, 6.5, 5} 其中S(i,j)={[His1(i)-u(i)]*[His1(j)-u(j)]+[His2(i)-u(i)]*[His2(j)-u(j)]}/2 S(1,1 ) = {[Hist1(1) - u(1)] * [Hist1(1) - u(i)] + [Hist2(1) - u(1)] * [Hist2(1) - u(1)]}/2 s(1,1) = ((3-2.5)(3-2.5)+(2-2.5)*(2-2.5))/2 = 0.25 S(1,2 ) = {[Hist1(1) - u(1)] * [Hist1(2) - u(2)] + [Hist2(1) - u(1)] * [Hist2(2) - u(2)]}/2 s(1,2) = ((3-2.5)

求一个四乘四矩阵的逆矩阵

匿名 (未验证) 提交于 2019-12-03 00:13:02
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <malloc.h> 4 5 int GJ(int, double **); 6 double **TwoArrayAlloc(int, int); 7 void TwoArrayFree(double **); 8 9 void main() 10 { 11 int i, j, n; 12 double **a; 13 n = 4; 14 a = TwoArrayAlloc(n, n); 15 16 a[0][0] = 5; a[0][1] = 7; a[0][2] = 6; a[0][3] = 5; 17 a[1][0] = 7; a[1][1] = 10; a[1][2] = 8; a[1][3] = 7; 18 a[2][0] = 6; a[2][1] = 8; a[2][2] = 10; a[2][3] = 9; 19 a[3][0] = 5; a[3][1] = 7; a[3][2] = 9; a[3][3] = 10; 20 if (!GJ(n, a)) 21 { 22 printf("矩阵求逆失败\n"); 23 exit(1); 24 } 25 printf("该矩阵的逆为:\n"); 26 for (i = 0; i<n; i++) 27 { 28 for

(模板)求逆矩阵luoguP4783

跟風遠走 提交于 2019-12-02 22:04:20
题目链接:https://www.luogu.org/problem/P4783 题意:求矩阵的逆。 思路:高斯消元法求矩阵的逆,n为400,卡常,我是开了O2优化才AC的。。 AC代码: #include<cstdio> #include<cctype> #include<algorithm> #define R register int using namespace std; const int maxn=405; const int MOD=1e9+7; int n; struct Matrix{ int m[maxn][maxn]; void SWAP(int x,int y){ //交换两行 for(R i=1;i<=n;++i) swap(m[x][i],m[y][i]); } void MUL(int x,int k){ //对一行乘上k for(R i=1;i<=n;++i) m[x][i]=(1LL*m[x][i]*k%MOD+MOD)%MOD; } void MULADD(int x,int y,int k){ //将第y行乘上k加到第x行上去 for(R i=1;i<=n;++i) m[x][i]=((m[x][i]+1LL*m[y][i]*k%MOD)%MOD+MOD)%MOD; } }A,B; int qpow(int a,int b){ //求逆元

03-乘法和逆矩阵

a 夏天 提交于 2019-12-02 02:16:48
一、矩阵乘法   矩阵乘法有下面的理解:   两个矩阵相乘=第三个矩阵,即$A*B=C$,我们可以理解为矩阵$A$与矩阵$B$的每一列相乘($A$的各列的线性组合=$C$中的某一列),得到矩阵$C$的每一列   也可以这么理解,矩阵$C$中的每个元素$c_{ij}$来自矩阵$A$的第i行和矩阵$B$的第j列点乘:  第三种理解:以行为单位,$A$中某一行与矩阵$B$整体相乘(即矩阵$B$各行的线性组合结果)= 矩阵$C$中某一行   第四种就是列×行,即$A$中各列×$B$中各行:   当然也可以将矩阵$A$和$B$进行分块相乘: 二、逆矩阵   这里讨论方阵,先说不可逆的情况(这里先举个例子,下面的示例矩阵不可逆): $\left|\begin{array}{lll}{1} & {3} \\ {2} & {6}\end{array}\right|$   解释:如果某个矩阵的列向量的线性组合可以得到0向量,那么该矩阵不可逆   OK,我们知道了某矩阵存在可逆矩阵,那么如何求出来逆矩阵呢?如 $\left[\begin{array}{ll}{1} & {3} \\ {2} & {7}\end{array}\right]$  我们将逆矩阵用未知变量填充:  根据之前所将,矩阵乘法可以理解为矩阵$A$与逆矩阵$A^{-1}$的第一列相乘得到$I$的第一列,矩阵$A$与逆矩阵$A^{-1}