R语言中矩阵运算的函数.doc

上传人:工**** 文档编号:561558988 上传时间:2022-11-14 格式:DOC 页数:19 大小:61.01KB
返回 下载 相关 举报
R语言中矩阵运算的函数.doc_第1页
第1页 / 共19页
R语言中矩阵运算的函数.doc_第2页
第2页 / 共19页
R语言中矩阵运算的函数.doc_第3页
第3页 / 共19页
R语言中矩阵运算的函数.doc_第4页
第4页 / 共19页
R语言中矩阵运算的函数.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《R语言中矩阵运算的函数.doc》由会员分享,可在线阅读,更多相关《R语言中矩阵运算的函数.doc(19页珍藏版)》请在金锄头文库上搜索。

1、1 创建一个向量在R中可以用函数c()来创建一个向量,例如: x=c(1,2,3,4) x1 1 2 3 4 2 创建一个矩阵在R中可以用函数matrix()来创建一个矩阵,应用该函数时需要输入必要的参数值。 args(matrix)function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) data项为必要的矩阵元素,nrow为行数,ncol为列数,注意nrow与ncol的乘积应为矩阵元素个数,byrow项控制排列元素时是否按行进行,dimnames给定行和列的名称。例如: matrix(1:12,nrow

2、=3,ncol=4),1 ,2 ,3 ,41, 1 4 7 102, 2 5 8 113, 3 6 9 12 matrix(1:12,nrow=4,ncol=3),1 ,2 ,31, 1 5 92, 2 6 103, 3 7 114, 4 8 12 matrix(1:12,nrow=4,ncol=3,byrow=T),1 ,2 ,31, 1 2 32, 4 5 63, 7 8 94, 10 11 12 rowname1 r1 r2 r3 colname=c(c1,c2,c3,c4) colname1 c1 c2 c3 c4 matrix(1:12,nrow=3,ncol=4,dimnames=

3、list(rowname,colname)c1 c2 c3 c4r1 1 4 7 10r2 2 5 8 113 矩阵转置A为mn矩阵,求A在R中可用函数t(),例如: A=matrix(1:12,nrow=3,ncol=4) A,1 ,2 ,3 ,41, 1 4 7 102, 2 5 8 113, 3 6 9 12 t(A),1 ,2 ,31, 1 2 32, 4 5 63, 7 8 94, 10 11 12若将函数t()作用于一个向量x,则R默认x为列向量,返回结果为一个行向量,例如: x1 1 2 3 4 5 6 7 8 9 10 t(x),1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,

4、9 ,101, 1 2 3 4 5 6 7 8 9 10 class(x)1 integer class(t(x)1 matrix若想得到一个列向量,可用t(t(x),例如: x1 1 2 3 4 5 6 7 8 9 10 t(t(x),11, 12, 23, 34, 45, 56, 67, 78, 89, 910, 10 y=t(t(x) t(t(y),11, 12, 23, 34, 45, 56, 67, 78, 89, 910, 104 矩阵相加减在R中对同行同列矩阵相加减,可用符号:“”、“”,例如: A=B=matrix(1:12,nrow=3,ncol=4) A+B,1 ,2 ,3

5、 ,41, 2 8 14 202, 4 10 16 223, 6 12 18 24 A-B,1 ,2 ,3 ,41, 0 0 0 02, 0 0 0 03, 0 0 0 05 数与矩阵相乘A为mn矩阵,c0,在R中求cA可用符号:“*”,例如: c=2 c*A,1 ,2 ,3 ,41, 2 8 14 202, 4 10 16 223, 6 12 18 246 矩阵相乘A为mn矩阵,B为nk矩阵,在R中求AB可用符号:“*”,例如: A=matrix(1:12,nrow=3,ncol=4) B=matrix(1:12,nrow=4,ncol=3) A%*%B,1 ,2 ,31, 70 158 2

6、462, 80 184 2883, 90 210 330若A为nm矩阵,要得到AB,可用函数crossprod(),该函数计算结果与t(A)%*%B相同,但是效率更高。例如: A=matrix(1:12,nrow=4,ncol=3) B=matrix(1:12,nrow=4,ncol=3) t(A)%*%B,1 ,2 ,31, 30 70 1102, 70 174 2783, 110 278 446 crossprod(A,B),1 ,2 ,31, 30 70 1102, 70 174 2783, 110 278 446矩阵Hadamard积:若A=aijmn, B=bijmn, 则矩阵的Ha

7、damard积定义为:AB=aij bij mn,R中Hadamard积可以直接运用运算符“*”例如: A=matrix(1:16,4,4) A,1 ,2 ,3 ,41, 1 5 9 132, 2 6 10 143, 3 7 11 154, 4 8 12 16 B=A A*B,1 ,2 ,3 ,41, 1 25 81 1692, 4 36 100 1963, 9 49 121 2254, 16 64 144 256R中这两个运算符的区别区加以注意。7 矩阵对角元素相关运算例如要取一个方阵的对角元素, A=matrix(1:16,nrow=4,ncol=4) A,1 ,2 ,3 ,41, 1 5

8、 9 132, 2 6 10 143, 3 7 11 154, 4 8 12 16 diag(A)1 1 6 11 16对一个向量应用diag()函数将产生以这个向量为对角元素的对角矩阵,例如: diag(diag(A),1 ,2 ,3 ,41, 1 0 0 02, 0 6 0 03, 0 0 11 04, 0 0 0 16对一个正整数z应用diag()函数将产生以z维单位矩阵,例如: diag(3),1 ,2 ,31, 1 0 02, 0 1 03, 0 0 18 矩阵求逆矩阵求逆可用函数solve(),应用solve(a, b)运算结果是解线性方程组ax = b,若b缺省,则系统默认为单位

9、矩阵,因此可用其进行矩阵求逆,例如: a=matrix(rnorm(16),4,4) a,1 ,2 ,3 ,41, 1.6986019 0.5239738 0.2332094 0.31741842, -0.2010667 1.0913013 -1.2093734 0.80965143, -0.1797628 -0.7573283 0.2864535 1.36799634, -0.2217916 -0.3754700 0.1696771 -1.2424030 solve(a),1 ,2 ,3 ,41, 0.9096360 0.54057479 0.7234861 1.38130592, -0.6

10、464172 -0.91849017 -1.7546836 -2.69577753, -0.7841661 -1.78780083 -1.5795262 -3.10462074, -0.0741260 -0.06308603 0.1854137 -0.6607851 solve (a) %*%a,1 ,2 ,3 ,41, 1.000000e+00 2.748453e-17 -2.787755e-17 -8.023096e-172, 1.626303e-19 1.000000e+00 -4.960225e-18 6.977925e-163, 2.135878e-17 -4.629543e-17

11、1.000000e+00 6.201636e-174, 1.866183e-17 1.563962e-17 1.183813e-17 1.000000e+009 矩阵的特征值与特征向量矩阵A的谱分解为A=UU,其中是由A的特征值组成的对角矩阵,U的列为A的特征值对应的特征向量,在R中可以用函数eigen()函数得到U和, args(eigen)function (x, symmetric, only.values = FALSE, EISPACK = FALSE)其中:x为矩阵,symmetric项指定矩阵x是否为对称矩阵,若不指定,系统将自动检测x是否为对称矩阵。例如: A=diag(4)+

12、1 A,1 ,2 ,3 ,41, 2 1 1 12, 1 2 1 13, 1 1 2 14, 1 1 1 2 A.eigen=eigen(A,symmetric=T) A.eigen$values1 5 1 1 1$vectors,1 ,2 ,3 ,41, 0.5 0.8660254 0.000000e+00 0.00000002, 0.5 -0.2886751 -6.408849e-17 0.81649663, 0.5 -0.2886751 -7.071068e-01 -0.40824834, 0.5 -0.2886751 7.071068e-01 -0.4082483 A.eigen$ve

13、ctors%*%diag(A.eigen$values)%*%t(A.eigen$vectors),1 ,2 ,3 ,41, 2 1 1 12, 1 2 1 13, 1 1 2 14, 1 1 1 2 t(A.eigen$vectors)%*%A.eigen$vectors,1 ,2 ,3 ,41, 1.000000e+00 4.377466e-17 1.626303e-17 -5.095750e-182, 4.377466e-17 1.000000e+00 -1.694066e-18 6.349359e-183, 1.626303e-17 -1.694066e-18 1.000000e+00 -1.088268e-164, -5.095750e-18 6.349359e-18 -1.088268e-16 1.000000e+0010 矩阵的Choleskey分解对于正定矩阵A,可对其进行Cholesk

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号