稀疏矩阵运算器

稀疏矩阵运算器
稀疏矩阵运算器

《数据结构》课程实验报告

题目:稀疏矩阵运算器

班级:

姓名:

学号:

专业:

学院:

完成日期:

一、需求分析

(1)问题描述:

稀疏矩阵是指那些多数元素为零的矩阵。利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器。

(2)基本要求:

以“带行逻辑链接信息”的三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。

(3)输入的形式:界面已设计好,智能输入

(4)测试数据

二、概要设计

(1)抽象数据类型数组的定义

ADT Array{

数据对象:ji=0,...,bi-1,i=1,2,...,n;

D={aj1j2...jn|n(>0)称为数组的维数,bi是数组第i维的长度,ji是数组元素的第i维下标,aj1j2...jn (-ElemSet}

数据关系:R={R1,R2,...Rn|

Ri={|

0<=jk<=bk-1,1<=k<=n且k<>i,

0<=ji<=bi-2,aj1...ji...jn,

aj1...ji+1 ...jn(-D,i=2,...n}

基本操作:

InitArray(&A,n,bound1,...,boundn)

若维数和各维长度合法,则构造相应的数组A,并返回OK.

DestroyArray(&A)

操作结果:销毁数组A.

Value(A,&e,index1,...,indexn)

初始条件:A是n维数组,e为元素变量,随后是n个下标值.

操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返回OK. Assign(&A,e,index1,...,indexn)

初始条件:A是n维数组,e为元素变量,随后是n个下标值.

操作结果:若下标不超界,则将e的值赋给所指定的A的元素,并返回OK. }ADT Array

(2)数组的顺序存储表示和实现

Status InitArray(Array &A,int dim,...);

Status DestroyArray(Array &A);

Status Value(Array A,ElemType &e,...);

Status Assign(Array &A,ElemType e,...);

基本操作的算法描述:

Status InitArray(Array &A,int dim,...){

if(dim<1||dim>MAX_ARRAY_DIM) return ERROR;

A.dim=dim;

A.bounds=(int *)malloc(dim *sizeof(int));

if(!A.bounds) exit(OVERFLOW);

elemtotal=1;

va_start(ap,dim);

for(i=1;i< p="">

A.bounds[i]=va_arg(ap,int);

if(A.bounds[i]<0) return UNDERFLOW;

elemtotal*=A.bounds[i];

}

va_end(ap);

A.base=(ElemType *)malloc(elemtotal*sizeof(ElemType));

if(!A.base) exit(OVERFLOW);

A.constants=(int *)malloc(dim*sizeof(int));

if(!A.constants) exit(OVERFLOW);

A.constants[dim-1]=1;

for(i=dim-2;i>=0;--i)

A.constants[i]=A.bounds[i+1]*A.constants[i+1];

return OK;

}

Status DestoyArray(Array &A){

if(!A.base) return ERROR;

free(A.base); A.base=NULL;

if !(A.bounds) return ERROR;

free(A.bounds); A.bounds=NULL;

if!(A.constatns) return ERROR;

free(A.constants); A.constants=NULL;

return OK;

}

Status Locate(Array A,va_list ap,int &off){

off=0;

for(i=0;i< p="">

ind=va_arg(ap,int);

if(ind<0||ind>=A.bounds[i]) return OVERFLOW;

off+=A.constants[i]*ind;

}

return OK;

}

Status Value(Array A,ElemType &e,...){

va_start(ap,e);

if((result=Locate(A,ap,off))<=0 return result; e=*(A.base+off);

return OK;

}

Status Assign(Array &A,ElemType e,...){

va_start(ap,e);

if((result=Locate(A,ap,off))<=0) return result; *(A.base+off)=e;

return OK;

}

三、详细设计

(1)元素类型、结点类型和指针类型

typedef int ElemType;

typedef struct //三元组表示元素

{

int i,j; //非零元的行下标和列下标

ElemType e; //非零元的值

}Triple;

typedef struct

{

Triple data[MAXSIZE+1]; //非零元三元组表

int rpos[MAXRC+1]; //各行第一个非零元在三元组的位置表

int mu,nu,tu; //矩阵的行数,列数和非零元的个数

}TSMatrix,*Matrix;

(2)初始化稀疏矩阵函数

void Creat(TSMatrix &M) //初始化矩阵

{

int i,k;

for(i=1;i<=MAXRC+1;i++)

M.rpos[i]=0;

printf("请输入矩阵的行数、列数和非零元个数(以空格隔开):");

scanf("%d %d %d",&M.mu,&M.nu,&M.tu);

for(i=1;i<=M.tu;i++)

{

printf("请用三元组形式输入矩阵的元素(行列非零元素):");

scanf("%d %d %d",&M.data[i].i,&M.data[i].j,&M.data[i].e);

}

for(i=1,k=1;i<=M.mu;i++)

{

M.rpos[i]=k; //记下每一行第一个非零元在X.data中的序号

while(M.data[k].i<=i && k<=M.tu) //移到下一行的第一个非零元

k++;

}

}

(3)稀疏矩阵相加,相减函数

void Xiangjia(TSMatrix A,TSMatrix B,TSMatrix &C,int n) //n为控制符(相加为+1,相减为-1)

{

int a,b,temp,l;

C.mu=A.mu;

C.nu=A.nu;

a=b=l=1;

while(a<=A.tu && b<=B.tu)

{

if(A.data[a].i==B.data[b].i) //元素所在行数相同

{

if(A.data[a].j

C.data[l++]=A.data[a++]; //把A中值赋给C

else if(A.data[a].j>B.data[b].j)

{

C.data[l]=B.data[b]; //否则把B中值赋给C

C.data[l++].e=n*B.data[b++].e;

}

else{

temp=A.data[a].e+n*B.data[b].e; //否则就相加

if(temp) //判断是不是零

{

C.data[l]=A.data[a];

C.data[l].e=temp;

l++;

}

a++;b++;

}

}

else if(A.data[a].i

的行,把A直接赋给C

C.data[l++]=A.data[a++];

else {

C.data[l]=B.data[b]; //元素所在行数不同且B的行小于A

的行,把B直接赋给C

C.data[l++].e=n*B.data[b++].e;

}

}

while(a<=A.tu) //A或B中多于的元素直接赋给 C

C.data[l++]=A.data[a++];

while(b<=B.tu)

{

C.data[l]=B.data[b];

C.data[l++].e=n*B.data[b++].e;

}

C.tu=l-1;

}

(4)稀疏矩阵相乘函数

int Xiangcheng(TSMatrix A,TSMatrix B,TSMatrix &Q) //与书中的算法基本相同,不多做解释

{

int arow,brow,ccol,tp,p,q,t;

int ctemp[MAXRC+1];

if(A.nu!=B.mu) return 0; //A的行与B的列不想等

Q.mu=A.mu;Q.nu=B.nu;Q.tu=0;

if(A.tu*B.tu)

{

for(arow=1;arow<=A.mu;arow++) //处理A的每一行

{

for(ccol=1;ccol<=Q.nu;ccol++)

ctemp[ccol]=0; //当前行各元素累加器清零

Q.rpos[arow]=Q.tu+1;

if(arow

tp=A.rpos[arow+1];

}

else{

tp=A.tu+1;

}

for(p=A.rpos[arow];p

{

brow=A.data[p].j; //找到对应元在B中的行号

if(brow

else {t=B.tu+1;}

for(q=B.rpos[brow];q

{

ccol=B.data[q].j; //乘积元素在Q中列号

ctemp[ccol]+=A.data[p].e*B.data[q].e;

}

}

for(ccol=1;ccol<=Q.nu;ccol++) //压缩存储改行非零元

{

if(ctemp[ccol]){

if(++Q.tu>MAXSIZE) return 0;

Q.data[Q.tu].i=arow;

Q.data[Q.tu].j=ccol;

Q.data[Q.tu].e=ctemp[ccol];

}

}

}

}

return 1;

}

(5)三元组表打印出矩阵

void Print_SMatrix(TSMatrix M) //将三元组表打印出矩阵{

int k,l,n;

Matrix p;

p=&M;

for(k=1,n=1;k<=p->mu;k++)

{

for(l=1;l<=p->nu;l++)

{

if(p->data[n].i==k && p->data[n].j==l)

{

printf("%5d",p->data[n].e); //控制格式

n++;

}

else

printf("%5d",0);

}

printf("\n");

}

printf("\n");

}

(6)销魂函数

void Destory_SMatrix(TSMatrix &M) //销毁函数

{

M.mu=M.nu=M.tu=0;

}

(7)主函数

void main() //主函数

{

TSMatrix A,B,C;

TSMatrix *p=&A,*q=&B;

int flag,n;

while(1) //操作界面

{

printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("\t┃ *** 稀疏矩阵的加、减、转、乘 *** ┃\n");

printf("\t┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");

printf("\t┃ 1、稀疏矩阵的加法┃\n");

printf("\t┃ 2、稀疏矩阵的减法┃\n");

printf("\t┃ 3、稀疏矩阵的乘法┃\n");

printf("\t┃ 4、退出该应用程序┃\n");

printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("输入要进行的项目的编号:");

scanf("%d",&flag);

if(flag==4) break;

Creat(A);

printf("矩阵A:\n"); Print_SMatrix(A);

switch(flag)

{

case 1: Creat(B);n=1;

printf("矩阵B:\n");

Print_SMatrix(B);

if(A.mu==B.mu && A.nu==B.nu)

{

printf("A+B:\n");

Xiangjia(A,B,C,n);

Print_SMatrix(C);

}

else printf("错误!行列不一致\n");

break;

case 2: Creat(B);n=-1;

printf("矩阵B:\n");

Print_SMatrix(B);

if(A.mu==B.mu && A.nu==B.nu)

{

printf("A-B:\n");

Xiangjia(A,B,C,n);

Print_SMatrix(C);

}

else printf("错误!行列不一致\n");

break;

case 3: Creat(B);

printf("矩阵B:\n");

Print_SMatrix(B);

printf("A*B:\n");

n=Xiangcheng(A,B,C);

if(!n) printf("错误!行列不匹配\n");

else Print_SMatrix(C);

break;

default: printf("输入错误!\n");

}

Destory_SMatrix(A);

Destory_SMatrix(B);

Destory_SMatrix(C);

getchar();getchar();

}

printf("\n\t\t\t ***程序已经退出***\n");

getchar();

}

四、调试过程:

五、测试结果

六、心得体会:

数据结构课程设计-特殊矩阵计算器

特殊矩阵计算器 1、特殊矩阵计算器 问题描述:创建两个特殊矩阵 A 和 B,计算 A+B、A-B、A*B、B*A、A(或 B)的逆、A(或 B)的转置、A(或 B)的行列式等,具体要求如下:① A、B 均是压缩存储的特殊矩阵,如上/下三角矩阵、对称矩阵、对角矩阵、单位矩阵等。 ② A、B 的矩阵类型、行列数、各位置的元素值等信息均在运行时指定(对于不同类型的矩阵,要求输入的数据也不尽相同)。③各运算若可行,则打印结果;若不可行,则给出提示信息。④各运算需自己实现,禁止调用语言内建或第三方类库的矩阵 API。 涉及算法及知识:特殊矩阵的压缩存储、矩阵相关运算。 #include<> #include<> #define max 100 typedef struct{ int row,col;//定义矩阵行数、列数 int a[max][max]; }Matrix; //存储结构 typedef struct{ int array[max]; int n; //定义矩阵的阶 }M; Matrix A,B,C,D; M p; //*************矩阵的压缩存储*********************// int CompressMatrix(int m,int i,int j,int n){ int k;

if(m==1){ if(i<=j) k=(2*n-i+1)*i/2+(j-i)+1; else k=0; return k; } if(m==2){ if(i>=j) k=i*(i+1)/2+j+1; else k=0; return k; } if(m==3){ if(i>=j) k=i*(i+1)/2+j; else k=j*(j+1)/2+i; return k; } if(m==4){ if(i!=j) k=0; else k=i+1;

矩阵的运算及其运算规则

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

卡西欧计算器fx-991CN X科学函数计算器(六)

卡西欧计算器fx-991CN X科学函数计算器(六) 矩阵是高等代数中常用的工具,在天体物理、量子力学等领域有着广泛运用,学习对高中理科生以及大学生都有非常重要的作用。卡西欧fx-991CN X是卡西欧第三代新型函数计算器,具备矩阵、计算、复数、统计、表格、方程/函数、向量等10种计算模式,能支持4×4矩阵计算,能够复制以及编辑矩阵变量。 一、基本操作 在卡西欧fx-991CN X科学函数计算器矩阵模式中,可以设置矩阵变量(MatA、MatB、MatC、MatD),指定、编辑变量以及矩阵元素,复制矩阵,并进行矩阵运算。 1.设置矩阵变量 进入矩阵模式后,选择1(MatA),根据需求设置矩阵的行与列。同理可设置MatB、MatC、MatD三个矩阵。

2.指定并编辑矩阵的变量数据 1)按OPTN+1(定义矩阵),然后在显示的菜单中,选择要向其指定数据的矩阵变量。 2)在出现的对话框上,使用一个数字按钮指定行数。 3)在出现的下一个对话框上,使用一个数字按钮指定行数。 4)使用显示的矩阵编辑器输入矩阵的元素。 3.编辑矩阵变量的元素 1)按OPTN+2(编辑矩阵),然后在显示的菜单中,选择要编辑的矩阵变量。 2)使用显示的矩阵编辑器编辑矩阵的元素。 4.矩阵答案存储器 无论何时,只要在矩阵模式中执行的计算结果为矩阵,MatAns屏幕都将显示该结果。该结果还会指定给名为“MatAns”的变量。 5.复制矩阵变量或(MatAns)的内容 1)使用矩阵编辑器显示要复制的矩阵。

2)按STO ,然后执行以下键操作之一,以指定复制目标:(-)(MatA )、“。,,,”(MatB )、x 1 -(MatC )或sin (MatD )。 二、矩阵计算示例 已知MatA=??????1112,MatB=??????--2112,MatC=??? ???--111001,请确认MatA 的平方和立方(MatA 2、MatA 3)。在计算器键盘上按下AC+MatA+2x 按键,然后确认得出结果? ?????2335;按下AC+MatA+SHIFT+2x +(3x ),确认得出答案? ? ? ???58813。 需要注意的是,不得使用?x 进行输入,需要使用2x 指定平方,并使用SHIFT+2x +(3x )指定立方。

求矩阵的基本运算

求矩阵的基本运算 #include #include void jiafa() { int m,n; float a[20][20],b[20][20],c[20][20]; int i,j; printf("请输入矩阵行数:"); scanf("%d",&m); printf("请输入矩阵列数:"); scanf("%d",&n); printf("请输入第一个矩阵:"); for(i=0; i

矩阵的运算及其运算规则

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

四则运算计算器

基于单片机实现的四则运算计算器 姓名 学号: 班级: 专业名称:测控技术与仪器 指导教师: 东北大学 2016年1月

课程设计(论文)任务书课程设计(论文)题目:基于单片机实现的四则运算计算器 基本内容和设计要求: 1、主机的矩阵键盘输入数和运算符号,从机显示运算结果。 2、主从单片机串行通信系统,并在LCD上显示运算内容及结果。 3、计算结果超过十位数字则显示错误。 4、运算除法时,结果只取整数,不是四舍五入。 5、有清零功能。

目录 课程设计(论文)任务书................................................................................................ i i 摘要 (1) 第1章绪论 (2) 1.1计算器简介 (2) 1.2设计主要内容 (2) 第2章系统硬件设计 (4) 2.1硬件组成 (4) 2.2输入模块 (4) 2.3输出模块 (5) 2.4运算模块 (5) 第3章系统软件设计 (7) 3.1 主程序 (7) 3.1.1主程序框图及初始化 (7) 3.1.2LCD程序框图及初始化 (8) 3.1.3键盘程序框图及初始化 (9) 3.1.4运算程序框图 (10) 第4章调试测试与实验分析 (11) 4.1 计算器调试 (11) 参考文献 (12) 心得体会 (13) 附录硬件原理图及PCB图 (14) 附录程序清单 (15) 附录实物照片 (28)

摘要 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本设计是基于89C52RC单片机来进行的四则运算计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除的基本四则运算,并在LCD1602液晶显示屏上显示相应的结果。本电路采用89C52RC单片机为主要控制电路,利用4*4矩阵键盘作为计算器以及运算符的输入。显示采用字符LCD静态显示。软件用C语言编程,并用开发板进行演示。 关键词:计算器,89C52RC单片机,LCD,矩阵键盘

矩阵键盘简易计算器要点

《微处理器系统与接口技术》课程实践报告 计算器 班级: 学号: 学生姓名: 指导老师: 日期: 2014.7.5 ******电子与信息工程学院

目录 1、设计题目:计算器 (3) 2、设计目的 (3) 3、计算器总体设计框图 (3) 4、计算器详细设计过程 (4) 4.1输入模块 (4) 4.2键盘输入电路 (5) 4.3主程序模块 (6) 5、分析与调试 (6) 7、运行结果 (8) 8、结束语 (8) 8、参考文献 (8) 9、源程序附录 (9) 9.1主程序 (9) 9.2延时函数delay (12) 9.3显示函数display (12) 9.4键盘扫描函数 (14) 9.5预定义函数 (15)

1、设计题目:计算器 2、设计目的 此次课程实践题目是基于单片机简单计数器的设计,本此设计使用的是Intel公司MCS-51系列的8051AH单片机。设计的计算器可以实现2位小数的加、减、乘、除运算以及整数的乘方运算,其中用4*4矩阵键盘来输入待参与运算的数据和运算符;八位数码管动态显示输入待参与运算的数据以及运算后产生的结果,每个硬件模块的调用过程中涉及到了函数入口及出口参数说明,函数调用关系描述等。 3、计算器总体设计框图 计算器以MCS-51系列的8051AH单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后控制LED数码管的输出。整体框图如图1所示: 图3 整体框图 本系统硬件主要由矩阵键盘、独立键盘I/O输入输出、数码管显示等主要部分组成。各模块的主要功能如下: (1)矩阵键盘将十六进制编码的数字送到单片机。 (2) 单片机扫描键盘信号并接收,对输入的键盘信号进行处理 (3) LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。实践设计的具体流程图如下图2所示:

c语言 矩阵计算器

#include #define M 20 #define N 20 float A[M][N]; //定义了含有400个浮点型数组元素的二维数组 float B[M][N]; float C[M][N]; int i,j,m,n,p,q,k; int main() { printf(" ###########################################\n"); printf(" ### 欢迎您使用矩阵计算器系统。###\n"); printf(" ### 系统功能:###\n"); printf(" ### 计算两个矩阵相加,相减; ###\n"); printf(" ### 矩阵相乘;矩阵转置; ###\n"); printf(" ### ###\n"); printf(" #########################################\n\n"); int x; do{ printf("请选择您需要的运算,若退出则选择0后按回车键结束\n"); printf("******************************************************************\n") ; printf("0,退出\n"); printf("1,矩阵相加\n"); printf("2,矩阵相减\n"); printf("3,矩阵相乘\n"); printf("4,矩阵转置\n"); printf("******************************************************************\n") ; scanf("%d",&x); switch (x) {

MATLAB矩阵运算基础练习题

第2章 MATLAB 矩阵运算基础 2.1 在MA TLAB 中如何建立矩阵?? ?? ??194375,并将其赋予变量a ? 2.2 请产生一个100*5的矩阵,矩阵的每一行都是[1 2 3 4 5] 2.3产生一个1x10的随机矩阵,大小位于(-5 5) 2.2 有几种建立矩阵的方法?各有什么优点? 可以用四种方法建立矩阵: ①直接输入法,如a=[2 5 7 3],优点是输入方法方便简捷; ②通过M 文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改; ③由函数建立,如y=sin(x),可以由MATLAB 的内部函数建立一些特殊矩阵; ④通过数据文件建立,该方法可以调用由其他软件产生数据。 2.3 在进行算术运算时,数组运算和矩阵运算各有什么要求? 进行数组运算的两个数组必须有相同的尺寸。进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a 与b 相乘(a*b )时必须满足a 的列数等于b 的行数。 2.4 数组运算和矩阵运算的运算符有什么区别? 在加、减运算时数组运算与矩阵运算的运算符相同,乘、除和乘方运算时,在矩阵运算的运算符前加一个点即为数组运算,如a*b 为矩阵乘,a.*b 为数组乘。 2.5 计算矩阵??????????897473535与???? ??????638976242之和,差,积,左除和右除。 2.6 求?? ?? ??+-+-+-+-++=i 44i 93i 49i 67i 23i 57i 41i 72i 53i 84x 的共轭转置。 2.7 计算???? ??=572396a 与??????=864142b 的数组乘积。 2.8 “左除”与“右除”有什么区别? 在通常情况下,左除x=a\b 是a*x=b 的解,右除x=b/a 是x*a=b 的解,一般情况下,a\b ≠b/a 。 2.9 对于B AX =,如果??????????=753467294A ,???? ??????=282637B ,求解X 。 2.10 已知:???? ??????=987654321a ,分别计算a 的数组平方和矩阵平方,并观察其结果。 2.11 ??????-=463521a ,?? ????-=263478b ,观察a 与b 之间的六种关系运算的结果。

第3章 矩阵及其运算

第3章 矩阵及其运算 3.1 基本要求、重点难点 基本要求: 1.1.掌握矩阵的定义. 2.2.掌握矩阵的运算法则. 3.3.掌握伴随矩阵的概念及利用伴随矩阵求逆矩阵的方法. 4.4.掌握矩阵秩的概念及求矩阵秩的方法. 5.5. 掌握初等变换和初等矩阵的概念,能够利用初等变换计算矩阵的秩,求可逆矩阵的逆矩阵. 6.6.掌握线形方程组有解得判定定理及其初等变换解线形方程组的方法. 重点难点:重点是矩阵定义,矩阵乘法运算,逆矩阵的求法,矩阵的秩,初等 变换及线性方程组的解. 难点是矩阵乘法,求逆矩阵的伴随矩阵方法. 3.2 基本内容 3.2.1 3.2.1 重要定义 定义3.1 由n m ?个数)2,1;,2,1(n j m i a ij ==组成的m 行n 列的数表成为一个m 行n 列矩阵,记为 ????????????mn m m n n a a a a a a a a a 2122221 11211 简记为A n m ij a ?=)(,或A )(ij a =,n m A ?,mn A 注意行列式与矩阵的区别: (1) (1) 行列式是一个数,而矩阵是一个数表. (2) (2) 行列式的行数、列数一定相同,但矩阵的行数、列数不一定相 同. (3) (3) 一个数乘以行列式,等于这个数乘以行列式的某行(或列)的所有元素,而一个数乘以矩阵等于这个数乘以矩阵的所有元素. (4) (4) 两个行列式相等只要它们表示的数值相等即可,而两个矩阵相等则要求两个矩阵对应元素相等. (5) (5) 当0||≠A 时,||1A 有意义,而A 1 无意义.

n m =的矩阵叫做阶方阵或m 阶方阵.一阶方阵在书写时不写括号,它在 运算中可看做一个数. 对角线以下(上)元素都是0的矩阵叫上(下)三角矩阵,既是上三角阵, 又是下三角的矩阵,也就是除对角线以外的元素全是0的矩阵叫对角矩阵.在对角矩阵中,对角线上元素全一样的矩阵叫数量矩阵;数量矩阵中,对角线元素全是1的n 阶矩阵叫n 阶单位矩阵,常记为n E (或n I ),简记为E (或I ),元素都是0的矩阵叫零矩阵,记为n m 0?,或简记为0. 行和列分别相等的两个矩阵叫做同型矩阵,两个同型矩阵的且对应位置上的 元素分别相等的矩阵叫做相等矩阵. 设有矩阵A =n m ij a ?)(,则A -n m ij a ?-=)(称为A 的负矩阵. 若A 是方阵,则保持相对元素不变而得到的行列式称为方针A 的行列式,记 为||A 或A Det . 将矩阵A 的行列式互换所得到的矩阵为A 的转置矩阵,记为T A 或A '. 若方阵A 满足A A T =,则称A 为对称矩阵,若方阵A 满足A A T -=,则称A 为反对称矩阵. 若矩阵的元素都是实数,则矩阵称为实矩阵.若矩阵的元素含有复数,则称矩 阵为复矩阵,若A =n m ij a ?)(是复矩阵,则称矩阵n m ij a ?)((其中ij a 为ij a 的共轭矩阵,记为A n m ij a ?=)(. 定义3.2 对于n 阶矩阵A ,如果存在n 阶矩阵B ,使得E BA AB ==,则 称方阵A 可逆,B 称为A 的逆矩阵,记做1-=A B . 对于方阵A n m ij a ?=)(,设ij a 的代数余子式为ij A ,则矩阵 *A ????????????=nm n n n n A A A A A A A A A 2122212 12111 称为A 的伴随矩阵,要注意伴随矩阵中元素的位置. 定义3.3 设有矩阵A ,如果: (1) (1) 在A 中有一个r 阶子式D 不为零.

matlab-GUI矩阵计算器

数学应用软件工具箱开发 ——矩阵计算器 姓名:*** 学号:******** 指导老师:*** 专业:******** 2014年9月11日

一.操作过程 1.准备工作 ①在Matlab的主窗口中,选择File菜单中的New菜单项,再选择其中的GUI 命令,就会显示GUI的设计模板; ②选择GUI模板中的默认的空白模版Blank GUI(Default)就会显示GUI设计窗口,可以开始设计矩阵计算器了。 2.设计过程 ①在GUI界面中加入以下控件: 1>2个文本编辑器(edit text)作为输入矩阵的窗口; 2>16个用以执行运算的按钮(push button); 3>4个静态文本框(static text),其中一个作为显示计算所得结果的窗口,另外3个分别作为表示所输入的矩阵(A、B)以及用来输入标题(矩阵计算器); 4>加入3个按钮组(button group)分别圈住: a.1>中的2个控件及3>中的A、B; b.2>中的16个计算按钮; c.3>中的显示计算结果的窗口。 ②分别双击以上25个控件修改其string属性如下: 1>中的改为空白(将原有的“edit text”删掉); 2>中的改为对应的矩阵运算或文字,如“+”、“/R”、“秩”、“逆”等(见图1); 3>中的按顺序改为空白、“A”、“B”以及“矩阵计算器”; 4>中的按钮组分别改为“输入区”、“功能区”、“输出区”。 ③对每个控件分别单击右键,选择“view callback”→“callback”→“保存”,在每个控件的函数后加入代码(见附件)。 ④此外,还需要做的小变动有: 1>②中修改string属性时通过修改fontWeight及fontSize把string的字符粗细、字号也一并修改了。 2>分别双击2个文本编辑器(edit text)将其max属性取值为100或更大的值,以使编辑器有滚动条,方便显示输入的维数比较大的矩阵。 3>双击计算结果窗口将其style改为listbox,也用于显示维数比较大的计算结果。

Matlab常用函数数组及矩阵的基本运算

实验一 Matlab 常用函数、数组及矩阵的基本运算 一、 实验目的 1. 了解Matlab7.0软件工作界面结构和基本操作; 2. 掌握矩阵的表示方法及Matlab 常用函数; 3. 掌握数组及矩阵的基本运算. 二、 实验内容 1. 了解命令窗口(command widow)和变量空间(workspace)的作用,掌握清 除命令窗口(clc )和变量空间(clear)的方法.掌握查询函数(help)的方法. 2. 掌握保存和加载变量的方法. 加载变量:load 变量名. 3. 掌握掌握矩阵的表示方法: 给a,b,c 赋如下数据: ]6,46,23,4,2,6,3,8,0,1[,356838241248 7,278744125431-=??????????--=??????????=c b a 4. 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果. 5. 将str1=electronic; str2 = information; str3 = engineering; 三个字符串连接 在一起成str = electronic information engineering. 6. 求矩阵a 的逆矩阵a -1,行列式计算。 (inv(a),det(a)) 三、 实验要求 1.上机操作,熟练掌握清除命令窗口和变量空间的方法、查询变量的方法、加载变量的方法。 2.第2道题请写出步骤。 3.对实验内容中第3-6项,写出指令,上机运行. 记录运行结果(数据)。 4.写出实验报告。 四、 实验结果 2. 用save 函数,可以将工作空间的变量保存成txt 文件或mat 文件等. 比如: save peng.mat p j 就是将工作空间中的p 和j 变量保存在peng.mat 中. 用load 函数,可以将数据读入到matlab 的工作空间中. 比如:load peng.mat 就是将peng.mat 中的所有变量读入matlab 工作空间中。

数码管之简单加减法计算器--项目总结

数码管之简单加减法计算器--项目总结 总结人:徐冉1.项目使用到的硬件板载资源 1)单片机STC89C52RC作为系统的处理器 2)6位共阳极数码管作为计算器的数字显示器件 3)LCD1602液晶显示一些提示信息如计算时的符号(正/负) 4)4*4矩阵按键作为计算器的数字输入设备 5)8个贴片LED小灯,用于走马灯效果作为修饰 6)用到了单片机的内部资源定时器T0 2.项目的基本功能 通过程序的烧录,将工程中的hex文件烧录到Kingst-51开发板上。现象如下: 初始时 1)最右边的数码管上显示0,其余数码管不显示。 2)五个LED小灯像小火车一样循环跑着。 3)LCD1602液晶的左上角显示Symbol:字样,用于显示符号。 正数不显示,负数时将显示‘-’。 进行简单的加减法运算 当用户使用按键输入相应的数字时,会在数码管上显示。数字值将进行进位累加方式实现。数字键(k13 k1 ~ k3 k5 ~ k7 k9 ~ k11 0 ~ 9),k4加法功能键,k12减法功能键,k14 ESC清零键,k4和

