文档库 最新最全的文档下载
当前位置:文档库 › 矩阵乘法经典题目

矩阵乘法经典题目

矩阵乘法经典题目
矩阵乘法经典题目

好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。

不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。其中,结果的那个4等于2*2+0*1:

下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:

矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。为什么它又满足结合律呢?仔细想想你会发现这也是废话。假设你有三个矩阵A、B、C,那么(AB)C 和A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。

经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。操作有平移、缩放、翻转和旋转

这里的操作是对所有点同时进行的。其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时O(m+n)。假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。

经典题目2 给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。

由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。我们可以得到这样的结论:当n为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2)

* A^(n/2) * A (其中n/2取整)。这就告诉我们,计算A^n也可以使用二分快速求幂的方法。例如,为了算出A^25的值,我们只需要递归地计算出A^12、A^6、A^3的值即可。根据这里的一些结果,我们可以在计算过程中不断取模,避免高精度运算。

经典题目3 POJ3233 (感谢rmq)

题目大意:给定矩阵A,求A + A^2 + A^3 + ... + A^k的结果(两个矩阵相加就是对应位置分别相加)。输出的数据mod m。k<=10^9。

这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有:

A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2 + A^3) + A^3*(A + A^2 + A^3)

应用这个式子后,规模k减小了一半。我们二分求出A^3后再递归地计算A + A^2 + A^3,即可得到原问题的答案。

经典题目4 VOJ1049

题目大意:顺次给出m个置换,反复使用这m个置换对初始序列进行操作,问k次置换后的序列。m<=10, k<2^31。

首先将这m个置换“合并”起来(算出这m个置换的乘积),然后接下来我们需要执行这个置换k/m次(取整,若有余数则剩下几步模拟即可)。注意任意一个置换都可以表示成矩阵的形式。例如,将1 2 3 4置换为3 1 2 4,相当于下面的矩阵乘法:

置换k/m次就相当于在前面乘以k/m个这样的矩阵。我们可以二分计算出该矩阵的k/m 次方,再乘以初始序列即可。做出来了别忙着高兴,得意之时就是你灭亡之日,别忘了最后可能还有几个置换需要模拟。

经典题目5 《算法艺术与信息学竞赛》207页(2.1代数方法和模型,[例题5]细菌,版次不同可能页码有偏差)

大家自己去看看吧,书上讲得很详细。解题方法和上一题类似,都是用矩阵来表示操作,然后二分求最终状态。

经典题目6 给定n和p,求第n个Fibonacci数mod p的值,n不超过2^31

根据前面的一些思路,现在我们需要构造一个2 x 2的矩阵,使得它乘以(a,b)得到的结果是(b,a+b)。每多乘一次这个矩阵,这两个数就会多迭代一次。那么,我们把这个2 x 2的矩阵自乘n次,再乘以(0,1)就可以得到第n个Fibonacci数了。不用多想,这个2 x 2的矩阵很容易构造出来:

经典题目7 VOJ1067

我们可以用上面的方法二分求出任何一个线性递推式的第n项,其对应矩阵的构造方法为:在右上角的(n-1)*(n-1)的小矩阵中的主对角线上填1,矩阵第n行填对应的系数,其它地方都填0。例如,我们可以用下面的矩阵乘法来二分计算f(n) = 4f(n-1) - 3f(n-2) + 2f(n-4)

的第k项:

利用矩阵乘法求解线性递推关系的题目我能编出一卡车来。这里给出的例题是系数全为1的情况。

经典题目8 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值

把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,我们只需要二分求出A^k即可。

经典题目9 用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案,M<=5,N<2^31,输出答案mod p的结果

我们以M=3为例进行讲解。假设我们把这个矩形横着放在电脑屏幕上,从右往左一列一列地进行填充。其中前n-2列已经填满了,第n-1列参差不齐。现在我们要做的事情是把第n-1列也填满,将状态转移到第n列上去。由于第n-1列的状态不一样(有8种不同的状态),因此我们需要分情况进行讨论。在图中,我把转移前8种不同的状态放在左边,转移后8种不同的状态放在右边,左边的某种状态可以转移到右边的某种状态就在它们之间连一根线。注意为了保证方案不重复,状态转移时我们不允许在第n-1列竖着放一个多米诺骨牌(例如左边第2种状态不能转移到右边第4种状态),否则这将与另一种转移前的状态重复。把这8种状态的转移关系画成一个有向图,那么问题就变成了这样:从状态111出发,恰好经过n步回到这个状态有多少种方案。比如,n=2时有3种方案,111->011->111、111->110->111和111->000->111,这与用多米诺骨牌覆盖3x2矩形的方案一一对应。这样这个题目就转化为了我们前面的例题8。

后面我写了一份此题的源代码。你可以再次看到位运算的相关应用。

经典题目10 POJ2778

题目大意是,检测所有可能的n位DNA串有多少个DNA串中不含有指定的病毒片段。合法的DNA只能由ACTG四个字符构成。题目将给出10个以内的病毒片段,每个片段长度不超过10。数据规模n<=2 000 000 000。

