R语言中矩阵运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档