查找具有正交特征向量的矩阵
Find Matrix which has orthogonal eigenvectors
我想找到一个 n x n 矩阵 S,其特征向量是正交的,并且具有不重复的 整数 特征值。正交矩阵 Q 的检验是 QQ^T=I。我写了一个函数来测试 1e5 个随机矩阵。我如何return 满足条件的矩阵,如果不满足则丢弃它?
1.对于单个测试矩阵:
require(matrix)
s<-matrix(sample(1:20,9,replace=TRUE),ncol=3) #Random Test matrix
s[lower.tri(s)] = t(s)[lower.tri(s)] #Make it symmetrical
eigen(s)->dC #Find eigenvectors and eigenvalues of S.
#Test orthogonality of matrix of eigenvectors (Q) by QQ^T=Identity
sum(dC$vectors%*%t(dC$vectors)-diag(1,3))<1e-6 #Gives TRUE or FALSE
#Test for integer eigenvalues:
if(dC$values%%1==0){return(TRUE)} #Want integer eigenvalues
else {return(FALSE)}
2。尝试测试多个矩阵
#Create some symmetrical matrices
testMatrices<-list() #List of matrices
for (k in 1:1e5) {
(s<-matrix(sample(1:20,9,replace=TRUE),ncol=3))
s[lower.tri(s)] = t(s)[lower.tri(s)] #Create triangular matrix
testMatrices[[k]] <- s
};rm(k)
eigenDecompFunction<-function(s){
eigen(s)->dC
if(dC$values%%1==0){return(TRUE)} #Want integer eigenvalues
else {return(FALSE)}
#Test for orthogonal matrix QQ^T=I
if (sum(dC$vectors%*%t(dC$vectors)-diag(1,3))<1e-6){
return(s)
}else {return(FALSE)}
}
生成具有所需特征向量的 'easy' 矩阵然后应用随机旋转会更有效。使用 these two Mathematics Stack Exchange 答案复习我生疏的线性代数:
n <- 5
v <- 1:n ## specify eigenvalues (one simple example!)
m <- diag(1:n) ## create a diag matrix with these elements
set.seed(101)
## from Math SE link #1: could also use `pracma::randortho(n, type = "unitary")
r1 <- matrix(rnorm(n^2), n, n)
q1 <- qr(r1)
## from Math SE link #2: this is t(Q) %*% m %*% Q
m2 <- qr.qty(q1, qr.qy(q1, m))
现在用 eigen(m2)$values
检查,结果是 5 4 3 2 1
(原始特征值,按照特征值的标准降序排列)
上面的解决方案给出了随机 real-valued(或更确切地说 floating-point-valued)具有整数特征值(或更确切地说 floating-point 值可能是 integer-valued 或非常接近)的矩阵。如果你想要一个具有整数特征值的 integer-valued 矩阵,我有一些 bad news for you:
Our main result affirms and strengthens a conjecture made in [4]: for any n > 2, the probability that a random n x n integer matrix has even a single integer eigenvalue is 0.
Martin、Greg 和 Erick B. Wong。 “几乎所有整数矩阵都没有整数特征值。”美国数学月刊 116,没有。 7 (2009): 588–97.
然后我有一些更坏的消息,那就是 the rational eigenvalues of an integer-valued matrix are integral。结合之前的结果,这意味着无论您想要 integer-valued 还是只需要有理特征值, 您都需要解决数学上不可能的问题 。这并不意味着没有特殊形式的整数矩阵可以满足您的约束(可能提供无限多的解决方案)——但除非我遗漏了什么,否则这意味着您对随机整数矩阵进行采样并希望其中一些将具有有理数或整数特征值实际上注定...
我想找到一个 n x n 矩阵 S,其特征向量是正交的,并且具有不重复的 整数 特征值。正交矩阵 Q 的检验是 QQ^T=I。我写了一个函数来测试 1e5 个随机矩阵。我如何return 满足条件的矩阵,如果不满足则丢弃它?
1.对于单个测试矩阵:
require(matrix)
s<-matrix(sample(1:20,9,replace=TRUE),ncol=3) #Random Test matrix
s[lower.tri(s)] = t(s)[lower.tri(s)] #Make it symmetrical
eigen(s)->dC #Find eigenvectors and eigenvalues of S.
#Test orthogonality of matrix of eigenvectors (Q) by QQ^T=Identity
sum(dC$vectors%*%t(dC$vectors)-diag(1,3))<1e-6 #Gives TRUE or FALSE
#Test for integer eigenvalues:
if(dC$values%%1==0){return(TRUE)} #Want integer eigenvalues
else {return(FALSE)}
2。尝试测试多个矩阵
#Create some symmetrical matrices
testMatrices<-list() #List of matrices
for (k in 1:1e5) {
(s<-matrix(sample(1:20,9,replace=TRUE),ncol=3))
s[lower.tri(s)] = t(s)[lower.tri(s)] #Create triangular matrix
testMatrices[[k]] <- s
};rm(k)
eigenDecompFunction<-function(s){
eigen(s)->dC
if(dC$values%%1==0){return(TRUE)} #Want integer eigenvalues
else {return(FALSE)}
#Test for orthogonal matrix QQ^T=I
if (sum(dC$vectors%*%t(dC$vectors)-diag(1,3))<1e-6){
return(s)
}else {return(FALSE)}
}
生成具有所需特征向量的 'easy' 矩阵然后应用随机旋转会更有效。使用 these two Mathematics Stack Exchange 答案复习我生疏的线性代数:
n <- 5
v <- 1:n ## specify eigenvalues (one simple example!)
m <- diag(1:n) ## create a diag matrix with these elements
set.seed(101)
## from Math SE link #1: could also use `pracma::randortho(n, type = "unitary")
r1 <- matrix(rnorm(n^2), n, n)
q1 <- qr(r1)
## from Math SE link #2: this is t(Q) %*% m %*% Q
m2 <- qr.qty(q1, qr.qy(q1, m))
现在用 eigen(m2)$values
检查,结果是 5 4 3 2 1
(原始特征值,按照特征值的标准降序排列)
上面的解决方案给出了随机 real-valued(或更确切地说 floating-point-valued)具有整数特征值(或更确切地说 floating-point 值可能是 integer-valued 或非常接近)的矩阵。如果你想要一个具有整数特征值的 integer-valued 矩阵,我有一些 bad news for you:
Our main result affirms and strengthens a conjecture made in [4]: for any n > 2, the probability that a random n x n integer matrix has even a single integer eigenvalue is 0.
Martin、Greg 和 Erick B. Wong。 “几乎所有整数矩阵都没有整数特征值。”美国数学月刊 116,没有。 7 (2009): 588–97.
然后我有一些更坏的消息,那就是 the rational eigenvalues of an integer-valued matrix are integral。结合之前的结果,这意味着无论您想要 integer-valued 还是只需要有理特征值, 您都需要解决数学上不可能的问题 。这并不意味着没有特殊形式的整数矩阵可以满足您的约束(可能提供无限多的解决方案)——但除非我遗漏了什么,否则这意味着您对随机整数矩阵进行采样并希望其中一些将具有有理数或整数特征值实际上注定...