当前位置:文档之家› Strassen矩阵乘法

Strassen矩阵乘法

Strassen矩阵乘法
Strassen矩阵乘法

实验报告

课程名称:算法设计与分析班级:12软工一班实验成绩:

实验名称:Strassen矩阵乘法学号:1242159101 批阅教师签字:

实验编号:实验一姓名:陈双飞实验日期:2014年12月14日

指导教师:陈平组号:实验时间:时分-时分

一、实验目的

通过算法的程序实现和执行时间测试、并与理论上的结论进行对比分析,深

入理解算法时间复杂度分析中对于输入数据考虑其等价类的意义,理解算法时间

复杂度渐进性态和和增长率的概念,为后续学习和实验奠定基础,同时也学习程

序效率测试的基本思路。

二、实验内容与实验步骤

(1)了解分治的基本思想并编写算法解决Strassen矩阵乘法问题。

(2)打开一台装有MyEclipse-10.7.1的PC。

(3)把已经写好的代码在Java环境下运行并调试。

(4)记录运行结果。

三、实验环境

Windows 7家庭普通版,MyEclipse-10.7.1

四、阐述Strassen矩阵乘法

矩阵乘法是线性代数中最常见的运算之一,它在数值计算中有广泛的应用。

若A和B是2个n×n的矩阵,则它们的乘积C=AB同样是一个n×n的矩阵。A

和B的乘积矩阵C中的元素C[i,j]定义为:

若依此定义来计算A和B的乘积矩阵C,则每计算C的一个元素C[i,j],需

要做n个乘法和n-1次加法。因此,求出矩阵C的n2个元素所需的计算时间为

0(n3)。60年代末,Strassen采用了类似于在大整数乘法中用过的分治技术,将

计算2个n阶矩阵乘积所需的计算时间改进到O(nlog7)=O(n2.18)。

五、问题分析

首先,我们还是需要假设n是2的幂。将矩阵A,B和C中每一矩阵都分块

成为4个大小相等的子矩阵,每个子矩阵都是n/2×n/2的方阵。由此可将方程

C=AB重写为:

(1)

由此可得:

C11=A11B11+A12B21 (2)

C12=A11B12+A12B22(3)

C21=A21B11+A22B21(4)

C22=A21B12+A22B22 (5)

如果n=2,则2个2阶方阵的乘积可以直接用(2)-(3)式计算出来,共需8次乘法和4次加法。当子矩阵的阶大于2时,为求2个子矩阵的积可以继续将子矩阵分块,直到子矩阵的阶降为2。这样就产生了一个分治降阶的递归算法。依此算法,计算2个n阶方阵的乘积转化为计算8个n/2阶方阵的乘积和4个n/2阶方阵的加法。2个n/2×n/2矩阵的加法显然可以在c*n2/4时间内完成,这里c是一个常数。因此,上述分治法的计算时间耗费T(n)应该满足:

这个递归方程的解仍然是T(n)=O(n3)。因此,该方法并不比用原始定义直接计算更有效。究其原因,乃是由于式(2)-(5)并没有减少矩阵的乘法次数。而矩阵乘法耗费的时间要比矩阵加减法耗费的时间多得多。要想改进矩阵乘法的计算时间复杂性,必须减少子矩阵乘法运算的次数。按照上述分治法的思想可以看出,要想减少乘法运算次数,关键在于计算2个2阶方阵的乘积时,能否用少于8次的乘法运算。Strassen提出了一种新的算法来计算2个2阶方阵的乘积。他的算法只用了7次乘法运算,但增加了加、减法的运算次数。这7次乘法是:

M1=A11(B12-B22)

M2=(A11+A12)B22

M3=(A21+A22)B11

M4=A22(B21-B11)

M5=(A11+A22)(B11+B22)

M6=(A12-A22)(B21+B22)

M7=(A11-A21)(B11+B12)

做了这7次乘法后,再做若干次加、减法就可以得到:

C11=M5+M4-M2+M6

C12=M1+M2

C21=M3+M4

C22=M5+M1-M3-M7

以上计算的正确性很容易验证。例如:

C22=M5+M1-M3-M7

=(A11+A22)(B11+B22)+A11(B12-B22)-(A21+A22)B11-(A11-A21)(B11+B12)

=A11B11+A11B22+A22B11+A22B22+A11B12

-A11B22-A21B11-A22B11-A11B11-A11B12+A21B11+A21B12

