文档库 最新最全的文档下载
当前位置:文档库 › C语言课设 计算两个55矩阵的乘积

C语言课设 计算两个55矩阵的乘积

C语言课设  计算两个55矩阵的乘积
C语言课设  计算两个55矩阵的乘积

目录

一.题目描述

二.设计要求

三.具体内容说明

四:应用程序功能的详细说明

五:主要模块的算法描述

六:结束语

七:程序源代码

沈阳理工大学学院

学生姓名:班级:学号:

一.题目描述:

题目:计算两个5*5矩阵的乘积。

要求:两个5*5矩阵的数据由数据文件输入,计算乘积存入另一个文件后再显示出。

二.设计要求:

1.按照给定题目独立设计程序,上机调试通过。

2.写出设计报告

提交报告的内容如下:

1)题目内容的描述

2)应用程序功能的详细说明

3)输入数据类型、格式和内容限制;

4)主要模块的算法描述

–以程序流程图的方式给出

–简要的语言描述

5)结束语

6)程序的源代码清单

7)报告的字数,不算源代码清单不少于4页

按规定的模板封面输出,不准自定义封面格式

提交报告的格式如下:

1)正文宋体小四号字

2)每个自然段开始空两格.

3)文中英文用新罗马(time new roman),四号

4)源程序清单用英文新罗马五号

5)提交报告封面使用《沈阳理工大学课程设计(论文)》专用封面

注:对于程序中未能实现的部分需要加以说明。对于程序中所参考的部分代码需要加以声明,并说明出处。

三.具体内容说明:

题目内容描述:

通过文件读入的方式向程序输入两个5*5矩阵的数据,计算这两个矩阵的乘积,将乘积写入到磁盘文件,并且显示在屏幕上。

(1)读入信息:从a.txt和b.txt中得到两个矩阵的数据,同时输出到屏幕上。

(2)计算乘积:通过程序求出矩阵a和b的乘积,得到矩阵c。

(3)存盘:将乘积(即矩阵c)写入到已建立的文件c.txt中。

(4)显示:将乘积(即矩阵c)输出到屏幕上。

四:应用程序功能的详细说明:

程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样的重要性。

主要包括如下:

(1).#include // 标准输入输出函数 //

#include // 标准库函数 //

void main() // 主函数 //

{

FILE *fp1,*fp2,*fp3; // 定义三个文件指针变量 //

int a[5][5],b[5][5],c[5][5]={0};

// 定义三个二维数组,用来存放矩阵 //

int i,j,k;

}

(2).main()主函数

C程序的执行是从main函数开始的,也是在main函数中结束整个程序的运行。此程序为顺序结构,从上到下依次完成每一个功能。

(3).fopen函数文件的打开

fopen( )用来打开文件。fp1=fopen("C:\\a.txt","r")的意义是打

开c磁盘目录中的文件”a.txt”,使用文件方式为“r(读入)”,

并使fp1指向该文件。其中"r"代表只读,若将"r"换成"w", "w"代

表只写。

(4).fclose函数文件的关闭

fclose()用来关闭文件,在向文件写数据时,是先将数据输出到

缓冲区,待缓冲区充满后才正式输出给文件。为了防止当数据未充

满缓冲区而程序结束运行时,将缓冲区的数据丢失。用fclose函数

关闭文件,它先把缓冲区中的数据输出至磁盘文件,然后才释放文

件指针变量,因此,文件用完后必须关闭。

if((fp1=fopen("C:\\a.txt","r"))==NULL)

{

printf("cannot open a.txt\n");

exit(0);

}

这段程序的意义是,用只读的方式打开c盘目录下的文件,如果返回的指针为空,则给出提示信息”cannot open a.tx t”,然后执行

exit(0)退出程序。

(5).exit()函数

该函数的作用是关闭所有文件,终止正在执行的程序,待用户检查错误

修改后再运行。

(6).fscanf ( )函数

其调用的一般形式为:fscanf (文件指针变量,格式控制字符,变量地

址列表 )。该函数的功能是以格式控制字符串中所指定格式将数据从文

件指针所指向的文件中读取出来,然后分别送给所指定的变量。此函数

用来完成从数据文件中读入矩阵的数据。

fscanf(fp1,"%d",&a[i][j]);表示将文件fp1中a矩阵中的值按%d的

格式读出。

(7).fprintf ( )函数

其调用的一般形式为:fprintf (文件指针变量,格式控制字符,变量

地址列表 )。该函数的功能是将各输出项以格式控制字符串中所指定的

格式输出到文件指针所指向的文件中。此函数用来完成将矩阵相乘的结

果写入磁盘文件。

