n维矩阵的乘法AB-1_

合集下载

大学线性代数1(1)、矩阵的乘法、n次幂

大学线性代数1(1)、矩阵的乘法、n次幂

矩阵的乘法前提:只有当第一个矩阵(左边的矩阵)的列数与第二个矩阵(右边的矩阵)的行数相等时,两个矩阵才能相乘。

即:A m×s B s×n注意:(1)矩阵乘法不满足交换律,即一般情况下AB≠BA(2)矩阵A与B满足AB=0,不能推出A=0或B=0的结论(3)在不改变左右顺序的情况下,满足结合律(4)特别的,满足:单位矩阵乘任何另一矩阵等于此任意矩阵本身E m A m×n=A m×n E n=A m×n零矩阵乘任何矩阵都得到零矩阵求矩阵A的n次幂1.方法一:数学归纳法例题:已知A=(1101)求A n解:因为A2=(1101)2=(1101)(1101)=(1201)A3=(1301)猜想A n=(1n01)假设n=k时满足A k=(1k01),只需证A k+1=(1k+101)当n=k+1时,A k+1=A k A=(1k01)(1101)=(1k+101)猜想成立2.方法二:利用二项式展开公式将矩阵A分解成A=F+G,要求矩阵F与G的方幂容易计算,且FG=GF.一般地,F和G有一个是单位矩阵E时,计算更加容易牛顿二项展开公式:(a+b)n=C n0a n b0+C n1a n−1b1+…+C n n−1a1b n−1+C n n a0b n应用二项展开公式:(B+E)n=C n0B n E0+C n1B n−1E1+…+C n n−1B1E n−1+C n n B0E n例题:已知A=(1101)求A n解:A=(1101)= (0100)+ (1001)=B+EA n=(B+E)n=C n0B n E0+C n1B n−1E1+…+C n n−1B1E n−1+C n n B0E n=C n0B n+C n1B n−1+…+C n n−1B1+C n n B0=C n0B n+C n1B n−1+…+C n n−1B1+C n n B0=C n0B n+C n1B n−1+…+nB+E且B0=E, 又因为 B2=(0100)2=(0000)所以B n=(0000)A n=(B+E)n= nB+E3.方法三:乘法结合律若A=αβT,其中α和β都是n×1矩阵(列矩阵),且βTα=C(常数),利用乘法结合律,有A n=(αβT)( αβT)…(αβT)( αβT)=α(βTα)(βTα)…(βTα)βT= α(βTα)n−1βT= αC n−1βT=C n−1 αβT=C n−1A例题:已知α=(1,2,3),β=(1,12,13),设A=αTβ,求A n解:αTβ=(123)3×1(1,12,13)1×3=(1121321233321)→结果是3×3矩阵βαT=(1,12,13)1×3(123)3×1=3 →结果是1×1矩阵A n=(αTβ)( αTβ)…(αTβ)( αTβ)= αT(βαT)(βαT)…(βαT)β= αT(βαT)n−1β=αT3n−1β=3n−1( 1121321233321)。

数据结构课程设计题目

数据结构课程设计题目

题目1:图的遍历功能:实现图的深度优先, 广度优先遍历算法,并输出原图结构及遍历结果。

分步实施:1) 初步完成总体设计,搭好框架;2)完成最低要求:两种必须都要实现,写出画图的思路;3)进一步要求:画出图的结构,有兴趣的同学可以进一步改进图的效果。

要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

题目2:n维矩阵乘法:A B-1功能:设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。

分步实施:1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2)完成最低要求:建立一个文件,可完成2维矩阵的情况;3)一步要求:通过键盘输入维数n。

有兴趣的同学可以自己扩充系统功能。

要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

题目3:数组应用功能:按照行优先顺序将输入的数据建成4维数组,再按照列优先顺序输出结果,给出任意处的元素值,并给出对应的一维数组中的序号。

分步实施:1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:完成第一个功能;3.进一步要求:进一步完成后续功能。

有兴趣的同学可以自己扩充系统功能。

