收藏 分享(赏)

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

上传人:精品资料 文档编号:10129926 上传时间:2019-10-12 格式:DOC 页数:19 大小:61KB
下载 相关 举报
总结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页
点击查看更多>>
资源描述

1、总结 R 语言中矩阵运算的函数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

2、 给定行和列的名称。例如: matrix(1:12,nrow=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

3、“ “c2“ “c3“ “c4“ matrix(1:12,nrow=3,ncol=4,dimnames=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 为列向量,返回结

4、果为一个行向量,例如: x1 1 2 3 4 5 6 7 8 9 10 t(x),1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,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 矩阵相加减在

5、 R 中对同行同列矩阵相加减,可用符号:“”、 “”,例如: A=B=matrix(1:12,nrow=3,ncol=4) A+B,1 ,2 ,3 ,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 可用符号

6、:“ *”,例如: A=matrix(1:12,nrow=3,ncol=4) B=matrix(1:12,nrow=4,ncol=3) A%*%B,1 ,2 ,31, 70 158 2462, 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 44

7、6 crossprod(A,B),1 ,2 ,31, 30 70 1102, 70 174 2783, 110 278 446矩阵 Hadamard 积:若 A=aijmn, B=bijmn, 则矩阵的 Hadamard 积定义为: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 22

8、54, 16 64 144 256R 中这两个运算符的区别区加以注意。7 矩阵对角元素相关运算例如要取一个方阵的对角元素, A=matrix(1:16,nrow=4,ncol=4) A,1 ,2 ,3 ,41, 1 5 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

9、维单位矩阵,例如: diag(3),1 ,2 ,31, 1 0 02, 0 1 03, 0 0 18 矩阵求逆矩阵求逆可用函数 solve(),应用 solve(a, b)运算结果是解线性方程组 ax = b,若 b 缺省,则系统默认为单位矩阵,因此可用其进行矩阵求逆,例如: 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.36

10、799634, -0.2217916 -0.3754700 0.1696771 -1.2424030 solve(a),1 ,2 ,3 ,41, 0.9096360 0.54057479 0.7234861 1.38130592, -0.6464172 -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.748

11、453e-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 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 和 , arg

12、s(eigen)function (x, symmetric, only.values = FALSE, EISPACK = FALSE)其中:x 为矩阵,symmetric 项指定矩阵 x 是否为对称矩阵,若不指定,系统将自动检测 x 是否为对称矩阵。例如: A=diag(4)+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.0

13、0000002, 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$vectors%*%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.000000

14、e+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,可对其进行 Choleskey 分解,即:A=PP ,其中 P 为上三角矩阵,在 R 中可以用函数 chol()进行 Ch

15、oleskey 分解,例如: A,1 ,2 ,3 ,41, 2 1 1 12, 1 2 1 13, 1 1 2 14, 1 1 1 2 chol(A),1 ,2 ,3 ,41, 1.414214 0.7071068 0.7071068 0.70710682, 0.000000 1.2247449 0.4082483 0.40824833, 0.000000 0.0000000 1.1547005 0.28867514, 0.000000 0.0000000 0.0000000 1.1180340 t(chol(A)%*%chol(A),1 ,2 ,3 ,41, 2 1 1 12, 1 2 1

16、13, 1 1 2 14, 1 1 1 2 crossprod(chol(A),chol(A),1 ,2 ,3 ,41, 2 1 1 12, 1 2 1 13, 1 1 2 14, 1 1 1 2若矩阵为对称正定矩阵,可以利用 Choleskey 分解求行列式的值,如: prod(diag(chol(A)2)1 5 det(A)1 5若矩阵为对称正定矩阵,可以利用 Choleskey 分解求矩阵的逆,这时用函数 chol2inv(),这种用法更有效。如: chol2inv(chol(A),1 ,2 ,3 ,41, 0.8 -0.2 -0.2 -0.22, -0.2 0.8 -0.2 -0.23

17、, -0.2 -0.2 0.8 -0.24, -0.2 -0.2 -0.2 0.8 solve(A),1 ,2 ,3 ,41, 0.8 -0.2 -0.2 -0.22, -0.2 0.8 -0.2 -0.23, -0.2 -0.2 0.8 -0.24, -0.2 -0.2 -0.2 0.811 矩阵奇异值分解A 为 mn 矩阵,rank(A)= r, 可以分解为:A=UDV,其中 UU=VV=I。在 R 中可以用函数scd()进行奇异值分解,例如: A=matrix(1:18,3,6) A,1 ,2 ,3 ,4 ,5 ,61, 1 4 7 10 13 162, 2 5 8 11 14 173,

18、 3 6 9 12 15 18 svd(A)$d1 4.589453e+01 1.640705e+00 3.627301e-16$u,1 ,2 ,31, -0.5290354 0.74394551 0.40824832, -0.5760715 0.03840487 -0.81649663, -0.6231077 -0.66713577 0.4082483$v,1 ,2 ,31, -0.07736219 -0.7196003 -0.189181242, -0.19033085 -0.5089325 0.424058983, -0.30329950 -0.2982646 -0.453300314,

19、 -0.41626816 -0.0875968 -0.016370045, -0.52923682 0.1230711 0.642311306, -0.64220548 0.3337389 -0.40751869 A.svd=svd(A) A.svd$u%*%diag(A.svd$d)%*%t(A.svd$v),1 ,2 ,3 ,4 ,5 ,61, 1 4 7 10 13 162, 2 5 8 11 14 173, 3 6 9 12 15 18 t(A.svd$u)%*%A.svd$u,1 ,2 ,31, 1.000000e+00 -1.169312e-16 -3.016793e-172, -

20、1.169312e-16 1.000000e+00 -3.678156e-173, -3.016793e-17 -3.678156e-17 1.000000e+00 t(A.svd$v)%*%A.svd$v,1 ,2 ,31, 1.000000e+00 8.248068e-17 -3.903128e-182, 8.248068e-17 1.000000e+00 -2.103352e-173, -3.903128e-18 -2.103352e-17 1.000000e+0012 矩阵 QR 分解A 为 mn 矩阵可以进行 QR 分解,A=QR,其中:QQI,在 R 中可以用函数 qr()进行 Q

21、R分解,例如: A=matrix(1:16,4,4) qr(A)$qr,1 ,2 ,3 ,41, -5.4772256 -12.7801930 -2.008316e+01 -2.738613e+012, 0.3651484 -3.2659863 -6.531973e+00 -9.797959e+003, 0.5477226 -0.3781696 2.641083e-15 2.056562e-154, 0.7302967 -0.9124744 8.583032e-01 -2.111449e-16$rank1 2$qraux1 1.182574e+00 1.156135e+00 1.513143e

22、+00 2.111449e-16$pivot1 1 2 3 4attr(,“class“)1 “qr“rank 项返回矩阵的秩,qr 项包含了矩阵 Q 和 R 的信息,要得到矩阵 Q 和 R,可以用函数qr.Q()和 qr.R()作用 qr()的返回结果,例如: qr.R(qr(A),1 ,2 ,3 ,41, -5.477226 -12.780193 -2.008316e+01 -2.738613e+012, 0.000000 -3.265986 -6.531973e+00 -9.797959e+003, 0.000000 0.000000 2.641083e-15 2.056562e-154

23、, 0.000000 0.000000 0.000000e+00 -2.111449e-16 qr.Q(qr(A),1 ,2 ,3 ,41, -0.1825742 -8.164966e-01 -0.4000874 -0.374072252, -0.3651484 -4.082483e-01 0.2546329 0.796970563, -0.5477226 -8.131516e-19 0.6909965 -0.471724384, -0.7302967 4.082483e-01 -0.5455419 0.04882607 qr.Q(qr(A)%*%qr.R(qr(A),1 ,2 ,3 ,41,

24、 1 5 9 132, 2 6 10 143, 3 7 11 154, 4 8 12 16 t(qr.Q(qr(A)%*%qr.Q(qr(A),1 ,2 ,3 ,41, 1.000000e+00 -1.457168e-16 -6.760001e-17 -7.659550e-172, -1.457168e-16 1.000000e+00 -4.269046e-17 7.011739e-173, -6.760001e-17 -4.269046e-17 1.000000e+00 -1.596437e-164, -7.659550e-17 7.011739e-17 -1.596437e-16 1.00

25、0000e+00 qr.X(qr(A),1 ,2 ,3 ,41, 1 5 9 132, 2 6 10 143, 3 7 11 154, 4 8 12 1613 矩阵广义逆(Moore-Penrose)nm 矩阵 A+称为 mn 矩阵 A 的 Moore-Penrose 逆,如果它满足下列条件: A A+A=A;A+A A+= A+;(A A+)H=A A+;(A+A)H= A+A在 R 的 MASS 包中的函数 ginv()可计算矩阵 A 的 Moore-Penrose 逆,例如:library(“MASS”) A,1 ,2 ,3 ,41, 1 5 9 132, 2 6 10 143, 3 7

26、 11 154, 4 8 12 16 ginv(A),1 ,2 ,3 ,41, -0.285 -0.1075 0.07 0.24752, -0.145 -0.0525 0.04 0.13253, -0.005 0.0025 0.01 0.01754, 0.135 0.0575 -0.02 -0.0975验证性质 1: A%*%ginv(A)%*%A,1 ,2 ,3 ,41, 1 5 9 132, 2 6 10 143, 3 7 11 154, 4 8 12 16验证性质 2: ginv(A)%*%A%*%ginv(A),1 ,2 ,3 ,41, -0.285 -0.1075 0.07 0.24

27、752, -0.145 -0.0525 0.04 0.13253, -0.005 0.0025 0.01 0.01754, 0.135 0.0575 -0.02 -0.0975验证性质 3: t(A%*%ginv(A),1 ,2 ,3 ,41, 0.7 0.4 0.1 -0.22, 0.4 0.3 0.2 0.13, 0.1 0.2 0.3 0.44, -0.2 0.1 0.4 0.7 A%*%ginv(A),1 ,2 ,3 ,41, 0.7 0.4 0.1 -0.22, 0.4 0.3 0.2 0.13, 0.1 0.2 0.3 0.44, -0.2 0.1 0.4 0.7验证性质 4: t

28、(ginv(A)%*%A),1 ,2 ,3 ,41, 0.7 0.4 0.1 -0.22, 0.4 0.3 0.2 0.13, 0.1 0.2 0.3 0.44, -0.2 0.1 0.4 0.7 ginv(A)%*%A,1 ,2 ,3 ,41, 0.7 0.4 0.1 -0.22, 0.4 0.3 0.2 0.13, 0.1 0.2 0.3 0.44, -0.2 0.1 0.4 0.714 矩阵 Kronecker 积nm 矩阵 A 与 hk 矩阵 B 的 kronecker 积为一个 nhmk 维矩阵,在 R 中 kronecker 积可以用函数 kronecker()来计算,例如: A=

29、matrix(1:4,2,2) B=matrix(rep(1,4),2,2) A,1 ,21, 1 32, 2 4 B,1 ,21, 1 12, 1 1 kronecker(A,B),1 ,2 ,3 ,41, 1 1 3 32, 1 1 3 33, 2 2 4 44, 2 2 4 415 矩阵的维数在 R 中很容易得到一个矩阵的维数,函数 dim()将返回一个矩阵的维数,nrow()返回行数,ncol()返回列数,例如: A=matrix(1:12,3,4) A,1 ,2 ,3 ,41, 1 4 7 102, 2 5 8 113, 3 6 9 12 nrow(A)1 3 ncol(A)1 41

30、6 矩阵的行和、列和、行平均与列平均在 R 中很容易求得一个矩阵的各行的和、平均数与列的和、平均数,例如: A,1 ,2 ,3 ,41, 1 4 7 102, 2 5 8 113, 3 6 9 12 rowSums(A)1 22 26 30 rowMeans(A)1 5.5 6.5 7.5 colSums(A)1 6 15 24 33 colMeans(A)1 2 5 8 11上述关于矩阵行和列的操作,还可以使用 apply()函数实现。 args(apply)function (X, MARGIN, FUN, .)其中:x 为矩阵,MARGIN 用来指定是对行运算还是对列运算, MARGIN

31、1 表示对行运算,MARGIN2 表示对列运算,FUN 用来指定运算函数, .用来给定 FUN 中需要的其它的参数,例如: apply(A,1,sum)1 22 26 30 apply(A,1,mean)1 5.5 6.5 7.5 apply(A,2,sum)1 6 15 24 33 apply(A,2,mean)1 2 5 8 11apply()函数功能强大,我们可以对矩阵的行或者列进行其它运算,例如:计算每一列的方差 A=matrix(rnorm(100),20,5) apply(A,2,var)1 0.4641787 1.4331070 0.3186012 1.3042711 0.523

32、8485 apply(A,2,function(x,a)x*a,a=2),1 ,2 ,3 ,41, 2 8 14 202, 4 10 16 223, 6 12 18 24注意:apply(A,2,function(x,a)x*a,a=2)与 A*2 效果相同,此处旨在说明如何应用alpply 函数。17 矩阵 XX 的逆在统计计算中,我们常常需要计算这样矩阵的逆,如 OLS 估计中求系数矩阵。R 中的包“strucchange”提供了有效的计算方法。 args(solveCrossprod)function (X, method = c(“qr“, “chol“, “solve“)其中:met

33、hod 指定求逆方法,选用“qr”效率最高,选用“chol ”精度最高,选用“slove”与slove(crossprod(x,x)效果相同,例如: A=matrix(rnorm(16),4,4) solveCrossprod(A,method=“qr“),1 ,2 ,3 ,41, 0.6132102 -0.1543924 -0.2900796 0.20547302, -0.1543924 0.4779277 0.1859490 -0.20973023, -0.2900796 0.1859490 0.6931232 -0.31629614, 0.2054730 -0.2097302 -0.31

34、62961 0.3447627 solveCrossprod(A,method=“chol“),1 ,2 ,3 ,41, 0.6132102 -0.1543924 -0.2900796 0.20547302, -0.1543924 0.4779277 0.1859490 -0.20973023, -0.2900796 0.1859490 0.6931232 -0.31629614, 0.2054730 -0.2097302 -0.3162961 0.3447627 solveCrossprod(A,method=“solve“),1 ,2 ,3 ,41, 0.6132102 -0.154392

35、4 -0.2900796 0.20547302, -0.1543924 0.4779277 0.1859490 -0.20973023, -0.2900796 0.1859490 0.6931232 -0.31629614, 0.2054730 -0.2097302 -0.3162961 0.3447627 solve(crossprod(A,A),1 ,2 ,3 ,41, 0.6132102 -0.1543924 -0.2900796 0.20547302, -0.1543924 0.4779277 0.1859490 -0.20973023, -0.2900796 0.1859490 0.

36、6931232 -0.31629614, 0.2054730 -0.2097302 -0.3162961 0.344762718 取矩阵的上、下三角部分在 R 中,我们可以很方便的取到一个矩阵的上、下三角部分的元素,函数 lower.tri()和函数 upper.tri()提供了有效的方法。 args(lower.tri)function (x, diag = FALSE)函数将返回一个逻辑值矩阵,其中下三角部分为真,上三角部分为假,选项 diag 为真时包含对角元素,为假时不包含对角元素。upper.tri()的效果与之孑然相反。例如: A,1 ,2 ,3 ,41, 1 5 9 132, 2

37、 6 10 143, 3 7 11 154, 4 8 12 16 lower.tri(A),1 ,2 ,3 ,41, FALSE FALSE FALSE FALSE2, TRUE FALSE FALSE FALSE3, TRUE TRUE FALSE FALSE4, TRUE TRUE TRUE FALSE lower.tri(A,diag=T),1 ,2 ,3 ,41, TRUE FALSE FALSE FALSE2, TRUE TRUE FALSE FALSE3, TRUE TRUE TRUE FALSE4, TRUE TRUE TRUE TRUE upper.tri(A),1 ,2 ,3

38、 ,41, FALSE TRUE TRUE TRUE2, FALSE FALSE TRUE TRUE3, FALSE FALSE FALSE TRUE4, FALSE FALSE FALSE FALSE upper.tri(A,diag=T),1 ,2 ,3 ,41, TRUE TRUE TRUE TRUE2, FALSE TRUE TRUE TRUE3, FALSE FALSE TRUE TRUE4, FALSE FALSE FALSE TRUE Alower.tri(A)=0 A,1 ,2 ,3 ,41, 1 5 9 132, 0 6 10 143, 0 0 11 154, 0 0 0 1

39、6 Aupper.tri(A)=0 A,1 ,2 ,3 ,41, 1 0 0 02, 2 6 0 03, 3 7 11 04, 4 8 12 1619 backsolve&fowardsolve 函数这两个函数用于解特殊线性方程组,其特殊之处在于系数矩阵为上或下三角。 args(backsolve)function (r, x, k = ncol(r), upper.tri = TRUE, transpose = FALSE) args(forwardsolve)function (l, x, k = ncol(l), upper.tri = FALSE, transpose = FALSE)

40、其中:r 或者 l 为 nn 维三角矩阵,x 为 n1 维向量,对给定不同的 upper.tri 和transpose 的值,方程的形式不同对于函数 backsolve()而言,例如: A=matrix(1:9,3,3) A,1 ,2 ,31, 1 4 72, 2 5 83, 3 6 9 x=c(1,2,3) x1 1 2 3 B=A Bupper.tri(B)=0 B,1 ,2 ,31, 1 0 02, 2 5 03, 3 6 9 C=A Clower.tri(C)=0 C,1 ,2 ,31, 1 4 72, 0 5 83, 0 0 9 backsolve(A,x,upper.tri=T,t

41、ranspose=T)1 1.00000000 -0.40000000 -0.08888889 solve(t(C),x)1 1.00000000 -0.40000000 -0.08888889 backsolve(A,x,upper.tri=T,transpose=F)1 -0.8000000 -0.1333333 0.3333333 solve(C,x)1 -0.8000000 -0.1333333 0.3333333 backsolve(A,x,upper.tri=F,transpose=T)1 1.111307e-17 2.220446e-17 3.333333e-01 solve(t

42、(B),x)1 1.110223e-17 2.220446e-17 3.333333e-01 backsolve(A,x,upper.tri=F,transpose=F)1 1 0 0 solve(B,x)1 1.000000e+00 -1.540744e-33 -1.850372e-17对于函数 forwardsolve()而言,例如: A,1 ,2 ,31, 1 4 72, 2 5 83, 3 6 9 B,1 ,2 ,31, 1 0 02, 2 5 03, 3 6 9 C,1 ,2 ,31, 1 4 72, 0 5 83, 0 0 9 x1 1 2 3 forwardsolve(A,x,u

43、pper.tri=T,transpose=T)1 1.00000000 -0.40000000 -0.08888889 solve(t(C),x)1 1.00000000 -0.40000000 -0.08888889 forwardsolve(A,x,upper.tri=T,transpose=F)1 -0.8000000 -0.1333333 0.3333333 solve(C,x)1 -0.8000000 -0.1333333 0.3333333 forwardsolve(A,x,upper.tri=F,transpose=T)1 1.111307e-17 2.220446e-17 3.

44、333333e-01 solve(t(B),x)1 1.110223e-17 2.220446e-17 3.333333e-01 forwardsolve(A,x,upper.tri=F,transpose=F)1 1 0 0 solve(B,x)1 1.000000e+00 -1.540744e-33 -1.850372e-1720 row()与 col()函数在 R 中定义了的这两个函数用于取矩阵元素的行或列下标矩阵,例如矩阵 A=aijmn,row()函数将返回一个与矩阵 A 有相同维数的矩阵,该矩阵的第 i 行第 j 列元素为 i,函数 col()类似。例如: x=matrix(1:1

45、2,3,4) row(x),1 ,2 ,3 ,41, 1 1 1 12, 2 2 2 23, 3 3 3 3 col(x),1 ,2 ,3 ,41, 1 2 3 42, 1 2 3 43, 1 2 3 4这两个函数同样可以用于取一个矩阵的上下三角矩阵,例如: x,1 ,2 ,3 ,41, 1 4 7 102, 2 5 8 113, 3 6 9 12 xrow(x) x,1 ,2 ,3 ,41, 1 0 0 02, 2 5 0 03, 3 6 9 0 x=matrix(1:12,3,4) xrow(x)col(x)=0 x,1 ,2 ,3 ,41, 1 4 7 102, 0 5 8 113, 0 0 9 1221 行列式的值在 R 中,函数 det(x)将计算方阵 x 的行列式的值,例如: x=matrix(rnorm(16),4,4) x,1 ,2 ,3 ,41, -1.0736375 0.2809563 -

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报