下面的讲解中我们以ATC,AAA,GGC,CT这四个病毒片段为例,说明怎样像上面的题一样通过构图将问题转化为例题8。我们找出所有病毒片段的前缀,把n位DNA分为以下7类:以AT结尾、以AA结尾、以GG结尾、以?A结尾、以?G结尾、以?C结尾和以??结尾。其中问号表示“其它情况”,它可以是任一字母,只要这个字母不会让它所在的串成为某个病毒的前缀。显然,这些分类是全集的一个划分(交集为空,并集为全集)。现在,假如我们已经知道了长度为n-1的各类DNA中符合要求的DNA个数,我们需要求出长度为n时各类DNA的个数。我们可以根据各类型间的转移构造一个边上带权的有向图。例如,从AT不能转移到AA,从AT转移到??有4种方法(后面加任一字母),从?A转移到AA有1种方案(后面加个A),从?A转移到??有2种方案(后面加G或C),从GG到??有2种方案(后面加C将构成病毒片段,不合法,只能加A和T)等等。这个图的构造过程类似于用有限状态自动机做串匹配。然后,我们就把这个图转化成矩阵,让这个矩阵自乘n次即可。最后输出的是从??状态到所有其它状态的路径数总和。

题目中的数据规模保证前缀数不超过100,一次矩阵乘法是三方的,一共要乘log(n)次。因此这题总的复杂度是100^3 * log(n),AC了。

最后给出第9题的代码供大家参考(今天写的,熟悉了一下C++的类和运算符重载)。为了避免大家看代码看着看着就忘了,我把这句话放在前面来说:

Matrix67原创,转贴请注明出处。

#include

#define SIZE (1<

#define MAX_SIZE 32

using namespace std;

class CMatrix

{

public:

long element[MAX_SIZE][MAX_SIZE];

void setSize(int);

void setModulo(int);

CMatrix operator* (CMatrix);

CMatrix power(int);

private:

int size;

long modulo;

};

void CMatrix::setSize(int a)

