张量积和矩阵乘积的秩相同点和不同点是什么

张量与矩阵有什么区别?二阶张量就是一个矩... | 问答 | 问答 | 果壳网 科技有意思
张量与矩阵有什么区别?二阶张量就是一个矩阵吗?
理论物理博士,科学松鼠会成员
把N个数写在一个括号里并不等于一个矢量,同理,把N^2个数写在一个方阵里并不等于一个二阶张量。满足一定变换法则的数组才可以称为一个矢量,(例如,转动时模保持不变;洛伦兹不变等等)同理,满足一定变换法则的方阵才可以称为一个二阶张量。(同上)详情见徐一鸿《Einstein Gravity in a Nutshell》
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:矩阵张量积数据加密的理论与实现_硕士论文_学位论文
> 优秀研究生学位论文题录展示
矩阵张量积数据加密的理论与实现
关键词: &&&
类 型: 硕士论文
年 份: 2010年
下 载: 24次
引 用: 0次
随着计算机网络技术的飞速发展和计算机网络的广泛应用,数据和信息的安全问题变得日益突出,成为国内外学者的热门研究对象。信息安全的发展是以研究为基础的,如信息加密数字签名、数字印鉴、身份鉴别等,因此密码学是近年来计算机科学研究较活跃的领域,大量的密码加密新技术不断涌现,混沌密码学也得到了快速发展。混沌密码学是作者在研究生期间研究的方向之一,在本文中简要介绍了作者关于混沌密码算法在图像加密中的应用的研究。主要设计了一种基于一维混沌系统和三维混沌系统相结合的加密密钥产生方案,该方案具有良好的安全性。通过对图像每一个像素点的加密实验,该混沌加密算法具有很好的加密性能,解密速度快且看不出原图像的任何信息。加密算法是基于矩阵计算的复杂性和高阶矩阵求其可逆矩阵的难解性的算法,具有很好的加密性能和安全性能。作者对矩阵张量积加密方案进行了大量研究,局部改善了矩阵张量积加密方案性能,提出了基于数据共享的密钥生成方案,提高了矩阵张量积加密算法的加解密速度。论文的绪论部分重点介绍在线/离线密码学、可证安全性密码学、混沌密码学、圆锥曲线密码学等密码学研究一些新近进展。在论文的正文部分,介绍了矩阵张量积的概念及与加密相关的性质,根据这些性质作者论述了矩阵张量积加密方案及可行性,然后并对加密系统的密钥产生、密钥修改、密钥删除等密钥管理进行相关介绍,在此基础上提出了本系统的密钥管理方案,大大地提高了系统的安全性能。密钥的产生方案是作者本文的创新点之一,提出了一种基于数据共享的密钥生成方案。本文的加密矩阵为一个高阶矩阵,它是一些小矩阵的张量积,解密矩阵是高阶矩阵的可逆矩阵,这两个矩阵虽然是不同的矩阵,但由于其相互可逆,因而可以找出它们一些共享的数据:通过记录小矩阵作张量积的运算的顺序可立刻知道可逆矩阵的生成顺序,根据矩阵相关理论,生成一个二阶、三阶矩阵可立刻求得其可逆矩阵。因此,在生成加密矩阵的同时,可在服务器立刻生成解密矩阵,这样既提高了加密解密的速度也保障了密钥的安全。最后,按照软件工程的规范对本文加密系统客户端和服务器的功能需求和性能需求进行了详细的分析,明确了系统的功能,并对矩阵张量积加密系统设计了在C/S模式下加密过程的演示系统。
摘要&&3-4ABSTRACT&&4-6本文结构&&6-7目录&&7-9第一章 绪论&&9-13&&1.1 课题研究背景&&9&&1.2 国内外研究现状&&9-10&&1.3 课题研究的意义&&10-11&&1.4 最新成果&&11-13第二章 混沌密码学介绍&&13-17&&2.1 混沌映射介绍&&13-14&&2.2 三维混沌系统介绍&&14&&2.3 算法原理&&14-15&&2.4 算法优点&&15-17第三章 简介&&17-22&&3.1 常用符号&&17&&3.2 诱导线性映射的矩阵表示与矩阵的Kronecker 的乘积&&17-19&&3.3 矩阵张量积的性质&&19-22第四章 基于矩阵张量积的加密方案&&22-26&&4.1 张量积加密方案&&22-23&&4.2 加密矩阵的构造&&23-26第五章 密钥的生成与管理&&26-31&&5.1 密钥的构成&&26-28&&5.2 密钥的配制&&28-29&&5.3 密钥的管理&&29-31&&&&5.3.1 密钥的产生&&29&&&&5.3.2 密钥的存储&&29-30&&&&5.3.3 密钥分配&&30&&&&5.3.4 密钥的更新&&30&&&&5.3.5 密钥的吊销&&30-31第六章 Microsoft.NET 概述&&31-36&&6.1 什么是NET&&31&&6.2 Microsoft.NET 平台的重要意义&&31&&6.3 NET Framework 架构&&31-33&&&&6.3.1 公共语言运行时&&32&&&&6.3.2.N ET Framework 类库&&32&&&&6.3.3 ADO.NET&&32-33&&&&6.3.4 C#简介&&33&&6.4 Windows Forms 简介&&33-36&&&&6.4.1 Windows Forms 简介&&33-34&&&&6.4.2 创建Windows Forms 应用程序项目&&34&&&&6.4.3 向项目添加窗体&&34&&&&6.4.4 修改窗体属性&&34&&&&6.4.5 继承窗体&&34-36第七章 系统需求分析与设计&&36-48&&7.1 系统的主要功能需求&&36-38&&&&7.1.1 服务器的主要功能需求&&37&&&&7.1.2 客户端的主要功能需求&&37-38&&7.2 系统的性能需求&&38&&7.3 系统的运行需求&&38-39&&&&7.3.1 系统软件环境&&38&&&&7.3.2 系统硬件环境&&38-39&&7.4 系统的数据需求&&39&&7.5 系统的总体设计&&39-48&&&&7.5.1 系统架构设计&&39-40&&&&7.5.2 软件结构设计原则&&40-41&&&&7.5.3 软件结构设计内容&&41-42&&&&7.5.4 数据库设计&&42-48第八章 系统的实现&&48-70&&8.1 系统通信的实现&&48-49&&&&8.1.1 利用Socket 建立服务器程序&&48-49&&&&8.1.2 利用socket 建立客户端程序&&49&&8.2 服务器端和客户端接受不同命令的实现&&49-51&&&&8.2.1 服务器端可接受的命令&&49-50&&&&8.2.2 客户端可接受的命令&&50-51&&8.3 服务器与客户端运行界面&&51&&8.4 服务器与客户端功能实现&&51-65&&&&8.4.1 服务器功能的现实&&51-59&&&&8.4.2 客户端功能的实现&&59-65&&8.5 实验结果与分析&&65-70&&&&8.5.1 客户端与服务器之间通信功能的运行结果&&65-67&&&&8.5.2 服务器管理功能的运行结果&&67-68&&&&8.5.3 文件加密解密结果及分析&&68-70第九章 总结与展望&&70-72&&9.1 全文总结&&70&&9.2 密码学展望&&70-72参考文献&&72-75致谢&&75-76在读期间公开发表论文及科研情况&&76
> 工业技术 >
& 2012 www.xueweilunwen.com矩阵与张量运算&Wolfram 语言参考资料
旧版教程
在 Mathematica 的后续版本中引入了与本教程内容相关的附加功能. 最新信息请见.
这一教程将对 Mathematica 所提供的用于构造和操控矩阵、向量和张量的函数进行评述. 它着重介绍 Mathematica 的专用函数,并使用矩阵作为例子. 然而,所有函数都是一般的,同样适用于向量和张量.构造矩阵在 Mathematica 中矩阵用列表表示. 它们可以直接用所提供给列表的 {
} 符号进行输入. 这里是一个矩阵的例子;默认时,矩阵的显示带有列表符号.
Mathematica 提供了许多构造矩阵的方式.
[f,{i,m},{j,n}]建立一个 mn 矩阵,其中 f 是 i 和
j 的函数,它给出第 i,j 项的值
[f,{m,n}]建立一个 mn 矩阵,其中第 i,j 项是 f[i,j]
[list]建立一个对角矩阵,对角线上是 list 的元素
[n]建立一个 nn 单位阵
[val,{m,n}]]建立一个 mn 矩阵,其中每一个元素都是 val
[{0,val},{m,n}]]建立一个各项随机产生的 mn 矩阵
[[{{i1,j1}-&v1,{i2,j2}-&v2,…},{m,n}]]
建立一个 mn 矩阵,其中在位置{ik,jk}处的值为非零值 νk
当没有内置函数来生成您的矩阵时,函数
对于生成矩阵尤其重要. Mathematica 文档包含更多关于
的信息. 这个例子中构建了一个 33 矩阵.
将该矩阵以二维形式显示.
Out[11]//MatrixForm=
在 Mathematica 中构建矩阵的另一种方式是通过
命令. 这里用该命令建立一个33 矩阵.
Mathematica 有一些建立某些专门矩阵的函数. 这里建立了单位矩阵.
注意生成的单位矩阵是一个整数矩阵. 如果想要进行关于浮点数的计算,使用包含浮点项的矩阵可能会很有利;这一点在&&中有更详细地介绍. 如果想要以整数矩阵(例如先前生成的单位矩阵等)开始,通过函数
可以将其转换为浮点矩阵. 下面将说明这一点.
这里构建了一个对角矩阵.
在这个例子中,元素被放置在第一个对角线上. 结果通过
显示.
Out[16]//MatrixForm=
这里生成了一个元素均Ŕ55矩阵.
这里建成了一ʹ阵,其中各个元素均是范围(5之间的伪随机实数.
这里建成了一ʹ阵,其中各个元素均是范围߸5之间的伪随机整数.
这里建成了一ʹ阵,并填入两个非零值.
表达式在&&一节中介绍.
[{},{n,n}]一个零矩阵
[{i_,i_}-&1,{n,n}]一个 nn 单位矩阵
[{i_,j_}/;i&=j-&1,{n,n}]
一个下三角矩阵
通过
构建特殊类型的矩阵.这里设置了一个一般意义的下三角矩阵.
Out[21]//MatrixForm=
能够将文件读入矩阵的函数在矩阵的&& 一节中介绍.特殊矩阵Mathematica 包含许多特殊矩阵的定义.
[n]创建一个 nn Hilbert 矩阵,其中元素通过 1/(i+j-1) 给出
[{m,n}]创建一个 mn Hilbert 矩阵
[n]创建一个 nn Hankel 矩阵,其中第一列通过1, 2, …, n 给出,且主反对角线下方的各元素均为零
[list]创建一个 Hankel 矩阵,其中第一列通过 list 给出, 且主反对角线下方的各元素均为零
[col,row]创建一个 Hankel 矩阵,其中第一列通过列表 col 给出,最后一行通过列表 row 给出
特殊矩阵. 这是一个24 Hilbert 矩阵.
Out[22]//MatrixForm=
Hankel 矩阵的元素可以以列表形式给出.
Out[23]//MatrixForm=
Hankel 矩阵可以通过给出最后一行来以非零值填充. 这也允许非方矩阵的生成. 注意第一列的最后一个元素与最后一行的第一个元素必定相同.
Out[24]//MatrixForm=
结构操作这些操作全部与矩阵结构有关. 这一节中所介绍的许多技术可以应用于 Mathematica 表达式,并非矩阵专用.获得矩阵的一部分使用 Mathematica 函数
可以直接提取矩阵的元素、行或列. 通常
可以使用[[ ]] 符号进行输入.
m[[i,j]]第 i,j 项
m[[i]]第 i
m[[i;;i]]i 至
j 行
m[[,i]]第 i
m[[,i;;j]]i 至
j 列
m[[{i1,…,ir},{j1,…,js}]]rs 子矩阵,其中元素的行标为 ik, 列标为 jk
[m,]m 的对角元素列表
得到矩阵某一部分的途径. 定义下面的矩阵.
Out[26]//MatrixForm=
这里得到了第一行中的第二个元素.
得到第行.
通过
指定所有行也可以得到一列.
负指标用于指矩阵的结束. 下面获取最后一行的最后一个元素.
可以使用;;得到矩阵的一定范围. 这里得到了第二至第四行.
这里得到了了第二至第四列.
也可以给出一个梯度. 这里将矩阵隔列给出.
函数
作用于矩阵的对角线元素. 该单参数形式将这些值相加.
也可取一个函数作为第二个参数应用于对角线元素. 如果使用 ,将返回对角线元素.
应该注意到这些用于矩阵部分提取的命令适用于任何 Mathematica 表达式.获得多个部分通过使用指标列表可以提取多个元素. 这通过下面的样本矩阵说明.
Out[37]//MatrixForm=
下面得到第二行的第一和第三个元素.
下面得到第二行和第四行.
下面得到第二行和第四行的第一个和第三个元素.
设置矩阵的部分使用任务左方的 Mathematica 函数
可以设置矩阵的元素、行和列从而直接更新矩阵.
m={{a11,a12,…},{a21,a22,…},…}指定 m 为一个矩阵
m[[i,j]]=v重新设置元素{i,j} 为 v
m[[i]]=v重新设置行 i 的全部元素为 v
m[[i]]={v1,v2,…}重新设置行 i 的全部元素为{v1,v2,…}
m[[,j]]=v重新设置列 j 的全部元素为 v
m[[,j]]={v1,v2,…}重新设置列 j 的全部元素为{v1,v2,…}
重置部分矩阵. 这是一ʹ阵.
Out[42]//MatrixForm=
可以使用任务左方的函数
来更新部分矩阵.设置第三行的第三个元素.
Out[44]//MatrixForm=
设置第二行使之含有特殊值.
Out[46]//MatrixForm=
设置第二列.
Out[48]//MatrixForm=
可以使用负指标指示矩阵的结束. 下面的例子设置了最后一行的最后一个元素.
Out[50]//MatrixForm=
也可以使用范围语法设置部分矩阵. 这里将隔行元素设置为z.
Out[52]//MatrixForm=
设置多个部分通过使用指标列表可以设置多个元素. 这通过下面的样本矩阵说明.
Out[54]//MatrixForm=
下面设置第二行的第一和第三个元素.
Out[56]//MatrixForm=
如果该设置命令的右方是一个列表,并且列表中元素的个数与要设置的元素个数一致,则各元素按次序逐个设置. 因此,下例中第二行的第一个和第三个元素被给定了两个不同的值.
Out[58]//MatrixForm=
下面设置第二行和第四行.
Out[60]//MatrixForm=
第二行和第四行的值不同.
Out[62]//MatrixForm=
设置第二行和第四行的第一个和第三个元素.
Out[65]//MatrixForm=
下面分别为第二行和第四行的第一个和第三个元素赋上不同的值.
Out[67]//MatrixForm=
提取子矩阵范围语法对于提取子矩阵是非常有用的.
m[[i0;;i1,j0;;j1]]提取行 i0 至 i1 及列 j0 至 j1 组成的子矩阵
m[[i0;;i1]]提取行 i0 至 i1 组成的子矩阵
m[[,j0;;j1]]提取列 j0 至 j1 组成的子矩阵
提取子矩阵.
Out[69]//MatrixForm=
提取 m2,1 至 m3,2,组成子矩阵.
Out[70]//MatrixForm=
提取ċ3组成的子矩阵.
Out[71]//MatrixForm=
提取ċ4组成的子矩阵.
Out[72]//MatrixForm=
可使用负指标从后向前计数.这里返回的矩阵中第一列和最后一列被除掉了.
Out[73]//MatrixForm=
删除行与列可以使用
进行行或列的删除.
[m,{i0,i1}]删除行 i0 至 i1
[m,{},{j0,j1}]删除列 j0 至 j1
[m,{i0,i1},{j0,j1}]删除行 i0 至 i1以及列 j0 至 j1
删除行与列.
Out[75]//MatrixForm=
这里去掉了ċ4.
Out[76]//MatrixForm=
这里去掉了ċ4.
Out[77]//MatrixForm=
这个例子中,ʄ3以及ġ2和3 都被删除.
Out[78]//MatrixForm=
插入行与列可以使用
进行行或列的插入.
[m,r,i]在矩阵 m 的位置 i 处插入行 r
插入一行.
Out[80]//MatrixForm=
在ͼ之前插入一行.
Out[81]//MatrixForm=
如果想要插入一列,则必须转置矩阵,将该列作为行插入,然后再次转置矩阵. 这里在之前插入一列.
Out[82]//MatrixForm=
扩展矩阵可以通过
填充矩阵来增大其尺寸.
将元素添加到矩阵的左端.
Out[84]//MatrixForm=
将元素添加到矩阵的右端.
Out[85]//MatrixForm=
填充函数的一个重要用途是进行矩阵的复制和平铺. 在这个例子中,输入矩阵被扩展,各行被复制两次,各列被复制三次.
Out[88]//MatrixForm=
含有一系列完全通用的额外功能,因此对于任意阶张量也有效. 这些在 Mathematica 文档中介绍.转置元素的转置是一个一般的矩阵操作.
Out[90]//MatrixForm=
按照指定的指标进行元素的互换.
Out[92]//MatrixForm=
如果要计算一个矩阵的共轭转置,则使用函数 .
如果一个矩阵与其共轭转置相同,则该矩阵被称作 Hermitian.
也可以使用函数
进行测试.
元素的轮换另一个结构操作是在指标内部轮换元素. 这可以通过函数
完成.
Out[98]//MatrixForm=
第一层向左轮换一步,这作用于各行.
Out[99]//MatrixForm=
第二层向左轮换一步,这作用于各列.
Out[100]//MatrixForm=
向相反方向轮换各列.
Out[101]//MatrixForm=
矩阵的测试Mathematica 提供了一系列用于测试矩阵及提取尺寸信息的函数.
[expr]如果 expr 是矩阵的形式,则给出 ,否则给出
[expr]向量或矩阵的维数列表
mi==mj比较两个矩阵中元素的等价性
用于测试向量、矩阵和数组结构的函数. 如果想要测试一个表达式是否是矩阵,可以使用 .
整ϕ是一个矩阵.
一个矩阵在每个维度上必须具有相等的长度.
有一个第二参数可选,用于指定将测试应用于每个元素. 在这个例子中,每一个元素都被测试,看其是否是一个整数.
在这个例子中,每一个元素都必须是大Ŕ整数.
命令
用于提取尺寸信息.
要比较两个矩阵的元素是否相等,可以使用 ,它通常的快捷输入符号是==. 例如,将矩阵与其自身比较将返回 .
使用数字的值因此可用于比较整数和实数值.
应该注意到
可用于任何 Mathematica 表达式. 如果想要使用矩阵的整体属性比较两个矩阵相等与否,比较矩阵范数可能更好. 这将在讨论.进一步的结构操作本节讨论有关矩阵的进一步的结构操作.
[m]展平 m 中的嵌套列表
[m,n]将 m 中的嵌套列表展平至层 n
[m,n]将 m 分成长度为 n 的子列表
[m1,m2]将 m1 和 m2 串联
[m,r]在 m 的尾部插入行 r
[m,r]在 m 的头部插入行 r
这会产生一个示范样本矩阵.
将矩阵展平为一个向量.
这里用
将这个向量重新变回一个行长Ŕ矩阵.
矩阵可以通过函数
连接在一起. 将这个新矩阵作为新行插入.
另外,也可以将新矩阵以列的形式连在一起.
通过
可以将一个新行插入矩阵的尾部.
应该注意到这也可以通过
完成;参见&&一节.元素相关的操作如果您想要进行矩阵元素的操作,使用 Mathematica 可以轻松完成. 首先建立一个由浮点数组成的矩阵.
Out[118]//MatrixForm=
应用于矩阵的算术运算贯穿至每个元素. 因此,如果矩阵被加Ĥ其结果相当于增ċ每个元素.
这里,矩阵的每个元素都变成原来的两倍.
这里,矩阵的每个元素都变成原来的平方.
如果一个矩阵除以另一个矩阵,则除法是逐个元素进行. 如果两个矩阵的维数不一致,则会出现错误
要将
函数应用于每个元素,可以将
应用于整个矩阵.
如果一个运算的两个参数都是矩阵,则该运算在对应的元素上进行.
注意这两个矩阵的维数必须协调.
如果一个参数是矩阵,而另一个参数是向量,则运算在矩阵的行与向量的元素之间进行.
注意使用算符
(通常,将两个参数放在一起可以实现其输入)进行两个矩阵的相乘,所生成的矩阵中各元素是两个矩阵中对应元素的乘积. 如果想要进行矩阵相乘,可以通过函数 ,这在 && 一节中介绍. 下面是一个元素相乘的例子.
可列表性如果要在矩阵的每个元素上应用用户自定义的函数,可以通过给该函数赋上
的属性实现. 这个函数将每个元素平方后除以3.
当然,这个函数同样适用于符号化的矩阵.
映射除了利用可列表性外,还可以使用
将一个函数应用于矩阵中的各个元素.
这里说明函数 f 应该作用到矩阵中的各个元素.
这里,一个将参数进行平方再将结果除Ŕ函数被应用的矩阵中的各个元素.
向量和张量除了支持矩阵外,Mathematica 也同样支持向量和张量. 所有这一切都通过列表建立. 正如在 &&一节所介绍的, Mathematica 使用张量一词来指广义化的矩阵. 构建矩阵的所有操作可以被推广到向量和张量. Mathematica 向量的列表ɪ. 这里构建了一个向量.
另外还有一些生成向量的函数.
[f,{i,n}]通过计算 f 在 i=1,2,… ,n 的值,建立一个长度为 n 的向量
[a,n]建立一个长为 n,形如 {a[1],a[2],…} 的向量
[n]创建列表{1,2,3,… ,n}
[n1,n2]创建列表 {n1,n1+1…,n2}
[n1,n2,dn]创建列表 {n1,n1+dn …,n2}
用于生成向量的函数. 生成向量的一个非常有效的途径是使用 Mathematica 函数 . 这里生成了一个整数向量.
这里生成了一个实数向量,ŀ始,依次递&#,并Ǔ束.
也可以用于程序化的构建一个向量;如果想要执行一个函数以确定向量的元素,这往往是很有用的.
尽管使用可列表运算往往会更有效.
有与上面几节所讨论的操作和函数等价的版本应用于向量.
应该注意的是,Mathematica 中没有行或列向量的概念;向量只有一个指标,用于指定该向量的一个元素.张量也可以通过使用
命令建立. 这里,使用了三个迭代程序来生成一&#的张量.
使用带有三个指标的 ,可以提取一个元素.
向量和张量的测试Mathematica 提供了一系列测试向量和张量并提取尺寸信息的函数.
[expr]如果 expr 具有向量的形式则返回 ,否则返回
[expr]如果 expr 具有矩阵的形式则返回 ,否则返回
[t,n]测试 t 是否是一个 n 阶张量
[expr]一个向量或矩阵的维数列表
[t]找到一个张量的阶
ti==tj比较两个张量中的元素是否相等
用于测试向量、矩阵和数组结构的函数. 可以使用
测试一个表达式是否是一个矩阵.
除了 , 与
可以用于测试向量和张量.
也可以用一个阶参数测试数组的大小.
还可用一个第三参数测试每个元素. 在这个例子中,由于部分元素不满足 ,结果为 .
命令
用于提取尺寸信息.
当输入是一个矩阵时, 返回一个长度Ŕ列表,表示的是采用了两个指标来定位矩阵中的各个元素. 测试定位元素所需指标个数的另一种方式是通过 . 这个例子的结果是2.
比较两个张量的元素是否相等可以使用 ,通常使用 == 作为快捷符号. 例如,一个张量与其自身比较将返回 .
采用的是数字值,因此可以用于比较整数和实数值.
图过两个对象的结构不一致则它们不相等.
矩阵的可视化这一节将回顾现有的用于矩阵格式化和图形绘制的函数.
[mat]显示一个矩阵,其元素以二维数组方式排列
[mat]显示 mat 的结构模式
矩阵格式化矩阵可以使用函数
进行格式化.
Out[161]//MatrixForm=
也适用于向量和高阶张量;括号可以帮助您了解分组.
Out[162]//MatrixForm=
绘制矩阵绘制矩阵的一个方便途径是使用函数 .
Out[164]//MatrixForm=
有一系列图形选项来控制图形的外观. 其中许多是 Mathematica
对象的常规选项. 该函数会有一个特殊选项
来控制矩阵显示的最大尺寸. 尺寸在此之上的矩阵将被降低采样率. 一些重要的选项归纳如下.
200矩阵显示的最大尺寸
1缩放最终图像形状
为每个元素着色
为每个元素着色的函数
是否绘制网格
[1]网格样式
选项.
的一个有用属性是能够绘制大型矩阵. 这里生成了一个非常大的稀疏矩阵.
仍可用
将其绘制. 这里所绘制的点数减小&#.
默认时,元素周围不绘制网格;这可以使用
选项启用. 如果矩阵非常大,您通常不会要绘制网格. 当绘制网格时,有需要用到
选项来改变网格样式.
可以使用
选项改变着色方式. 这个例子中ǘ制成白色,其它值均为黑色.
可以使用
选项来添加色彩.
导入和导出矩阵这一节将回顾现有的用于矩阵导入和导出的函数.
[file,format]按照指定格式从一个文件中导入数据
[file,mat,format]将矩阵导出至一个文件,并将其转换成指定格式
Mathematica 提供了一系列用于导入和导出的不同工具. 如果想将数据保存在文件中,以便以后您或同事可以继续在 Mathematica 中使用,您可能想使用一些适用于文件中 Mathematica 表达式的函数. 这些将在&&中讨论.如果想要使用特定的数据格式来操作来自 Mathematica 外部的矩阵,函数
和 将非常有用. 函数
支持各种不同的格式,其中一些与矩阵相关.
格式将把表格数据读入 Mathematica. 该格式不是矩阵专用的,能够处理如数字、日期和货币等不同类型的信息. 然而,在矩阵中来读取往往是一个简单的方法. 这个例子显示一个示例数据文件.
现在,通过使用
格式的
命令,数据文件被读入 Mathematica.
可用某种特定格式将矩阵写出. 这里使用的是
格式.
这个例子说明的是如何将矩阵写成 CSV 格式. 这种个是可以被另一个应用程序如电子表格读入.
还存在其它矩阵格式. 例如,Harwell–Boeing 用于稀疏矩阵以及 Matrix Market 用于稀疏和稠密矩阵.这些将在&&中讨论. 此外,MAT 矩阵格式以及 FITS 天文数据格式也是有用的导入和导出格式.矩阵乘法矩阵乘法(也称作点积或内积)在 Mathematica 中通过函数
实现,通常用原点作为简写输入.
这里将矩阵与其自身相乘.
将矩阵乘以一个向量.
对于两个大小不同的矩阵,只要它们的尺寸是协调的,就可以计算出它们的乘积. 对于矩阵来说,如果一个 m1n1 矩阵乘以一个m2n2 矩阵,这意味着 n1 必须等于 m2. 这里,一个 23 矩阵与一个 32 矩阵相乘.
这将生成一Ŕ矩阵.
这生成一Ŕ矩阵.
如果维数不匹配,将生成一个错误信息.
可用于相等长度的向量相乘;结果将是一个标量.
矩阵与向量的乘法工作原理相同. 这里是一ʹ阵乘以一个长度Ŕ向量.
这里是将长度Ŕ向量乘以一ʹ阵.
矩阵乘法的定义按下式给定,其中
是两个矩阵
的乘积,即 .
该定义可以进行推广,下式给出的是两个任意阶张量
的乘积,乘积用
表示.
因此,将
作用到一个
阶张量和一个
阶张量的结果是一个
阶张量. 下面是一个例子. 首先定义一&#张量.
Out[194]//MatrixForm=
现在定义一&#张量.
Out[196]//MatrixForm=
将 tensor1 乘以 tensor2. 两者是可乘的,因为 tensor1 的最内部的指标的长度等于tensor2 的最外部的指标的长度.
Out[197]//MatrixForm=
结果是一&#张量.
外积外积是一种由低阶张量建立高阶张量的方式. Mathematica 通过函数
提供了这种功能. 它的一个作用是将两个向量结合形成一个矩阵作为外积.
Out[201]//MatrixForm=
用于将对应元素结合的函数最为第一个参数给出. 如下面的例子所示,它也可以是一个未知函数.
Out[202]//MatrixForm=
外积的可视化将
的操作可视化的一种途径在这个例子中展示. 首先创建一列点.
这里显示
如何将每个点与其它任何一个点相连.
广义内积矩阵乘法是线性代数计算的一项基础运算. 因此,Mathematica 提供了
作为一个极度优化的专用函数. 然而,广义的矩阵乘法由
提供. 这使得形成乘积的两种运算可以被明确指定.这是两个向量.
这是一个作为乘积的标量.
这是使用
进行的等价运算.
现在使用的是
而不是 .
矩阵置换许多矩阵技术依赖于对矩阵进行特殊方式的排序. 例如,有些技术试图对矩阵排序使得元素被放在对角线上,也有一些技术试图将某些元素组合到密集块上. Mathematica 函数
非常适用于将置换作用于矩阵的行和列上.
m[[perm]]将置换作用在一个矩阵的行上
m[[,perm]]将置换作用在一个矩阵的列上
m[[perm,perm]]将置换作用在一个矩阵的行与列上
m[[perm]]=m将逆置换作用在一个矩阵的行上
m[[,perm]]=m将逆置换作用在一个矩阵的列上
对矩阵进行置换. 生成一个随机矩阵.
Out[211]//MatrixForm=
现在矩阵将被重新排列,使得各行按ț数递增的次序排列.(有关范数的讨论见&.) 首先计算每一行的范数.
这里计算得到的置换使得最小的数字放在第一位.
对矩阵的行进行排序:结果中各行按ț数递增的顺序排列.
Out[215]//MatrixForm=
现在通过部分指定进行逆置换. 注意这样作改变了由符号 pmat 所代表的矩阵. 关于部分指定的介绍见.
Out[217]//MatrixForm=
如果对置换后的矩阵应用逆置换,则原矩阵被恢复.
置换矩阵另一种置换方式是通过乘法将置换作用于矩阵. 例如,这里生成一ʹ阵.
Out[220]//MatrixForm=
计算置换,使得各行按ț数递增的顺序进行排序.
置换矩阵通常是一个稀疏矩阵,相关讨论见&&. 这个输入生成一个稀疏单位矩阵.
如果将置换应用于单位矩阵,则得到一个置换矩阵.
这里应用了置换. 注意具有最小范数的行在最顶部.
Out[225]//MatrixForm=
应用逆置换.
Out[226]//MatrixForm=
通常,使用 Mathematica 函数
来应用一个置换速度较快,但有时采用置换矩阵会比较方便.相关指南
相关教程
很抱歉,发生错误,请您稍后再试。
如果您仍旧遇到问题或有任何疑问,请。
Please complete this field.
姓名 (选填项)
电子邮件地址 (选填项)
翻译该页面
启用 JavaScript 与内容交互以及在 Wolfram 网站提交申请。

我要回帖

更多关于 矩阵乘积的秩 的文章

 

随机推荐