亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

R語(yǔ)言 實(shí)現(xiàn)矩陣相乘100次

 更新時(shí)間:2021年04月01日 09:52:37   作者:開(kāi)心果汁  
這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)矩陣相乘100次的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

【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)文章

最新評(píng)論