簡體   English   中英

R編程中的矩陣

[英]Matrix in R programming

最近在學習 R 編程,這是一個我無法弄清楚的練習。

該程序要求用戶輸入 2 2x2 數學矩陣的 8 個值。 換句話說,一個 2x2 矩陣中有 4 個值,第二個矩陣有另外 4 個值。 然后,如果用戶想要對 2 個矩陣進行加、減、乘或除,程序應該有用戶。 打印記錄。

示例輸出請參見附件。

樣本輸出

我是 R 編程的大牛,我的英語不太好,但我會盡力向你解釋。

首先,您可以像 Amar 那樣創建矩陣:

m1 <- matrix( rep(2,4) , ncol = 2) #rep(x,n) : repeat x n times
m2 <- matrix( c(2,3,5,6) , nrow = 2 , ncol = 2) #Personaly I prefer to precise the number of rows and columns

> m1
     [,1] [,2]
[1,]    2    2
[2,]    2    2
> m2
     [,1] [,2]
[1,]    2    5
[2,]    3    6

操作

您可以在矩陣上使用“傳統”操作: + - * / 但是您必須知道對矩陣的元素逐一應用操作考慮 m3 = m1*m2 ; 這意味着 m3[i,j] = m1[i,j]*m2[i,j]

m3 <- m1*m2
     [,1] [,2]
[1,]    4   10
[2,]    6   12

這顯然不是數學中的矩陣乘法

注意:經典加法 (+) 是正確的

對於矩陣乘法,您必須使用運算 %*%

> m4 <- m1%*%m2
> m4
     [,1] [,2]
[1,]   10   22
[2,]   10   22

Fo 除法不使用 %/% 運算,因為它不是除法而是模數。 並將其返回模數一一應用於矩陣元素。 m5 = m1%/%m2 表示 m5[i,j]=m1[i,j]%/%m2[i,j]

> m5 <- m1%/%m2
> m5
     [,1] [,2]
[1,]    1    0
[2,]    0    0

請注意,在數學中,除法不適用於矩陣。 如果你有方程 m6*m2 = m1 那么 m6 = m1*inverse(m2)

要反轉矩陣,您必須安裝包 matlib :

install.packages("matlib")
> m6 <- m1*inv(m2)
> m6
     [,1]      [,2]
[1,]   -4  3.333333
[2,]    2 -1.333333

重要的 ! 要對矩陣求逆,行列式應與 0 不同:

> det(m2)
[1] -3
> inv(m2)
     [,1]       [,2]
[1,]   -2  1.6666667
[2,]    1 -0.6666667
> det(m1)
[1] 0
> inv(m1)
Error in Inverse(X, tol = sqrt(.Machine$double.eps), ...) : 
  X is numerically singular

在 R 中,如果你有一個矩陣:

m1 <- matrix(c(2,2,2,2), ncol = 2)
m2 <- matrix(c(4,4,4,4), ncol = 2)  

並且您想將兩者相加/相減/相除/相乘,您只需:

m1 + m2 
     [,1] [,2]
[1,]    6    6
[2,]    6    6

如果將輸入的值存儲在列表中,則可以在matrix函數中引用它,如下所示:

matrix(user_input, ncol = 2)
#or
matrix(c(ui1, ui2, ui3, ui4), ncol = 2)

要要求用戶輸入,請查看此 SO 答案: Creating a Prompt/Answer system to input data into R

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM