zty*_*tyh 2 eigenvalue eigenvector julia
我看了看eigvecs和eigen,但他们都没有通过特征值的数量级的特征向量.这是我们必须自己编码的东西吗?
testM=diagm(0=>[1,3,2])
eigvals(testM)
eigvecs(testM)
U=eigen(testM)
U.vectors
U.values
Run Code Online (Sandbox Code Playgroud)
旧的答案是使用eigfact.但是,从v1.0开始,它已重命名eigen并移至标准库包LinearAlgebra,因此您需要using LinearAlgebra在代码顶部使用a .完成此操作后,您可以查看要eigen使用的文档?eigen.请注意,我也更新了这个答案,以取代flipdim与reverse(另一V1.0变化).
对于对称输入,您可以选择传入a UnitRange{Int}以获取与k最小或最大特征值对应的特征向量:
ef = eigen(Symmetric(x), 1:k) #k smallest eigenvalues/vectors
ef.values
ef.vectors
Run Code Online (Sandbox Code Playgroud)
要么
K = size(x, 1)
ef = eigen(Symmetric(x), K-k+1:K) #k largest eigenvalues/vectors
ef.values
ef.vectors
reverse(ef.values, dims=1) #If you want ordered largest to smallest
reverse(ef.vectors, dims=2) #If you want ordered largest to smallest
Run Code Online (Sandbox Code Playgroud)
对于非对称输入,您需要计算所有特征值/向量,然后采用您想要的任何切片.输出仍然是排序的,因此:
K = size(x, 1)
ef = eigen(x)
ef.values[1:k] #smallest k
ef.vectors[:, 1:k] #smallest k
ef.values[K-k+1:K] #largest k
ef.vectors[:, K-k+1:K] #largest k
Run Code Online (Sandbox Code Playgroud)
和以前一样,reverse如果您想要最大的k有序最大到最小,请使用.
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |