520 likes | 624 Views
数 学 实 验. —— 用计算机解决和发现数学问题 数值模拟 , 符号计算 , 符号推理. 第五讲 矩阵计算及其应用. 【 主要内容 】 矩阵计算的基本函数和矩阵应用的数学试验 . 【 主要目的 】 学会用 Mathematic 软件完成矩阵的计算 , 了解矩阵应用问题的解决方法. 矩阵生成的有关函数. 1. Table 可以生成多层表 , 一层表是行向量 ( 行矩阵 ), 二层表是矩阵 . Table[i^2,{i,10}] {1,4,9,16,25,36,49,64,81,100}
E N D
数 学 实 验 ——用计算机解决和发现数学问题 数值模拟,符号计算,符号推理
第五讲 矩阵计算及其应用 【主要内容】矩阵计算的基本函数和矩阵应用的数学试验. 【主要目的】学会用Mathematic软件完成矩阵的计算,了解矩阵应用问题的解决方法.
矩阵生成的有关函数 1. Table可以生成多层表,一层表是行向量(行矩阵),二层表是矩阵. Table[i^2,{i,10}] {1,4,9,16,25,36,49,64,81,100} TableForm[Table[Binomial[i,j],{i,0,8},{j,0,8}]]
矩阵生成的有关函数 2. Array具有和Table相似的用途. Array[a,3] {a[1],a[2],a[3]} Array[a,{2,3},0] {{a[0,0],a[0,1],a[0,2]},{a[1,0],a[1,1],a[1,2]}} Array[a,{2,3}] {{a[1,1],a[1,2],a[1,3]},{a[2,1],a[2,2],a[2,3]}}
矩阵生成的有关函数 3. DiagonalMatrix 生成对角矩阵 L1={1,-2,3,4};A=DiagonalMatrix[L1] {{1,0,0,0},{0,-2,0,0},{0,0,3,0},{0,0,0,4}} 4. IdentityMatrix[3] {{1,0,0},{0,1,0},{0,0,1}}
矩阵生成的有关函数 5. RandomSquare函数可以自动生成一个随机方阵. Unprotect[RandomSquare]; Clear[RandomSquare]; RandomSquare[dim_Integer:3,max_:5,detmax_Integer:3,del_List:{0}]:=Module[{t,tt,i,j},tt=Table[m,{m,-detmax,detmax}]~Complement~del; t=Table[Random[Integer,{-max,max}],{dim},{dim}]; While[FreeQ[tt,Det[t]],i=Random[Integer,{1,dim}]; j=Random[Integer,{1,dim}]; t[[i,j]]=Random[Integer,{-max,max}]]; t]/;Positive[dim]&&NumberQ[max]&&Positive[max]&&Positive[detmax] Protect[RandomSquare]; RandomSquare[3] {{5,4,2},{2,5,4},{3,-2,-3}}
矩阵生成的有关函数 6. LinearAlgebra扩展程序中包括: MatrixManipulation,Orthogonalization,Tridiagonal等. <<LinearAlgebra`MatrixManipulation` MatrixPlot[Table[Random[Integer],{50},{50}], MaxMatrixSize->20,ColorFunction->(GrayLevel[1-#]&), ColorFunctionScaling->True]
矩阵运算 1. 矩阵加法 (MatrixForm有三种使用方法) A={{5,-2,1},{3,4,-1}};B={{1,x},{a,-1}}; {MatrixForm@B,MatrixForm[B+IdentityMatrix[2]]} x+A//MatrixForm
矩阵运算 2. 数和矩阵的乘法、矩阵与矩阵的的乘法 M=Array[a,{2,2}]; k M//MatrixForm A={{1,2},{3,4}};A+M//MatrixForm A*M//MatrixForm
A.M//MatrixForm MatrixPower[A,5]//MatrixForm A.A.A.A.A//MatrixForm A^5//MatrixForm
矩阵运算 3. 矩阵的转置和求逆 M={{a,b},{c,d}}; Transpose@M//MatrixForm Inverse@M//MatrixForm
矩阵运算 4. 初等行变换化矩阵为最简阶梯形
矩阵运算 5. 方阵的特征值与特征向量 Eigenvalues[{{2.3, 4.5}, {6.7, -1.2}} ] {6.31303,-5.21303} Eigenvectors[{{2.3, 4.5}, {6.7, -1.2}} ] {{0.746335,0.66557},{-0.513839,0.857886}} Eigenvalues[{{23/10,45/10},{67/10,-12/10}}]
数学试验 1 循环矩阵的性质 1. 写出循环矩阵 按Shift+Ctrl+C,调出矩阵模板
数学试验 1 循环矩阵的性质 2. 循环矩阵的逆矩阵还是循环矩阵吗? Inverse[A]//MatrixForm 结论:可逆循环矩阵是循环矩阵
数学试验 1 循环矩阵的性质 3. 循环矩阵的方幂仍是循环矩阵吗? MatrixPower[A,2]//MatrixForm 结论:循环矩阵的方幂是循环矩阵
数学试验 1 循环矩阵的性质 作业: 1. 随机生成可逆循环矩阵,求逆.(Y) 2. 随机生成两个循环矩阵,求其和.(Y) 3. 随机生成两个循环矩阵,求其乘积.(N) 4. 循环矩阵的和是循环矩阵吗?循环矩阵的积是循环矩阵吗?你还能发现和研究循环矩阵其它的性质吗 ? 5. 能证明你所得到的结论吗?(先证幂,再证逆)
数学试验 2 航线连接问题 1. 一个航空公司为8个城市服务的航空路线如下图
数学试验 2 航线连接问题 从城市i到城市j有直接的航线,则(i,j)元为 1,否则为0(邻接矩阵),得到下面的矩阵
数学试验 2 航线连接问题 2. 用恰好两个航班有可能从C2到达C4吗? 3. 用恰好两个航班有可能从C5到达C1吗? 4. 求A2 , 并说明它与上面的结论有什么联系? MatrixPower[A,2]//MatrixForm
数学试验 2 航线连接问题 5. 求 A+A2+ A3, 并说明A+A2+ A3的意义 (A+MatrixPower[A,2]+MatrixPower[A,3])//MatrixForm
数学试验 3生物群体模型 问题:令Fi是在时刻某地区狐狸的数目,Ci 是同一地区鸡的数目.假设在没有狐狸骚扰 的情况下,鸡的出生率高于死亡率,使得 Ci+1= 1.2Ci .而在没有鸡供狐狸食用的情况下, 狐狸的死亡率超过出生率,使得Fi+1 = 0.6Fi .
数学试验 3生物群体模型 实际情况为狐狸和鸡的数目是相互制约的. 我们假定对i=1,2,…Fi= 0.6Fi-1+0.5Ci-1.另一方面,由于狐狸的侵袭,鸡的群体必有损耗,假定狐狸对鸡的捕杀率为k,于是Ci = 1.2Ci-1-kFi-1.
数学试验 3生物群体模型 令 从而 F0和C0为开始观察时狐狸和鸡的数目. 假定F0=100,C0=1000
数学试验 3生物群体模型 k =0.1的情形 n=99; A={{3/5,1/2},{-1/10,6/5}}; a=Transpose[{{100,1000}}]; For[i=1,i<n+1,Print[IntegerPart[ MatrixPower[A,i].a]];i++];
数学试验 3生物群体模型 {{560},{1190}} {{931},{1372}} {{1244},{1553}} {{1523},{1739}} {{1783},{1935}} {{2037},{2143}} {{2294},{2368}} {{2561},{2612}} {{2843},{2879}} {{3145},{3170}} {{3472},{3490}} {{3829},{3841}} {{4218},{4226}} {{4644},{4650}} {{5111},{5116}} {{5625},{5628}} {{6189},{6191}} {{6809},{6810}} {{7490},{7491}} {{8240},{8241}} {{9064},{9065}} {{9971},{9971}} {{10968},{10968}}{{12065},{12065}}
数学试验 3生物群体模型 {{13272},{13272}} {{14599},{14599}} {{16059},{16059}} {{17665},{17665}} {{19432},{19432}} {{21375},{21375}} {{23513},{23513}} {{25864},{25864}} {{28450},{28450}} {{31295},{31295}} {{34425},{34425}} {{37868},{37868}} {{41654},{41654}} {{45820},{45820}} {{50402},{50402}} {{55442},{55442}} {{60986},{60986}} {{67085},{67085}} {{73794},{73794}} {{81173},{81173}} {{89290},{89290}} {{98219},{98219}} {{108041},{108041}} {{118846},{118846}} {{130730},{130730}} {{143803},{143803}} {{158184},{158184}} {{174002},{174002}} {{191402},{191402}} {{210543},{210543}} {{231597},{231597}}
数学试验 3生物群体模型 {{254757},{254757}} {{280232},{280232}} {{308256},{308256}} {{339081},{339081}} {{372990},{372990}} {{410289},{410289}} {{451317},{451317}} {{496449},{496449}} {{546094},{546094}} {{600704},{600704}} {{660774},{660774}} {{726852},{726852}} {{799537},{799537}} {{879490},{879490}} {{967440},{967440}} {{1064184},{1064184}} {{1170602},{1170602}} {{1287662},{1287662}} {{1416428},{1416428}} {{1558071},{1558071}} {{1713879},{1713879}} {{1885266},{1885266}} {{2073793},{2073793}} {{2281172},{2281172}}
数学试验 3生物群体模型 {{2509290},{2509290}} {{2760219},{2760219}} {{3036241},{3036241}} {{3339865},{3339865}} {{3673851},{3673851}} {{4041237},{4041237}} {{4445360},{4445360}} {{4889896},{4889896}} {{5378886},{5378886}} {{5916775},{5916775}} {{6508452},{6508452}} {{7159297},{7159297}} {{7875227},{7875227}} {{8662750},{8662750}} {{9529025},{9529025}} {{10481928},{10481928}} {{11530120},{11530120}} {{12683133},{12683133}} {{13951446},{13951446}} {{15346591},{15346591}}
数学试验 3生物群体模型 k=0.18的情形 n=104; A={{3/5,1/2},{-9/50,6/5}}; a=Transpose[{{100,1000}}]; For[i=1,i<n+1,Print[IntegerPart[ MatrixPower[A,i].a]];i++];
数学试验 3生物群体模型 {{560},{1182}} {{927},{1317}} {{1215},{1414}} {{1436},{1478}} {{1600},{1515}} {{1718},{1530}} {{1796},{1527}} {{1841},{1509}} {{1859},{1479}} {{1855},{1441}} {{1834},{1395}} {{1798},{1344}} {{1751},{1289}} {{1695},{1232}} {{1633},{1173}} {{1566},{1114}} {{1497},{1055}} {{1425},{996}} {{1353},{939}} {{1281},{883}} {{1210},{829}} {{1141},{777}} {{1073},{727}} {{1007},{679}} {{944},{634}} {{883},{590}} {{825},{550}} {{770},{511}} {{718},{475}} {{668},{440}}
数学试验 3生物群体模型 {{621},{408}} {{577},{378}} {{535},{350}} {{496},{324}} {{460},{299}} {{425},{276}} {{393},{255}} {{363},{235}} {{336},{217}} {{310},{200}} {{286},{184}} {{263},{169}} {{243},{155}} {{223},{143}} {{205},{131}} {{189},{121}} {{174},{111}} {{160},{102}} {{147},{93}} {{135},{85}} {{123},{78}} {{113},{72}} {{104},{66}} {{95},{60}} {{87},{55}} {{80},{50}} {{73},{46}} {{67},{42}} {{61},{38}} {{56},{35}} {{51},{32}} {{47},{29}} {{43},{27}} {{39},{24}} {{36},{22}} {{33},{20}}
数学试验 3生物群体模型 {{30},{18}} {{27},{17}} {{25},{15}} {{22},{14}} {{20},{13}} {{19},{11}} {{17},{10}} {{15},{9}} {{14},{9}} {{13},{8}} {{12},{7}} {{11},{6}} {{10},{6}} {{9},{5}} {{8},{5}} {{7},{4}} {{6},{4}} {{6},{3}} {{5},{3}} {{5},{3}} {{4},{2}} {{4},{2}} {{3},{2}} {{3},{2}} {{3},{2}} {{2},{1}} {{2},{1}} {{2},{1}} {{2},{1}} {{2},{1}} {{1},{1}} {{1},{1}} {{1},{0}} {{1},{0}} {{1},{0}} {{1},{0}} {{1},{0}} {{0},{0}}
数学试验 3生物群体模型 • 从上面两张表可以看出,若狐狸对鸡的捕杀率足够低(k=0.1),鸡的群体将无限发展,这使得狐狸的群体也无限发展;而捕杀率较大(k=0.18),鸡将被消灭,那么狐狸也将自行消灭. • 作业: 1.能否求的临界值(0.16)和能看到效果的观察次数? 2. 证明你的结论.
数学试验 4加密、解密与破译 1. HILL密码的加密与解密: (1) 假设要加密的明文是由26个字母所构成 (2) 将每个明文字母与 0 – 25 的一个数字建立 1–1对应关系,称为明文字母的表值
数学试验 4加密、解密与破译 (3) 选择一个加密矩阵 A(二阶非负整数值的矩阵) . 例如 (4) 将明文字母依次按每两个字母一组查出其表 值,得到一组二维向量
数学试验 4加密、解密与破译 (5) 通过加密矩阵得到 而 (6) 查向量 的字母表值,即得到密文 (7)利用加密矩阵的逆矩阵,由此得到明文
数学试验 4加密、解密与破译 2. 一个简单实例 明 文: Our marshal was shot 分 组: ou rm ar sh al wa ss ho tt(补充一字母) 对应向量:
数学试验 4加密、解密与破译 加 密:每个向量左乘加密矩阵 直接结果: 对26求模得到密文向量:
数学试验 4加密、解密与破译 密 文: ek rm kb ix yj yc ee ls hh 解 密:只要将 解密矩阵左乘 密文向量即可求得明文向量,从而查出明文 结 论: 使用Hill密码时的加密矩阵应该模26 可逆
数学试验 4加密、解密与破译 3. HILL密码的破译 关键是求得加密矩阵的逆—解密矩阵, 只要分析出两个明文向量(线性无关)与相应的密文向量.
数学试验 4加密、解密与破译 一个破译例子 甲方截获了一段密文: OJWPISWAZUXAUUISEABAUCRSIPL BHAAMMLPJJOTENH (1) 经分析这段密文是用HILL密码编译的, 且这段密文的字母UCRS依次代表了字母 TACO,若明文字母的表值如前,试破译这 密文的内容?
数学试验 4加密、解密与破译 关 系 其中 其中
数学试验 4加密、解密与破译 (2) 计算A-1 B=Mod[{{20,3},{1,15}}.Inverse[{{21,18}, {3,19}}, Modulus ->26] ,26] {{1,17},{0,9}}
数学试验 4加密、解密与破译 (3) 破 译 X={O,J,W,P,I,S,W,A,Z,U,X,A,U,U,I,S,E,A,B,A,U,C,R,S,I,P,L,B,H,A,A,M,M,L,P,J,J,O,T,E,N,H}//.{A->1,a->1,B->2,b->2,C->3,c->3,D->4,d->4,E->5,e->5,F->6,f->6,G->7,g->7,H->8,h->8,I->9,i->9,J->10,j->10,K->11,k->11,L->12,l->12,M->13,m->13,N->14,n->14,O->15,o->15,P->16,p->16,Q->17,q->17,R->18,r->18,S->19,s->19,T->20,t->20,U->21,u->21,V->22,v->22,W->23,w->23,X->24,x->24,Y->25,y->25,Z->0,z->0}
数学试验 4加密、解密与破译 {15,10,23,16,9,19,23,1,0,21,24,1,21,21,9,19,5,1,2,1,21,3,18,19,9,16,12,2,8,1,1,13,13,12,16,10,10,15,20,5,14,8} 求密文 Clear[Y]; Y=Table[f,{i,2},{j,Length[X]/2}]; For[i=1,i<Length[X]/2+1,Y[[1,i]]=X[[2i-1]];i++]; For[i=1,i<Length[X]/2+1,Y[[2,i]]=X[[2i]];i++]; Y
数学试验 4加密、解密与破译 {{15,23,9,23,0,24,21,9,5,2,21,18,9,12,8,1,13,16,10,20,14},{10,16,19,1,21,1,21,19,1,1,3,19,16,2,1,13,12,10,15,5,8}} 这就是密文向量. 下面求明文向量 Z=Mod[B.Y,26] {{3,9,20,14,19,15,14,20,22,19,20,3,21,20,25,14,9,4,5,1,20},{12,14,15,9,7,9,7,15,9,9,1,15,14,18,9,13,4,12,5,19,20}} 这是明文向量.
数学试验 4加密、解密与破译 把明文向量还原为明文. Flatten[Table[{Z[[1,i]],Z[[2,i]]},{i,Length[X]/2}]]//.{1->a,2->b,3->c,4->d,5->e,6->f,7->g,8->h,9->i,10->j,11->k,12->l,13->m,14->n,15->o,16->p,17->q,18->r,19->s,20->t,21->u,22->v,23->w,24->x,25->y,0->z} {c,l,v,n,t,o,n,v,s,g,o,v,n,g,t,o,v,v,s,v,t,a,c,o,u,n,t,r,y,v,n,m,v,d,d,l,e,e,a,s,t,t}
数学试验 4加密、解密与破译 由于26不是素数,有时候解是不惟一的,比如 2x=4 Mod26有两个解x=2, x=15.因此只能基本 确定有意义的词. {c,l,v,n,t,o,n,v,s,g,o,v,n,g,t,o,v,v,s,v,t,a,c,o,u,n,t,r,y,v,n,m,v,d,d,l,e,e,a,s,t,t} 明文:Clinton is going to visit a country in Middle East 作业:对加密所列举的例子用软件实现.