我首先对一个随机矩阵及其特征值和特征向量进行采样。
n <- 2000
#Sample GOE random matrix
A <- matrix(rnorm(n*n, mean=0, sd=1), n, n)
G <- (A + t(A))/sqrt(2*n)
ev <- eigen(G)
l <- ev$values
v <- ev$vectors
我还生成了均匀分布在球面上的随机向量
#size of multivariate distribution
mean <- rep(0, n)
var <- diag(n)
#make this example reproducible
set.seed(101)
#simulate bivariate normal distribution
initial <- mvrnorm(n=10, mu=mean, Sigma=var)
#normalized the first possible initial value, the initial data uniformly distributed on the sphere
x_0 <- initial[1, ]/norm(initial[1, ], type="2")
所以x_0
是一个均匀分布在球面上的随机向量,v
的每一列都是矩阵的特征向量。
现在我想定义以下函数
我的代码如下。但我的问题是如何写分母。
h10 <- x_0 %*% v[, n]
sum((x_0 %*% v[, i])^2) #How to fix this one?
h1 <- function(t) {
abs(h10)*exp(-2*l[n]*t)/(sqrt())
}
1条答案
按热度按时间k3bvogb11#
这里有一个方法,把计算分解成
numer
和denom
,利用R的矢量化能力来计算矩阵乘积、幂和平方根。这个函数是
t
上的标量函数,所以我也对"t"
上的标量函数进行了矢量化(与上面的无关)。创建于2022年11月28日,使用reprex v2.0.2