资源描述:
《R语言中矩阵运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、........R语言中矩阵运算目录:矩阵的生成,矩阵的四则运算,矩阵的矩阵运算,矩阵的分解。1.矩阵的生成1_1将向量定义成数组向量只有定义了维数向量(dim属性)后才能被看作是数组.比如:>z=1:12;>dim(z)=c(3,4);AA>z;[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912注意:生成矩阵是按列排列的。1_2用array()函数构造多维数组用法为:array(data=NA,dim=length(data),dimnames=NULL)参数描述:data:是一个向量数据。dim:是数组各维的长度,缺省时为原向量的
2、长度。dimname:是数组维的名字,缺省时为空。例子:.专业学习资料.........>x=array(1:20,dim=c(4,5))>x[,1][,2][,3][,4][,5][1,]1591317[2,]26101418[3,]37111519[4,]481216201_3用matrix()函数构造矩阵函数matrix)是构造矩阵(二维数组)的函数,其构造形式为matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)其中data是一个向量数据,nrow是矩阵的行数,ncol是矩阵的列数.当byrow=TRUE
3、时,生成矩阵的数据按行放置,缺省时相当于byrow=t,数据按列放置.dimname。是数组维的名字,缺省时为空.A如构造一个3x5阶的矩阵>A=matrix(1:15,nrow=3,byrow=TRUE)>A[,1][,2][,3][,4][,5][1,]12345[2,]678910[3,]1112131415.专业学习资料.........2.矩阵的四则运算可以对数组之间进行四则运算(+、一、*、/),这时进行的是数组对应元素的四则运算。一般情况下参加运算的矩阵或者数组的维数是相同的,但也可以计算不同维的,这是要将对应的元素补足。3.矩阵的矩阵运算3_1运算对于矩
4、阵A,函数t(A)表示矩阵A的转置,如:>A=matrix(1:6,nrow=2);>A;[,1][,2][,3][1,]135[2,]246>t(A);[,1][,2][1,]12[2,]34[3,]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:5Z>x%*%y[,1][1,]110函数crossprod()是
5、内积运算函数(表示交叉乘积),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);[,1][1,]55>crossprod(x,y);.专业学习资料.........[,1][1,]110>tcrossprod(x);[,1][,2][,3][,4][,5][1,]12345[2,]246810[3,]369121
6、5[4,]48121620[5,]510152025>tcrossprod(x,y);[,1][,2][,3][,4][,5][1,]246810[2,]48121620[3,]612182430[4,]816243240[5,]10203040503_4向量的外积(叉积)设x和y是n维向量,则x%o%y表示x与y作外积.例如>x%o%y;[,1][,2][,3][,4][,5][1,]246810.专业学习资料.........[2,]48121620[3,]612182430[4,]816243240[5,]1020304050outer()是更为强大的外积运算函数
7、,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,