k12是双功能键,即k4既是加法键也是计算键,k12既是减法键也是计算键。达到一键两用的效果。注意:用户在进行加法计算时可以随意计算,但在计算减法时第一步需要进行一次加法,然后才能进行减法运算。当计算结果是负数时会在数码管上显示相应的数值的绝对值,而在LCD1602液晶上显示‘-’。在计算期间LED 小灯会一直循环流动。这个计算器可以实现连加连减,计算十分方便,但没有处理小数。当计算完成时,或输入错误时可按k14进行清零操作。 3.项目的创新点 首先该项目使用了LED 的跑马灯效果进行了装饰,为了程序的简单且直观性程序使用了LCD1602进行运算时符号的显示。程序在计算上使用了一键两用的功能设计,这样设计方便快捷。 4.项目的设计流程 N Y 上电 LCD1602液晶 初始化 74HC138译码器初始化 配置定时器T0定时1ms 中断 Lcd1602初始化显示Symbol 主函数while 循环进行按键动作检测 1ms 到 按键扫描 LED 小灯&数码管扫描 结束

matlab中的矩阵的基本运算命令

1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。 X = diag(v) %以v为主对角线元素,其余元素为0构成X。 v = diag(X,k) %抽取X的第k条对角线元素构成向量v。k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。 v = diag(X) %抽取主对角线元素构成向量v。 2.上三角阵和下三角阵的抽取 函数tril %取下三角部分 格式L = tril(X) %抽取X的主对角线的下三角部分构成矩阵L L = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。函数triu %取上三角部分 格式U = triu(X) %抽取X的主对角线的上三角部分构成矩阵U U = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。 (1)“:”变维 (2)Reshape函数变维 格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×… B = reshape(A,[m n p…]) %同上 B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。 B = repmat(A,[m n]) %与上面一致 B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成 repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。 1.3 矩阵分解 1.3.1 Cholesky分解 函数chol 格式R = chol(X) %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。 [R,p] = chol(X) %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。 1.3.2 LU分解