fprintf(fp3,"%6d",c[i][j]); 表示将c矩阵中的值按%6d的格式输

出到fp3指向的文件上。

(9).printf()函数

向显示器输出数据。此函数用来显示矩阵数据和一些提示语句(原样输

出字符)转义字符(例如换行字符)。

五:主要模块的算法描述:

(一):程序题简要说明:

1.先在c盘创立三个文本文件a.txt, b.txt ,c.txt .其中a.txt和b.txt 中放a和b矩阵。

2.从a.txt和b.txt文件读入两个矩阵的数据,同时用printf函数输出。

3.运用for循环计算ab两个矩阵的乘积c.

for(i=0;i<5;i++)

{for(j=0;j<5;j++)

{for(k=0;k<5;k++) c[i][j]+=a[i][k]*b[k][j]; }

}

4.用fprintf函数将乘积写入c.txt中,同时用printf函数将乘积输出。

(二)数据流程图说明:

六:结束语:

通过查书和自己的思考,我发现c语言真的很有用途,学到了初浅的函数及文件处理,对c语言知识产生了极大地兴趣,很感谢同学的帮忙和杨老师的教导,完成了这个程序也极大地鼓舞了我的自学兴趣!

七:程序源代码:

#include

#include

void main()

{

FILE *fp1,*fp2,*fp3;

int a[5][5],b[5][5],c[5][5]={0};

int i,j,k;

if((fp1=fopen("C:\\a.txt","r"))==NULL)

{

printf("cannot open a.txt\n");

exit(0);

}

if((fp2=fopen("C:\\b.txt","r"))==NULL)

{

printf("cannot open b.txt\n");

exit(0);

}

printf("a juzhen\n");

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

fscanf(fp1,"%d",&a[i][j]);

printf("%4d",a[i][j]);

}

printf("\n");

}

printf("b juzhen\n");

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

fscanf(fp2,"%d",&b[i][j]);

printf("%4d",b[i][j]);

}

printf("\n");

}

fclose(fp1);

fclose(fp2);

if((fp3=fopen("C:\\c.txt","w"))==NULL)

{

printf("cannot open c.txt\n");

exit(0);

}

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

for(k=0;k<5;k++)

c[i][j]+=a[i][k]*b[k][j];

}

}

printf("a b juzhen ji\n");

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

fprintf(fp3,"%6d",c[i][j]);

printf("%6d",c[i][j]);

}

fprintf(fp3,"\n");

printf("\n");

}

fclose(fp3);

getch();

}

_矩阵的Kronecker乘积的性质与应用

矩阵Kronecker乘积的性质与应用 摘要 按照矩阵乘法的定义,我们知道要计算矩阵的乘积AB,就要求矩阵A的列数和矩阵B的行数相等,否则乘积AB是没有意义的。那是不是两个矩阵不满足这个条件就不能计算它们的乘积呢?本文将介绍矩阵的一种特殊乘积B A ,它对矩阵的行数和列数的并没有具体的要求,它叫做矩阵的Kronecker积(也叫直积或张量积)。 本文将从矩阵的Kronecker积的定义出发,对矩阵的Kronecker 积进行介绍和必要的说明。之后,对Kronecker积的运算规律,可逆性,秩,特征值,特征向量等性质进行了具体的探究,得出结论并加以证明。此外,还对矩阵的拉直以及矩阵的拉直的性质进行了说明和必要的证明。 矩阵的Kronecker积是一种非常重要的矩阵乘积,它应用很广,理论方面在诸如矩阵方程的求解,矩阵微分方程的求解等矩阵理论的研究中有着广泛的应用,实际应用方面在诸如图像处理,信息处理等方面也起到重要的作用。本文讨论矩阵的Kronecker积的性质之后还会具体介绍它在矩阵方程中的一些应用。 关键词: 矩阵;Kronecker积;矩阵的拉直;矩阵方程;矩阵微分方程Properties and Applications of matrix Kronecker

product Abstract According to the definition of matrix multiplication, we know that to calculate the matrix product AB, requires the number of columns of the matrix A and matrix B is equal to the number of rows, otherwise the product AB makes no sense.That is not two matrices not satisfy this condition will not be able to calculate their product do?This article will describe a special matrix product B A , the number of rows and columns of a matrix and its no specific requirements, it is called the matrix Kronecker product (also called direct product or tensor product). This paper will define the matrix Kronecker product of view, the Kronecker product matrix are introduced and the necessary instructions. Thereafter, the operation rules Kronecker product, the nature of reversibility, rank, eigenvalues, eigenvectors, etc. specific inquiry, draw conclusions and to prove it. In addition, the properties of the stretch of matrix and its nature have been described and the necessary proof. Kronecker product matrix is a very important matrix product, its use is very broad, theoretical research, and other matrix solving differential equations, such as solving the matrix equation matrix theory has been widely applied in practical applications such as image processing aspects of information processing, also play an important role. After the article discusses the nature of the matrix Kronecker product it will introduce a number of specific applications in the matrix equation. Keywords: Matrix; Kronecker product; Stretch of matrix; Matrix equation; Matrix Differential Equations 目录