要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

题目4:数组应用2功能:读入数组下标,求出数组A靠边元素之和;求从A[0][0]开始的互不相邻的各元素之和;当m=n时,分别求两条对角线上的元素之和,否则打印出m!=n的信息。

名家指导:考研数学矩阵乘法复习指导

名家指导:考研数学矩阵乘法复习指导

名家指导:考研数学矩阵乘法复习指导尽管矩阵乘法不满足交换律。

但是,矩阵乘法在多方面的成功应用,令人感到很惬意。

1.若A,B都是n阶方阵,则|AB|=|A||B|。

我们知道,|A+B|难解。

相比之下,乘积算法复杂得多,而积矩阵行列式公式却如此简明,自然显示了矩阵乘法之成功。

特别地,如果AB=BA=E,则称B是A的逆阵;或说A与B互逆。

A*是A的代数余子式按行顺序转置排列成的。

之所以这样做,就是恰好有(基本恒等式)AA*=A*A=|A|E,顺便有|A|≠0时,|AA*|=||A|E|,故|A*|=|A|的n-1次方。

2.对矩阵实施三类初等变换,可以通过三类初等阵分别与矩阵相乘来实现。

"左乘行变,右乘列变。

"给理论讨论及应用计算机带来很大的方便。

3.分块矩阵乘法,形式多样,内函丰富。

要分块矩阵乘法可行,必须要在"宏观"与"微观"两方面都确保可乘。

AB=A(b1,b2,--,bs)=(Ab1,Ab2,--,Abs)宏观可乘:把各分块看成一个元素,满足阶数规则(1×1)(1×s)=(1×s).微观可乘:相乘的子块都满足阶数规则。

(m×n)(n×1)=(m×1),具体如,Ab1是一个列向量AB=0的基本推理AB=0,即(Ab1,Ab2,--,Abs)=(0,0,--,0)→B的每一个列向量都是方程组Ax=0的解。

→B的列向量组可以被方程组Ax=0的基础解系线性表示。

→r(B)≤方程组Ax=0的解集的秩=n-r(A)→r(B)+r(A)≤n.例:已知(n维)列向量组a1,a2,--,ak线性无关,A是m×n阶矩阵,且秩r(A)=n,试证明,Aa1,Aa2,--,Aak线性无关分析设有一组数c1,c2,--,ck,使得c1Aa1+c2Aa2+--+ckAak=0.即A(c1a1+c2a2+--+ckak)=0.这说明c1a1+c2a2+--+ckak是方程组Ax=0的解。

矩阵及矩阵运算

矩阵及矩阵运算

矩阵及矩阵运算矩阵:⼀个m×n的矩阵就是m×n个数排成m⾏n列的⼀个数阵。

由于它把许多数据紧凑的集中到了⼀起,所以有时候可以简便地表⽰⼀些复杂的模型。

在数学中,⼀个矩阵说穿了就是⼀个⼆维数组。

单位矩阵:从左上⾓到右下⾓的对⾓线(称为主对⾓线)上的元素均为1。

除此以外全都为0。

对称矩阵:如果⽅阵满⾜,即,则称A为对称矩阵.它的元素以主对⾓线为对称轴对应相等.矩阵加减法:两个矩阵相加减,即它们相同位置的元素相加减,满⾜交换律和结合律。

只有对于两个⾏数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可⾏的.矩阵乘法:矩阵乘法是⼀种⾼效的算法可以把⼀些⼀维递推优化到log( n ),还可以求路径⽅案等,所以更是⼀种应⽤性极强的算法。

1.矩阵与数的乘法:数乘矩阵A,就是将数乘矩阵A中的每⼀个元素,记为或.特别地,称称为的负矩阵.满⾜结合律和分配律。

2.矩阵与矩阵的乘法:只有当矩阵A的列数与矩阵B的⾏数相等时A×B才有意义。

⼀个m×n的矩阵a(m,n)左乘⼀个n×p的矩阵b(n,p),会得到⼀个m×p的矩阵c(m,p),矩阵乘法满⾜结合率,但不满⾜交换率。

