矩阵乘法中的守恒量

$$tr(A\times B\times C)=tr(A\times C\times B)=tr(B \times A \times C)$$

一系列矩阵相乘,循环它的各个元素,最终得到的结果迹是相同的。

import numpy as np

x = np.random.randint(0, 10, (3, 3))
y = np.random.randint(0, 10, (3, 3))
z = np.random.randint(0, 10, (3, 3))
print(np.trace(x @ y @ z))
print(np.trace(x @ z @ y))
print(np.trace(z @ x @ y))
print(np.trace(y @ z @ x))

原文地址:https://www.cnblogs.com/weiyinfu/p/10690158.html

时间: 2024-10-17 15:59:11

矩阵乘法中的守恒量的相关文章

Spark中的矩阵乘法分析

前言: 矩阵乘法在数据挖掘/机器学习中是常用的计算步骤,并且在大数据计算中,shuffle过程是不可避免的,矩阵乘法的不同计算方式shuffle的数据量都不相同.通过对矩阵乘法不同计算方式的深入学习,希望能够对大数据算法实现的shuffle过程优化有所启发.网上有很多分布式矩阵乘法相关的文章和论文,但是鲜有对Spark中分布式矩阵乘法的分析.本文针对Spark中分布式矩阵乘法的实现进行必要的说明讨论. 分布式矩阵乘法原理: 矩阵乘法计算可以分为内积法和外积法.根据实现颗粒度的不同,也可以分为普通

我们可以推测矩阵乘法最优解的时间复杂度么?

矩阵乘法的定义为: 按照定义,一个简单的方阵乘法伪代码如下: int A[48,48],B[48,48],C[48,48] for i in 1 to 48 for j in 1 to 48 for k in 1 to 48 C[i,j]+=B[i,k]*A[k,j] 三层嵌套,时间复杂度为O(n3),n为方阵的边长. 由于矩阵乘法的广泛运用,如何优化矩阵乘法运算,有重要的意义.在不考虑矩阵的疏密程度下,如何有效减少矩阵乘法中算术乘法的使用次数是一个主要的优化方向. 最早的矩阵乘法优化算法,是由

小结:矩阵乘法

概要: 在一些递推式中,我们发现好像不能在优化了(例如斐波那契数列普通递推是O(n)的),但是这个特殊的递推式我们可以用矩阵来实现O(logn)(忽略了矩阵自身计算的O(n^3)).而矩阵乘法运算是a[i, k]*b[k, j]=c[i, j],从这个式子可看出朴素是n^3的(当然那些神算法我不会),而fib数列递推式可以用矩阵乘法来表示,即 ┏ 1,1 ┓[f(n-1), f(n-2)]*┃        ┃=[f(n), f(n-1)] ┗ 1, 0 ┛ 而矩阵乘法是可以做快速幂的!也就是说

算法导论-矩阵乘法-strassen算法

目录 1.矩阵相乘的朴素算法 2.矩阵相乘的strassen算法 3.完整测试代码c++ 4.性能分析 5.参考资料 内容 1.矩阵相乘的朴素算法 T(n) = Θ(n3) 朴素矩阵相乘算法,思想明了,编程实现简单.时间复杂度是Θ(n^3).伪码如下 1 for i ← 1 to n 2 do for j ← 1 to n 3 do c[i][j] ← 0 4 for k ← 1 to n 5 do c[i][j] ← c[i][j] + a[i][k]⋅ b[k][j] 2.矩阵相乘的stra

矩阵乘法(超详细!!!)

矩阵是什么? 是一个数字阵列,一个二维数组,n行r列的阵列称为n*r矩阵.如果n==r则称为方阵. 2×3矩阵 5×5方阵 特殊的单位矩阵,除了对角线为1,其他位置为0的矩阵.类似乘法中的1. 3×3单位矩阵I= 矩阵乘法 矩阵乘法中第一个矩阵的列要等于第二个矩阵的行 一个m∗n的的A矩阵,和一个n∗p的B矩阵相乘,将得到一个m∗p的矩阵C 来水道炒鸡简单的习题—— 矩阵 A×B(信息学奥赛一本通 1641) [题目描述] 矩阵 A 规模为 n×m,矩阵 B 规模为 m×p,现需要你求 A×B.

Python Numpy中的几个矩阵乘法

数学上的内积.外积和叉积 内积 也即是:点积.标量积或者数量积 从代数角度看,先对两个数字序列中的每组对应元素求积,再对所有积求和,结果即为点积.从几何角度看,点积则是两个向量的长度与它们夹角余弦的积. 具体解释 外积 也即是:张量积 在线性代数中一般指两个向量的张量积,其结果为一矩阵,也就是矩阵乘法 具体解释 叉积 也即是:向量积 叉积axb得到的是与a和b都垂直的向量 具体解释 Numpy中的矩阵乘法 np.dot() 对于二维矩阵,计算真正意义上的矩阵乘积:对于一维矩阵,计算两者的内积.(

没涉及到最值求解;观点:矩阵乘法无法表达出结果。 现实生活中事件、现象的数学表达

小结: 1. 矩阵就是一张普通的数表 矩阵乘法它表达的是一件具体的有现实生活场景的事件:但是不能借助它表达所有的事件. 它能,可能是只能,表达的是这个事件是通过列元素和行元素的相乘,而不能在拆分为单独的两个2行-列元素: 事件的原子不是某个行/列元素,而是一行/列元素. 3个菜市场卖着不同价格的白菜.萝卜.土豆:求总采购支出:采购量矩阵*价格矩阵 3个菜市场卖着不同价格的白菜.萝卜.土豆,现在在总采购支出计入运费,而不同的菜市场不同蔬菜的单位重量运费为价格的不同倍:例如第一个菜市场的白菜.萝卜.

矩阵乘法的Strassen算法详解

题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p. 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了: 下面咱们来具体解决这个矩阵相乘的问题. 解法一.暴力解法 其实,通过前面的分析

基于OpenMP的矩阵乘法实现及效率提升分析

一.  矩阵乘法串行实现 例子选择两个1024*1024的矩阵相乘,根据矩阵乘法运算得到运算结果.其中,两个矩阵中的数为double类型,初值由随机数函数产生.代码如下: #include <iostream> #include <omp.h> // OpenMP编程需要包含的头文件 #include <time.h> #include <stdlib.h> using namespace std; #define MatrixOrder 1024 #def