数学实验矩阵的运算doc资料

合集下载

数学矩阵的基本运算

数学矩阵的基本运算

数学矩阵的基本运算引言:在数学中,矩阵是一种非常重要的工具,它在多个学科和领域都有广泛的应用。

矩阵不仅可以表示线性方程组,还可以描述向量空间的变换。

矩阵的基本运算是我们学习矩阵的第一步,掌握了这些基本运算,我们才能在后续的学习中更好地应用矩阵解决问题。

本次教案将系统地介绍数学矩阵的基本运算,包括加法、减法、数乘和乘法,并结合具体的例子进行解释和演示。

第一节加法运算1.1 矩阵加法的定义矩阵加法是指将两个具有相同行数和列数的矩阵对应位置上的元素相加,得到一个新的矩阵。

例如,对于两个3行2列的矩阵A和B,它们的加法运算可以表示为:C=A+B。

C矩阵中的每个元素c(i,j)等于矩阵A中元素a(i,j)和矩阵B中元素b(i,j)的和。

1.2 矩阵加法的性质矩阵加法具有以下性质:- 结合律:(A+B)+C=A+(B+C),即矩阵加法满足结合律。

- 交换律:A+B=B+A,即矩阵加法满足交换律。

- 零矩阵:对于任意的矩阵A,都有A+O=A,其中O是全零矩阵。

1.3 矩阵加法的例子考虑以下两个矩阵:A = [1 2 34 5 6]B = [7 8 910 11 12]它们的加法运算为:C = A + B = [8 10 1214 16 18]解释:C矩阵中的第一个元素c(1,1)等于矩阵A中元素a(1,1)和矩阵B中元素b(1,1)的和,即1+7=8,以此类推。

第二节减法运算2.1 矩阵减法的定义矩阵减法是指将两个具有相同行数和列数的矩阵对应位置上的元素相减,得到一个新的矩阵。

例如,对于两个3行2列的矩阵A和B,它们的减法运算可以表示为:C=A-B。

C矩阵中的每个元素c(i,j)等于矩阵A中元素a(i,j)和矩阵B中元素b(i,j)的差。

2.2 矩阵减法的性质矩阵减法具有以下性质:- 结合律:(A-B)-C=A-(B-C),即矩阵减法满足结合律。

- 零矩阵:对于任意的矩阵A,都有A-O=A,其中O是全零矩阵。

矩阵的乘法实验报告

矩阵的乘法实验报告

一、实验目的1. 理解矩阵乘法的概念和运算规则。

2. 掌握矩阵乘法的编程实现方法。

3. 通过实验验证矩阵乘法的正确性。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 库:NumPy三、实验原理矩阵乘法是指两个矩阵相乘的运算。

设矩阵A为m×n的矩阵,矩阵B为n×p的矩阵,则它们的乘积C为一个m×p的矩阵。

矩阵乘法的运算规则如下:C[i][j] = Σ(A[i][k] B[k][j]),其中k为1到n的整数。

四、实验步骤1. 导入NumPy库。

```pythonimport numpy as np```2. 定义矩阵A和B。

```pythonA = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])```3. 计算矩阵A和B的乘积C。

```pythonC = np.dot(A, B)```4. 打印结果。

```pythonprint("矩阵A:")print(A)print("矩阵B:")print(B)print("矩阵C(A乘B):")print(C)```五、实验结果与分析1. 运行实验程序,得到以下结果:```矩阵A:[[1 2][3 4]]矩阵B:[[5 6][7 8]]矩阵C(A乘B):[[19 22][43 50]]```2. 分析结果:- 矩阵A为2×2的矩阵,矩阵B为2×2的矩阵,它们的乘积C为2×2的矩阵。

- 根据矩阵乘法的运算规则,我们可以计算出矩阵C的每个元素。

- 实验结果与理论计算相符,说明矩阵乘法的编程实现是正确的。

六、实验总结1. 本实验成功实现了矩阵乘法的编程,验证了矩阵乘法的正确性。

2. 通过实验,加深了对矩阵乘法概念和运算规则的理解。

3. NumPy库在矩阵运算方面具有强大的功能,为编程提供了便利。

线性代数矩阵的运算

线性代数矩阵的运算

3 2 1 2
4 ?? 1? ? 1?? 1?
??? 5 6 7 ??
? ?10 2 ? 6?.
??? 2 17 10??
BG
上页 下页 返回 10
注意 只有当第一个矩阵的列数等于第二个矩阵 的行数时,两个矩阵才能相乘 .
2、矩阵乘法的运算规律
?1??AB?C ? A?BC ?;
? ? ? ?2?A?B ? C ?? AB ? AC, ?B ? C ?A ? BA? CA;
第二节 矩阵的计算
一、 矩阵的加法 二、数与矩阵相乘 三、矩阵与矩阵相乘 四、 矩阵转置 五、方阵的行列式 六、 共轭矩阵 七、矩阵的应用
BG
上页 下页 返回 1
一、矩阵的加法
1、定义
?? ? ? 设有两个 m ? n 矩阵
A 与 B 的和记作 A ?
AB,? 规a定ij ,为B
?
bij
, 那么矩阵
?3? ?A?B ? ? A?B ? A? B? (其中 ? 为数);
注意 矩阵乘积一般不满足交换律
例 设 A ? ?? 1 1 ?? B ? ?? 1 ? 1??
?? 1 ? 1?
?? 1 1 ?
BG
上页 下页 返回 11

AB ? ??0 ?0
?? a11 ? b11
a12 ? b12 ?
A?
B
?
? ?
a 21 ? ?
b21
a 22 ? b22 ?
?
?
???a m1 ? bm1 a m2 ? bm 2 ?
a1n ? b1n ?? a 2n ? b2n ?
?? a mn ? bmn ???
BG
上页 下页 返回 2

矩阵乘法 数学实验

矩阵乘法 数学实验

矩阵乘法数学实验矩阵乘法是线性代数中非常重要的概念。

它在数学和物理等领域中都有广泛的应用。

本实验将以生动的例子,全面介绍矩阵乘法的基本概念、运算规则及其在实际问题中的应用,旨在帮助读者更好地理解和掌握矩阵乘法。

首先,我们以一个简单的例子来介绍矩阵的乘法运算。

假设有两个矩阵A和B,分别为3行2列和2行4列的矩阵。

其形式如下:A = [a11 a12][a21 a22][a31 a32]B = [b11 b12 b13 b14][b21 b22 b23 b24]我们需要计算矩阵A和B的乘积C,乘积的规则是将A的每一行与B的每一列进行乘法运算,再将所得结果相加。