⼀个n⾏m列的矩阵可以乘以⼀个m⾏p列的矩阵,得到的结果是⼀个n ⾏p列的矩阵。

⽅阵A和它同阶的单位阵作乘积,结果仍为A,即.单位阵在矩阵乘法中的作⽤相当于数1在我们普通乘法中的作⽤。

运算规则: 设,,则A与B的乘积是这样⼀个矩阵: (1) ⾏数与(左矩阵)A相同,列数与(右矩阵)B相同,即. (2) C的第⾏第列的元素由A的第⾏元素与B的第列元素对应相乘,再取乘积之和.(3)两个⾮零矩阵的乘积可以是零矩阵.由此若,不能得出或的结论.矩阵转置:将矩阵A的⾏换成同序号的列所得到的新矩阵称为矩阵A的转置矩阵,记作或.第i⾏变第J列。

Aij变成Aji。

运算性质(假设运算都是可⾏的) (1)  (2)  (3)  (4) ,是常数.矩阵⾏列式:基于矩阵所包含的⾏列数据计算得到的⼀个标量;⼆维矩阵[{a,c},{b,d}]的⾏列式等于:det(A) = ab-cd。

矩阵的计算方法

矩阵的计算方法

矩阵的计算方法矩阵是线性代数中的重要概念,它在数学、物理、工程等领域都有着广泛的应用。

矩阵的计算方法是学习线性代数的基础,下面我们将介绍矩阵的加法、减法、数乘、乘法、转置和逆的计算方法。

首先,我们来看矩阵的加法和减法。

对于两个相同大小的矩阵A和B,它们的加法和减法运算都是逐个对应元素相加或相减得到新的矩阵。

例如,对于矩阵A 和B:A = [1 2。

3 4]B = [5 6。

7 8]则A + B = [6 8。

10 12]A B = [-4 -4。

-4 -4]接下来是矩阵的数乘。

对于一个矩阵A和一个标量k,矩阵的数乘就是将矩阵A的每一个元素都乘以k得到新的矩阵。

例如,对于矩阵A和标量k:A = [1 2。

3 4]k = 2。

则kA = [2 4。

6 8]然后是矩阵的乘法。

矩阵的乘法是比较复杂的,对于两个矩阵A和B,它们的乘积AB的第i行第j列的元素是A的第i行和B的第j列对应元素的乘积之和。

例如,对于矩阵A和B:A = [1 2。

3 4]B = [5 6。

7 8]则AB = [19 22。

43 50]接着是矩阵的转置。

矩阵的转置就是将矩阵的行和列互换得到新的矩阵。

例如,对于矩阵A:A = [1 2。

3 4]则A的转置记作A^T = [1 3。

2 4]最后是矩阵的逆。

对于一个可逆矩阵A,它的逆矩阵记作A^-1,满足AA^-1 = A^-1A = I,其中I是单位矩阵。

逆矩阵的计算方法有很多,可以通过伴随矩阵、初等行变换等方法来求解。

总结一下,矩阵的计算方法包括加法、减法、数乘、乘法、转置和逆,这些计算方法在线性代数中有着重要的应用,对于理解和解决实际问题都有着重要的意义。

希望本文的介绍能够帮助大家更好地理解矩阵的计算方法。

矩阵的乘法结合律

矩阵的乘法结合律

矩阵的乘法结合律矩阵的乘法结合律是指在进行矩阵乘法时,无论先乘哪两个矩阵,最终结果都是相同的。

这个性质在矩阵运算中非常重要,因为它允许我们在进行复杂的矩阵运算时,不需要考虑计算的先后顺序,从而简化了问题的求解过程。

具体来说,如果我们有三个矩阵A、B和C,那么(A*B)*C和A*(B*C)的结果是相同的。

这个性质可以通过矩阵的定义和矩阵乘法的运算规则来证明。

矩阵的定义是一个矩形的数表,其中包含m行n列的数。