=A21B12+A22B22

由(2)式便知其正确性。

六、问题解决

我们可以得到完整的Strassen算法如下:

procedure STRASSEN(n,A,B,C);

begin

if n=2 then MATRIX-MULTIPLY(A,B,C)

else begin

将矩阵A和B依(1)式分块;

STRASSEN(n/2,A11,B12-B22,M1);

STRASSEN(n/2,A11+A12,B22,M2);

STRASSEN(n/2,A21+A22,B11,M3);

STRASSEN(n/2,A22,B21-B11,M4);

STRASSEN(n/2,A11+A22,B11+B22,M5);

STRASSEN(n/2,A12-A22,B21+B22,M6);

STRASSEN(n/2,A11-A21,B11+B12,M7);

; end;

end;

其中MATRIX-MULTIPLY(A,B,C)是按通常的矩阵乘法计算C=AB的子算法。

Strassen矩阵乘积分治算法中,用了7次对于n/2阶矩阵乘积的递归调用和18次n/2阶矩阵的加减运算。由此可知,该算法的所需的计算时间T(n)满足如下的递归方程:

按照解递归方程的套用公式法,其解为T(n)=O(nlog7)≈O(n2.81)。由此可见,Strassen矩阵乘法的计算时间复杂性比普通矩阵乘法有阶的改进。

有人曾列举了计算2个2阶矩阵乘法的36种不同方法。但所有的方法都要做7次乘法。除非能找到一种计算2阶方阵乘积的算法,使乘法的计算次数少于7次,按上述思路才有可能进一步改进矩阵乘积的计算时间的上界。但是Hopcroft 和Kerr(197l)已经证明,计算2个2×2矩阵的乘积,7次乘法是必要的。因此,要想进一步改进矩阵乘法的时间复杂性,就不能再寄希望于计算2×2矩阵的乘法次数的减少。或许应当研究3×3或5×5矩阵的更好算法。在Strassen之后又有许多算法改进了矩阵乘法的计算时间复杂性。目前最好的计算时间上界是

O(n2.367)。而目前所知道的矩阵乘法的最好下界仍是它的平凡下界Ω(n2)。因此到目前为止还无法确切知道矩阵乘法的时间复杂性。关于这一研究课题还有许多工作可做。

七、实验结果总结

实现算法代码:

/**

* Strassen矩阵乘法

* */

import java.util.*;

public class Strassen{

public Strassen(){

A = new int[NUMBER][NUMBER];

B = new int[NUMBER][NUMBER];

C = new int[NUMBER][NUMBER];

}

/**

* 输入矩阵函数

* */

public void input(int a[][]){

Scanner scanner = new Scanner(System.in);

for(int i = 0; i < a.length; i++) {

for(int j = 0; j < a[i].length; j++) {

a[i][j] = scanner.nextInt();

}

}

}

/**

* 输出矩阵

* */

public void output(int[][] resault){

for(int b[] : resault) {

for(int temp : b) {

System.out.print(temp + " ");

}

System.out.println();

}

}

/**

* 矩阵乘法,此处只是定义了2*2矩阵的乘法

* */

public void Mul(int[][] first, int[][] second, int[][] resault){ for(int i = 0; i < 2; ++i) {

for(int j = 0; j < 2; ++j) {

resault[i][j] = 0;

for(int k = 0; k < 2; ++k) {

resault[i][j] += first[i][k] * second[k][j];

}

}

}

}

/**

* 矩阵的加法运算

* */

public void Add(int[][] first, int[][] second, int[][] resault){ for(int i = 0; i < first.length; i++) {

for(int j = 0; j < first[i].length; j++) {

resault[i][j] = first[i][j] + second[i][j];

}

}

}

/**

* 矩阵的减法运算

* */

public void sub(int[][] first, int[][] second, int[][] resault){ for(int i = 0; i < first.length; i++) {

for(int j = 0; j < first[i].length; j++) {

resault[i][j] = first[i][j] - second[i][j];

}

}

}

/**

* strassen矩阵算法

* */

public void strassen(int[][] A, int[][] B, int[][] C){

//定义一些中间变量

int [][] M1=new int [NUMBER][NUMBER];

int [][] M2=new int [NUMBER][NUMBER];

int [][] M3=new int [NUMBER][NUMBER];

int [][] M4=new int [NUMBER][NUMBER]; int [][] M5=new int [NUMBER][NUMBER]; int [][] M6=new int [NUMBER][NUMBER]; int [][] M7=new int [NUMBER][NUMBER]; int [][] C11=new int [NUMBER][NUMBER]; int [][] C12=new int [NUMBER][NUMBER]; int [][] C21=new int [NUMBER][NUMBER]; int [][] C22=new int [NUMBER][NUMBER]; int [][] A11=new int [NUMBER][NUMBER]; int [][] A12=new int [NUMBER][NUMBER]; int [][] A21=new int [NUMBER][NUMBER]; int [][] A22=new int [NUMBER][NUMBER]; int [][] B11=new int [NUMBER][NUMBER]; int [][] B12=new int [NUMBER][NUMBER]; int [][] B21=new int [NUMBER][NUMBER]; int [][] B22=new int [NUMBER][NUMBER]; int [][] temp=new int [NUMBER][NUMBER]; int [][] temp1=new int [NUMBER][NUMBER]; if(A.length==2){

Mul(A, B, C);

}else{

//首先将矩阵A,B 分为4块

for(int i = 0; i < A.length/2; i++) {

for(int j = 0; j < A.length/2; j++) {

A11[i][j]=A[i][j];

A12[i][j]=A[i][j+A.length/2];

A21[i][j]=A[i+A.length/2][j];

A22[i][j]=A[i+A.length/2][j+A.length/2];

B11[i][j]=B[i][j];

B12[i][j]=B[i][j+A.length/2];

B21[i][j]=B[i+A.length/2][j];

B22[i][j]=B[i+A.length/2][j+A.length/2];

}

}

//计算M1

sub(B12, B22, temp);

Mul(A11, temp, M1);

//计算M2

Add(A11, A12, temp);

Mul(temp, B22, M2);

//计算M3

Add(A21, A22, temp);

Mul(temp, B11, M3);

//M4

sub(B21, B11, temp);

Mul(A22, temp, M4);

//M5

Add(A11, A22, temp1);

Add(B11, B22, temp);

Mul(temp1, temp, M5);

//M6

sub(A12, A22, temp1);

Add(B21, B22, temp);

Mul(temp1, temp, M6);

//M7

sub(A11, A21, temp1);

Add(B11, B12, temp);

Mul(temp1, temp, M7);

//计算C11

Add(M5, M4, temp1);

sub(temp1, M2, temp);

Add(temp, M6, C11);

//计算C12

Add(M1, M2, C12);

//C21

Add(M3, M4, C21);

//C22

Add(M5, M1, temp1);

sub(temp1, M3, temp);

sub(temp, M7, C22);

//结果送回C中

for(int i = 0; i < C.length/2; i++) {

for(int j = 0; j < C.length/2; j++) {

C[i][j]=C11[i][j];

C[i][j+C.length/2]=C12[i][j];

C[i+C.length/2][j]=C21[i][j];

C[i+C.length/2][j+C.length/2]=C22[i][j]; }

}

}

}

public static void main(String[] args){ Strassen demo=new Strassen(); System.out.println("输入矩阵A"); demo.input(A);

System.out.println("输入矩阵B"); demo.input(B);

demo.strassen(A, B, C);

demo.output(C);

}

private static int A[][];

private static int B[][];

private static int C[][];

private final static int NUMBER = 4;

}

运行截图:

心得体会:

这个关于用分治法解决的Strassen矩阵问题,是把2个n*n阶矩阵相乘问题的计算时间进行了较大的改进。我通过上网和去图书馆查阅资料完成了本次实验,通过本次实验我对矩阵乘法有了进一步的了解并且学会简化矩阵乘法的步骤。在以后的学习和生活中,我会更加努力的。面朝大海,春暖花开!

矩阵的运算及其运算规则

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

矩阵的运算及其运算规则

矩阵基本运算及应用 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的第列元素对应相乘,再取乘积之和.

矩阵的基本概念

§1 矩阵及其运算 教学要求:理解矩阵的定义、掌握矩阵的基本律、掌握几类特殊矩阵(比如零矩阵,单位矩阵,对称矩阵和反对称矩阵 ) 的定义与性质、注意矩阵运算与通常数的运算异同。能熟练正确地进行矩阵的计算。 知识要点: 一、矩阵的基本概念 矩阵,是由个数组成的一个行列的矩形表格,通常用大写 字母表示,组成矩阵的每一个数,均称为矩阵的元素,通常 用小写字母其元素表示,其中下标都是正整数, 他们表示该元素在矩阵中的位置。比如,或 表示一个矩阵,下标表示元素位于该矩阵的第行、第列。元素全为零的矩阵称为零矩阵。 特别地,一个矩阵,也称为一个维列向量;而一个矩阵,也称为一个维行向量。

当一个矩阵的行数与烈数相等时,该矩阵称为一个阶方阵。对于方阵,从左上角到右下角的连线,称为主对角线;而从左下角到右上角的连线称为付对角线。若一个阶方阵的主对角线上的元素 都是,而其余元素都是零,则称为单位矩阵,记为,即: 。如一个阶方阵的主对角线上(下)方的元 素都是零,则称为下(上)三角矩阵,例如,是 一个阶下三角矩阵,而则是一个阶上三角 矩阵。今后我们用表示数域上的矩阵构成的集合, 而用或者表示数域上的阶方阵构成的集合。 二、矩阵的运算 1、矩阵的加法:如果是两个同型矩阵(即它们具 有相同的行数和列数,比如说),则定义它们的和 仍为与它们同型的矩阵(即),的元素为和 对应元素的和,即:。

给定矩阵,我们定义其负矩阵为:。这样我们 可以定义同型矩阵的减法为:。由于矩阵的加法运算归结为其元素的加法运算,容易验证,矩阵的加法满足下列运算律: ( 1)交换律:; ( 2)结合律:; ( 3)存在零元:; ( 4)存在负元:。 2 、数与矩阵的乘法: 设为一个数,,则定义与的乘积仍 为中的一个矩阵,中的元素就是用数乘中对应的 元素的道德,即。由定义可知:。容易验证数与矩阵的乘法满足下列运算律: (1 ); (2 ); (3 ); (4 )。

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

计 算 机 系 统 应 用 https://www.doczj.com/doc/87727381.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、 矩阵1112 132122 23a a a a a a ?? ??? 中的行向量是()111213a a a a =r ,()2122 23b a a a =r ; 2、 如:1112131112111221222321222122,,c c c a a b b A B C c c c a a b b ?? ???? === ? ? ??????? ,那么 11111212111221212222212233,333a b a b a a A B A a b a b a a ++???? +== ? ? ++????, 1111122111121222 111312232111222121122222 21132223a c a c a c a c a c a c AC a c a c a c a c a c a c +++?? = ?+++?? 矩阵加法满足交换律和结合律,即如果,,A B C 是同阶的矩阵,那么有: ,()()A B B A A B C A B C +=+++=++。 同理如果矩阵,A B 是两个同阶矩阵,那么将它们对应位置上的元素相减所得到的矩阵C 叫做矩阵A 与B 的差,记作C A B =-。 实数与矩阵的乘法满足分配律:即()a A B aA aB +=+。 矩阵对乘法满足:()A B C AB AC +=+,()B C A BA CA +=+,()()()a AB aA B A aB == ()()AB C A BC = 3、 矩阵乘法不满足交换率,如111 11 11 122222222.a b c d c d a b a b c d c d a b ????????≠ ??? ??????????? 矩阵乘法能进行的条件是左边的矩阵A 的列数与右边矩阵B 的行数相等,而且矩阵的乘法不满足交换率,不满足消去律。 二、行列式概念及运算 1.用记号 2 2 11b a b a 表示算式1221b a b a -,即 2 2 11b a b a =1221b a b a -,其中 2 2 11b a b a 叫做二阶行列 式;算式1221b a b a -叫做二阶行列式的展开式;其计算结果叫做行列式的值;2121,,,b b a a 都叫做行列式的元素.利用对角线 2 2 11b a b a 可把二阶行式写成它的展开式,这种方法叫做二阶行列式 展开的对角线法则;即在展开时用主对角线元素的乘积减去副对角线元素的乘积. 2.二元一次方程组的解 二元一次方程组???=+=+222 1 11c y b x a c y b x a (其中2121,,,b b a a 不全为零);记 2 211b a b a 叫做方程组的系数

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

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 设有两个矩阵和,矩阵与的和记作, 规定为 注:只有两个矩阵是同型矩阵时,才能进行矩阵的加法运算. 两个同型矩阵的和,即为两个矩阵对应位置元素相加得到的矩阵. 设矩阵记 , 称为矩阵的负矩阵, 显然有 . 由此规定矩阵的减法为 . 定义2 数与矩阵A的乘积记作或, 规定为 数与矩阵的乘积运算称为数乘运算. 矩阵的加法与矩阵的数乘两种运算统称为矩阵的线性运算. 它满足下列运算规律:设都是同型矩阵,是常数,则 (1) (2) ; (3) (4) (5) (6) (7) (8) 注:在数学中,把满足上述八条规律的运算称为线性运算. 二、矩阵的相乘 定义3设

