数学实验矩阵的运算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矩阵的基本运算

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

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个单位。
矩阵的算术运算

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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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从密文中恢复明文。