而矩阵乘法的运算规则是,如果A是一个m行n列的矩阵,B是一个n行p列的矩阵,那么它们的乘积AB是一个m行p列的矩阵。

即,AB中的每个元素都是A的每一行与B的每一列对应元素的乘积之和。

假设我们有三个矩阵A、B和C,它们的维度分别为m*n、n*p和p*q。

那么(A*B)*C中的每个元素都可以表示为:((A*B)*C)_{i,j} = sum_{k=1}^p (A*B)_{i,k} * C_{k,j} 而A*(B*C)中的每个元素可以表示为:(A*(B*C))_{i,j} = sum_{k=1}^n A_{i,k} * (B*C)_{k,j} 我们需要证明的是,这两个式子是相等的。

我们将(B*C)_{k,j}拆分成sum_{l=1}^p B_{k,l} * C_{l,j},然后代入后一个式子中,得到:(A*(B*C))_{i,j} = sum_{k=1}^n A_{i,k} * left( sum_{l=1}^p B_{k,l} * C_{l,j} right)接下来,我们将这个式子中的累加符号交换一下,得到:(A*(B*C))_{i,j} = sum_{l=1}^p left( sum_{k=1}^n A_{i,k} * B_{k,l} right) * C_{l,j}这个式子中的括号里面的部分就是矩阵乘积AB的第i行第l列的元素。

因此,它可以表示为:(A*(B*C))_{i,j} = sum_{l=1}^p (A*B)_{i,l} * C_{l,j} 这个式子与前面的((A*B)*C)_{i,j}是完全相同的,因此我们证明了矩阵乘法的结合律。

矩阵的乘法

矩阵的乘法

矩阵的乘法裴博 11123689 理科基础班2班摘要:本文首先给出了一般矩阵乘积Hadamard 乘积,Kronecker 乘积的定义。

然后讨论了并证明了这些乘积的运算性质。

继而举出了具体的例子、阐述其来源以及应用和推广。

关键词:矩阵 乘法 Hadamard Kronecker 正文:引言:矩阵常用的乘法有三种,分别是一般乘法,Hadamard 乘法和Kronecker 乘法。

下文将从这几个乘法中展开讨论。

一般乘积:定义:对任意的正整数,,m n p,任意的数域F ,任意的矩阵()m nij m n A a F⨯⨯=∈和()n pij n p B b F⨯⨯=∈可以相乘,得到的乘积AB 是一个m p ⨯矩阵()ij m pAB c ⨯=它的第(,)i j 元11221ni j i k k j i j iji nn jk c a b a b a b a b ===+++∑例子:1200A λλ⎛⎫=⎪⎝⎭,1122a b B a b ⎛⎫= ⎪⎝⎭,求AB 和BA 。

解:11112222a b AB a b λλλλ⎛⎫=⎪⎝⎭ , 11122122a b BA a b λλλλ⎛⎫= ⎪⎝⎭。

运算性质:结合律: ()()C B A C B A= 对任意,,m np nq pA FB FC F⨯⨯⨯∈∈∈成立。

证明: 设(),(),()ij m n ij p m ij q p A a B b C c ⨯⨯⨯===则()ij p nBA D d ⨯==,其中1mi j i k k jk d b a==∑从而()()ij q nC BA CD G g ⨯===1111,1()ppm ij issj isskkj is sk kjs s k s p k mg cd c ba cb a ===≤≤≤≤===∑∑∑∑(1)另一方面,()ij q mCB U u ⨯==,其中1pi j i s s js u c b==∑从而()()ij q nCB A UA H h ⨯===,其中1111,1()pmmij ikkj issk kj is sk kjk k s s p k mh ua cb ac b a ===≤≤≤≤===∑∑∑∑(2)比较(1)和(2)可知G H =,即()()C B A C B A= 则矩阵乘法结合律成立。

1-1 矩阵及其运算

1-1 矩阵及其运算

