R語(yǔ)言 實(shí)現(xiàn)矩陣相乘100次
【D1 D2】2*1
【T1 T2】1*2
要求D1和D2隨機(jī)的變動(dòng), 矩陣相乘100次
rm(list=ls()) gc() options(scipen = 2000) ##################寫(xiě)成函數(shù)###########3 #################定義TT矩陣(1*2) TT <- matrix(c(1,3),1,2) DD<- matrix(c(1,2),2,1) result1 <- DD %*% TT m1=result1 ######################設(shè)定隨機(jī)取的整數(shù)范圍 x <- 1:100 m=data.frame() #################變換DD矩陣(2*1)############## for (i in 2:100){ D2<- matrix(c(sample(x,1,replace=TRUE),sample(x,1,replace=TRUE)),2,1) # print(D2) result <- D2%*% TT print(result) m <- rbind(m,result) result1 <- result %*% result1 } (finally_result <- result1) (m_all <- rbind(m,m1))
補(bǔ)充:R語(yǔ)言之矩陣操作和運(yùn)算
1.轉(zhuǎn)置運(yùn)算
對(duì)于矩陣A,函數(shù)t(A)表示矩陣A的轉(zhuǎn)置,如:
> 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.求方陣的行列式
函數(shù)det()是求矩陣行列式的值,如
> det(matrix(1:4,ncol=2)); [1] -2
3.向量的內(nèi)積
對(duì)于n維向量x,可以看成nxl階矩陣或lxn階矩陣。若x與y是相同
維數(shù)的向量,則x%*%Y表示x與y作內(nèi)積.例如,
>x=1:5; Y=2*1:5 >x%*%y [,1] [1,]110
函數(shù)crossprod()是內(nèi)積運(yùn)算函數(shù)(表示交叉乘積),crossprod(x,y)計(jì)算向量x與y的內(nèi)積,即t(x) %*% y'。crossprod(x)表示x與x的內(nèi)積.
類似地,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.向量的外積(叉積)
設(shè)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()是更為強(qiáng)大的外積運(yùn)算函數(shù),outer(x,y)計(jì)算向量二與y的外積,它等價(jià)于x %o%y函數(shù)。
outer()的一般調(diào)用格式為 outer(x,y,fun=”*”)
其中x, y矩陣(或向量),fun是作外積運(yùn)算函數(shù),缺省值為乘法運(yùn)算。函數(shù)outer()在繪制三維曲面時(shí)非常有用,它可生成一個(gè)x和y的網(wǎng)格。
5.矩陣的乘法
設(shè)A和B為兩個(gè)矩陣,通常意義下的矩陣乘法是通過(guò)A%*%B來(lái)完成,crossprod(A,B)表示的是
t(A)%*%B,而tcrossprod(A,B)表示的是A%*%t(B)。最后我們通過(guò)運(yùn)算知道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.生成對(duì)角陣和矩陣取對(duì)角運(yùn)算
函數(shù)diag()依賴于它的變量,當(dāng)v是一個(gè)向量時(shí),diag(v)表示以v的元素為對(duì)角線元素的對(duì)角陣.當(dāng)M是一個(gè)矩陣時(shí),則diag(M)表示的是取M對(duì)角線上的元素的向量.如
> 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).設(shè)矩陣A=t(array(c(1:8,10),dim=c(3,3))),b<-c(1,1,1),則解方程組Ax=b的解x和求矩陣A的逆矩陣的命令如下:
> 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.求矩陣的特征值與特征向量
函數(shù)eigen(Sm)是求對(duì)稱矩陣Sm的特征值與特征向量,其命令形式為:ev=eigen(Sm),則ev存放著對(duì)稱矩陣Sm特征值和特征向量,是由列表形式給出的,其中ev$values是Sm的特征值構(gòu)成的向量,ev$vectors是Sm的特征向量構(gòu)成的矩陣.如
> 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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語(yǔ)言中dnorm,pnorm,qnorm和rnorm的區(qū)別淺析
正在學(xué)習(xí)R語(yǔ)言統(tǒng)計(jì)學(xué)的小伙伴,可能會(huì)被各種專有名詞所困擾,下面這篇文章主要給大家介紹了關(guān)于R語(yǔ)言中dnorm,pnorm,qnorm和rnorm區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-12-12R語(yǔ)言基礎(chǔ)統(tǒng)計(jì)方法圖文實(shí)例講解
這篇文章主要介紹了R語(yǔ)言基礎(chǔ)統(tǒng)計(jì)方法圖文實(shí)例講解,文中圖文合并講解的很透徹,有感興趣的同學(xué)可以研究下2021-03-03R語(yǔ)言數(shù)據(jù)框合并(merge)的幾種方式小結(jié)
這篇文章主要介紹了R語(yǔ)言數(shù)據(jù)框合并(merge)的幾種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03R語(yǔ)言-實(shí)現(xiàn)list的嵌套與提取嵌套中的值
這篇文章主要介紹了R語(yǔ)言-實(shí)現(xiàn)list的嵌套與提取嵌套中的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言wilcoxon秩和檢驗(yàn)及wilcoxon符號(hào)秩檢驗(yàn)的操作
這篇文章主要介紹了R語(yǔ)言wilcoxon秩和檢驗(yàn)及wilcoxon符號(hào)秩檢驗(yàn)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言中cut()函數(shù)的用法說(shuō)明
這篇文章主要介紹了R語(yǔ)言中cut()函數(shù)的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04