矩阵与矩阵的乘积记作, 规定为 其中,( 记号常读作左乘或右乘. 注: 只有当左边矩阵的列数等于右边矩阵的行数时, 两个矩阵才能进行乘法运算. 若,则矩阵的元素即为矩阵的第行元素与矩阵的第列对应元素乘积的和. 即 . 矩阵的乘法满足下列运算规律(假定运算都是可行的): (1) (2) (3) (4) 注: 矩阵的乘法一般不满足交换律, 即 例如, 设则 而 于是且 从上例还可看出: 两个非零矩阵相乘, 可能是零矩阵, 故不能从必然推出 或 此外, 矩阵乘法一般也不满足消去律,即不能从必然推出例如, 设 则 但 定义4如果两矩阵相乘, 有

则称矩阵A与矩阵B可交换.简称A与B可换. 注:对于单位矩阵, 容易证明 或简写成 可见单位矩阵在矩阵的乘法中的作用类似于数1. 更进一步我们有 命题1设是一个n阶矩阵,则是一个数量矩阵的充分必要条件是与任何n阶矩阵可换。 命题2设均为n阶矩阵,则下列命题等价: (1) (2) (3) (4) 三、线性方程组的矩阵表示 设有线性方程组 若记 则利用矩阵的乘法, 线性方程组(1)可表示为矩阵形式: (2) 其中矩阵称为线性方程组(1)的系数矩阵. 方程(2)又称为矩阵方程. 如果是方程组(1)的解, 记列矩阵 则 ,

苏教版高中数学高二选修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。4 矩阵的概念和运算 教学要求 : (1) 掌握矩阵的加减、数与矩阵相乘的运算。 (2) 会矩阵相乘运算掌握其算法规则 ( 以便演示算法规则及行列间的对应关系〉 教学内容: 前面介绍了利用行列式求解线性方程组,即Cramer 法则。但是Cramer 法则有它的局限性: 1.0 2. D ≠?? ?所解的线性方程组存在系数行列式(行数=列数) 同学们接下来要学习的还是关于解线性方程组,即Cramer 法则无法用上的-――用“矩阵”的方法解线性方程组。本节课主要学习矩阵的概念。 一.矩阵的概念 123123123 23124621x x x x x x x x x -+=?? -+-=-??+-=? 它的系数行列式 1 232 4601 1 1 D -=--=- 此时Cramer 法则失效,我们可换一种形式来表示: 123124621111A ?-? ?=--- ? ?-?? 这正是“换汤不换药”, 以上线性方程组可用这张“数表”来表示,二者之间互相翻译。 这种数表一般用圆括号或中括号括起来,排成一个长方形阵式,《孙子兵法》中说道:长方形阵为矩阵。 123246111A -?? ?=-- ? ?-?? 这也是矩阵,是由以上线性方程组的系数按照原来顺序排列而成,称为“系数矩阵” 而“A ”多了一列常数列,称为以上方程组的“增广矩阵”。 注意:虽然D 和A 很相像,但是区别很大。D 是行列式,实质上是一个数,而A 是一张表格,“数是数,表是表,数不是表,表也不是数”,这是本质意义上不同。况且,行列式行数必须与列数相同,矩阵则未必。 关于以上线性方程组我们后面将介绍。 更一般地,对于线性方程组:

矩阵的乘法运算

沈阳航空航天大学课程设计 学号2009040603045 班级94060302 姓名崔建国 指导教师刘学平 2011年7 月 6 日

沈阳航空航天大学 课程设计任务书 学院:机电工程学院专业:车辆工程班级:94060302 学号:2009040603045 题目:矩阵的乘法运算 一、课程设计时间 2011年6月27日~7月1日(第17周),共计1周。 二、课程设计内容 在“file05_矩阵相乘.txt”文件中存放了两个矩阵,请读取这两个矩阵进行乘法运算,并显示结果矩阵。 三、课程设计要求 程序质量: ?贯彻事件驱动的程序设计思想。 ?用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。 ?用户界面中的菜单至少应包括“读取矩阵”、“开始计算”、“显示结果”、“退 出”4项。 ?代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ?课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提 供的模板。 四、指导教师和学生签字 指导教师:刘学平学生签名:崔建国 五、成绩 六、教师评语

目录 一、需求分析 (4) 二、设计分析 (4) 三、关键技术 (6) 四、总结 (10) 五、完整的源程序 (11) 六、参考文献 (13)

一、需求分析 矩阵乘法运算是通过读取文本文件的资料,将两个矩阵进 行乘法运算,并显示结果。要求: ①学生会编程读取文本文会运open ②会运用Do while loop 的循环语句 ③懂得矩阵运算的法则. 二、设计分析 (1) 基本原理:运用打开顺序文件 open 文件名For Input/ output/ As # 文件号, 在文本文件中读取数据矩阵相乘采用二维数组For 循环 结构。矩阵相乘是将每个数字赋予一个字符,然后把字符 用公式写出来,进而进行计算,将得出的结果按矩阵的形 式打印在窗体上。

矩阵基本性质

矩阵的基本性质 矩阵的第?第列的元素为。我们?或()表?的单位矩阵。 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维矩阵的乘法AB-1_

《数据结构》课程设计 题目____n维矩阵的乘法AB-1______ 学号_________________ 姓名______________________ 专业_____________________ 指导老师___________________

第一章:课程设计的目的 (3) 第二章:课程设计的内容和要求 (3) 课程设计的内容 (3) 运行环境 (3) 第三章:课程设计分析 (4) 矩阵的存储 (4) 矩阵的输入与输出 (4) 矩阵的乘法运算 (4) 矩阵的求逆运算 (4) 第四章:课程设计的算法描述 (4) 矩阵的存储 (4) 矩阵的输出 (5) 矩阵的乘法 (5) 矩阵的求逆运算 (5) 第五章:源代码 (7) 第六章:结束语 (11)

第一章:课程设计的目的 本学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求实习者掌握《数据结构》中的各方面知识,还要求实习者具备一定的C语言基础和编程能力。 具体说来,这次课程设计主要有两大方面目的。 一是让实习者通过实习掌握《数据结构》中的知识。对于矩阵乘法这一课题来说,所要求掌握的数据结构知识主要是数组的相关概念和数组用来存储矩阵的相关便利性。 二是通过实习巩固并提高实习者的C语言知识,并初步了解Visual C++的知识,提高其编程能力与专业水平。 第二章:课程设计的内容和要求 课程设计的内容 设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。 要求 要求 1)界面友好,函数功能要划分好 2)总体设计应画一流程图 3)程序要加必要的注释 4)要提供程序测试方案 5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。 运行环境 该程序的运行环境为Windows xp系统,Microsoft Visual C++6.0版本。

