我有一个矩阵,我想知道这是否是对角化对角化。我如何在R编程语言中执行此操作?确定是否矩阵是在R编程语言
6
A
回答
7
如果你有一个给定的矩阵,m,则一种方法是在采取本征矢量乘以对角线本征值的倍的原始矩阵的逆矩阵。这应该让我们回到原始矩阵。中的R,看起来像:
m <- matrix(c(1:16), nrow = 4)
p <- eigen(m)$vectors
d <- diag(eigen(m)$values)
p %*% d %*% solve(p)
m
所以在该示例中[P%%d%%解决(P)]应该是相同的为m
是的,我完全偷从R Wiki。
4
可以实现完整的算法来检查矩阵减少到约旦的形式或对角线之一(见例如,this document)。或者你可以采取快速和肮脏的方式:对于n维方阵,使用特征(M)$值并检查它们是不同的值。对于随机矩阵,这总是足够的:简并性有prob0。
P.S:基于由JD长一个简单的观察之下,我忆及,diagonalizability一个充分必要条件是,特征向量跨越原有的空间。要检查这一点,只要看到特征向量矩阵具有满秩(无零特征值)。因此,这里是代码:
diagflag = function(m,tol=1e-10){
x = eigen(m)$vectors
y = min(abs(eigen(x)$values))
return(y>tol)
}
# nondiagonalizable matrix
m1 = matrix(c(1,1,0,1),nrow=2)
# diagonalizable matrix
m2 = matrix(c(-1,1,0,1),nrow=2)
> m1
[,1] [,2]
[1,] 1 0
[2,] 1 1
> diagflag(m1)
[1] FALSE
> m2
[,1] [,2]
[1,] -1 0
[2,] 1 1
> diagflag(m2)
[1] TRUE
2
你可能想一些基本的讨论和代码检查this page。您需要搜索“对角化”,这是相关部分开始的地方。
相关问题
- 1. 标准来确定它是否是一个编程语言
- 2. R:函数来确定矩阵是否是正方形
- 3. 在Haskell上编程矩阵的语言学方法是什么?
- 4. 是否有可能确定.NET程序集编写的语言?
- 5. 确定矩阵是否为单位矩阵(numpy)
- 6. 这种语言是否可确定
- 7. CMS是否独立于编程语言?
- 8. R编程中的矩阵
- 9. 标记语言是否被视为编程语言?
- 10. 选择矩阵元素(矩阵语言)
- 11. R是一种编译语言吗?
- 12. R对象不是矩阵
- 13. 确定在Prolog中节点是否以矩阵连接
- 14. 函数式编程语言是否适合图形编程?
- 15. 如何确定给定的语言是否正规(仅通过查看语言)?
- 16. 是R语言解释?
- 17. 如何在编程语言R
- 18. 序言 - 这种否定是否正确?
- 19. 给定一个矩阵,我如何确定矩阵的条目是否是独立和相同分布(IID)?
- 20. CUDA是否有汇编语言?
- 21. C编程语言是否支持SQL语句
- 22. 8086汇编语言创建矩阵屏幕保护程序
- 23. 确定一个矩阵是否有魔力
- 24. Eigen - 检查矩阵是否为正(半) - 确定
- 25. Ada编程语言在军队中是否仍然相关?
- 26. 如何使用Ruby编程语言检测cookie是否存在?
- 27. 检查矩阵是否是Matlab中的单位矩阵
- 28. 测试矩阵是否是稀疏矩阵
- 29. R:在矩阵
- 30. 确定是否JavaScript语法是ACE
plesae问你的问题在相关数学论坛... – 2009-07-25 02:34:35
这是确定的,他们的预期。 http://blog.stackoverflow.com/2009/07/stack-overflow-flash-mobs/ – LachlanG 2009-07-25 02:38:03
@Mitch:这是一个编程问题。 R是一种编程语言。 – jalf 2009-07-25 02:50:25