【问题标题】:How can I make a symmetric tridiagonal matrix (Wilkinson matrix) in R and compute the eigenvalues?如何在 R 中制作对称三对角矩阵(威尔金森矩阵)并计算特征值?
【发布时间】:2021-12-18 07:58:24
【问题描述】:

在线性代数中,Wilkinson 矩阵是对称的、三对角的、 具有几乎但不完全相等的对的 N 阶矩阵 特征值。威尔金森矩阵在许多领域都有应用,包括科学计算、数值线性代数和信号处理。(Wikipedia)

按照维基百科的矩阵示例,我有这个矩阵:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    3    1    0    0    0    0    0
[2,]    1    2    1    0    0    0    0
[3,]    0    1    1    1    0    0    0
[4,]    0    0    1    0    1    0    0
[5,]    0    0    0    1    1    1    0
[6,]    0    0    0    0    1    2    1
[7,]    0    0    0    0    0    1    3

如何创建此矩阵并计算 R 中的特征值?

【问题讨论】:

    标签: r matrix linear-algebra eigenvalue eigenvector


    【解决方案1】:

    使用此脚本,您可以创建 Wilkinson 矩阵并计算特征值

    identity_6_by_7 <- diag(rep.int(1, 6), 6, 7) # create a 6x7 matrix with ones on the main diagonal
    below_the_diagonal <- rbind(0, identity_6_by_7) # create a row of zeros below the diagonal 
    identity_7_by_6 <- diag(rep.int(1, 6), 7, 6) # matrix with the ones offset one up from the diagonal
    above_the_diagonal <- cbind(0, identity_7_by_6) # create a row of zeros above the diagonal 
    on_the_diagonal <- diag(abs(seq.int(-3, 3))) # diagonal of values from abs(-3 to 3)
    wilkinson_21 <- below_the_diagonal + above_the_diagonal + on_the_diagonal
    eigen(wilkinson_21)$values # eigen values
    

    你可以检查特征:

    eigen(wilkinson_21)$values
    [1]  3.7615572  3.7320508  2.3633282  2.0000000  1.0000000  0.2679492 -1.1248854
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多