用Excel进矩阵计算

用Excel进行矩阵计算 一、Excel的数组、数组名和矩阵函数的设置 1矩阵不是一个数,而是一个数组。在Excel里,数组占用一片单元域,单元域用大括号表示,例如{A1:C3},以便和普通单元域A1:C3相区别。设置时先选定单元域,同时按Shift+Ctrl+Enter键,大括弧即自动产生,数组域得以确认。 2Excel的一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、B={E1:G3}等。数组名的设置步骤是:选定数组域,点“插入”菜单下的“名称”,然后选择“定义”,输入数组名如A或B等,单击“确定”即可。 3矩阵函数是Excel进行矩阵计算的专用模块。常用的矩阵函数有MDETERM(计算一个矩阵的行列式)、MINVERSE(计算一个矩阵的逆矩阵)、MMULT(计算两个矩阵的乘积)、SUMPRODUCT(计算所有矩阵对应元素乘积之和)……函数可以通过点击“=”号,然后用键盘输入,可以通过点击“插入”菜单下的“函数”,或点击fx图标,然后选择“粘贴函数”中相应的函数输入。 二、矩阵的基本计算 数组计算和矩阵计算有很大的区别,我们用具体例子说明。 已知A={3 -2 5,6 0 3,1 5 4},B={2 3 -1,4 1 0,5 2 -1},将这些数据输入Excel相应的单元格,可设置成图1的形状,并作好数组的命名,即第一个数组命名为A,第二个数组命名为B。计算时先选定矩阵计算结果的输出域,3×3的矩阵,输出仍是3×3个单元格,然后输入公式,公式前必须加上=号,例如=A +B、=A-B、=A*B等。A+B、A-B数组运算和矩阵运算没有区别,“=A*B”是数组相乘计算公式,而“=MMULT(A,B)”则是矩阵相乘计算公式,“=A/B”是数组A除数组B的计算公式,而矩阵相除是矩阵A 乘B的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”。公式输入后,同时按Shift+Ctrl+Enter 键得到计算结果。图1中的数组乘除写作A*B、A/B,矩阵乘除写作A·B、A÷B,以示区别。 三、矩阵计算的应用 下面让我们来计算一个灰色预测模型。 灰色预测是华中理工大学邓聚龙教授创立的理论,其中关键的计算公式是计算微分方程+B1x=B2的解,{B1,B2}=(XTX)-1(XTY),式中:XT是矩阵X的转置。 作为例子,已知X={-45.5 1,-79 1,-113.5 1,-149.5 1}Y={33,34,35,37} 在Excel表格中,{B2:C5}输入X,{E2:H3}输入X的转置。处理转置的方法是:选定原数组{B2:C5},点“编辑”菜单的“复制”,再选定数组转置区域{E2:H3},点“编辑”菜单的“选择性粘贴”,再点“转置”即可。{J2:J5}输入Y,然后选取{L2:L3}为B1、B2的输出区域,然后输入公式: =MMULT(MINVERSE(MMULT(E2:H3,B2:C5)),MMULT(E2:H3,J2:J5)) 公式输入完毕,同时按Shift+Ctrl+Enter键,B1、B2的答案就出来了,如图2。 如果计算的矩阵更复杂一些,就必须分步计算。不过,使用Excel也是很方便的。(江苏陈岁松) ==== POWERPOINT 演示文档https://www.wendangku.net/doc/0f15244578.html,.tw/~ccw/manage_math/array.ppt EXCEL矩陣運算(繁体中文)参考文献:https://www.wendangku.net/doc/0f15244578.html,/4/wenzi/wz042.htm

第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 不为零.

矩阵连乘最佳加括号方式-动态规划算法