矩阵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 致。

矩阵乘法的概念

矩阵乘法的概念 The latest revision on November 22, 2020

2006-2007后塍高中高二下学期数学教案(矩阵乘法的概念) 命题人:瞿蕴雅 教学目标: 1.熟练掌握二阶矩阵与二阶矩阵的乘法。 2.理解两个二阶矩阵相乘的结果仍然是一个二阶矩阵,从几何变换的角度来看,它表示的是原来两个矩阵的连续两次变换。 教学重点: 矩阵乘法的概念。 教学过程: 一、问题情境 问题:如果我们对一个平面向量连续实施两次几何变换,结果会是怎样 二、建构数学 1.矩阵乘法法则: 2.矩阵乘法的几何意义: 3.初等变换:在数学中,一一对应的平面几何变换都可看做是伸压、反射、旋转、切变变换的一次或多次复合,而伸压、反射、切变变换通常叫做初等变换,对应的矩阵叫做初等变换矩阵。 三、数学应用 1.例题 例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)中的结论。 例3: 已知A= cos sin sin cos αα αα - ?? ? ?? ,B= cos sin sin cos ββ ββ - ?? ? ?? ,试求AB,并对其几何意 义给予解释。 2.课堂练习 P46 1,2 四、回顾小结 1. 二阶矩阵乘法运算法则 2. 二阶矩阵乘法的几何意义 五、课外作业 同步导学

相关主题
文本预览
相关文档 最新文档