因此,C的形式为3行4列的矩阵,表示如下:C = [c11 c12 c13 c14][c21 c22 c23 c24][c31 c32 c33 c34]其中,c11 = a11 * b11 + a12 * b21,c12 = a11 * b12 + a12* b22,以此类推。

通过上述例子,我们可以看到矩阵乘法的基本运算规则。

但是,在实际应用中,矩阵乘法更多地体现了其涉及到的线性变换的概念。

例如,在计算机图形学中,我们可以使用矩阵乘法来实现平移、旋转和缩放等操作。

以平移操作为例,我们可以将一个二维点的坐标表示为一个2行1列的矩阵,其对应的平移矩阵为一个2行2列的矩阵。

通过将点的坐标与平移矩阵相乘,我们可以实现对点的平移操作。

此外,在物理学中,矩阵乘法也被广泛应用于描述物理系统的变换过程。

例如,可以使用矩阵乘法来描述光的传播过程或者描述量子力学中的粒子的波函数演化过程。

总结起来,矩阵乘法是线性代数中重要的概念之一。

通过实际的例子,我们可以更好地理解矩阵乘法的运算规则,以及其在数学和物理等领域中的应用。

通过掌握矩阵乘法,我们可以更好地理解和解决实际问题,同时也为我们在以后的学习和研究中打下坚实的基础。

因此,学习和掌握矩阵乘法是非常具有指导意义的。

实验1矩阵的基本运算

实验1矩阵的基本运算

基础篇本篇包含五个线性代数的基础实验,从矩阵运算到方程组的求解;从向量组线性相关性分析到矩阵的对角化;从矩阵特征值和特征向量求解到二次型的标准化及正定性的分析,都给出了MATLAB的解决方法。

实验5利用MATLAB的绘图功能,对线性代数若干概念的几何意义进行了分析讨论。

实验1 矩阵的基本运算1.1实验目的1.掌握Matlab软件的矩阵赋值方法;2.掌握Matlab软件的矩阵加法、数乘、转置和乘法运算;3.掌握Matlab软件的矩阵幂运算及逆运算;4.掌握Matlab软件的矩阵元素群运算;5.通过Matlab软件进一步理解和认识矩阵的运算规则。

1.2实验指导MATLAB是一种功能强大的科学及工程计算软件,它的名字由“矩阵实验室”(Matrix Laboratoy)组成,它具有以矩阵为基础的数学计算和分析功能,并且具有丰富的可视化图形表现功能及方便的程序设计能力。

它的应用领域极为广泛。

本实验学习用MATLAB软件进行矩阵基本运算。

启动MATLAB后,将显示MA TLAB操作界面,它包含多个窗口,其中命令窗口是最常用的窗口,如图1.1所示。

图1.1 MA TLAB的操作桌面本实验所有例题的MATLAB命令都是在命令窗口中键入的。

在本实验中用到MATLAB的运算符号及命令或函数列举如下: 1、运算符号表1.1给出了本实验用到的MA TLAB 基本运算符号。

表1.1 MA TLAB 的基本运算符号2、命令或函数表1.2给出了与本实验相关的MA TLAB 命令或函数。

若要进一步了解和学习某个命令或函数的详细功能和用法时,MATLAB 提供了一个help 命令。

表1.2 与本实验相关的MA TLAB 命令或函数1.3 实验内容例1.1 用MA TLAB 软件生成以下矩阵:(1)⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=066656239A (2)⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=100010001B (3)⎥⎦⎤⎢⎣⎡=0000C (4)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1111111111111111D 解:(1)在MA TLAB 命令窗口输入:A=[9,3,2;6,5,6;6,6,0] % 矩阵同行元素以逗号或空格分割 或:A=[9 3 2;6 5 6;6 6 0] % 行与行之间必须用分号或回车分隔 或:A=[9 3 2 6 5 6 6 6 0] 结果都为: A =9 3 2 6 5 6 6 6 0(2)输入:B=eye(3)结果为:B =1 0 00 1 00 0 1(3)输入:C = zeros(2)结果为:C =0 00 0(4)输入:D = ones(4)结果为:D =1 1 1 11 1 1 11 1 1 11 1 1 1Matlab对矩阵赋值有直接输入和命令生成两种方法,本例中矩阵A就是键盘直接输入的;而矩阵B、C和D都是用Matlab命令而生成。

05实验五 矩阵的运算

05实验五 矩阵的运算

R7=M./N↙ R7 = 0.5000 0.2500 0.6667 0.6667 3.0000 0.7500 4.5000 1.0000 3.0000
R8=M\N↙ R8 = -3.1034 -3.3793 -4.4138 0.6897 -0.1379 0.7586 2.3793 2.7241 3.5172
0.5 0.2 0.3 1 1 0 3.求矩阵 M1 , M2 , M3 0.4 0.2 1 1 0.5 1
的特征值。
14
R9=M.\N↙ R9 = 2.0000 4.0000 1.5000 1.5000 0.3333 1.3333 0.2222 1.0000 0.3333
4
二、矩阵的转置、行列式、秩和逆
设A是一个矩阵,A’是A 的转置,det(A) 是A 的行列式(方 阵),rank(A) 是A 的秩,inv(A) 是A 的逆矩阵(若不可逆,则 给出警告信息). 例如 a=[1,2,3;2,2,1;3,4,3] ↙ a= 1 2 3 2 2 1 3 4 3 a'↙ ans = 1 2 3 det(a) ↙ ans = 2
12
eig(A) ↙ ans = 4 4 2
A=[2 1;-1 5] ↙ A= 2 1 -1 5
B=[3 1;1 4] ↙ B= 3 1 1 4 d=eig(A,B) ↙ d= 0.7405 1.3504
[V,D]=eig(A,B) ↙ V= 0.7604 -0.1684 0.6495 0.9857 D= 0.7405 0 1.3504
c=tril(a) ↙ c= 1 0 4 5 7 8
3 6 9
0 0 9
9
3.稀疏矩阵的处理 对稀疏矩阵在存储和运算上的特殊处理,是 MATLAB进 行大规模科学计算时的特点和优势之一.用以下语句输入稀疏 矩阵的非零元素(零元素不必输入),即可进行计算. a=sparse(r,c,v,m,n):表示在r 行、c 列输入数值v ,矩阵共m 行n列,输出a给出(r,c)及v,a为一稀疏矩阵. aa=full(a):输入稀疏矩阵a,输出aa为满矩阵(包括零元素). a=sparse(2,2:3,8,2,4),aa=full(a) ↙ a= (2,2) 8 (2,3) 8 aa = 0 0 0 0 0 8 8 0