矩阵连乘最佳加括号方式-动态规划算法 一、问题描述 给定n个矩阵{A1,A2,…,A n},其中A i与A i+1是可乘的,i=1,2,…,n-1。要算出这n个矩阵的连乘积A1A2…A n。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归地定义为: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A是完全加括号的,则A可表示为2个完全加括号的矩阵连乘积B和C 的乘积并加括号,即A=(BC)。 例如,矩阵连乘积A1A2A3A4有5种不同的完全加括号的方式:(A1(A2(A3A4))),(A1((A2A3)A4)),((A1A2)(A3A4)),((A1(A2A3))A4),(((A1A2)A3)A4)。每一种完全加括号的方式对应于一个矩阵连乘积的计算次序,这决定着作乘积所需要的计算量。若A是一个p×q矩阵,B是一个q×r矩阵,则计算其乘积C=AB的标准算法中,需要进行pqr次数乘。 为了说明在计算矩阵连乘积时,加括号方式对整个计算量的影响,先考察3个矩阵 {A1,A2,A3}连乘的情况。设这三个矩阵的维数分别为10×100,100×5,5×50。加括号的方式只有两种:((A1A2)A3),(A1(A2A3)),第一种方式需要的数乘次数为10×100×5+10×5×50=7500,第二种方式需要的数乘次数为100×5×50+10×100×50=75000。第二种加括号方式的计算量时第一种方式计算量的10倍。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大的影响。于是,自然提出矩阵连乘积的最优计算次序问题,即对于给定的相继n个矩阵{A1,A2,…,A n}(其中矩阵A i的维数为p i-1×p i,i=1,2,…,n),如何确定计算矩阵连乘积A1A2…A n的计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。 穷举搜索法的计算量太大,它不是一个有效的算法,本实验采用动态规划算法解矩阵连乘积的最优计算次序问题。 二、算法思路

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

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.为什么吗?原因会在有关齐次线性方程组的文章里进行讲解.

矩阵数值算法

计算实习报告 一 实习目的 (1)了解矩阵特征值与相应特征向量求解的意义,理解幂法和反幂法的原理, 能编制此算法的程序,并能求解实际问题。 (2)通过对比非线性方程的迭代法,理解线性方程组迭代解法的原理,学会编 写Jacobi 迭代法程序,并能求解中小型非线性方程组。初始点对收敛性质及收 敛速度的影响。 (3)理解 QR 法计算矩阵特征值与特征向量的原理,能编制此算法的程序,并 用于实际问题的求解。 二 问题定义及题目分析 1. 分别用幂法和幂法加速技术求矩阵 2.5 2.5 3.00.50.0 5.0 2.0 2.00.50.5 4.0 2.52.5 2.5 5.0 3.5-?? ?- ?= ?-- ?--?? A 的主特征值和特征向量. 2. 对于实对称矩阵n n ?∈A R ,用Jacobi 方法编写其程序,并用所编程序求下列矩阵的全部 特征值. 1515 4 1141144114114?-?? ?-- ? ?- ?= ? ?- ?-- ? ?-??A 3. 对于实矩阵n n ?∈A R ,用QR 方法编写其程序,并用所编程序求下列矩阵的全部特征值: 111 21 113,4,5,62311111n n n n n n ? ???? ?????==+? ????? ??+??A 三 概要设计 (1) 幂法用于求按模最大的特征值及其对应的特征向量的一种数值算法,

它要求矩阵 A 的特征值有如下关系: 12n ...λλλ>≥≥ ,对于相应 的特征向量。其算法如下: Step 0:初始化数据0,, 1.A z k = Step 1:计算1k k y A z +=。 Step 2:令 k k m y ∞=。 Step 3:令 k k k z y m = ;如果1k k m m +≈或1k k z z +≈,则 goto Step 4;否则 , k = k + 1 ,goto Step 1。 Step 4:输出结果 算法说明与要求 输入参数为实数矩阵、初始向量、误差限与最大迭代次数。输出 参数为特征值及相对应的特征向量。注意初始向量不能为“0”向量。 (2) 迭代法的原理 如果能将方程 Ax =b 改写成等价形式:x=Bx+f 。如果B 满足:ρ(B )<1,则对于任意初始向量 x (0) ,由迭代 x ( k + 1) = Bx (k ) + f 产生的序列均收敛到方程组的精确解。迭代法中两种最有名的迭代法就是Jacobi 迭代法,它的迭代矩阵 B 为: 1()J D L U -=-+,1 f D b -= 其中,D 为系数矩阵 A 的对角元所组成对角矩阵,L 为系数矩阵 A 的对角元下方所有元素所组成的下三角矩阵,U 为系数矩阵 A 的对角元上方所有元素所组成的上三角矩阵。 算法如下: Step 0:初始化数据 00,,,,k A b x δ=和ε。 Step 1:计算D,L,U,J 或G, 得到迭代矩阵B. Step 2::1k k =+ 0x B x f * =+ 0x x = 如果0x x δ-<或()f x ε≤,goto Step 3?否则 goto Step 2。 Step 3:输出结果。 程序说明与要求

