微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scipy 没有显示正确的特征值?

如何解决Scipy 没有显示正确的特征值?

我正在尝试求解 M^-1 * K 的特征值,但得到错误的特征值。这里有什么问题?正确的特征值应该是:3.17,9.13,13.98,17.15

    from scipy import linalg
    import numpy as np
    

    M = np.diag([30,30,30])  # ton
    K = np.array([[5000,-2500,0],[-2500,5000,[0,-2500],2500]
                  ])
    
    M_inv = linalg.inv(M)
    la,v = linalg.eig(M_inv @ K)
    
    print(la)

解决方法

您的代码为 la 计算以下内容:

In [82]: la
Out[82]: array([ 10.05122987,83.33333333,195.60802961,294.34074052])

如果我们取这些值的平方根,我们会看到 la 包含您期望的值的平方

In [83]: np.sqrt(la)
Out[83]: array([ 3.17036747,9.12870929,13.98599405,17.15636152])

所以我怀疑问题在于将您正在解决的问题正确转换为 Python 代码并解释结果。

看起来这是一个振动问题(M 是质量矩阵,K 是弹簧力的刚度矩阵),您实施的方程求解平方振动频率 ω²,而您预期的结果是频率ω。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。