数学实验矩阵的运算

数学实验矩阵的运算

数学实验报告学院:班级:学号:姓名:完成日期:实验四矩阵的运算(一)投入产出分析一.实验目的1.理解投入产出分析中的基本概念和模型;2.从数学和投入产出理论的角度,理解矩阵乘法、逆矩阵等的含义。

二.问题描述设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、部需求、初始投入等如表1-1所示表1-1国民经济三产部门之间的投入产出表根据表回答下列问题:(1)如果农业、制造业、服务业外部需求为50,150,100,问三个部门总产出分别为多少?(2)如果三个部门的外部需求分别增加一个单位,问他们的总产出分别为多少?三.实验过程1.问题(1)的求解(1)求直接消耗矩阵A根据直接消耗的计算公式a ij=x ij/x j和各部门中间需求;x n a n运行如下代码可得直接消耗系数表。

X=[15 20 30;30 10 45;20 60 0];X_colsum=[100 200 150];X_rep=repmat(X_colsum,3,1)A=X./ X_rep运行结果为:A =0.1500 0.1000 0.20000.3000 0.0500 0.30000.2000 0.3000 0(2)求解根据公式X=(I-A)-1y在运行如下代码y=[50;150;100];n=size(y,1);W=eye(n)-A;X=W\y运行结果为X =139.2801267.6056208.1377即三个部门的总产出分别为139.2801,267.6056, 208.1377亿元。

2.问题2求解设外部需求由y增加至y+Δy,则产出x的增量为Δx=(I-A)-1(y+Δy)- (I-A)-1y=(I-A)-1Δy利用问题(1)求得的I-A矩阵,再运行如下的MATLAB 代码可得问题的结果:dx=inv(W)运行结果:dx =1.3459 0.2504 0.34430.5634 1.2676 0.49300.4382 0.4304 1.2167根据上述结果可知,当农业的外部需求增加1个单位时,农业、制造业、服务业的总产出分别增加1.3459,0.5634,0.4382个单位;当制造业的外部需求增加1个单位时,农业、制造业、服务业的总产出分别增加0.2504,1.2676,0.4304个单位;当服务业的外部需求增加1个单位时,农业、制造业、服务业的总产出分别增加0.3443,0.4930,1.2167个单位。

矩阵的算术运算

矩阵的算术运算
21
3.2.4 矩阵函数
例3-15 A=magic(3),B是3×3的单位阵,求A 的特征值分解,A和B的广义特征值分解。
22
The end
23
6
3.2.1 矩阵的算术运算

1 2 3 例3-7 , , A 0 1 0 3 2 1
1 1 2 3 , C 4 5 6 B 2 1 3 4 2
求A\B, B/A, A./C, A.\C
>> A.\C
为方阵A的特征值对角矩阵。
1
A1 A B V *
1 *V A n
(4)A和B都是矩阵时,无定义。
D

n
10
3.2.1 矩阵的算术运算
5、矩阵的点幂运算:.^

A.^B 等于[A(i,j)^B(i,j)],A和B维数相同或其 中一个为标量。
3
3.2.1 矩阵的算术运算
2、矩阵的乘法(*)和点乘(.*)

A*B 矩阵A和B的乘法。A和B其中之一可以是标 量,表示该标量与矩阵每个元素相乘。当A、B 均为矩阵时,要求两矩阵有相邻公共阶。 A.*B 矩阵A和B的对应位置元素相乘,要求A和B维

数相同。A和B其中之一可以为标量,表示该
标量与矩阵每个元素相乘。
19


3.2.4 矩阵函数
例3-13 矩阵的逆和伪逆 % magic(n)函数返回一个由整数1到整 数n2组成的n×n矩阵。 %该矩阵的各行与各列元素的和相等, n≧3 >> A=magic(3) A= 8 1 6 3 5 7 4 9 2 >> B=inv(A) B= 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 >> A*B ans = 1.0000 0 -0.0000 -0.0000 1.0000 0 0.0000 0 1.0000 >> C=rand(2,3) C= 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 >> D=pinv(C) D= 0.5492 0.2421 -0.6520 0.9075 1.0047 -0.4941 >> C*D ans = 1.0000 0.0000 0.0000 1.0000 >> D*C ans = 0.6668 0.2909 0.3709 0.2909 0.7461 -0.3238 0.3709 -0.3238 0.5871

矩阵式实验报告

矩阵式实验报告

一、实验目的1. 理解矩阵的基本概念和性质。

2. 掌握矩阵的运算方法,包括加法、减法、乘法等。

3. 学习矩阵的应用,如线性方程组的求解。

4. 提高数学建模和解决问题的能力。

二、实验内容本次实验主要围绕矩阵的运算和应用展开,具体内容包括:1. 矩阵的加法与减法2. 矩阵的乘法3. 矩阵的逆4. 线性方程组的求解三、实验步骤1. 矩阵的加法与减法(1)选择两个矩阵A和B,确保它们具有相同的行数和列数。

(2)将矩阵A和B对应位置的元素相加或相减,得到新的矩阵C。

(3)验证矩阵C的行数和列数与矩阵A和B相同。

2. 矩阵的乘法(1)选择两个矩阵A和B,确保矩阵A的列数等于矩阵B的行数。

(2)计算矩阵A的每一行与矩阵B的每一列的点积,得到新的矩阵C。

(3)验证矩阵C的行数等于矩阵A的行数,列数等于矩阵B的列数。

3. 矩阵的逆(1)选择一个可逆矩阵A。

(2)使用高斯-约当消元法求解矩阵A的逆。

(3)验证矩阵A与其逆矩阵的乘积为单位矩阵。

4. 线性方程组的求解(1)选择一个线性方程组,例如:AX = B,其中A是系数矩阵,X是未知数矩阵,B是常数矩阵。

(2)使用高斯-约当消元法求解线性方程组。

(3)验证求解得到的X矩阵是否满足原方程组。

四、实验结果与分析1. 矩阵的加法与减法通过实验,我们发现矩阵的加法与减法运算满足交换律和结合律,且结果矩阵的行数和列数与原矩阵相同。

2. 矩阵的乘法实验结果表明,矩阵的乘法运算满足交换律和结合律,且结果矩阵的行数等于第一个矩阵的行数,列数等于第二个矩阵的列数。

3. 矩阵的逆实验发现,对于可逆矩阵,其逆矩阵存在,且满足A A^(-1) = A^(-1) A = E(单位矩阵)。

4. 线性方程组的求解通过高斯-约当消元法,我们成功求解了线性方程组,并验证了求解结果的正确性。

五、实验结论1. 理解了矩阵的基本概念和性质,掌握了矩阵的运算方法。