Excel矩阵运算

Excel矩阵计算 目前有很多软件可进行矩阵运算,特别是Matlab,其矩阵运算功能尤为强大。但这些专业软件所占空间很大,价格昂贵。其实Excel就有矩阵运算功能,虽然比不上专业软件,但不比一些数学小软件差多少。下面把从网上搜集到的一些有关利用Excel进行矩阵计算的资料整理如下: 资料一: (1)数组和矩阵的定义 矩阵不是一个数,而是一个数组。在Excel里,数组占用一片单元域,单元域用大括号表示,例如{A1:C3},以便和普通单元域A1:C3相区别。设置时先选定单元域,同时按Shift+Ctrl+Enter键,大括弧即自动产生,数组域得以确认。 一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、 B={E1:G3}等。数组名的设置步骤是:选定数组域,单击“插入”菜单,选择“名称”项中的“定义”命令,输入数组名,单击“确定”按钮即可。更简单的命名办法为:选择数组域,单击名称框,直接输入名称就行了。 矩阵函数是Excel进行矩阵计算的专用模块。用“插入”-“函数”命令打开“粘贴函数”对话框(如图11),选中函数分类栏中的“数学与三角函数”,在右边栏常用的矩阵函数有:MDETERM--计算一个矩阵的行列式;MINVERSE--计算一个矩阵的逆矩阵;MMULT--计算两个矩阵的乘积; SUMPRODUCT--计算所有矩阵对应元素乘积之和。 (2)矩阵的基本计算  数组计算和矩阵计算有很大的区别,比如下面这个例子中,A和B都是定义好的数组,因为这两个数组都是3×3的,输出结果也是3×3个单元格。计算时先选定矩阵计算结果的输出域,为3×3的单元格区域,然后输入公式。如果输入“=A+B”或“=A-B”,计算结果是数组对应项相加或相减,输入“=A*B”表示数组A和B相乘,输入“=A/B”表示数组A 除数组B。如果要进行矩阵计算,就要用到相应的矩阵函数。矩阵相加、相减与数组的加减表达形式是一样的,也是“=A+B”和“=A-B”,表示矩阵相乘可以输入“=MMULT(A,B)”,而矩阵相除是矩阵A乘B 的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”。公

c语言矩阵乘积.

矩阵乘积 Time Limit:1000MS Memory Limit:65536K Description 输入一个M×N的整数矩阵A,再输入一个N×M的整数矩阵B。计算C=A×B。 Input 先输入M和N(M和N均≤10),另起一行后输入一个M×N的整数矩阵A,然后再输入一个N×M的整数矩阵B。每列数据用逗号分隔,每行数据用回车分隔。 Output 计算A×B→C,输出矩阵C。 Sample Input 2 3 1 2 3 2 4 6 1 2 3 4 5 6 Sample Output 22 28 44 56 Hint C=A×B,C是一个M×M的矩阵。

代码以通过调试。 #include int main() { int a[10][10],b[10][10],c[10][10],d[10][10]; int i,k,q,n,m,j,s,p; for(i=0;i<10;i++) for(j=0;j<10;j++) d[i][j]=0; scanf("%d%d",&m,&n); for(i=0;i

矩阵乘法的法则

第六节.矩阵乘法的法则 教学目标: (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??????-0110=??? ???-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))为例,如下图:

矩阵乘积的运算法则的证明(新)

