R语言矩阵的相关计算

R语言矩阵的相关计算求矩阵线性方程组求解伴随矩阵 使用 函数
矩阵的转置
例:求下列矩阵的转置
b = [ 1 5 6 2 4 2 5 8 9 ] b=\left[ \begin{} 1& 5& 6\\ 2& 4& 2\\ 5& 8& 9\\ \end{} \right] b=???125?548?629????
这里我们用到t函数
a <-c(1,5,6,4,8,2,5,8,9) b <- matrix(a,nc=3,byrow=T);bt(b)
输出结果:
矩阵的乘法
使用a%*%b表示矩阵ab的乘积,这里介绍第二种方法
(X,Y)计算 X T Y X^TY XTY
计算 b T b b^Tb bTb
crossprod(b,b)
计算 b b T bb^T bbT
bt <- t(b);bt#首先计算出转置crossprod(bt,bt)
计算 b ? b b*b b?b
bt <- t(b);btcrossprod(bt,b)
特征值和特征向量
用到eigen函数
eigen(b)
行列式的值
用到det函数
det(b)
求逆矩阵 方法一:
solve(A,B)可以求解 A X = B AX=B AX=B ,当只有A时,即solve(A)表示求 A X = E AX=E AX=E,即求A的逆矩阵
求 A = [ 1 1 1 2 ? 1 ? 3 4 1 9 ] 的逆矩阵 \text{求}A=\left[ \begin{} 1& 1& 1\\ 2& -1& -3\\ 4& 1& 9\\ \end{} \right] \text{的逆矩阵} 求A=???124?1?11?1?39????的逆矩阵
A<-c(1,1,1,2,-1,-3,4,1,9) A <- matrix(ab,nc=3,byrow=T)solve(A)
方法二:
使用MASS包里的ginv函数
library(MASS)ginv(A)
求矩阵线性方程组
solve(A,B)可以求解 A X = B AX=B AX=B ,当只有A时,即solve(A)表示求 A X = E AX=E AX=E,即求A的逆矩阵
x 1 + x 2 + x 3 = 1 2 x 1 ? x 2 ? 3 x 3 = 0 4 x 1 + x 2 + 9 x 3 = 0 x_1+x_2+x_3=1 \\ 2x_1-x_2-3x_3=0 \\ 4x_1+x_2+9x_3=0 x1?+x2?+x3?=12x1??x2??3x3?=04x1?+x2?+9x3?=0
这个系数矩阵就是上面的A
A<-c(1,1,1,2,-1,-3,4,1,9) A <- matrix(A,nc=3,byrow=T)B <- c(1,0,0) B<- t(B)solve(A,B)
即 x 1 = 0.2 , x 2 = 1 , x 3 = ? 0.2 x_1=0.2,x_2=1,x_3=-0.2 x1?=0.2,x2?=1,x3?=?0.2
求解伴随矩阵
求 a = [ 1 1 1 2 ? 1 ? 3 4 1 9 ] 的伴随矩阵 \text{求}a=\left[ \begin{} 1& 1& 1\\ 2& -1& -3\\ 4& 1& 9\\ \end{} \right] \text{的伴随矩阵} 求a=???124?1?11?1?39????的伴随矩阵
a<-c(1,1,1,2,-1,-3,4,1,9) a <- matrix(A,nc=3,byrow=T)
这里我没有找到求解伴随矩阵的函数,如果有知道的,请在评论区告知,谢谢
使用for循环
根据伴随矩阵的定义,我们可以简单的写个for循环语句来求解
A ? = [ A 11 A 21 A 31 A 12 A 22 A 32 A 13 A 23 A 33 ] = ( A i j ) T A^{\ast}=\left[ \begin{} A_{11}& A_{21}& A_{31}\\ A_{12}& A_{22}& A_{32}\\ A_{13}& A_{23}& A_{33}\\ \end{} \right] =\left( A_{ij} \right) ^T A?=???A11?A12?A13??A21?A22?A23??A31?A32?A33?????=(Aij?)T
D<- matrix(0,nc=3,nr=3);D#首先创建一个3×3的0矩阵for ( i in 1:3){for(j in 1:3)D[i,j] <- (-1)^(i+j)*det(a[-j,-i])}D
验证
若 A ? A^{\ast} A?是矩阵A的伴随矩阵,根据伴随矩阵的性质有
A A ? = A ? A = ∣ A ∣ E AA^{\ast}=A^{\ast}A=\left| A \right|E AA?=A?A=∣A∣E
首先用diag函数创建一个3阶单位阵
C <- diag(3);C
首先计算 a ? D 和 D ? a 即 验 证 A A ? = A ? A a*D和D*a即验证AA^{\ast}=A^{\ast}A a?D和D?a即验证AA?=A?A
a%*%DD%*%a