R语言中矩阵运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R语言中矩阵运算
目录:矩阵的生成,矩阵的四则运算,矩阵的矩阵运算,矩阵的分解。
1.矩阵的生成
1_1将向量定义成数组
向量只有定义了维数向量(dim属性)后才能被看作是数组.比如:
> z=1:12;
> dim(z)=c(3,4);
AA> z;
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
注意:生成矩阵是按列排列的。
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] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
1_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] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
2.矩阵的四则运算
可以对数组之间进行四则运算(+、一、*、/),这时进行的是数组对应元素的四则运算。一般情况下参加运算的矩阵或者数组的维数是相同的,但也可以计算不同维的,这是要将对应的元素补足。
3.矩阵的矩阵运算
3_1 运算
对于矩阵A,函数t(A)表示矩阵A的转置,如:
> A=matrix(1:6,nrow=2);
> A;
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> t(A);
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
3_2 求方阵的行列式
函数det()是求矩阵行列式的值,如
> det(matrix(1:4,ncol=2));
3_3 向量的内积
对于n维向量x,可以看成nxl阶矩阵或lxn阶矩阵。若x与y是相同
维数的向量,则x%*%Y表示x与y作内积.例如,
>x=1:5; Y=2*1:5Z
>x%*%y
[,1]
[1,]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);
[,1]
[1,] 55
> crossprod(x,y);
[1,] 110
> tcrossprod(x);
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 2 4 6 8 10
[3,] 3 6 9 12 15
[4,] 4 8 12 16 20
[5,] 5 10 15 20 25
> tcrossprod(x,y);
[,1] [,2] [,3] [,4] [,5]
[1,] 2 4 6 8 10
[2,] 4 8 12 16 20
[3,] 6 12 18 24 30
[4,] 8 16 24 32 40
[5,] 10 20 30 40 50
3_4 向量的外积(叉积)
设x和y是n维向量,则x%o%y表示x与y作外积.例如> x%o%y;
[,1] [,2] [,3] [,4] [,5]
[1,] 2 4 6 8 10
[2,] 4 8 12 16 20
[3,] 6 12 18 24 30
[4,] 8 16 24 32 40
[5,] 10 20 30 40 50
outer()是更为强大的外积运算函数,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] [,3]
[1,] 90 54 18