矩阵乘积的运算法则的证明 矩阵乘积的运算法则 1 乘法结合律:若n m C A ?∈,p n C B ?∈ , q p C C ?∈,则C AB BC A )()(=. 2 乘法左分配律:若A 和B 是两个n m ?矩阵,且C 是一个p n ?矩阵,则 BC AC C B A +=+)(. 3 乘法右分配律:若A 是一个n m ?矩阵,并且B 和C 是两个p n ?矩阵,则BC AC C B A +=+)(. 4 若α是一个标量,并且A 和B 是两个m n ?矩阵,则B A B A ααα+=+)(. 证明 1 ①先设n 阶矩阵为)(ij a A =,)(ij b B =, )(ij c C =,)(ij d AB =,)(ij e BC = )(ij f ABC =,)()(ij g BC A =,有矩阵的乘法得: n j i b a b a b a d nj in j i j i ij 2,1,.2211=+++= n j i c b c b c b e nj in j i j i ij 2,1,.2211=+++= n j i c d c d c d f nj in j i j i ij 2,1,.2211=+++= n j i e a e a e a g nj in j i j i ij 2,1,.2211=+++= 故对任意n j i 2,1,=有: nj in j i j i ij c d c d c d f +++= 2211 ++++=j n in i i c b a b a b a 11212111)( ++++j n in i i c b a b a b a 22222121)( nj nn in n i n i c b a b a b a )(2211++++ ++++=)(12121111nj n j j i c b c b c b a

矩阵链算法

/************************ Matrix Chain Multiplication ***************************/ /************************ 作者:Hugo ***************************/ /************************ 最后修改日期:2015.09.10 ***************************/ /************************ 最后修改人:Hugo ***************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Text.RegularExpressions; using System.Collections; namespace Matrix { class Program { public static int nummulti = 0; static ArrayList list1 = new ArrayList();//定义计算式存储列表 static ArrayList listrow = new ArrayList();//定义矩阵行数存储列表 static ArrayList listcolumn = new ArrayList();//定义矩阵列数存储列表 static void Main(string[] args) { /****************************************************************************** *****************/ //从键盘上获取矩阵 int nummatrix = Int32.Parse(Console.ReadLine()); int countmat = 0; for (countmat = 0; countmat < nummatrix; countmat++) { string s = Console.ReadLine(); string[] str = s.Split(' ');//把输入的一行字符按空格拆分 listrow.Add(Int32.Parse(str[1]));//行数存储到矩阵行数存储列表 listcolumn.Add(Int32.Parse(str[2]));//列数存储到矩阵列数存储列表

excel中矩阵的计算

Excel中矩阵的计算一、求逆矩阵 (1)打开一个新的空工作簿,如图所示 (2)输入数据。 (3)在另外的活动单元格中拉黑同行列,如图

(4)点击“公式”-fx,点击“数学与三角函数” (5)点击求逆矩阵的函数键MINVERSE (6)点击确定,输入原数据所在块的第一个数据的行列 ,加“:”,输入最后一个数据的行列

(7) 点击确定后,计算后会返回一个值 (8)按F2,然后CRTL+SHIFT+ENTER,就会显示出一个三行三列的矩阵,即原矩阵的逆矩阵 二、其他:矩阵法解方程组 Excel的数组、数组名和矩阵函数的设置 矩阵不是一个数,而是一个数组。在Excel里,数组占用一片单元域,单元域用大括号表示,例如{A1:C3},以便和普通单元域A1:C3相区别。设置时先选定单元域,同时按Shift+Ctrl+Enter键,大括弧即自动产生,数组域得以确认。 Excel的一个单元格就是一个变量,一片单元域也可以视为一组变量。为了计算上的方便,一组变量最好给一个数组名。例如A={A1:C3}、B={E1:G3}等。 具体操作 1、数组名的设置。

选定数组域,点“插入”菜单下的“名称”,然后选择“定义”,输入数组名如A或B等,单击“确定”即可。 或是: 选定要命名的单元格,点右键——“命名单元格区域”出现下图即可“命名A”; 选定要命名的单元格,点右键——“命名单元格区域”出现下图即可“命名B”; 如:已知A={3 -2 5,6 0 3,1 5 4},B={2 3 -1,4 1 0,5 2 -1},将这些数据输入Excel 相应的单元格,可设置成图1的形状,并作好数组的命名,即第一个数组命名为A,第二个数组命名为B。 2、矩阵函数是Excel进行矩阵计算的专用模块。 常用的矩阵函数有: MDETERM(计算一个矩阵的行列式) MINVERSE(计算一个矩阵的逆矩阵) MMULT(计算两个矩阵的乘积) SUMPRODUCT(计算所有矩阵对应元素乘积之和) TRANSPOSE(计算矩阵的转置矩阵)…… 函数可以通过点击“=”号,然后用键盘输入,可以通过点击“插入”菜单下的“函数”; 或点击fx图标,然后选择“粘贴函数”中相应的函数输入。 3、计算时先选定矩阵计算结果的输出域,3×3的矩阵,输出仍是3×3个单元格,然后输入公式,公式前必须加上=号,例如=A+B、=A-B、=A*B等。 A+B、A-B数组运算和矩阵运算没有区别 =A+B 按enter,F2,Shift+Ctrl+Enter 然后选定预选区域,按F2,Shift+Ctrl+Enter,即可得结果 “=A*B”是数组相乘计算公式,而“=MMULT(A,B)”则是矩阵相乘计算公式, “=A/B”是数组A除数组B的计算公式,而矩阵相除是矩阵A乘B的逆矩阵,所以计算公式是“=MMULT(A,MINVERSE(B))”。 公式输入后,同时按F2, 然后Shift+Ctrl+Enter键得到计算结果。 图中的数组乘除写作A*B、A/B,矩阵乘除写作A·B、A÷B,以示区别。

矩阵连乘问题算法分析与设计

矩阵连乘问题《算法分析与设计》

设计性实验报告 课程名称:《算法分析与设计》矩阵连乘问题实验题目:长:组员一:成 二:成员成员三:数学与计算机科学系别:系专业班级:指导教师:实验日期: 一、实验目的和要求

实验目的 熟悉动态规划算法设计思想和设计步骤,掌握基 本的程序设计方法,培养学生用计算机解决实际问题的能力。 实验要求 1、根据实验内容,认真编写源程序代码、上机调试程序,书写实验报告。 2、本实验项目考察学生对教材中核心知识的掌握程度和解决实际问题的能力。 3、实验项目可

以采用集中与分散实验相结合的方式进行,学生利用平时实验课时间和课外时间进行 实验,要求在学期末形成完整的项目程序设计报告。 二、实验内容提要 矩阵连乘问题给定n个矩阵{A,A,…,A}, 其中,Ai与Ai+1是可乘的,n21A,A,…,A。由于矩阵乘法满足结n-1。考查这n个矩阵的连乘积i=1,2,…,n12合律,故计算矩阵的连乘积可以有 许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反 复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可 递归地定义为: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A是完全加括号的,则A可表示为2个完全加括号的矩阵连乘积B和C的乘积并加括号,即A=(BC)。 三、实验步骤下面考虑矩阵连乘积的最优计算次序问题的动态规划方法。(1)分析最优解的结构(最优子结构性质)设计求解具体问题的动态规划算法的第一步是刻画该问 题的最优解结构特征。对于矩阵乘积的最优计算次序问题也不例外。首先,为方便起见,降- 1 - 矩阵乘积Ai Ai+1…Aj简记为A[i:j]。

可逆矩阵 矩阵乘积的行列式

§5.2 可逆矩阵 矩阵乘积的行列式 5.2.1 教学目的 5.2.1.1 掌握矩阵可逆,逆矩阵的定义和简单性质. 5.2.1.2 掌握矩阵可逆的充要条件及求逆矩阵的两种方法. 5.2.1.3 掌握矩阵乘积的行列式和秩的性质. 5.2.2 教学重点 矩阵可逆的定义,充要条件及求逆矩阵的方法. 5.2.3 教学难点 用初等变换法求逆矩阵的理论. 5.2.4 教学过程 一、矩阵可逆,逆矩阵的定义和简单性质. (一)矩阵可逆,逆矩阵的定义 Def 1 令A 是数域F 上一个n 矩阵,若存在F 上n 阶矩阵B ,使得 AB=BA=I 那么A 叫可逆矩阵(或非奇异矩阵),而B 叫作A 的逆矩阵. (二)逆矩阵的简单性质 1、若是矩阵A 可逆,则A 的逆矩阵唯一. 把A 的唯一的逆矩阵记作. 2、可逆矩阵A 的逆矩阵也可逆,并且 . 1、1、1、两个可逆矩阵A 和B 的乘积也可逆,并且 . 一般,m 个可逆矩阵A 1,A 2,…,A m 的乘积A 1A 2…A m 也可逆. 并且 (A 1A 2,…,A m )-1 = 4、可逆矩阵A 的转置 也可逆,并且 二、矩阵可逆的充要条件 (一)判断矩阵可逆的思路. 判断一般的n 阶矩阵A 是否可逆很复杂,但判断形如 ,矩阵的可逆 1 -A 1-A A A =--1 1 )(1 1 1 ) (---=A B AB 1 1 121---A A A m A ' )() (1 1 ' ='--A A ??? ? ? ?000r I

性十分简单,即当r=n 时,可逆;当r

最新Excel中矩阵的运算

E x c e l中矩阵的运算

nxn方阵对应行列式的值 第二步,选中A4单元格,在“插入”菜单中选中“函数”菜单项: 第三步,在打开的“函数”对话框中,选中“MDETERM”函数如图2,并按“确定”按钮: 第四步,在弹出的对话框中输入矩阵所在的地址,按确定即得到行列式的值。 矩阵求和 已知 第二步,在A5单元格中输入公式:=A1+El,按回车,这时A5中显示数字7; 第三步,选中A5单元格,移动鼠标至其右下角,鼠标形状变为黑色十字时,按下鼠标左键往右拖至C5,B5和C5中分别显示一3.3。同样的方法选中A5:C5,往下拖至A7:C7,便得到A+B的值。 矩阵求逆 第一步,在A1:C3中输入矩阵A; 第二步。选中A5:C7,“插入”→“函数”→“MINVERSE”→“确定”: 第三步,在“array”项中输入A1:C3,按F2,同时按CTRL+SHIFF+ENTER 即可如图6。 5矩阵转置

第一步,在Al:C3中输入矩阵A,并选中; 第二步,“编辑”→“复制”; 第三步,选中A5,“编辑”→“选择性粘贴”→“转置”→确定”。 矩阵求秩 6.1矩阵秩的概念 定义设A是mxn矩阵,从A中任取k行k列(k≤min(m,n)),由这些行、列相交处的元素按原来的次序所构成的阶行列式,称为矩阵A的一个k阶子行列式,简称k阶子式。 定义矩阵A的所有不为零的子式的最高阶数r称为矩阵A的秩,记作 r(A),即r(A)=r。 6.2矩阵秩的数学求法 6.2.1行列式法:即定义从矩阵的最高阶子式算起,计算出不等于零的子式的最高阶数r,此r即为该矩阵的秩。 6.2.2行初等变换法:用初等行变换化矩阵为阶梯形矩阵,此阶梯形矩阵非零行的行数r就是该矩阵的秩。 6.3利用EXCEL求矩阵秩 方法一,根据矩阵秩的定义,可以求所有不为零子式的最高阶数。 求矩阵A的秩. 显然A是4x4矩阵,4为其所有子式的最高阶数。先求IAI的值,若|A|不为零,则矩阵A的秩为4。若|A|为零,求所有阶数为3的子式的值。若存

矩阵连乘问题

目录: 矩阵连乘问题: 1. 描述矩阵连乘问题 2. 分析矩阵连乘问题以及对递归式的推导(1)直接递归思路 (2)备忘录思路 (3)动态规划思路 3. 伪代码的方式描述算法: (1)直接递归算法 (2)备忘录算法 (3)动态规划算法 4. 把算法转换成程序实现的过程及结果(1)直接递归算法程序 (2)备忘录算法程序 (3)动态规划算法程序

1.描述矩阵连乘问题: 给定n 个矩阵{n A A A ?,2,1},其中i A 和1+i A 是可乘的,i=1,2,…,n-1。考察这n 个矩阵的连乘积n A A A ?,2,1。由于矩阵乘法具有结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说连乘积已完全加括号,则可依次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘可递归地定义为:(1)单个矩阵是完全加括号的;(2)矩阵连乘积A 是完全加括号的,则A 可表示为2个完全加括号的矩阵连乘B 和C 的乘积并加括号,即A=(BC )。 矩阵A 和B 可乘的条件是矩阵A 的列数等于矩阵B 的行数。若A 是一个p ×q 的矩阵,B 是一个q ×r 的矩阵,那么C=A ×B 就是一个p ×r 矩阵。它的计算是三重循环的,计算量是pqr 。如果加括号后矩阵的量是不同的,所以我们的问题就是要讨论如何给连乘的矩阵加括号才能使矩阵的计算量最少。 穷举搜索法:对于n 个矩阵的连乘积,设有不同的计算次序P(n)。由于可以先在第k 个和第k+1个矩阵之间将原矩阵序列分为两个矩阵子序列,k=1,2,...,n-1;然后分别对这两个矩阵子序列完全加括号;最后对所得的结果加括号,得到原矩阵序列的一种完全加括号方式。由此可得P(n)的递归式如下: 1 n=1 P (n )= ∑-=-1 1 )()(n k k n P k P n>1 解此递归方程可得,P(n)=C(n-1),而C(n)是一个指数增长的函数。因此穷举搜索法不是一个有效的算法。以下将用三种方法来解决矩阵连乘问题的最优加括号方式以及最优解。 2. 分析矩阵连乘问题以及对递归式的推导 将矩阵连乘积j i i A A A ?+,1,简记为A[i:j]。考察计算A[1:n]的最优计算次序。这个问题的一个关键特征是:计算A[1:n]的最优次序包含的计算矩阵子链A[1:k]和A[k+1:n]的次序也是最优的。这是因为:定义矩阵A i 的维数为p i-1×p i ,则A[i:k]的计算次数为p i-1×p k ,A[k+1,j]的计算次数为p k ×p j ,而这两个总的矩阵最后相乘时的计算量是固定的,为p i-1×p k ×p j 。所以,矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质。 (1)、直接递归的思路:记计算A[i:j],1≤i ≤j ≤n ,所需最少数乘次数为m[i][j],则原问题的最优质为m[1][n]。由分析得知:m[i][j]可以递归的定义为: 0 i=j m[i][j]= }]][1[]][[{min 1j k i j k i p p p j k m k i m -≤≤+++ i

相关文档