矩阵的各种运算详解.

一、矩阵的线性运算 定义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)的解, 记列矩阵 则 , 这时也称是矩阵方程(2)的解; 反之, 如果列矩阵是矩阵方程(2)的解, 即有矩阵等式 成立, 则即也是线性方程组(1)的解. 这样, 对线性方程组(1)的讨论便等价于对矩阵方程(2)的讨论. 特别地, 齐次线性方程组可以表示为 将线性方程组写成矩阵方程的形式,不仅书写方便,而且可以把线性方程组的理论与矩阵理论联系起来,这给线性方程组的讨论带来很大的便利. 四、矩阵的转置 定义6把矩阵的行换成同序数的列得到的新矩阵, 称为的转置矩阵, 记作(或 ). 即若 则

简易计算器

简易计算器设计 学院:电气信息工程学院 专业:电子科学与技术 年级:2010级_ 小组:王会祥(主力)王成龙余勇 老师:_翁嘉铭

基于C51单片机的简易计算器 1.前言 1、本系统选用51单片机为主控机。通过扩展必要的外围电路接口实现计算的设计。 2、由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD显示数据和结果。 3、键盘部分由3*4矩阵键盘外加8个独立按键共同实现。通过软件编程可实现整数和小数的简单加、减、乘、除、平方、立方、开根号、清除结果功能。 2.系统总体设计框图

