




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
r 语言中矩阵运算目录:矩阵的生成,矩阵的四则运算,矩阵的矩阵运算,矩阵的分解。1. 矩阵的生成1_1 将向量定义成数组向量只有定义了维数向量(dim 属性 )后才能被看作是数组. 比如: z=1:12; dim(z)=c(3,4);aa z;,1 ,2 ,3 ,41,147102,258113,36912注意:生成矩阵是按列排列的。1_2 用 array ( ) 函数构造多维数组用法为: array(data=na,dim=length(data),dimnames=null)参数描述: data :是一个向量数据。dim :是数组各维的长度,缺省时为原向量的长度。dimname :是数组维的名字,缺省时为空。例子:精品资料 x=array(1:20,dim=c(4,5) x,1 ,2 ,3 ,4 ,51,15913172,261014183,371115194,481216201_3 用 matrix() 函数构造矩阵函数 matrix) 是构造矩阵 ( 二维数组 )的函数,其构造形式为matrix(data=na, nrow=1 , ncol=1 , byrow=false, dimnames=null)其中 data 是一个向量数据, nrow 是矩阵的行数, ncol 是矩阵的列数 .当 byrow=true 时,生成矩阵的数据按行放置,缺省时相当于 byrow=t ,数据按列放置 .dimname 。是数组维的名字,缺省时为空 .a如构造一个3x5 阶的矩阵 a=matrix(1:15,nrow=3,byrow=true) a,1 ,2 ,3 ,4 ,51,123452,6789103,11121314152. 矩阵的四则运算可以对数组之间进行四则运算(+、一、*、/) ,这时进行的是数组对应元素的四则运算。一般情况下参加运算的矩阵或者数组的维数是相同的,但也可以计算不同维的,这是要将对应的元素补足。3. 矩阵的矩阵运算3_1运算对于矩阵 a ,函数 t(a) 表示矩阵a 的转置,如: a=matrix(1:6,nrow=2); a;,1 ,2 ,31,1352, t(a);2,1 ,2461,122,343,563_2求方阵的行列式函数 det() 是求矩阵行列式的值,如 det(matrix(1:4,ncol=2);1 -23_3向量的内积对于 n 维向量 x,可以看成nxl 阶矩阵或lxn 阶矩阵。若x 与 y 是相同维数的向量,则x%*%y 表示 x 与 y 作内积 .例如,x=1:5; y=2*1:5zx%*%y, 11 , 110函数 crossprod()是内积运算函数(表示交叉乘积 ), crossprod(x,y)计算向量x 与 y 的 内积,即 t(x) %*% y 。crossprod(x)表示 x 与 x 的内积 .类似地, tcrossprod(x,y)表示x%*%t(y) ,即 x 与 y 的外积,也称为叉积。tcrossprod(x)表示 x 与 x 作外积 .如: x=1:5; y=2*1:5; crossprod(x); ,11,55 crossprod(x,y);,11,110 tcrossprod(x);,1 ,2 ,3 ,4 ,51,123452,2468103,36912154,481216205,510152025 tcrossprod(x,y);,1 ,2 ,3 ,4 ,51,2468102,481216203,6121824304,8162432405,10203040503_4向量的外积 ( 叉积)设 x 和 y 是 n 维向量,则x%o%y 表示 x 与 y 作外积 .例如 x%o%y;,1 ,2 ,3 ,4 ,51,2468102,481216203,6121824304,8162432405,1020304050outer() 是更为强大的外积运算函数,outer(x,y) 计算向量二与y 的外积,它等价于x %o%y函数。 outer() 的一般调用格式为outer(x , y,fun= ”*”)其中 x, y 矩阵 (或向量 ), fun 是作外积运算函数,缺省值为乘法运算。函数outer() 在绘制三维曲面时非常有用,它可生成一个x 和 y 的网格。3_5矩阵的乘法设 a 和 b 为两个矩阵, 通常意义下的矩阵乘法是通过a%*%b来完成, crossprod(a,b)表示的是t(a)%*%b ,而 tcrossprod(a,b)表示的是a%*%t(b) 。最后我们通过运算知道x%*%a%*%x为二次型。例子: a=array(1:9,dim=(c(3,3) b=array(9:1,dim=(c(3,3) a%*%b;,1 ,2 ,31,9054182,11469243,1388430 crossprod(a,b)=t(a)%*%b; ,1 ,2 ,31, true true true2, true true true 3, true true true tcrossprod(a,b)=a%*%t(b); ,1 ,2 ,31, true true true2, true true true 3, true true true3_6生成对角阵和矩阵取对角运算函数 diag() 依赖于它的变量,当 v 是一个向量时, diag(v) 表示以 v 的元素为对角线元素的对角阵 .当 m 是一个矩阵时,则diag(m) 表示的是取m 对角线上的元素的向量.如 v=c(1,4,5); diag(v);,1 ,2 ,31,1002,0403,005 m=array(1:9,dim=c(3,3); diag(m); 1 1 5 93_7解线性方程组和求矩阵的逆矩阵若求解线性方程组ax=b ,其命令形式为solve(a,b) ,求矩阵a 的逆,其命令形式为solve(a). 设矩阵 a=t(array(c(1:8,10),dim=c(3,3),b a=t(array(c(1:8,10),dim=c(3,3); b=c(1,1,1); x=solve(a,b); x;1 -1.000000e+001.000000e+003.806634e-16 solve(a);,1,2 ,31, -0.6666667 -1.33333312, -0.66666673.666667-23,1.0000000 -2.00000013_8求矩阵的特征值与特征向量函数 eigen(sm) 是求对称矩阵sm 的特征值与特征向量,其命令形式为:ev=eigen(sm),则 ev 存放着对称矩阵sm 特征值和特征向量, 是由列表形式给出的,其中 ev$values是 sm的特征值构成的向量,ev$vectors是 sm 的特征向量构成的矩阵.如 sm=crossprod(a,a); ev=eigen(sm); ev;$values1 303.195336180.765907390.03875643$vectors,1,2,31, -0.46466750.8332863550.29952952, -0.5537546 -0.009499485 -0.83262583, -0.6909703 -0.5527599940.46585024. 矩阵的分解4_1特征值分解(1). 定义:对 n 阶方阵 a, x 为标量, v 是非零的n 维列向量,且满足ax=xv,则称 x 为矩阵 a的特征值, v 是相对应于x 的特征向量。特征值的全体成为a 的谱。(2). 在 r 中的实现:在r 中利用函数eigen(a) 来求矩阵的特征值和特征向量,具体的调用格式为:以矩阵 a 为例说明此问题 a=array(c(1,1,1,4,2,1,9,3,1),dim=c(3,3); d=eigen(a); d;$values15.8284271 -2.0000000$vectors0.1715729,1,2,31, -0.8597736 -9.486833e-010.53848202, -0.43464986.474883e-17 -0.78729383, -0.26808393.162278e-010.3003425(3). 特 征 值 分 解 的 性 质 : 我 们 知 道 当 所 求 的 的 特 征 向 量 构 成 的 矩 阵 可 逆 时 会 满 足solve(vectors)%*%a%*%vectors=diag(values),下面进行验证。 solve(vectors)%*%a%*%vectors;,1,2,3 1,5.828427e+008.339683e-16 -1.285213e-15 2,1.211325e-15 -2.000000e+002.704000e-16 3, -3.471971e-16 -1.607126e-161.715729e-01结果的精度还是比较高的。4_2矩阵的奇异值分解函数 svd(a) 是对矩阵 a 作奇异值分解,即 a =u%*%d%*%t(v) ,其中 u, v 是正交阵, d 为对角阵,也就是矩阵 a 的奇异值 .svd(a) 的返回值也是列表, svd(a)$d 表示矩阵 a 的奇异值, 即矩阵 d 的对角线上的元素 .svd(a)$u 对应的是正交阵 u, svd(a) $v 对应的是正交阵v.例如, a svd=svd(a); svd;$d1 17.41250520.87516140.1968665$u,1,2,31, -0.20933730.964385140.16167622, -0.50384850.03532145 -0.86306963, -0.8380421 -0.262132990.4785099$v,1,2,31, -0.4646675 -0.8332863550.29952952, -0.55375460.009499485 -0.83262583, -0.69097030.5527599940.4658502 attach(svd);the following object(s) are masked from svd (position 3): d, u, v u%*%diag(d)%*%t(v);,1 ,2 ,31,1232,4563, a;7810,1 ,2 ,31,1232,4563,78104_3 qr 分解设 a 为 m*n 矩阵,如果存在m*m 酉矩阵 q(即 q(h)q=qq(h)=i)和 m*n 阶梯形矩阵r,使得 a=qr ,那么此分解称为qr 分解。 qr 分解在解决最小二乘问题、特征值计算等方面有着十分重要的作用。#建立矩阵 a=(array(c(1:12),dim=c(4,3); a;,1 ,2 ,31,1592,26103,37114,4812#进行矩阵分解 qr=qr(a);qr$qr,1,2,31, -5.4772256 -12.7801930 -2.008316e+012,0.3651484-3.2659863 -6.531973e+003,0.5477226-0.37816967.880925e-164,$rank0.7302967-0.91247449.277920e-011 2$qraux1 1.182574 1.156135 1.373098$pivot 1 1 2 3attr(,class)1 qr#提取 q,r 并验证分解的正确性。 q=qr.q(qr); r=qr.r(qr); q%*%r;,1 ,2 ,31,1592,26103,37114,48124_4 schur分解引言:从特征值的分解中可以看出,特征值的分解是有条件的,如果特征向量不是线性无关的, 那么对于一个矩阵来说便不能采用特征值分解的方法对矩阵进行分解。例如对于矩阵a=t(array(c(6,12,19,-9,-20,-33,4,9,15),dim=c(3,3)进行特征值分解有: a=t(array(c(6,12,19,-9,-20,-33,4,9,15),dim=c(3,3); a;,1 ,2 ,31,612192,-9-20-333,4915 det(a);1 -1 w=eigen(a); w;$values11+0i1-0i -1+0i$vectors,1,2,3 1, -0.4082483-0i -0.4082483+0i -0.4740998+0i2,0.8164966+0i0.8164966+0i0.8127426+0i 3, -0.4082483+0i -0.4082483-0i -0.3386427+0i attach(w);the following object(s) are masked from w (position 3): values, vectors det(vectors);错误于 determinant.matrix(x, logarithm = true, .) :目前还不能算复数矩阵的行列式 det(re(vectors); 1 -7.599489e-19 solve(vectors),1,2,3 1, 0.000000+78209959i0.00000+78209959i-9.26965+78209959i 2, 0.000000-78209959i0.00000-78209959i-9.10153-78209959i 3, 3.691206+0i 11.07362+0i18.45603+0i很明显 vectors不是一个可逆矩阵此时进行特征值分辨这种方法便不可行,对于这种情况我们可以作schur 分解。描述:对于任意的方针a ,其 schur 分解的形式为: a=usu(h) ,其中 u 是标准的正交矩阵 (即满足uu(h)=i ), s 为上三角矩阵,并且对角线上的元素为a 的特征值。由于此函数在包matrix中,所以使用之前必须调入。并且注意matrix和 matrix的区别。例子: a=m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 作业安全操作风险评估方案
- 农业智能化管理技术研究
- CAD三维建模设计手册方案报告规划
- 工业废气治理方案
- 2025中国邮政储蓄银行威海市分行招聘4人笔试备考试题及答案解析
- 企业人才战略规划和执行策略
- 职业装面料剪裁手册
- 2025云南省红河州屏边县人民法院招聘聘用制书记员和司法警务辅助人员(2人)考试含答案
- 学校教研活动规定forIndexPath方式
- 榨汁机维修细则手册
- 萨克斯课件教学课件
- GPR39mRNA在糖尿病大鼠组织中的表达特征及关联机制研究
- 2025年专升本艺术概论考试模拟卷(艺术史论重点与艺术史研究方法探讨试题)
- 幼儿园健康预防蚊虫叮咬
- 钻石画教学课件
- 中学生健康卫生课件
- 2025年行政执法人员取得行政执法证件考试题库附答案
- 三级安全教育培训试题(含答案)
- 绿城好房子建设的理念与实践
- DB6501∕T 035-2022 乌鲁木齐市海绵城市建设标准图集
- 【课件】有理数的概念+课件+2025-2026学年人教版数学七年级上册
评论
0/150
提交评论