首页/文章/ 详情

Lanczos算法求自振频率

7月前浏览7331

Lanczos算法是一种基于瑞利-里兹方法的正交变换法,该方法在许多有限元软件得到了应用。例如ANSYS中模态分析就有Lanczos算法。


Lanczos基本算法流程:

对i=2,3,...,q(q是欲求频率阶数),下列公式可形成一组关于质量矩阵M正则化得向量x1、x2、...xq

因此,矩阵Tq的特征值与Kφ= λMφ的特征值互为倒数关系。Tq是三对角矩阵,用QR迭代法或者Householder变换可高效地求解其特征值与特征向量。点击这里查看Householder变换


当q<n时,Lanczos算法可得出精确的低阶频率结果。为了提高其计算精度,需要对基本算法进行改进,比如在迭代过程中可以利用Gram-Schmidt技术对迭代向量进行重新正交化,采用移轴法提高效率等等。实际应用的Lanczos算法都是在上述基本算法基础上改进的。


【例1】  如图所示的平面桁架,E = 2.0E11Pa,A = 1E-4m2,ρ=7300kg/m3,采用集中质量矩阵,用Fortran语言自编程序求得前两阶自振频率分别为 231.8679,278.3737,与ANSYS计算结果一致,而第四阶及以后频率的误差较大。这是算法本身的局限性。



来源:数值分析与有限元编程
ANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-01
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 15文章 326课程 0
点赞
收藏
作者推荐

Fortran知识 | DLL缺失

编写代码的目的是计算得到结果。或者是发布一个程序(exe或其他)给别人,甚至是作为商业软件出售给别人使用。有时编译后的exe程序再复 制到其他计算机上独立运行会出现类似下面的错误:我们不禁会问:Fortran是编译型语言,编译好的程序(exe等)是完全可以独立于编译器运行的。而编译器编译后的程序,还会依赖这些DLL?事实上在我们编写的代码中,有一些通用性的代码需要由编译器来提供。比如读写文件,或者一些常见的内置函数,这些通常被称为运行时库(Runtime library)。有些编译器会将运行时库(或部分)写入到DLL里。这样做的好处是:1.减少编译后exe文件的大小。2.提高编译链接速度。3.提高通用代码的可重复使用。4.便于升级。对于这类的编译器,写到DLL里的运行时库,我们编译后的程序就会依赖它。解决这个问题,最简单的办法是将源代码重新编译,或者将这些DLL和exe程序一同拷贝。来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