{

for (int i=0; i

for (int j=0; j

element[i][j]=0;

size = a;

}

void CMatrix::setModulo(int a)

{

modulo = a;

}

CMatrix CMatrix::operator* (CMatrix param) {

CMatrix product;

product.setSize(size);

product.setModulo(modulo);

for (int i=0; i

for (int j=0; j

for (int k=0; k

{

product.element[i][j]+=element[i][k]*param.element[k][j]; product.element[i][j]%=modulo;

}

return product;

}

CMatrix CMatrix::power(int exp)

{

CMatrix tmp = (*this) * (*this);

if (exp==1) return *this;

else if (exp & 1) return tmp.power(exp/2) * (*this);

else return tmp.power(exp/2);

}

int main()

{

const int validSet[]={0,3,6,12,15,24,27,30};

long n, m, p;

CMatrix unit;

scanf("%d%d%d", &n, &m, &p);

unit.setSize(SIZE);

for(int i=0; i

for(int j=0; j

if( ((~i)&j) == ((~i)&(SIZE-1)) )

{

bool isValid=false;

for (int k=0; k<8; k++)isValid=isValid||(i&j)==validSet[k]; unit.element[i][j]=isValid;

}

unit.setModulo(p);

printf("%d", unit.power(n).element[SIZE-1][SIZE-1] );

return 0;

}

矩阵的运算及其运算规则

矩阵基本运算及应用 牛晨晖 在数学中,矩阵是一个按照长方阵列排列的或集合。矩阵是高等代中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、、光学和中都有应用;中,制作也需要用到矩阵。矩阵的运算是领域的重要问题。将为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。在电力系统方面,矩阵知识已有广泛深入的应用,本文将在介绍矩阵基本运算和运算规则的基础上,简要介绍其在电力系统新能源领域建模方面的应用情况,并展望随机矩阵理论等相关知识与人工智能电力系统的紧密结合。 1矩阵的运算及其运算规则 1.1矩阵的加法与减法 1.1.1运算规则 设矩阵,, 则 简言之,两个矩阵相加减,即它们相同位置的元素相加减! 注意:只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的.

1.1.2运算性质 满足交换律和结合律 交换律; 结合律. 1.2矩阵与数的乘法 1.2.1运算规则 数乘矩阵A,就是将数乘矩阵A中的每一个元素,记为或.特别地,称称为的负矩阵. 1.2.2运算性质 满足结合律和分配律 结合律:(λμ)A=λ(μA);(λ+μ)A =λA+μA. 分配律:λ(A+B)=λA+λB. 1.2.3典型举例 已知两个矩阵 满足矩阵方程,求未知矩阵. 解由已知条件知

? 1.3矩阵与矩阵的乘法 1.3.1运算规则 设,,则A与B的乘积是这样一个矩阵: (1) 行数与(左矩阵)A相同,列数与(右矩阵)B相同,即. (2) C的第行第列的元素由A的第行元素与B的第列元素对应相乘,再取乘积之和. 1.3.2典型例题 设矩阵 计算 解是的矩阵.设它为

矩阵算法经典题目

经典题目 这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。其中,结果的那个4等于2*2+0*1: 右面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵: 矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。为什么矩阵乘法不满足交换律呢?因为交换后两个矩阵有可能不能相乘。为什么它又满足结合律呢?假设你有三个矩阵A、B、C,那么(AB)C和 A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。 经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。操作有平移、缩放、翻转和旋转这里的操作是对所有点同时进行的。其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时O(m+n)。假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。 经典题目2 给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。 由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。我们可以得到这样的结论:当n 为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2) * A^(n/2) * A (其中n/2取整)。这就告诉我们,计算A^n也可以使用二分快速求幂的方法。例如,为了算出A^25的值,我们只需要递归地计算出A^12、A^6、A^3的值即可。根据这里的一些结果,我们可以在计算过程中不断取模,避免高精度运算。 经典题目3 POJ3233 (感谢rmq) 题目大意:给定矩阵A,求A + A^2 + A^3 + ... + A^k的结果(两个矩阵相加就是对应位置分别相加)。输出的数据mod m。k<=10^9。 这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有: A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2 + A^3) + A^3*(A + A^2 + A^3) 应用这个式子后,规模k减小了一半。我们二分求出A^3后再递归地计算A + A^2 + A^3,即可得到原问题的答案。

矩阵的运算及其运算规则

矩阵基本运算及应用 201700060牛晨晖 在数学中,矩阵是一个按照长方阵列排列的复数或实数集合。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。在电力系统方面,矩阵知识已有广泛深入的应用,本文将在介绍矩阵基本运算和运算规则的基础上,简要介绍其在电力系统新能源领域建模方面的应用情况,并展望随机矩阵理论等相关知识与人工智能电力系统的紧密结合。 1矩阵的运算及其运算规则 1.1矩阵的加法与减法 1.1.1运算规则 设矩阵,, 则

简言之,两个矩阵相加减,即它们相同位置的元素相加减! 注意:只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的. 1.1.2运算性质 满足交换律和结合律 交换律; 结合律. 1.2矩阵与数的乘法 1.2.1运算规则 数乘矩阵A,就是将数乘矩阵A中的每一个元素,记为或. 特别地,称称为的负矩阵. 1.2.2运算性质 满足结合律和分配律 结合律:(λμ)A=λ(μA);(λ+μ)A =λA+μA. 分配律:λ(A+B)=λA+λB.

已知两个矩阵 满足矩阵方程,求未知矩阵. 解由已知条件知 1.3矩阵与矩阵的乘法 1.3.1运算规则 设,,则A与B的乘积是这样一个矩阵: (1) 行数与(左矩阵)A相同,列数与(右矩阵)B相同,即 . (2) C的第行第列的元素由A的第行元素与B的第列元素对应相乘,再取乘积之和.

矩阵典型习题解析

2 矩阵 矩阵是学好线性代数这门课程的基础,而对于初学者来讲,对于矩阵的理解是尤为的重要;许多学生在最初的学习过程中感觉矩阵很难,这也是因为对矩阵所表示的内涵模糊的缘故。其实当我们把矩阵与我们的实际生产经济活动相联系的时候,我们才会发现,原来用矩阵来表示这些“繁琐”的事物来是多么的奇妙!于是当我们对矩阵产生无比的兴奋时,那么一切问题都会变得那么的简单! 2.1 知识要点解析 2.1.1 矩阵的概念 1.矩阵的定义 由m×n 个数),,2,1;,,2,1(n j m i a ij 组成的m 行n 列的矩形数表 mn m m n n a a a a a a a a a A 21 22221 11211 称为m×n 矩阵,记为n m ij a A )( 2.特殊矩阵 (1)方阵:行数与列数相等的矩阵; (2)上(下)三角阵:主对角线以下(上)的元素全为零的方阵称为上(下) 三角阵; (3)对角阵:主对角线以外的元素全为零的方阵; (4)数量矩阵:主对角线上元素相同的对角阵; (5)单位矩阵:主对角线上元素全是1的对角阵,记为E ; (6)零矩阵:元素全为零的矩阵。 3.矩阵的相等 设mn ij mn ij b B a A )(; )( 若 ),,2,1;,,2,1(n j m i b a ij ij ,则称A 与B 相等,记为A=B 。 2.1.2 矩阵的运算

1.加法 (1)定义:设mn ij mn ij b B A A )(,)( ,则mn ij ij b a B A C )( (2)运算规律 ① A+B=B+A ; ②(A+B )+C =A +(B+C ) ③ A+O=A ④ A +(-A )=0, –A 是A 的负矩阵 2.数与矩阵的乘法 (1)定义:设,)(mn ij a A k 为常数,则mn ij ka kA )( (2)运算规律 ① K (A+B ) =KA+KB , ② (K+L )A =KA+LA , ③ (KL ) A = K (LA ) 3.矩阵的乘法 (1)定义:设.)(,)(np ij mn ij b B a A 则 ,)(mp ij C C AB 其中 n k kj ik ij b a C 1 (2)运算规律 ①)()(BC A C AB ;②AC AB C B A )( ③CA BA A C B )( (3)方阵的幂 ①定义:A n ij a )( ,则K k A A A ②运算规律:n m n m A A A ;mn n m A A )( (4)矩阵乘法与幂运算与数的运算不同之处。 ①BA AB ②;00,0 B A AB 或不能推出 ③k k k B A AB )( 4.矩阵的转置 (1)定义:设矩阵A =mn ij a )(,将A 的行与列的元素位置交换,称为矩阵A 的转置,记为nm a A ji T )( , (2)运算规律 ①;)(A A T T ②T T T B A B A )(; ③;)(T T KA kA ④T T T A B AB )(。

GPU上的矩阵乘法的设计与实现

计 算 机 系 统 应 用 https://www.wendangku.net/doc/765916527.html, 2011 年 第20卷 第 1期 178 经验交流 Experiences Exchange GPU 上的矩阵乘法的设计与实现① 梁娟娟,任开新,郭利财,刘燕君 (中国科学技术大学 计算机科学与技术学院,合肥 230027) 摘 要: 矩阵乘法是科学计算中最基本的操作,高效实现矩阵乘法可以加速许多应用。本文使用NVIDIA 的CUDA 在GPU 上实现了一个高效的矩阵乘法。测试结果表明,在Geforce GTX 260上,本文提出的矩阵乘法的速度是理论峰值的97%,跟CUBLAS 库中的矩阵乘法相当。 关键词: 矩阵乘法;GPU ;CUDA Design and Implementation of Matrix Multiplication on GPU LIANG Juan-Juan, REN Kai-Xin, GUO Li-Cai, LIU Yan-Jun (School of Computer Science and Technology, University of Science and Technology of China, Hefei 230027, China) Abstract: Matrix multiplication is a basic operation in scientific computing. Efficient implementation of matrix multiplication can speed up many applications. In this paper, we implement an efficient matrix multiplication on GPU using NVIDIA’s CUDA. The experiment shows that our implementation is as fast as the implementation in CUBLAS, and the speed of our implementation can reach the peak speed’s 97%, on Geforce GTX260. Keywords: matrix multiplication; GPU; CUDA GPU 是一种高性能的众核处理器,可以用来加速许多应用。CUDA 是NVIDIA 公司为NVIDIA 的GPU 开发的一个并行计算架构和一门基于C 的编程语言。在CUDA 中程序可以直接操作数据而无需借助于图形系统的API 。现在已经有许多应用和典型算法使用CUDA 在GPU 上实现出来。 1 引言 矩阵乘法是科学计算中的最基本的操作,在许多领域中有广泛的应用。对于矩阵乘法的研究有几个方向。一个是研究矩阵乘法的计算复杂度,研究矩阵乘法的时间复杂度的下界,这方面的工作有strassen 算法[1]等。另外一个方向是根据不同的处理器体系结构,将经典的矩阵乘法高效的实现出来,这方面的结果体现在许多高效的BLAS 库。许多高效的BLAS 库都根据体系结构的特点高效的实现了矩阵乘法,比如GotoBLAS [2], ATLAS [3]等。Fatahalian [4]等人使 用着色语言设计了在GPU 上的矩阵乘法。CUBLAS 库是使用CUDA 实现的BLAS 库,里面包含了高性能的矩阵乘法。 本文剩下的部分组织如下,第2节介绍了CUDA 的编程模型,简单描述了CUDA 上编程的特点。第3节讨论了数据已经拷贝到显存上的矩阵乘法,首先根据矩阵分块的公式给出了一个朴素的矩阵乘法实现,分析朴素的矩阵乘法的资源利用情况,然后提出了一种新的高效的矩阵乘法。第4节讨论了大规模的矩阵乘法的设计和实现,着重讨论了数据在显存中的调度。第5节是实验结果。第6节是总结和展望。 2 CUDA 编程模型和矩阵乘法回顾 2.1 CUDA 编程模型 NVIDIA 的GPU 是由N 个多核处理器和一块显存构成的。每个多核处理器由M 个处理器核,1个指令部件,一个非常大的寄存器堆,一小块片上的共享内 ① 基金项目:国家自然科学基金(60833004);国家高技术研究发展计划(863)(2008AA010902) 收稿时间:2010-04-26;收到修改稿时间:2010-05-21

分块矩阵乘法的例子

分块矩阵乘法的例子 例 1 用分块法计算,AB 其中 00 51 2414 21,5 31001200 2 0-???? ? ?== ? ? ? ?-? ?? ? A B . 解 B A,如上分块, ???? ??=2221 1211 A A A A A , ??? ? ??=2322 21 131211 B B B B B B B , 其中 111221224 21(0,0),(5), ,,0 12????==== ? ?-?? ?? A A A A ()()()0,20,0,01,1342,51232221131211===??? ? ??-=???? ??=???? ??=B B B B B B ; 令==C AB ??? ? ??232221 131211 C C C C C C ,其中 =+=2112111111B A B A C )0()0)(5(51)00(=+??? ? ??, =+=2212121112B A B A C )00(()()()1002051342=+???? ??, =+=2312131113B A B A C )0()0)(5(01)00(=+???? ??-, =+=2122112121B A B A C ??? ? ??-=???? ??+???? ?????? ??-514)0(21511024, =+=2222122122B A B A C ???? ??-=???? ??+???? ?????? ??-332014)20(2113421024, =+=2322132123B A B A C ??? ? ??-=???? ??+???? ??-???? ??-04)0(21011024.

【线性代数】之矩阵的乘法运算

Born T o Win 考研数学线性代数之矩阵的乘法运算 任意两个矩阵不一定能够相乘,即两个矩阵要相乘必须满足的条件是:只有当第一个矩阵A 的列数与第二个矩阵B 的行数相等时A ×B 才有意义。一个m ×n 的矩阵A 左乘一个n ×p 的矩阵B ,会得到一个m ×p 的矩阵C 。左乘:又称前乘,就是乘在左边(即乘号前),比如说,A 左乘E 即AE 。 一个m 行n 列的矩阵与一个n 行p 列的矩阵可以相乘,得到的结果是一个m 行p 列的矩阵,其中的第i 行第j 列位置上的数为第一个矩阵第i 行上的n 个数与第二个矩阵第j 列上的n 个数对应相乘后所得的n 个乘积之和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。其中,结果矩阵的那个4(结果矩阵中第二(i )行第二(j)列)= 2(第一个矩阵第二(i)行第一列)*2(第二个矩阵中第一行第二(j)列) + 0(第一个矩阵第二(i)行第二列)*1(第二个矩阵中第二行第二(j)列): 矩阵乘法的两个重要性质:一,矩阵乘法满足结合律; 二,矩阵乘法不满足交换律。为什么矩阵乘法不满足交换律呢?这是由矩阵乘法定义决定的。因为矩阵AB=C ,C 的结果是由A 的行与B 的列相乘和的结果;而BA=D ,D 的结果是由B 的行与A 的列相乘和的结果。显然,得到的结果C 和D 不一定相等。同时,交换后两个矩阵有可能不能相乘。 因为矩阵乘法不满足交换律,所以矩阵乘法也不满足消去律。即由AB=AC 是得不到B=C 的,这是因为()AB AC A B C O =?-=是得不到A=O 或B-C=O 即B=C.例 111000010A B ????=≠=≠ ? ?-????0, 但0000AB O ??== ??? 那么由AB=O 一定得不到A=O 或B=O 吗?回答是否定的。比如A 是m ×n 阶矩阵,B 是n ×s 阶矩阵,若A 的秩为n ,则AB=O ,得B=O ;若B 的秩为m ,则AO ,得A=O.为什么吗?原因会在有关齐次线性方程组的文章里进行讲解.

矩阵乘法题目

十个利用矩阵乘法解决的经典题目 By Matrix67 好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。为什么它又满足结合律呢?仔细想想你会发现这也是废话。假设你有三个矩阵A、B、C,那么(AB)C和A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。 经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。操作有平移、缩放、翻转和旋转 这里的操作是对所有点同时进行的。其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时 O(m+n)。假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。 经典题目2 给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。 由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。我们可以得到这样的结论:当n为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2) * A^(n/2) * A (其中n/2取整)。这就告诉我们,计算A^n也可以使用二分快速求幂的方法。例如,为了算出A^25的值,我们只需要递归地计算出A^12、A^6、A^3的值即可。根据这里的一些结果,我们可以在计算过程中不断取模,避免高精度运算。 经典题目3 POJ3233 (感谢rmq) 题目大意:给定矩阵A,求A + A^2 + A^3 + ... + A^k的结果(两个矩阵相加就是对应位置分别相加)。输出的数据mod m。k<=10^9。 这道题两次二分,相当经典。首先我们知道,A^i可以二分求出。然后我们需要对整个题目的数据规模k进行二分。比如,当k=6时,有: A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2 + A^3) + A^3*(A + A^2 + A^3) 应用这个式子后,规模k减小了一半。我们二分求出A^3后再递归地计算A + A^2 + A^3,即可得到原问题的答案。

矩阵乘法的法则

第六节.矩阵乘法的法则 教学目标: (1)通过几何变换,使学生理解矩阵乘法不满足交换律(但并不是绝对的)。 (2)通过实例,了解矩阵的乘法满足结合律。 教学重点:理解矩阵乘法不满足交换律。 教学难点:从图形变换的角度理解矩阵的乘法不满足交换律。 教学过程: 一、引入:对上节课的练习的讨论: 已知三角形ABC 的三个顶点的坐标分别为:A (0,0),B (2,0),C (2, 2),先将三角形作以原点为中心的反射变换(变换矩阵为?? ?? ??--1001),再以x 轴为基准,将所得图形压缩到原来的一半(变换矩阵为????????21001),试求:(1)这连续两次变换所对应的变换矩阵U ; 问:U=??????--1001??????? ?21001=????????--21001 U=????????21001??????--1001=??? ?????--21001 问题:矩阵的乘法是否满足交换律呢? 2、例题 例1.已知矩阵A 、B ,计算AB 及BA ,并比较他们是否相同,能否从几何变换的角度给予解释? (1)A=??????2001,B=????? ?-0110; (2)A=??? ?????21001,B=??????1003。 解:(1)AB=??????2001??????-01 10=??????-0210,BA=??????-0110??????2001=?? ????-0120 显然,AB ≠BA 。 从几何变换的角度,AB 表示先作反射变换(变换矩阵为B ),后作伸缩变换(变换矩阵为A );而BA 表示先作伸缩变换(变换矩阵为A ),后作反射变换(变换矩阵为B )。当连续进行一系列变换时,交换变换次序得到的结果,一般说会不相同。仍以正方形(顶点分别为A(0,0),B(1,0),C(1,1),D(0,1))为例,如下图:

矩阵乘法的性质优秀教学设计

矩阵乘法的性质 【教学目标】 一、知识与技能:理解矩阵乘法不满足交换吕和消去律,会验证矩阵乘法满足结合律 二、过程与方法:比较演算法 三、情感态度和价值观:体会类比推理中结论全真的含义 【教学重难点】 结合律验证 【教学过程】 一、复习二阶矩阵的乘法运算规律与实数乘法性质 实数乘法运算性质:交换律ab=ba 结合律 (ab)c=a(bc) 消去律:ab=ac ,a ≠0则b=c 零律:0a=a0=0 1律:1a=a1=a 分配律 a(b+c)=ab+ac 问题:对于矩阵乘法,这些结论是否还成立? 二、矩阵的简单性质 1.由上节知识知:消去律未必成立,即AB=AC ,A ≠0,则未必有B=C 2.交换律呢? 例1.(1)已知P=??????1001k ,Q=?? ????1002k ,求PQ 及QP ,说明二者的几何意义及是否相等 (2)A=??????2001,B=?? ????-3241,求AB .BA ,说明二者是否相等 解:(1)PQ=??????120 0k k ,QP=??????1200k k ,二者相等, PQ :(x ,y)倍横坐标变为原来的2:k T Q (k 2x 2,y)倍纵坐标变为原来的1k (k 2x ,k 1y) QP : ??????????????????y k x k k T y k x k T y x Q P 12211::倍横坐标变为原来的倍纵坐标变为原来的 (2)AB=??????-6441,BA=?? ????-6281,AB ≠BA

说明:对于矩阵乘法,交换律未必成立 3.结合律是否成立? A=??????1111d c b a ,B=??????2222d c b a ,C=??????3333d c b a , 则AB=?? ????++++2121212121212121d d b c c d a c d b b a c b a a , BC=??????++++32323 23232323232d d b c c d a c d b b a c b a a (AB)C=??????++++2121212121212 121d d b c c d a c d b b a c b a a ?? ????3333d c b a =??????++++++++++++3213213213213 21321321321321321321321321321321321d d d d b c b c d b a c c d d c b c a c d a a c d d b d b a b c b b a a c d b c b a a c b a a a A(BC)=??????1111d c b a ?? ????++++3232323232323232d d b c c d a c d b b a c b a a =??????++++++++++++3213213213213 21321321321321321321321321321321321d d d d b c b c d b a c c d d c b c a c d a a c d d b d b a b c b b a a c d b c b a a c b a a a 说明:矩阵乘法满足结合律 4.自己验证:矩阵乘法满足结合律,即:A(B+C)=AB+AC 5.零律是否满足,证明你的结论,即AO=OA=O 是否成立?(成立) 6.一律是否满足?证明你的结论,即EA=AE=A 是否成立?(成立) 三、备用练习与例题 1.计算(1)????????????-??????011010210110 (2)32301?? ????- (解答(1)??????-1101 (2)?? ????-8901) 2.求使式子成立的a .b .c .d ,?? ????=????????????34120032d c b a (解答:a=1,b=4,c=1,d=1) 3.a .b 为实数,矩阵A=?? ????b a 10将直线L :2x+y-7=0变为自身,求a ,b (解答a=1/2,b=1) 四、习题: [补充习题] 1.对于三个非零二阶矩阵。下列式子中正确的序号是____________

strassen矩阵相乘算法C++代码

Strassen 矩阵相乘算法代码 #include #include #include #include usingnamespace std; template class Strassen_class { public: void ADD(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize); void SUB(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize); void MUL(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize);//朴素算法实现void FillMatrix(T** MatrixA, T** MatrixB, int length);//A,B矩阵赋值 void PrintMatrix(T **MatrixA, int MatrixSize);//打印矩阵 void Strassen(int N, T **MatrixA, T **MatrixB, T **MatrixC);//Strassen算法实现 }; template void Strassen_class::ADD(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize) { for (int i = 0; i void Strassen_class::SUB(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize) { for (int i = 0; i void Strassen_class::MUL(T** MatrixA, T** MatrixB, T** MatrixResult, int MatrixSize) {

第二章 矩阵及其运算测试题

第二章 矩阵及其运算测试题 一、选择题 1.下列关于矩阵乘法交换性的结论中错误的是( )。 (A)若A 是可逆阵,则1A -与1A -可交换; (B)可逆矩阵必与初等矩阵可交换; (C)任一n 阶矩阵与n cE 的乘法可交换,这里c 是常数; (D)初等矩阵与初等矩阵的乘法未必可交换。 2.设n (2n ≥)阶矩阵A 与B 等价,则必有( ) (A) 当A a =(0a ≠)时,B a =; (B)当A a =(0a ≠)时,B a =-; (C) 当0A ≠时,0B =; (D)当0A =时,0B =。 3.设A 、B 为方阵,分块对角阵00A C B ??= ??? ,则* C =( )。 (A) **00 A B ?? ??? (B) **||00 ||A A B B ?? ??? (C) **||00||B A A B ?? ??? (D) **||||0 0||||A B A A B B ?? ??? 4.设A 、B 是n (2n ≥)阶方阵,则必有( )。 (A)A B A B +=+ (B)kA k A = (C) A A B B =-g (D) AB A B = 5.设4阶方阵 44(),()||,ij A a f x xE A ?==-其中E 是4阶单位矩阵,则()f x 中3 x 的系数为( )。 (A)11223344()a a a a -+++ (B)112233112244223344113344a a a a a a a a a a a a +++ (C) 11223344a a a a (D)11223344a a a a +++ 6.设A 、B 、A B +、11A B --+均为n 阶可逆矩阵,则1()A B -+为( )。 (A) 11A B --+ (B) A B + (C) 111()A B ---+ (D)11111 ()B A B A -----+

苏教版高中数学高二选修4-2 矩阵乘法的概念

选修4-2矩阵与变换 2.3.1 矩阵乘法的概念 编写人: 编号:008 学习目标 1、 熟练掌握二阶矩阵与二阶矩阵的乘法。 2、 理解两个二阶矩阵相乘的结果仍然是一个二阶矩阵,从几何变换的角度来看,它表 示的是原来两个矩阵对应的连续两次变换。 学习过程: 一、预习: (一)阅读教材,解决下列问题: 问题:如果我们对一个平面向量连续实施两次几何变换,结果会是怎样?举例说明。 归纳1:矩阵乘法法则: 归纳2:矩阵乘法的几何意义: (二)初等变换:在数学中,一一对应的平面几何变换都可看做是伸压、反射、旋转、切变变换的一次或多次复合,而伸压、反射、切变变换通常叫做初等变换,对应的矩阵叫做初等变换矩阵。 练习 、.?? ??????????10110110=( ) A 、???? ??1110 B 、??????1011 C 、? ? ? ???0111 D 、??????0110 、已知矩阵X 、M 、N,若M =?? ? ???--1111, N =??????--3322,则下列X 中不满足:XM=N ,的一个 是( ) A 、X =???? ??--2120 B 、X =??????--1211 C 、X =??????--3031 D 、X =? ? ? ???-3053

二、课堂训练: 例1.(1)已知A= 11 22 11 22 ?? ? ? ? ? ?? ,B= 11 22 11 22 ?? - ? ? ? - ? ?? ,计算AB (2)已知A= 10 02 ?? ? ?? ,B= 14 23 ?? ? - ?? ,计算AB,BA (3)已知A= 10 00 ?? ? ?? ,B= 10 01 ?? ? ?? ,C= 10 02 ?? ? ?? 计算AB,AC 例2、已知梯形ABCD,其中A(0,0),B(3,0),C(2,2),D(1,2),先将梯形作关于x轴的反射变换,再将所得图形绕原点逆时针旋转0 90 (1)求连续两次变换所对应的变换矩阵M (2)求点A,B,C,D在 M T作用下所得到的结果 (3)在平面直角坐标系内画出两次变换对应的几何图形,并验证(2)中的结论。

矩阵基本性质

矩阵的基本性质 矩阵的第?第列的元素为。我们?或()表?的单位矩阵。 1.矩阵的加减法 (1),对应元素相加减 (2)矩阵加减法满足的运算法则 a.交换律: b.结合律: c. d. 2.矩阵的数乘 (1),各元素均乘以常数 (2)矩阵数乘满足的运算法则 a.数对矩阵的分配律: b.矩阵对数的分配律: c.结合律: d. 3.矩阵的乘法 (1),左行右列对应元素相乘后求和为C的第行第列的元素(2)矩阵乘法满足的运算法则 a.对于一般矩阵不满足交换律,只有两个方正满足且有 b.分配律: c.结合律: d.数乘结合律: 4.矩阵的转置, (1)矩阵的幂:,,…,

(2)矩阵乘法满足的运算法则 a. b. c. d. 5.对称矩阵:即;反对称矩阵:即 (1)设为(反)对称矩阵,则仍是(反)对称矩阵。 (2)设为对称矩阵,则或仍是对称矩阵的充要条件=。 (3)设为(反)对称矩阵,则,也是(反)对称矩阵。 (4)对任意矩阵,则分别是对称矩阵和反对称矩阵且. (5) 6. Hermite矩阵:即;反Hermite矩阵,即 a. b. c. d. e. f.(当矩阵可逆时) 7.正交矩阵:若,则是正交矩阵 (1) (2)

8.酉矩阵:若,则是酉矩阵 (1) (2) (3), (4) 9.正规矩阵:若,则是正规矩阵;若,则是实正规矩阵 10.矩阵的迹和行列式 (1)为矩阵的迹;或为行列式 (2);注:矩阵乘法不满足交换律 (3) (4),为酉矩阵,则 (5) (6) (7) (8) (9) (10) (11) (12),,则其中为奇异分解值的特征值 11.矩阵的伴随矩阵 (1)设由行列式的代数余子式所构成的矩阵

矩阵n次方的几种求法的归纳

矩阵n 次方的几种求法 1.利用定义法 () () ,,ij kj s n n m A a B b ??==则() ,ij s m C c ?=其1122...ij i j i j in nj c a b a b a b =+++ 1 n ik kj k a b ==∑称为A 与B 的乘积,记为C=AB ,则由定义可以看出矩阵A 与B 的乘积C 的第i 行第j 列的元素等于第一个矩阵A 的第i 行与第二个矩阵B 的第j 列的对应元素乘积之和,且由定义知:第一个矩阵的列数与第二个矩阵的行数要相[]1 同。 例1:已知矩阵34 125310210134A ??? ?=- ? ???,44 5 130621034510200B ??? ? ? = ? ? ??,求AB 解:设C AB ==() 34 ij c ?,其中1,2,3i =;1,2,3,4j = 由矩阵乘积的定义知: 111526533032c =?+?+?+?=121122543231c =?+?+?+?= 131321553030 c =?+?+?+?=14102051305 c =?+?+?+?= 21150623101c =-?+?+?+?= 22110224129c =-?+?+?+?= 23130125107c =-?+?+?+?= 24100021102c =-?+?+?+?= 310516334015c =?+?+?+?= 320112344222c =?+?+?+?= 330311354016c =?+?+?+?= 34001031403c =?+?+?+?= 将这些值代入矩阵C 中得:

C AB ==34 323130519721522163??? ? ? ??? 则矩阵A 的n 次方也可利用定义的方法来求解。 2.利用矩阵的分块来求解 这类方法主要是把一个大矩阵看成是由一些小矩阵组成,就如矩阵 由数组成的一样在运算中将这些小矩阵当做数一样来处理,再由矩阵乘法的定义来求解这些小矩阵的乘积所构成的矩阵。即设 () () ,,ij kj s n n m A a B b ??==把A ,B 分解成一些小矩阵: 1111l t tl A A A A A ?? ?= ? ???K M O M L ,1111 r l lr B B B B B ?? ? = ? ??? K M O M L ,其中ij A 是i j s n ?小矩阵且1,2...i t =,1,2...j l =,且12...t s s s s +++= ,12...l n n n n +++=;ij B 是j k n m ?小矩阵且1,2...j l =,1,2...k r =;且12...l n n n n +++=, 12...r m m m m +++=;令C AB ==1111r t tr C C C C ?? ? ? ??? K M O M L ,其中ij C 是i j s m ?小矩阵且1,2...i t =,1,2,...,j r =,且12...t s s s s +++=, 12...r m m m m +++=;其中1122...ij i j i j il lj C A B A B A B =+++。这里我们应注意:矩阵A 列的分法必须与矩阵B 行的分法一[]1 致。

(完整版)线性代数重要知识点及典型例题答案

线性代数知识点总结 第一章 行列式 二三阶行列式 N 阶行列式:行列式中所有不同行、不同列的n 个元素的乘积的和 n n n nj j j j j j j j j n ij a a a a ...)1(21212121) ..(∑-= τ (奇偶)排列、逆序数、对换 行列式的性质:①行列式行列互换,其值不变。(转置行列式T D D =) ②行列式中某两行(列)互换,行列式变号。 推论:若行列式中某两行(列)对应元素相等,则行列式等于零。 ③常数k 乘以行列式的某一行(列),等于k 乘以此行列式。 推论:若行列式中两行(列)成比例,则行列式值为零; 推论:行列式中某一行(列)元素全为零,行列式为零。 ④行列式具有分行(列)可加性 ⑤将行列式某一行(列)的k 倍加到另一行(列)上,值不变 行列式依行(列)展开:余子式ij M 、代数余子式ij j i ij M A +-=)1( 定理:行列式中某一行的元素与另一行元素对应余子式乘积之和为零。 克莱姆法则: 非齐次线性方程组 :当系数行列式0≠D 时,有唯一解:)21(n j D D x j j ??==、 齐次线性方程组 :当系数行列式01≠=D 时,则只有零解 逆否:若方程组存在非零解,则D 等于零 特殊行列式: ①转置行列式:33 23133222123121 11333231232221 131211 a a a a a a a a a a a a a a a a a a → ②对称行列式:ji ij a a = ③反对称行列式:ji ij a a -= 奇数阶的反对称行列式值为零 ④三线性行列式:33 31 2221 13 1211 0a a a a a a a 方法:用221a k 把21a 化为零,。。化为三角形行列式 ⑤上(下)三角形行列式:

线性代数中矩阵乘法的本质

线性代数中矩阵乘法的本质 一、线性空间 1.1线性的含义 线性代数里面的“线性”意思就是线性空间里的线性变换。线性变换或线性映射是把中学的线性函数概念进行了重新定义。中学里,函数f(x)=kx+b称为一元线性函数,因为在平面直角坐标系中这个函数的图形就是一条直线,所以把这种函数形象地称为“线性”函数。 在线性代数中,为了线性函数的进一步推广,把一元线性函数f (x)= kx + b中的b去掉,即只有过原点的最简单的直线f (x)= kx才被称为一元线性函数,这是因为不过原点的直线不满足我们对线性函数的比例性的要求。 线性函数的“线性”二字,体现在几何意义和代数意义2个方面:几何意义,线性就是指几何上是一条线,称为线性;而代数意义上,线性体现在①可加性(对加法封闭)②比例性(对数乘封闭)。 1.2、空间 空间的概念比较抽象,简单来说,能装东西的就是空间。数学上定义,里面装了可以运算的东西就是空间。从拓扑空间开始,一步步往上加定义,可以形成很多空间。就好像从水果这个泛型概念开始,一步步往上加定义,可以形成很多更加具体化的概念,如热带水果,甜的热带水果,苹果,红苹果等等。线形空间算是还是比较初级的,如果在里面定义了范数,就成了赋范线性空间;赋范线性空间满足完备性,就成了巴那赫空间;赋范线性空间中定义角度,就有了内积空间;内积空间再满足完备性,就得到希尔伯特空间;如果空间里装载所有类型的函数,就叫泛函空间。 空间有一些具体特征,就好像水果这个泛指的概念也有一些属性来描述一样,空间具有以下属性特征: ①由很多(实际上是无穷多个)位置点组成 ②这些点之间存在相对的关系 ③可以在空间中定义长度、角度

相关文档