2. 学会了使用矩阵求解线性方程组,提高了数学建模和解决问题的能力。

数学实验5矩阵运算和解线性方程组

数学实验5矩阵运算和解线性方程组

实验5 矩阵运算和解线性方程组一、实验题目用Mathematica软件进行矩阵运算和解线性方程组。

二、预期目标利用Mathematica进行:1. 矩阵运算.2. 矩阵的行列式与逆.3. 矩阵的秩.4. 线性方程组求解.三、常用命令方阵A的行列式:给出方阵A的逆矩阵:矩阵A的转置矩阵:用初等行变换将矩阵A化成的行最简阶梯形矩阵:将矩阵A在工作区中以矩阵格式输出:求矩阵方程XA B,AX B==的解:求线性方程组bAX=的解:求代数方程的解:四、练习内容1.计算:(1)1 2 3 4 2 1 4 1010 2 1 10 1 2 021 12 50 23 2⎛⎫⎛⎫ ⎪ ⎪-+-⎪ ⎪ ⎪ ⎪--⎝⎭⎝⎭命令:结果:(2)1 0 51 0 3 12 10 2 01 5 0 3 1 0 1 0 10 20 3 0⎛⎫-⎛⎫⎪-⎛⎫ ⎪⎪⎪ ⎪⎪⎝⎭ ⎪⎪⎝⎭⎝⎭命令:结果:2.求矩阵1 2 00 1 11 2 3⎛⎫⎪⎪⎪-⎝⎭的秩。

命令:结果:3.判断下列矩阵是否可逆,如可逆,求其逆矩阵。

(1)2 2 1 1 2 4 5 8 2-⎛⎫ ⎪-⎪ ⎪⎝⎭命令:结果:(2)1 2 3 42 3 1 2 1 1 1 1 1 0 2 6⎛⎫ ⎪ ⎪ ⎪-⎪--⎝⎭命令:结果:(3)1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1⎛⎫ ⎪-- ⎪⎪-- ⎪--⎝⎭命令:结果:4.设1 1 1 1 1 32 1 0 43 21 1 1 12 5X-⎛⎫⎛⎫⎪ ⎪=⎪ ⎪⎪ ⎪⎝⎭⎝⎭,求X。

命令:结果:5.设1 0 210 1 311 1 11X⎛⎫⎛⎫⎪ ⎪-=⎪ ⎪⎪ ⎪⎝⎭⎝⎭,求X。

命令:结果:6.解线性方程组1234123412341234224 4326 833412 33226x x x xx x x xx x x xx x x x+-+=⎧⎪+-+=⎪⎨+-+=⎪⎪+--=⎩。

命令:结果:。

线性代数实验报告

线性代数实验报告

线性代数实验报告一、实验目的线性代数是一门重要的数学基础课程,它在工程、科学、计算机等领域都有着广泛的应用。

本次实验的目的是通过实际操作和计算,加深对线性代数基本概念和方法的理解,提高运用线性代数知识解决实际问题的能力。

二、实验环境本次实验使用了软件名称软件进行计算和绘图。

三、实验内容(一)矩阵的运算1、矩阵的加法和减法给定两个矩阵 A 和 B,计算它们的和 A + B 以及差 A B。

观察运算结果,验证矩阵加法和减法的规则。

2、矩阵的乘法给定两个矩阵 C 和 D,其中 C 的列数等于 D 的行数,计算它们的乘积 CD。

分析乘法运算的结果,理解矩阵乘法的意义和性质。

(二)行列式的计算1、二阶和三阶行列式的计算手动计算二阶和三阶行列式的值,熟悉行列式的展开法则。

使用软件验证计算结果的正确性。

2、高阶行列式的计算选取一个四阶或更高阶的行列式,利用软件计算其值。

观察行列式的值与矩阵元素之间的关系。

(三)线性方程组的求解1、用高斯消元法求解线性方程组给定一个线性方程组,将其增广矩阵通过初等行变换化为行阶梯形矩阵。

求解方程组的解,并验证解的正确性。

2、用矩阵的逆求解线性方程组对于系数矩阵可逆的线性方程组,计算系数矩阵的逆矩阵。

通过逆矩阵求解方程组,并与高斯消元法的结果进行比较。

(四)向量组的线性相关性1、判断向量组的线性相关性给定一组向量,计算它们的线性组合是否为零向量。

根据计算结果判断向量组的线性相关性。

2、求向量组的极大线性无关组对于给定的向量组,通过初等行变换找出极大线性无关组。

(五)特征值和特征向量的计算1、计算矩阵的特征值和特征向量给定一个矩阵,计算其特征值和对应的特征向量。

验证特征值和特征向量的定义和性质。

2、利用特征值和特征向量进行矩阵对角化对于可对角化的矩阵,将其化为对角矩阵。

四、实验步骤(一)矩阵的运算1、首先在软件中输入矩阵 A 和 B 的元素值。

2、然后使用软件提供的矩阵加法和减法功能,计算 A + B 和 A B 的结果。

实验3_矩阵的运算

实验3_矩阵的运算

实验三 矩阵的运算实验目的:1. 掌握矩阵与数组的算术运算,包括矩阵运算和数组运算(点运算),搞清楚矩阵运算和数组运算(点运算)的区别。

2. 了解并掌握函数库elfun 中的基本数学函数,函数库matfun 中的基本线性代数运算函数以及datafun 中的基本函数。

实验内容:1.角度[]604530=x (单位为度),求x 的正弦、余弦、正切和余切。

2.用四舍五入的方法将数组[2.4568 6.3982 3.9375 8.5042]取整。

3. 求⎥⎦⎤⎢⎣⎡+-+-+-+-++=i 44i 93i 49i 67i 23i 57i 41i 72i 53i 84x 的转置及共轭转置。

4. 给定A ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=136782078451220124,B ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=087654321计算并解释意义 (1)A+5*B A-B+1 (2)A*B A.*B (3) A.^B, B/A , A\B5.⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321a ,分别计算a 的数组平方和矩阵平方,并观察其结果。

6. 对于B AX =,如果⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=753467294A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=282637B ,求解X , 并求 A*x-B 的2范数。

7.生成一个7阶的魔方矩阵A , 1)计算A 的行列式值、矩阵A 的秩、矩阵A 的迹(主对角线元素之和),2)分别对A 进行特征值分解、奇异值分解、LU 分解、QR 分解及Chollesky 分解。