3.系统主流程图 4.LCD显示 1、LCD显示器介绍 LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性实现信息的显示。液晶显示器具有体积小、重量轻、功耗低、显示内容丰富灯特点,在单片机的应用系统中得到广泛的应用,液晶显

示器按功能可分为三类:笔段式液晶显示器、字符型液晶显示器和图像点阵式液晶显示器。前两种可显示数字、字符和符号等,而图形点阵式液晶显示器还可以显示汉字和任意图行,达到图文并茂的效果,本次实验是采用LCD1602字符型液晶显示器,LCD1602能够同时显示16x2即32个字符。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用。 2、LCD1602管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地; 第2脚:VDD接5V电源正极; 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

矩阵基本性质

矩阵的基本性质 矩阵的第?第列的元素为。我们?或()表?的单位矩阵。 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)设由行列式的代数余子式所构成的矩阵

矩阵的运算及其运算规则

矩阵的运算及其运算规则 一、矩阵的加法与减法 1、运算规则 设矩阵,, 则 简言之,两个矩阵相加减,即它们相同位置的元素相加减! 注意:只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的. 2、运算性质(假设运算都是可行的) 满足交换律和结合律 交换律; 结合律. 二、矩阵与数的乘法 1、运算规则

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

设,,则A与B的乘积是这样一个矩阵: (1) 行数与(左矩阵)A相同,列数与(右矩阵)B相同,即. (2) C的第行第列的元素由A的第行元素与B的第列元素对应相乘,再取乘积之和. 典型例题 例6.5.2设矩阵 计算 解是的矩阵.设它为 想一想:设列矩阵,行矩阵,和的行数和列数分别是多少呢 是3×3的矩阵,是1×1的矩阵,即只有一个元素. 课堂练习