系数矩阵 A, B, C,元素之间的关系:C的第i行第j列 对应元素等于 ai1b1 j ai 2b2 j (i = 1, 2, 3; j = 1, 2)
• C 中第 i 行第 j 列的元素为 A 的第 i 行与 B 的第 j 列 的乘积.
两矩阵的乘积 设 A = (aik )ml , B = (bkj )ln , 记
利用矩阵乘法, 上式记为矩阵形式 y = Ax, 其中
a11 a1n y1 x1 y = , A = , x = a y x amn m n m1
• 负矩阵 矩阵 A=(aij) 的负矩阵定义为 -A=(-aij). • 矩阵的减法
b11 - a11 b1n - a1n B - A = B ( - A) = b -a bmn - amn m1 m1
数与矩阵的乘积 数 k 与矩阵 A=(aij) 的乘积称为数乘运算, 记作 kA, 规定为
(8) k ( A B ) = kA kB;
例1 设
1 -2 0 2 0 -1 A= , B = 3 1 2 , 2 1 -3 求 2A-3B 1 -2 0 2 0 -1 解 2 A - 3B = 2 - 3 3 1 2 2 1 -3 2 -4 0 -6 0 3 = -9 -3 -6 4 2 -6 -4 -4 3 = -5 -1 -12
1 2 2 -4 例3 设 A = , B = -1 2 , 计算 AB, BA. 0 0 0 0 2 4 解 AB = , BA = -1 -2 0 0 • 矩阵的乘法不满足交换律. • 在 AB 中, 称用 A 左乘 B, 或称用 B 右乘 A. • 由 AB = O, 不能断言 A = O 或 B = O. 乘法运算律 假设以下有关运算可行, 则成立 (1) ( AB )C = A( BC );
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程设计题目____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版本。

第三章:课程设计分析矩阵的存储矩阵的结构类似于c语言中的二维数组,所以可以用二维数组来存储矩阵,这样的结构很简便而且也最符合要求。

矩阵的输入与输出选择二维数组作为矩阵的存储结构那么可以采用二维数组的输入与输出的方式来对矩阵进行输入输出操作。

利用两个for循环语句可以实现将矩阵中的元素存入到二维数组中,但是要注意的是矩阵的行和列的下标都是从1开始的但是二维数组的行和列的下标都是从0开始所以在编写程序的时候要注意这些差别。

矩阵的乘法运算矩阵的乘法运算时线性代数里的知识,两个n阶的矩阵相乘,设有三个矩阵A,B,C,矩阵A乘矩阵B等于矩阵C,那么矩阵C中的第i行第j列的元素等于矩阵A 的第i行元素和矩阵B的第j列对应的元素的乘积的和。