3)计算A 的各列元素的最大值、各行元素的最大值;4)计算A 的各行元素的和、各列元素的和、主对角线元素之和、反对角线元素之和.(请参看第4.3节的内容)8.设矩阵A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡321212113,B=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---111012111,求(1)2A+B ;(2)2234B A -; (3)AB; (4)BA; (5) AB-BA9.设三阶矩阵A 、B 满足BA A BA A +=-61,其中⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=714131A 求矩阵B 。

(完整word)矩阵的运算及其运算规则

(完整word)矩阵的运算及其运算规则

矩阵的运算及其运算规则一、矩阵的加法与减法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题对于,.求是有意义的,而是无意义的.结论1只有在下列情况下,两个矩阵的乘法才有意义,或说乘法运算是可行的:左矩阵的列数=右矩阵的行数.第3题是矩阵,是的矩阵..结论2在矩阵的乘法中,必须注意相乘的顺序.即使在与均有意义时,也未必有=成立.可见矩阵乘法不满足交换律.第4题计算得:.结论3方阵A和它同阶的单位阵作乘积,结果仍为A,即.单位阵在矩阵乘法中的作用相当于数1在我们普通乘法中的作用.典型例题例6。

有关矩阵数学实验报告

有关矩阵数学实验报告

有关矩阵数学实验报告引言矩阵是数学中一个重要的概念,广泛应用于线性代数、图论、计算机科学等众多领域。

本实验旨在通过实际操作和计算,加深对矩阵的理解,并探索矩阵在现实问题中的应用。

本报告将从实验目的、实验步骤、实验结果和实验结论几个方面进行介绍。

实验目的1. 了解矩阵的基本概念和运算规则;2. 掌握矩阵的求逆、转置和乘法等操作;3. 实践利用矩阵解决实际问题。

实验步骤1. 实验准备:安装并学习使用相应的矩阵数学软件;2. 实验1:矩阵加法和乘法- 创建两个相同维度的矩阵A和B;- 计算A + B和A * B;- 分析结果并进行讨论。

3. 实验2:矩阵求逆和转置- 创建一个可逆矩阵C;- 计算C的逆矩阵C'和C的转置矩阵C^T;- 检验计算结果是否正确。

4. 实验3:矩阵在实际问题中的应用- 选择一个实际问题,并将其抽象成矩阵形式;- 利用矩阵运算解决问题;- 分析结果,并与传统解法进行对比。

实验结果1. 实验1结果分析:经过计算发现,矩阵的加法和乘法满足交换律和结合律,与数的加法和乘法类似。

但是,矩阵乘法不满足交换律,即A * B ≠B * A。

这进一步说明矩阵并不是普通数的简单扩展。

2. 实验2结果检验:针对可逆矩阵C,计算得到的逆矩阵C'和转置矩阵C^T经过验证均正确,满足逆矩阵和转置矩阵的定义和性质。

3. 实验3结果分析:我们选择了一个线性方程组问题,利用矩阵运算求解。

与传统解法相比,矩阵运算更简洁、高效,尤其对于高维度复杂问题具有很大优势。

实验结论通过本次实验,我们对矩阵的概念和运算规则有了更深入的理解。

矩阵不仅仅是一种数学工具,它在现实问题的建模和求解中发挥着重要作用。

矩阵的加法、乘法、逆矩阵和转置等运算规则的学习,为我们处理实际问题提供了更多的方法和思路。

在未来的学习和研究中,矩阵将会贯穿于我们的整个数学和科学计算的领域,为我们带来更大的便利和创造力。

数学实验 矩阵

数学实验 矩阵
பைடு நூலகம்
A
2
3
4
,
B
2
2
2
3 4 5
3 3 3
求:
C A B, D A, E A3, F A. B
创建matrix06.m文件 A=[1 2 3;2 3 4;3 4 5]; B=[1 1 1;2 2 2;3 3 3]; C=A+B D=A' E=A^3 F=A.*B
运行结果: C=
B1 = 0 1 1 1
000 000 300 4 10 0
B2 = 1 1 1 1
110 234 3 6 10 4 10 20
4. 矩阵的扩展
矩阵的扩展有以下两种方法:
<1> 利用矩阵标识块的赋值命令 X(m1:m2,n1:n2)=A
生成大矩阵。其中,(m1:m2)必须等于A的 行维数,(n1:n2)必须等于A的列维数。 生成的(m2×n2)的矩阵X,除赋值子阵和 已存在的元素外,其余元素都默认为0。
一点。点M1到平面π的距离是:
d | nM0M1 | |n|
创建vector03.m文件 M0=[1 1 3]; M1=[8 3 -4]; n=[2 -2 1]; d=abs(dot(n,M1-M0))/norm(n) 运行结果:
d= 1
三、矩阵的生成
1、 一般矩阵的生成: (1) 输入矩阵时以“[ ]”为其标识,即矩阵 的元素应在“[ ]”内部; (2)同行元素之间可由空格或“,”分隔, 行与行间用“;”或回车符分隔; (3) 矩阵元素可为运算表达式;
3. 矩阵的抽取 (1)对角元素抽取函数diag
diag(X,k) 抽取矩阵X的第k条对角线的元素向量。K为0时即 为抽取主对角线,k为正值时为上方第k条对角线, k为负值时为下方第k条对角线。

矩阵运算实验报告

矩阵运算实验报告

矩阵运算实验报告实验目的:通过矩阵运算实验,探究矩阵的基本运算规则、性质及应用,并加深对矩阵运算的理解。

实验原理:矩阵是一个由元素按照行和列排列成的矩形阵列,可以进行加法、减法、乘法等基本的运算。

矩阵的加法与减法满足交换律、结合律和分配律;矩阵的乘法满足结合律、分配律和左乘右乘不一定相等的性质。

实验步骤:1. 实验前的准备:准备两个矩阵A和B,并确定其维度。

2. 进行矩阵加法运算:将矩阵A与矩阵B的对应元素相加,得到新的矩阵C。

3. 进行矩阵减法运算:将矩阵A与矩阵B的对应元素相减,得到新的矩阵D。

4. 进行矩阵乘法运算:将矩阵A的行元素与矩阵B的列元素对应相乘,并将结果相加,得到新的矩阵E。

5. 对矩阵进行转置:将矩阵A的行与列互换,得到新的矩阵F。

6. 求矩阵的逆:若矩阵A可逆,则找到矩阵A的逆矩阵G。

实验结果:1. 矩阵加法运算的结果:得到新的矩阵C,其维度与矩阵A和B相同,且C(i,j) = A(i,j) + B(i,j)。

2. 矩阵减法运算的结果:得到新的矩阵D,其维度与矩阵A和B相同,且D(i,j) = A(i,j) - B(i,j)。