1、设,,求. 2、在第1道练习题中,两个矩阵相乘的顺序是A在左边,B在右边,称为A左乘B 或B右乘A.如果交换顺序,让B在左边,A在右边,即A右乘B,运算还能进行吗?请算算试试看.并由此思考:两个矩阵应当满足什么条件,才能够做乘法运算. 3、设列矩阵,行矩阵,求和,比较两个计算结果,能得出什么结论吗? 4、设三阶方阵,三阶单位阵为,试求和,并将计算结果与A比较,看有什么样的结论. 解: 第1题 . 第2题 对于

高中数学论 图形计算器 图形计算器游戏贪吃蛇

辽宁省沈阳市第十五中学2013年高中数学论文图形计算器应用能力测试活动学生图形计算器游戏贪吃蛇 [摘要] 利用图形计算器的编程功能,在CASIO fx-CG20图形计算器平台上实现了贪吃蛇游戏。本文中的程序利用了图形计算器中的矩阵来储存数据,通过模拟法实现贪吃蛇游戏,有两种游戏模式,并提供游戏的最高分记录、保存和设置功能。 [关键词] 图形计算器;贪吃蛇; [前言] 观察过以前的获奖论文,大多数的论文只利用到图形计算器的画图功能和小部分的编程功能。图形计算器编程功能的强大之处并未充分体现出来,而本文正是利用了图形计算器强大的编程功能,从而在图形计算器上实现了贪吃蛇游戏。 [研究目的] 利用图形计算器的编程功能,在图形计算器上实现贪吃蛇游戏,从而锻炼编程能力和算法能力,同时增强了CASIO图形计算器的娱乐功能,丰富同学们的课余生活。 [程序功能说明] 游戏功能:玩家通过CASIO图形计算器fx-CG20上的按键B、N、!和$或数学键2、4、6和8控制蛇在地图上寻找食物,每吃下一个食物时,蛇的长度增加一,同时出现另一个食物。本程序有两种游戏模式,一种为有墙模式,另一种为无墙模式。 有墙模式下,蛇头碰到四面的墙(即显示的边界)或蛇身时,游戏结束。 无墙模式下,只有在蛇头碰到蛇身的情况下游戏才会结束,如果蛇头到达了屏幕的边界,蛇头会在屏幕的另一边出现。(如图1) 图 1 图 2 最高分记录功能:本程序能记录蛇长度的最长纪录,并在游戏结束的时候显示纪录长度和此次游戏的蛇的长度。(如图2) 保存功能:玩家可以在游戏中途按p键可暂停游戏,玩家可以选择“Save game&Exit”(保存并退出游戏),或者“Continue”(继续游戏)。(如图3)下次运行程序时,选择“Load”即可继续上次保存的游戏。(如图4)