矩阵的求逆运算定义一个矩阵的求逆的运算的函数,函数名为inverse,函数的参数为数组B,利用线性代数中的初等变换的知识求矩阵的逆第四章:课程设计的算法描述矩阵的存储printf("输入矩阵a:");for(i=0;i<N;i++){for(j=0;j<N;j++)scanf("%f",&a[i][j]);}/*输入矩阵A*/printf("请再输入矩阵b:");for(i=0;i<N;i++){for(j=0;j<N;j++)scanf("%f",&b[i][j]);}/*输入矩阵B*/ 矩阵的输出printf("请输出矩阵A和B的乘积矩阵C:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%f\t",c[i][j]);printf("\n");}矩阵的乘法定义一个全局变量sum初值为0.0;for(i=0;i<N;i++)for(j=0;j<N;j++){for(k=0;k<N;k++)sum+=a[i][k]*b[k][j];c[i][j]=sum;sum=0;}/*矩阵的乘法的函数的内容*/矩阵的求逆运算定义一个函数,函数名为inverse;之前定义全局变量y=1;矩阵维数N,和整型变量i,和j,函数的参数为数组B,返回值为数组B的逆矩阵B-1void inverse(float m[N][N])/*inverse函数是对矩阵的求逆运算的函数*/{int d[N][2*N];float t,x;int k;printf("B原矩阵为:\n");for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%3.2f\t",m[i][j]);printf("\n");}/*将原数组输出*/for(i=0;i<N;i++)for(j=0;j<(2*N);j++){if (j<N)d[i][j]=m[i][j];else if (j==N+i)d[i][j]=1.0;elsed[i][j]=0.0;}/*将数组b中的元素转存到变量数组d中,其中d中的另一半元素对应一个单位矩阵*/for(i=0;i<N;i++){for(k=0;k<N;k++){if(k!=i){t=d[k][i]/d[i][i];for(j=0;j<(2*N);j++){x=d[i][j]*t;d[k][j]=d[k][j]-x;}}}} /*矩阵的初等变换*/for(i=0;i<N;i++){t=d[i][i];for(j=0;j<(2*N);j++)d[i][j]=d[i][j]/t;}for(i=0;i<N;i++)y=y*d[i][i];if(y==0)printf("对不起,您输入的矩阵没有逆矩阵,请重新输入。

\n"); else{for(i=0;i<N;i++)for(j=0;j<N;j++)m[i][j]=d[i][j+N];printf("B逆矩阵为:\n");for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%3.2f\t",m[i][j]);printf("\n");}}}第五章:源代码#include<stdio.h>#define N 3int i,j,k;float y=1.0;float a[N][N],b[N][N],c[N][N];/*定义全局变量的三个数组*//*矩阵的乘法的函数的内容*/void inverse(float m[N][N]);int main(){printf("输入矩阵a:");for(i=0;i<N;i++){for(j=0;j<N;j++)scanf("%f",&a[i][j]);}/*输入矩阵A*/printf("请再输入矩阵b:");for(i=0;i<N;i++){for(j=0;j<N;j++)scanf("%f",&b[i][j]);}/*输入矩阵B*/ inverse(b);/*调用inverse函数对矩阵b进行求逆运算*/for(i=0;i<N;i++)for(j=0;j<N;j++){for(k=0;k<N;k++)c[i][j]+=a[i][k]*b[k][j];}printf("请输出矩阵A和B的乘积矩阵C:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3.2f\t",c[i][j]);printf("\n");}}/*主函数结束*/void inverse(float m[N][N])/*inverse函数是对矩阵的求逆运算的函数*/{float d[N][2*N];float t,x;int k;printf("B原矩阵为:\n");for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%3.2f\t",m[i][j]);printf("\n");}/*将原数组输出*/for(i=0;i<N;i++)for(j=0;j<(2*N);j++){if (j<N)d[i][j]=m[i][j];else if (j==N+i)d[i][j]=1.0;elsed[i][j]=0.0;}/*将数组b中的元素转存到变量数组d中,其中d中的另一半元素对应一个单位矩阵*/for(i=0;i<N;i++){for(k=0;k<N;k++){if(k!=i){t=d[k][i]/d[i][i];for(j=0;j<(2*N);j++){x=d[i][j]*t;d[k][j]=d[k][j]-x;}}}} /*矩阵的初等变换*/for(i=0;i<N;i++){t=d[i][i];for(j=0;j<(2*N);j++)d[i][j]=d[i][j]/t;}for(i=0;i<N;i++)y=y*d[i][i];if(y==0)printf("对不起,您输入的矩阵没有逆矩阵,请重新输入。

\n"); else{for(i=0;i<N;i++)for(j=0;j<N;j++)m[i][j]=d[i][j+N];printf("B逆矩阵为:\n");for (i=0;i<N;i++){for (j=0;j<N;j++)printf("%3.2f\t",m[i][j]);printf("\n");}}}第六章:结束语转眼,为期两周的《数据结构》课程设计实习即将结束了。

在这次实习中,自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高。

同时也学会了解决问题的方法。

总结起来,自己主要有以下几点体会:1.必须牢固掌握基础知识。

由于C语言是大一所学知识,有所遗忘,且未掌握好这学期所学的《数据结构》这门课,所以在实习之初感到棘手。

不知如何下手,但在后来的实习过程中自己通过看书和课外资料,并请教其他同学,慢慢地对C语言和数据结构知识有所熟悉。

相关文档
最新文档