#绘图
library(igraph)
A<-matrix(c(0,1,0,1,1,
1,0,1,0,0,
0,1,0,0,1,
1,0,0,0,1,
1,0,1,1,0),ncol=5, nrow=5)
colnames(A)=rownames(A)=c("v1","v2","v3","v4","v5")
set.seed(10)
#绘制无向图
network<-graph_from_adjacency_matrix(A,mode = 'upper')
plot(network)
R<-get.adjacency(network)
R
## 5 x 5 sparse Matrix of class "dgCMatrix"
## v1 v2 v3 v4 v5
## v1 . 1 . 1 1
## v2 1 . 1 . .
## v3 . 1 . . 1
## v4 1 . . . 1
## v5 1 . 1 1 .
#绘制无向有权图
A1<-matrix(c(0,1,0,4,6,
1,0,2,0,0,
0,2,0,0,3,
4,0,0,0,5,
6,0,3,5,0),ncol=5, nrow=5)
colnames(A1)=rownames(A)=c("v1","v2","v3","v4","v5")
set.seed(10)
#绘制无向加权图
network1<-graph_from_adjacency_matrix(A1,mode = 'upper')
plot(network1)
R1<-get.adjacency(network1)
R1
## 5 x 5 sparse Matrix of class "dgCMatrix"
## v1 v2 v3 v4 v5
## v1 . 1 . 4 6
## v2 1 . 2 . .
## v3 . 2 . . 3
## v4 4 . . . 5
## v5 6 . 3 5 .
#绘制无权有向图
A2<-matrix(c(0,1,0,1,0,
0,0,1,0,0,
0,0,0,0,1,
0,0,0,0,1,
1,0,0,0,0),ncol=5, nrow=5)
colnames(A2)=rownames(A2)=t(c("v1","v2","v3","v4","v5"))
set.seed(10)
#绘制无向加权图
network3<-graph_from_adjacency_matrix(A2)
plot(network3)
R2<-get.adjacency(network3)
R2
## 5 x 5 sparse Matrix of class "dgCMatrix"
## v1 v2 v3 v4 v5
## v1 . . . . 1
## v2 1 . . . .
## v3 . 1 . . .
## v4 1 . . . .
## v5 . . 1 1 .
library(network)
edge_list <- cbind(c(1,1,2,3,4,5), c(2,4,3,5,5,1))
g <- network::network(edge_list)
degree(network)
## v1 v2 v3 v4 v5
## 3 2 2 2 3
graph.strength(network1)
## v1 v2 v3 v4 v5
## 11 3 5 9 14
A<-matrix(c(0,1,0,1,1,
1,0,1,0,0,
0,1,0,0,1,
1,0,0,0,1,
1,0,1,1,0),ncol=5, nrow=5)
A
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0 1 0 1 1
## [2,] 1 0 1 0 0
## [3,] 0 1 0 0 1
## [4,] 1 0 0 0 1
## [5,] 1 0 1 1 0
ev <- eigen(A)
ev$values
## [1] 2.481194e+00 6.888922e-01 -1.776357e-15 -1.170086e+00 -2.000000e+00
which.max(ev$values)
## [1] 1
ev$values[which.max(ev$values)]
## [1] 2.481194
ev$vectors
## [,1] [,2] [,3] [,4] [,5]
## [1,] -0.5298991 0.1793384 5.000000e-01 0.4324866 5.000000e-01
## [2,] -0.3577512 -0.5764509 5.000000e-01 -0.1992947 -5.000000e-01
## [3,] -0.3577512 -0.5764509 -5.000000e-01 -0.1992947 5.000000e-01
## [4,] -0.4271323 0.5206574 -2.220446e-16 -0.7392387 1.665335e-16
## [5,] -0.5298991 0.1793384 -5.000000e-01 0.4324866 -5.000000e-01
ev$vectors[,1]
## [1] -0.5298991 -0.3577512 -0.3577512 -0.4271323 -0.5298991
round(-ev$vectors[,1]/0.53,2)
## [1] 1.00 0.68 0.68 0.81 1.00
library(MASS)
## Warning: package 'MASS' was built under R version 4.1.2
B<-1/5 *A
B
## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.0 0.2 0.0 0.2 0.2
## [2,] 0.2 0.0 0.2 0.0 0.0
## [3,] 0.0 0.2 0.0 0.0 0.2
## [4,] 0.2 0.0 0.0 0.0 0.2
## [5,] 0.2 0.0 0.2 0.2 0.0
e<- rep(1, 5);
I<-diag(e) #单位阵
I
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 0 0 0 0
## [2,] 0 1 0 0 0
## [3,] 0 0 1 0 0
## [4,] 0 0 0 1 0
## [5,] 0 0 0 0 1
beta<-c(1,1,1,1,1)
beta
## [1] 1 1 1 1 1
ginv(I-B) #求矩阵I-B的逆矩阵
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1.1748401 0.25799574 0.11513859 0.29850746 0.3176972
## [2,] 0.2579957 1.10021322 0.24307036 0.07462687 0.1151386
## [3,] 0.1151386 0.24307036 1.10021322 0.07462687 0.2579957
## [4,] 0.2985075 0.07462687 0.07462687 1.11940299 0.2985075
## [5,] 0.3176972 0.11513859 0.25799574 0.29850746 1.1748401
round(ginv(I-B)%*%beta,1)
## [,1]
## [1,] 2.2
## [2,] 1.8
## [3,] 1.8
## [4,] 1.9
## [5,] 2.2