矩阵的基本运算法则

矩阵的基本运算法则 1、矩阵的加法 矩阵加法满足下列运算规律(设A 、B 、C 都是m n ?矩阵,其中m 和n 均为已知的正整数): (1)交换律:+=+A B B A (2)结合律:()()++++A B C =A B C 注意:只有当两个矩阵为同型矩阵(两个矩阵的行数和列数分别相等)时,这两个矩阵才能进行加法运算。 2、数与矩阵相乘 数乘矩阵满足下列运算规律(设A 、B 是m n ?矩阵,λ和μ为数): (1)结合律:()λμλμ=A A (2)分配律:()λμλμ+=+A A A (3)分配律:()λλλ+=+A B A B 注意:矩阵相加与数乘矩阵合起来,统称为矩阵的线性运算。 3、矩阵与矩阵相乘 矩阵与矩阵的乘法不满足交换律、但是满足结合律和分配率(假设运算都是可行的): (1)交换律:≠AB BA (不满足) (2)结合律:()()=AB C A BC (3)结合律:()()()λλλλ==其中为数AB A B A B (4)分配律:()(),+=++=+A B C AB AC B C A BA CA 4、矩阵的转置 矩阵的转置满足下述运算规律(假设运算都是可行的,符号()T g 表示转置): (1)()T T =A A

