r語言安裝ipsolve R語言矩陣操作之矩陣運算

2021-10-13 14:15:03 字數 3622 閱讀 8995

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

2.求方陣的行列式

函式det()是求矩陣行列式的值,如

> det(matrix(1:4,ncol=2));

[1] -2

3.向量的內積

對於n維向量x,可以看成nxl階矩陣或lxn階矩陣。若x與y是相同

維數的向量,則x%*%y表示x與y作內積.例如,

>x=1:5; y=2*1:5

>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]

[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

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的網格。

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

[2,]  114   69   24

[3,]  138   84   30

> crossprod(a,b)==t(a)%*%b;

[,1] [,2] [,3]

[1,] true true true

[2,] true true true

[3,] true true true

> tcrossprod(a,b)==a%*%t(b);

[,1] [,2] [,3]

[1,] true true true

[2,] true true true

[3,] true true true

6.生成對角陣和矩陣取對角運算

函式diag()依賴於它的變數,當v是乙個向量時,diag(v)表示以v的元素為對角線元素的對角陣.當m是乙個矩陣時,則diag(m)表示的是取m對角線上的元素的向量.如

> v=c(1,4,5);

> diag(v);

[,1] [,2] [,3]

[1,]    1    0    0

[2,]    0    4    0

[3,]    0    0    5

> m=array(1:9,dim=c(3,3));

> diag(m);

[1] 1 5 9

7.解線性方程組和求矩陣的逆矩陣

若求解線性方程組ax=b,其命令形式為solve(a,b),求矩陣a的逆,其命令形式為solve(a).設矩陣a=t(array(c(1:8,10),dim=c(3,3))),b

> a=t(array(c(1:8,10),dim=c(3,3)));

> b=c(1,1,1);

> x=solve(a,b);

> x;

[1] -1.000000e+00  1.000000e+00  3.806634e-16

> solve(a);

[,1]      [,2] [,3]

[1,] -0.6666667 -1.333333    1

[2,] -0.6666667  3.666667   -2

[3,]  1.0000000 -2.000000    1

8.求矩陣的特徵值與特徵向量

函式eigen(sm)是求對稱矩陣sm的特徵值與特徵向量,其命令形式為:ev=eigen(sm),則ev存放著對稱矩陣sm特徵值和特徵向量,是由列表形式給出的,其中ev$values是sm的特徵值構成的向量,ev$vectors是sm的特徵向量構成的矩陣.如

> sm=crossprod(a,a);

> ev=eigen(sm);

> ev;

$values

[1] 303.19533618   0.76590739   0.03875643

$vectors

[,1]         [,2]       [,3]

[1,] -0.4646675  0.833286355  0.2995295

[2,] -0.5537546 -0.009499485 -0.8326258

[3,] -0.6909703 -0.552759994  0.4658502

r語言安裝r包

cran,bioconductor還有github。bioconductor一般都是生物資訊方面的r包。github是 的託管平台,很多軟體,多種語言的程式包也都在這裡發布。install.packages dyplr 注意 更改映象 options repos c cran options bio...

R語言安裝部署

ubuntu12.04 安裝r語言環境3.01 sudo vim etc apt sources.list 新增 deb precise sudo apt get update 如果報錯執行 sudo apt key adv keyserver keyserver.ubuntu.com recv k...

Ubuntu安裝R語言

在ubuntu介面下,快捷鍵ctrl alt t開啟終端。輸入命令 sudo s。回車,輸入使用者密碼,將許可權提公升為root許可權。入命令 apt get update。獲取最新軟體包資訊。使用命令 apt get install r base。自動安裝r語言。安裝過程中,若出現選擇提示,一律選...