3. 矩阵乘法运算的结果:得到新的矩阵E,其维度为A的行数乘以B的列数,且E(i,j) = Σ(A(i,k)*B(k,j)),k的取值范围为1到B的行数(或A的列数)。

4. 矩阵转置的结果:得到新的矩阵F,其维度与矩阵A相反,即F的行数等于A的列数,F的列数等于A的行数,且F(i,j) = A(j,i)。

5. 矩阵逆矩阵的结果:得到新的矩阵G,其与矩阵A的乘积为单位矩阵,即A*G = G*A = I,其中I为单位矩阵。

实验分析:1. 从矩阵加法与减法运算的结果可以看出,矩阵的加法和减法满足交换律、结合律和分配律。

这说明矩阵加法和减法具有良好的运算性质。

2. 从矩阵乘法运算的结果可以看出,矩阵的乘法满足结合律和分配律,但左乘右乘不一定相等,即AB≠BA。

mathematica矩阵运算

mathematica矩阵运算

理 工 数 学 实 验
五、思考与练习
1.已知矩阵
1 0 −1 2 A = − 1 1 3 0 ; 0 5 −1 3
(1)求A的行向量组a1,a2,a3, 以及列向量组b1,b2,b3,b4 (2)求A的一,三,五行,二,三,四列交叉点上的元素做出 子矩阵. 2. 判断下列向量组是否线性相关
理 工 数 学 实 验
四、例子
简单操作步骤
In[1]:=A={{3,1,1},{2,1,2},{1,2,3}} MatrixForm[A] Out[1]:={{3,1,1},{2,1,2},{1,2,3}} Out[2]//MatrixForm=
3 1 1 2 1 2 1 2 3
− 2 5 Out[5]//MatrixForm= −1 3 1 −9 13 7 3 −1 5 −5 2 8 −7 − 10 3 − 2 5 − 1 1 − 9 13 7 3 −1 5 −5 8 − 7 − 10 2

理 工 数 学 实 验
四、例子
1.求矩阵
−2 1 A= 3 2 5 −1 3 −9 13 7 −1 5 −5 8 −7 −10
的行列式的值.
2.已知B=A′,求A×B,以及B×A. 3.利用Cramer法则求解方程组
2 x1 + x2 − 5x3 + x4 = 8 x + 4 x − 7 x + 6x = 0 1 2 3 4 x1 − 3x2 − 6 x4 = 9 2 x2 − x3 + 2 x4 = −5
In[3]:=B={{1,1,-1},{2,-1,0},{1,0,1}} MatrixForm[B] Out[3]:={{1,1,-1},{2,-1,0},{1,0,1}}

矩阵运算实验报告

矩阵运算实验报告

实验报告--矩阵运算一.实验目的。

1.通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。

2.通过实践进一步领会程序设计的特点和应用,提高运用C++ 语言以及面向对象知识解决实际问题的能力。

3.通过实践掌握用C++ 语言编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;4.学会利用C++程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力。

为后续的相关课程的学习打下基础。

二.实验要求。

1.学会建立模板类;2.实现矩阵的“加”、“减”、“乘”、“数乘”、“转置” ;3.动态内存分配并用随机数填充;4.注意“加”、“减”、“乘” 要进行条件的判断;三.设计思路。

3.1算法基本流程1)获取用户输入的矩阵1的行数和列数,动态生成一个一维数组2)利用随机数生成数组成员,并利用两个循环输出数组,使其符合矩阵的格式3)矩阵2同矩阵1的处理方法4)通过两个矩阵的行数和列数比较来判断能否进行加减乘等运算,如不能,输出相关信息5)如能够进行计算,则利用数组进行相应运算,并按照正确格式输出6)通过改变一维数组中元素的顺序来实现转置并输出3.2算法流程图四.基本界面。

五.关键代码。

5.1关键类的声明class CMatrixclass{public:CMatrixclass(){int m_Row = 0; //行int m_Col = 0; //列m_pElements = NULL; //一维数组};virtual ~CMatrixclass(){delete [] m_pElements;}public:int m_Row;int m_Col;int * m_pElements;};5.2关键函数代码void CMyView::OnCHECKadd(){m_nums.SetCheck(0);m_combine.SetCheck(0);m_subtrict.SetCheck(0);}void CMyView::OnCHECKsubtrict(){m_add.SetCheck(0);m_combine.SetCheck(0);m_nums.SetCheck(0);}void CMyView::OnCHECKcombine(){m_add.SetCheck(0);m_nums.SetCheck(0);m_subtrict.SetCheck(0);}void CMyView::OnCHECKnums(){m_add.SetCheck(0);m_combine.SetCheck(0);m_subtrict.SetCheck(0);}void CMyView::OnBUTTONcompute(){UpdateData(TRUE);// TODO: Add your control notification handler code hereif(m_add.GetState()==1){if(op1->imax!=op2->imax||op1->jmax!=op2->jmax||op1==NULL||op2==NU LL){m_result="行数列数不等无法相加!";}else{matrix<int> c(op1->imax,op1->jmax);c=*op1+*op2;m_result="matrix1+matrix2";m_result+="\r\n";m_result+=c.my_show();}}else if(m_subtrict.GetState()==1){if(op1->imax!=op2->imax||op1->jmax!=op2->jmax||op1==NULL||op2==NU LL){m_result="行数列数不等无法相减!";}else{matrix<int> c(op1->imax,op1->jmax);c=*op1-*op2;m_result="matrix1-matrix2";m_result+="\r\n";m_result+=c.my_show();}}else if(m_combine.GetState()==1){if(op1->jmax!=op2->imax||op1==NULL||op2==NULL){m_result="以上无法相乘!";}else{matrix<int> c(op1->imax,op2->jmax);c=(*op1)*(*op2);m_result="matrix1*matrix2";m_result+="\r\n";m_result+=c.my_show();}}else if(m_nums.GetState()==1){if(op2==NULL){m_result="运算不出结果!";}else{matrix<int> c(op2->imax,op2->jmax); c=m_k*(*op2);m_result="k*matrix2";m_result+="\r\n";m_result+=c.my_show();}}else{m_result="请先选定一个算法!";}UpdateData(FALSE);}void CMyView::OnBUTTONrotate(){UpdateData(TRUE);if(m_r1.GetState()==1){if(op1==NULL){m_result="请先输入矩阵!";}else{matrix<int> c=rotate(*op1);m_result="matrix1转置";m_result+="\r\n";m_result+=c.my_show();}}else if(m_r2.GetState()==1){if(op2==NULL){m_result="请先输入矩阵!";}else{matrix<int> c=rotate(*op2);m_result="matrix2转置";m_result+="\r\n";m_result+=c.my_show();}}else{m_result="请选择一个矩阵!";}UpdateData(FALSE);}void CMyView::OnCHECKr1(){UpdateData(TRUE);m_r2.SetCheck(0);UpdateData(FALSE);}void CMyView::OnCHECKr2(){UpdateData(TRUE);m_r1.SetCheck(0);UpdateData(FALSE);}六.实验心得与编程收获。

实验一 矩阵的基本运算

实验一 矩阵的基本运算

实验一矩阵的基本运算实验一矩阵的基本运算实验一&lowbar;矩阵的基本运算实验一、矩阵的基本运算已知矩阵a、b、b如下:4-11⎡3⎡6507⎡-47-1⎡1a=⎡-45-6⎡2⎡-36-78⎡-491⎡8-94612-1310⎡-16⎡⎡-8⎡⎡-8⎡1⎡⎡0⎡246-32⎡⎡1⎡7916-58-7⎡⎡⎡155⎡⎡81120b=⎡⎡10152813-19⎡⎡⎡12193625-723⎡⎡⎡246-305⎡⎡b=[1;3;5;7;8;11]应用领域matlab软件展开矩阵输出及各种基本运算。

二、实验目的:1.介绍矩阵的单位矩阵、提、减至、乘坐、逆等基本运算。

2.学习、掌握matlab软件的有关命令。

三、实验内容矩阵的转置、加、减、乘、逆等基本运算四、trained科学知识1、线性代数中的矩阵运算。

2、本实验所用的matlab命令提示信息:(1)、矩阵输入格式:a=[a11,a12;a21,a22];b=初始值:步长:终值;(2)、谋a的单位矩阵:a';(3)、求a加b:a+b;(4)、谋a减至b:a-b;(5)、求数k乘以a:k*a;(6)、谋a除以b:a*b;(7)、求a的行列式:det(a);(8)、谋a的秩:rank(a);(9)、求a的逆:inv(a)或(a)-1;(10)、b右乘坐a的逆:b/a;(11)、b左乘a的逆:a\b;(12)、谋a的特征值:eig(a);(13)、求a的特征向量矩阵x及特征值矩阵d:[x,d]=eig(a);(14)、谋方阵a的n次幂:a^n;(15)、a与b的对应元素相乘:a.*b;五、实验内容与建议1、输入矩阵a,b,b;2、作x21=a'、x22=a+b、x23=a-b、x24=ab;3、作x31=|a|、x32=|b|;4、作x41=r(a)、x42=r(b);Loupe矩阵a,b的秩5、作x5=a-1;6、谋满足用户方程ax=b的求解向量x7;7、作x5的特征值x8、x5的特征向量矩阵v及特征值矩阵d;8、作x9=b2(a-1)2;9、创建从2开始公差为4的等差数列前15项构成的行向量x10。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学实验矩阵的运算数学实验报告学院:班级:学号:姓名:完成日期:实验四矩阵的运算(一)投入产出分析一.实验目的1.理解投入产出分析中的基本概念和模型;2.从数学和投入产出理论的角度,理解矩阵乘法、逆矩阵等的含义。

二.问题描述设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、部需求、初始投入等如表1-1所示表1-1国民经济三产部门之间的投入产出表根据表回答下列问题:(1)如果农业、制造业、服务业外部需求为50,150,100,问三个部门总产出分别为多少?(2)如果三个部门的外部需求分别增加一个单位,问他们的总产出分别为多少?三.实验过程1.问题(1)的求解(1)求直接消耗矩阵A根据直接消耗的计算公式a ij=x ij/x j和各部门中间需求;x n a n运行如下代码可得直接消耗系数表。

X=[15 20 30;30 10 45;20 60 0];X_colsum=[100 200 150];X_rep=repmat(X_colsum,3,1)A=X./ X_rep运行结果为:A =0.1500 0.1000 0.20000.3000 0.0500 0.30000.2000 0.3000 0(2)求解根据公式X=(I-A)-1y在运行如下代码y=[50;150;100];n=size(y,1);W=eye(n)-A;X=W\y运行结果为X =139.2801267.6056208.1377即三个部门的总产出分别为139.2801,267.6056, 208.1377亿元。

2.问题2求解设外部需求由y增加至y+Δy,则产出x的增量为Δx=(I-A)-1(y+Δy)- (I-A)-1y=(I-A)-1Δy利用问题(1)求得的I-A矩阵,再运行如下的MATLAB代码可得问题的结果:dx=inv(W)运行结果:dx =1.3459 0.2504 0.34430.5634 1.2676 0.49300.4382 0.4304 1.2167根据上述结果可知,当农业的外部需求增加1个单位时,农业、制造业、服务业的总产出分别增加1.3459,0.5634,0.4382个单位;当制造业的外部需求增加1个单位时,农业、制造业、服务业的总产出分别增加0.2504,1.2676,0.4304个单位;当服务业的外部需求增加1个单位时,农业、制造业、服务业的总产出分别增加0.3443,0.4930,1.2167个单位。

四.实验总结投入产出的理论依据,主要是矩阵运算和逆矩阵,投入和产出分析在编制和修订宏观计划、开展紧急预测和项目效果预测、研究价格水平及其变动影响,研究产业结构及其关联程度,投资对消费的带动分析等方面对会有很重要的应用。

(二)Hill密码的加密、解密与破译一、实验目的1. 复习线性代数, 矩阵, 线性空间与线性变换等概念和运算.2. 熟悉Hill密码体制的加密, 解密和破译过程.3. Hill密码体制的加密, 解密和破译过程的MATLAB编程实践.二、问题描述对明文为“Mr Hill made this code”,利运用不同的密匙矩阵加密矩阵,实现Hill加密与解密过程。

三.实验过程(1)模型建立于问题分析简单起见,为了使明文参与矩阵运算,建立如下表格2-1:表2-1 26个英文字母、空格、句号与数字之间的对应关系设明文为M=(m1, m2,…,m i)T,密匙矩阵为可逆的l x l的方阵,则经过线性变换得到密文C=E K(M)=(c1c2…cI)T,其中C1=(k11m1+ k12m2+…+ k1l m l)mod28,C2=(k21m1+ k22m2+…+ k2l m l)mod28,………….C l=(k l1m1+ k l2m2+…+ k ll m l)mod28,或写成矩阵形式C=(KM)mod28,其中C=(C1,C2,…,C l)T ,M=(m1,m2,…,m l)T,K=(k ij)lxl解密得明文M=(K-1C)mod28注意,明文、密文都是非负实数,故密匙矩阵K及其逆矩阵K-1的元素都应该是非负实数,不能是负整数、分数、或小数。

当密匙矩阵K的行列式的值等于+1或-1,则逆矩阵K-1的元素是整数。

若K-1的元素有负整数,再对矩阵K-1的所有元素加28的若干倍,再取模28,可保证矩阵K-1的所有元素为正整数。

密文解密后可得非负整数明文M,与原明文相同。

(2)加密对明文为“Mr Hill made this code。

”,按表2-1的规则映射为数集{13,18,0,8,9,12,12,0,13,1,4,5,0,20,8,9,19,0,3,15,4,5,27,0},假设将消息从左到右,每4个字符分为一组,并将对应的四个整数排列成4维的列向量,加密后仍为4维的列向量,其分量仍为整数,要发出的消息可写为一个矩阵:. 13 9 13 0 19 4M= 18 12 1 20 0 50 12 4 8 3 278 0 5 9 15 0为求出合适的密匙矩阵K1,在一个4x4阶矩阵中,任设二元函数的值为x,y,其余元素给出具体的非负整数值,并令其行列式的值的绝对值为1,可得一个二元一次或二元二次不定方程,可求其正整数解,如取:4 x 8 yK1 = 12 1 6 9 , I K1I=1,3 64 62 113 8利用如下的MATLAB代码可求得密匙矩阵K1的行列式:syms x y;K=[4,x,8,y;12,1,6,9;3,6,4,6;2,11,3,8];det_K=det(K)运行结果:det_K=-760-105*x+187*y可知二元一次方程为-760-150x+187y=1,即105x-187y=-761.下面利用辗转相除法求一整数解。

设u=x,v=-y,得105u+187v=-761对上式辗转相除:187=1x105+82105=1x82+2382=3x23+1313=1x10+310=3x3=13=3x3=0从而得到187 = 1 1 1 1 3 1 1 1 1 1 3 1 3 1 1105 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0= 187 57 1 = Q 1105 32 0 0 ,即1 = Q-1 187 = -32 57 1870 105 105 -187 105也即105x57+187x(-32)=1两边同时乘以-761,得105x(-43377)+187x24352=-761故u=-43377,v=24352为一个特解,从而u=-43377-187t,v=24352+105t,t为整数故而x=-43377-187t,y=-24532-105t,t为整数不妨取t=-232,可得x=7,y=8.从而密匙矩阵可取为4 7 8 8K1 = 12 1 6 93 64 62 113 8以上过程可采用如下的MATLAB代码实现;syms t;Q=[1 1;1 0]* [1 1;1 0]* [3 1;1 0]* [1 1;1 0]* [1 1;1 0]* [3 1;1 0]* [3 1;1 0]S=[187;105]Q*[1;0]Q_inv=inv(Q)uv0=[-761*Q_inv(1,2) -761*Q_inv(1,1)]gs=gcd(S(1),S(2));u=uv0(1)-S(1)/gs*t;v=uv0(2)+S(2)/gs*t;u0=uv0(1)-S(1)/gs*(-232);v0=uv0(2)+S(2)/gs*(-232);x0=u0,;y0=-v0;于是将要发出的信息乘以K1变成“密码”后发出:4 7 8 8 13 9 13 0 19 4(K1M)mod 28 = 12 1 6 9 18 12 1 200 53 64 6 0 12 4 8 3 272 113 8 8 0 5 9 15 018 20 19 24 24 15C= 22 24 2 9 17 1927 7 7 10 19 108 18 5 8 27 4对照表2-1可知接受者接到的密文是”rv.htxgrsbgexijhxqs.osjd”.(3)解密接收者收到信息”rv.htxgrsbgexijhxqs.osjd”后,运用事先约定的密匙矩阵K1的逆矩阵K-1解密,从密码中恢复明文,当K-1得元素出现负整数,则加上28的若干倍数,使它的元素全为非负整数,再取模28可得解密的密匙矩阵K2根据表2-1,反过来查表,即可得明文,解密正确。

给定密匙矩阵,利用如下代码可求得问题的解:M=[13 9 13 0 19 4;18 12 1 20 0 5;0 12 4 8 3 27; 8 0 5 9 15 0]; K1=[4 7 8 8; 12 1 6 9; 3 6 4 6;2 11 3 8];det(K1)C=mod(K1* M,28)K1_inv=inv(K1)K1_inv=round(K1_inv);K2=mod(K1_inv,28)M=mod(K2*C,28)ans =1.0000C =18 20 19 24 24 1522 24 2 9 17 1927 7 7 10 19 108 18 5 8 27 4K1_inv =-112.0000 -34.0000 371.0000 -128.0000-105.0000 -32.0000 348.0000 -120.0000-39.0000 -12.0000 130.0000 -45.0000187.0000 57.0000 -620.0000 214.0000K2 =0 22 7 127 24 12 2017 16 18 1119 1 24 18M =13 9 13 0 19 418 12 1 20 0 50 12 4 8 3 278 0 5 9 15 0此矩阵与原矩阵相符,解密成功。

现依照上面步骤取另一个可逆矩阵K2,来作为密匙为求出合适的密钥矩阵K2,在一个4*4阶的矩阵中,任设二元素的值为x,y,其余元素给出具体的非负整数数字,并令其行列式的值等于1或-1,可得一个二元一次或二元二次不定方程,可求其正整数解,如取1 x2 yK2 = 3 1 6 9 ,|K2|=1.3 64 62 73 8利用如下的代码可求得密钥矩阵K2行列式:syms x y;K=[1,x,2,y;3,1,6,9;3,6,4,6;2,7,3,8];det_K=det(K)运行结果:det_K =21*x - 23*y + 62可知二元一次方程为21x-23y+62=1,即21x+61=23y下面利用枚举法求一整数解,代码如下:x=1;while mod(21*x+61,23)~=0x=x+1;endxy=(21*x+61)/23运行结果:x =19y =20故密钥矩阵(发送者和接受者事先都知道的矩阵)可取为1 192 20K2= 3 1 6 93 64 62 73 8于是将要发出的信息(或矩阵)经乘以K2变成“密码”后发出:(K2 M)mod28= 11 9 0 16 17 1317 27 25 9 14 1127 7 7 10 19 1020 26 1 12 27 12=C对照表5-4可知接受者收到的密文是“kg.ti.gz ygapijlqns.mkjl”.3.解密接受者收到信息“kg.ti.gz ygapijlqns.mkjl”后,运用事先约定的密钥解密,即用K2-1= -112 -54 -271 54421 10 51 -10287 42 211 -423-23 -11 -56 112从密文中恢复明文。

相关文档
最新文档