收藏 分销(赏)

数学实验矩阵的运算.docx

上传人:pc****0 文档编号:6176580 上传时间:2024-11-29 格式:DOCX 页数:16 大小:146.56KB 下载积分:10 金币
下载 相关 举报
数学实验矩阵的运算.docx_第1页
第1页 / 共16页
数学实验矩阵的运算.docx_第2页
第2页 / 共16页


点击查看更多>>
资源描述
数学实验报告 学  院: 班  级: 学  号: 姓  名: 完成日期: 实验四 矩阵的运算 (一)投入产出分析 一.实验目的 1.理解投入产出分析中的基本概念和模型; 2.从数学和投入产出理论的角度,理解矩阵乘法、逆矩阵等的含义。 二.问题描述 设国民经济由农业、制造业和服务业三个部门构成,已知某年它们之间的投入产出关系、部需求、初始投入等如表1-1所示 表1-1国民经济三产部门之间的投入产出表 产出 农业 制造业 服务业 外部需求 总产出 投 入 农业 15 20 30 35 100 制造业 30 10 45 115 200 服务业 20 60 0 70 150 初始投入 35 110 75 总投入 100 200 150 根据表回答下列问题: (1)如果农业、制造业、服务业外部需求为50,150,100,问三个部门总产出分别为多少? (2)如果三个部门的外部需求分别增加一个单位,问他们的总产出分别为多少? 三.实验过程 1.问题(1)的求解 (1)求直接消耗矩阵A 根据直接消耗的计算公式 aij=xij/xj 和各部门中间需求; xnan 运行如下代码可得直接消耗系数表。 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.2000 0.3000 0.0500 0.3000 0.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.2801 267.6056 208.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.3443 0.5634 1.2676 0.4930 0.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: A B … Y Z 空格 句号 1 2 25 26 0 27 表2-1 26个英文字母、空格、句号与数字之间的对应关系 设明文为M=(m1, m2,…,mi)T,密匙矩阵为可逆的l x l的方阵,则经过线性变换得到密文C=EK(M)=(c1c2…cI)T,其中 C1=(k11m1+ k12m2+…+ k1lml)mod28, C2=(k21m1+ k22m2+…+ k2lml)mod28, …………. Cl=(kl1m1+ kl2m2+…+ kllml)mod28, 或写成矩阵形式 C=(KM)mod28, 其中 C=(C1,C2,…,Cl)T ,M=(m1,m2,…,ml)T, K=(kij)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 4 M= 18 12 1 20 0 5 0 12 4 8 3 27 8 0 5 9 15 0 为求出合适的密匙矩阵K1,在一个4x4阶矩阵中,任设二元函数的值为x,y,其余元素给出具体的非负整数值,并令其行列式的值的绝对值为1,可得一个二元一次或二元二次不定方程,可求其正整数解,如取: 4 x 8 y K1 = 12 1 6 9 , I K1I=1, 3 6 4 6 2 11 3 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+82 105=1x82+23 82=3x23+13 13=1x10+3 10=3x3=1 3=3x3=0 从而得到 187 = 1 1 1 1 3 1 1 1 1 1 3 1 3 1 1 105 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 = 187 57 1 = Q 1 105 32 0 0 , 即 1 = Q-1 187 = -32 57 187 0 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 8 K1 = 12 1 6 9 3 6 4 6 2 11 3 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 20 0 5 3 6 4 6 0 12 4 8 3 27 2 11 3 8 8 0 5 9 15 0 18 20 19 24 24 15 C= 22 24 2 9 17 19 27 7 7 10 19 10 8 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.0000 C = 18 20 19 24 24 15 22 24 2 9 17 19 27 7 7 10 19 10 8 18 5 8 27 4 K1_inv = -112.0000 -34.0000 371.0000 -128.0000 -105.0000 -32.0000 348.0000 -120.0000 -39.0000 -12.0000 130.0000 -45.0000 187.0000 57.0000 -620.0000 214.0000 K2 = 0 22 7 12 7 24 12 20 17 16 18 11 19 1 24 18 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 此矩阵与原矩阵相符,解密成功。 现依照上面步骤取另一个可逆矩阵K2,来作为密匙为求出合适的密钥矩阵K2,在一个4*4阶的矩阵中,任设二元素的值为x,y,其余元素给出具体的非负整数数字,并令其行列式的值等于1或-1,可得一个二元一次或二元二次不定方程,可求其正整数解,如取 1 x 2 y K2 = 3 1 6 9 ,|K2|=1. 3 6 4 6 2 7 3 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)~=0 x=x+1; end x y=(21*x+61)/23 运行结果: x = 19 y = 20 故密钥矩阵(发送者和接受者事先都知道的矩阵)可取为 1 19 2 20 K2= 3 1 6 9 3 6 4 6 2 7 3 8 于是将要发出的信息(或矩阵)经乘以K2变成“密码”后发出: (K2 M)mod28= 11 9 0 16 17 13 17 27 25 9 14 11 27 7 7 10 19 10 20 26 1 12 27 12 =C 对照表5-4可知接受者收到的密文是 “kg.ti.gz ygapijlqns.mkjl”. 3.解密 接受者收到信息“kg.ti.gz ygapijlqns.mkjl”后,运用事先约定的密钥解密,即用 K2-1= -112 -54 -271 544 21 10 51 -102 87 42 211 -423 -23 -11 -56 112 从密文中恢复明文。由于K2-1的元素出现负整数,故把它的每一个元素加上28的若干倍数,使它的元素全为非负整数,再取模28.即取 K= 0 2 9 12 21 10 23 10 3 14 15 25 5 17 0 0 13 9 13 0 19 4 (KC)mod 28= 18 12 1 20 0 5 =M. 0 12 4 8 3 27 8 0 5 9 15 0 以上可有以下代码实现 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=[1 19 2 20;3 1 6 9;3 6 4 6;2 7 3 8]; det(K1) C=mod(K1* M,28) K1_inv=inv(K1) K1_inv=round(K1_inv); K=mod(K1_inv,28) M=mod(K2*C,28) 运行结果 ans = 1.000 C = 11 9 0 16 17 13 17 27 25 9 14 11 27 7 7 10 19 10 20 26 1 12 27 12 K1_inv = -112 -54 -271 544 21 10 51 -102 87 42 211 -423 -23 -11 -56 112 K = 0 2 9 12 21 10 23 10 3 14 15 25 5 17 0 0 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 根据表5-4,反过来查表,即可知得明文“mr hill made this code.”解密正确。 四.实验总结 Hill密码是基于矩阵的线性变换而设计的一种密码。Hill密码的思想比较简单,其最大的好处是隐藏了字符的频率信息,使得传统的通过字频来破译密文的方法失效。从实验过程可以看出,利用矩阵及其运算可以方便的描述加密和解密过程,而MATLAB的强大矩阵运算功能使得Hill密码的实现变得简单。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服