(2)()T T T +=+A B A B (3)()T T λλ=A A (4)()T T T =AB B A 5、方阵的行列式 由A 确定A 这个运算满足下述运算法则(设A 、B 是n 阶方阵,λ为数): (1)T =A A (2)n λλ=A A (3)=AB A B 6、共轭矩阵 共轭矩阵满足下述运算法则(设A 、B 是复矩阵,λ为复数,且运算都是可行的): (1)+=+A B A B (2)λλ=A A (3)=AB AB 7、逆矩阵 方阵的逆矩阵满足下述运算规律: (1)若A 可逆,则1-A 亦可逆,且()11--=A A (2)若A 可逆,数0λ≠,则λA 可逆,且()111 λλ--=A A (3)若A 、B 为同阶矩阵且均可逆,则AB 亦可逆,且()111---=AB B A 参考文献: 【1】线性代数(第五版),同济大学

矩阵的基本运算

矩阵的基本运算 (摘自:华东师范大学数学系;https://www.360docs.net/doc/b5341137.html,/)§3.1 加和减 §3.2矩阵乘法 §3.2.1 矩阵的普通乘法 §3.2.2 矩阵的Kronecker乘法 §3.3 矩阵除法 §3.4矩阵乘方 §3.5 矩阵的超越函数 §3.6数组运算 §3.6.1数组的加和减 §3.6.2数组的乘和除 §3.6.3 数组乘方 §3.7 矩阵函数 §3.7.1三角分解 §3.7.2正交变换 §3.7.3奇异值分解 §3.7.4 特征值分解 §3.7.5秩 §3.1 加和减

如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差.如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息.如: A= B= 1 2 3 1 4 7 4 5 6 2 5 8 7 8 0 3 6 0 C =A+B返回: C = 2 6 10 6 10 14 10 14 0 如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如: x= -1 y=x-1= -2 0 -1 2 1 §3.2矩阵乘法 Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍. §3.2.1 矩阵的普通乘法 矩阵乘法用“ * ”符号表示,当A矩阵列数与B矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同. 如:A=[1 2 ; 3 4]; B=[5 6 ; 7 8]; C=A*B, 结果为 C=×==

即Matlab返回: C = 19 22 43 50 如果A或B是标量,则A*B返回标量A(或B)乘上矩阵B(或A)的每一个元素所得的矩阵. §3.2.2 矩阵的Kronecker乘法 对n×m阶矩阵A和p×q阶矩阵B,A和B的Kronecher乘法运算可定义为: 由上面的式子可以看出,Kronecker乘积A B表示矩阵A的所有元素与 B之间的乘积组合而成的较大的矩阵,B A则完全类似.A B和B A均为np ×mq矩阵,但一般情况下A B B A.和普通矩阵的乘法不同,Kronecker乘 法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker乘法的Matlab命令为C=kron(A,B),例如给定两个矩阵A和B: A= B= 则由以下命令可以求出A和B的Kronecker乘积C: A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; C=kron(A,B) C = 1 3 2 2 6 4 2 4 6 4 8 12 3 9 6 4 12 8

相关文档
最新文档