Lanczos算法
A. 什么叫模态提取方法
模态提取方法有Block Lanczos法,Subspace法,powerDynamics法,reced法,unsymmetric法,damped法。这些方法都代表什么意思,有什么不同? 1. 分块Lanczos法特征值求解器是却省求解器,它采用Lanczos算法,是用一组向量来实现Lanczos递归计算。这种方法和子空间法一样精确,但速度更快。无论EQSLV命令指定过何种求解器进行求解,分块Lanczos法都将自动采用稀疏矩阵方程求解器。
2. 子空间法使用子空间迭代技术,它内部使用广义Jacobi迭代算法。由于该方法采用完整的刚度和质量矩阵,因此精度很高,但是计算速度比缩减法慢。这种方法经常用于对计算精度要求高,但无法选择主自由度(DOF)的情形。
3. PowerDynamics法内部采用子空间迭代计算,但采用PCG迭代求解器。这种方法明显地比子空间法和分块Lanczos法快。但是,如果模型中包含形状较差的单元或病态矩阵时可能出现不收敛问题。该法特别适用于求解超大模型(大于100,000个自由度)的起始少数阶模态。谱分析不要使用该方法提取模态。
4.缩减法采用HBI算法(Householder-二分-逆迭代)来计算特征值和特征向量。由于该方法采用一个较小的自由度子集即主自由度(DOF)来计算,因此计算速度更快。主自由度(DOF)导致计算过程中会形成精确的刚度矩阵和近似的质量矩阵(通常会有一些质量损失)。因此,计算结果的精度将取决于质量阵的近似程度,近似程度又取决于主自由度的数目和位置。
5. 非对称法也采用完整的刚度和质量矩阵,适用于刚度和质量矩阵为非对称的问题(例如声学中流体-结构耦合问题)。此法采用Lanczos算法,如果系统是非保守的(例如轴安装在轴承上),这种算法将解得复数特征值和特征向量。特征值的实部表示固有频率,虚部是系统稳定性的量度─负值表示系统是稳定的,而正值表示系统是不稳定的。该方法不进行Sturm序列检查,因此有可能遗漏一些高频端模态。
6. 阻尼法用于阻尼不能被忽略的问题,如转子动力学研究。该法使用完整矩阵(刚度、质量及阻尼矩阵)。阻尼法采用Lanczos算法并计算得到复数特征值和特征向量。此法不能用Sturm序列检查。因此,有可能遗漏所提取频率的一些高频端模态。
B. Lanczos算法的概述
Lanczos算法实际上是Arnoldi算法对于对称矩阵的特殊形式,可应用于对称矩阵线性方程组求解的Krylov子空间方法以及对称矩阵的特征值问题。
C. lanczos算法将矩阵化为三对角矩阵后,用什么方法求特征值、特征向量呢
实对称三对角矩阵可以用对称QR算法/分治算法/二分法/MRRR等多种方法对角化
如果没有什么特殊需求的话Lanczos过程之后用QR算法就行了
D. 求教x264中缩小分辨率时lanczos算法和spline算法
你可以查一下计算结构动力学一类的书,关于求三对角矩阵特征值时使用的方法,有时与移频技术联合使用,可以求特定范围内的频率的模态,又称"兰索斯“法
E. 矩阵分解的奇异值分解法
奇异值分解 (singular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。[U,S,V]=svd(A),其中U和V分别代表两个正交矩阵,而S代表一对角矩阵。 和QR分解法相同, 原矩阵A不必为正方矩阵。使用SVD分解法的用途是解最小平方误差法和数据压缩。
MATLAB以svd函数来执行svd分解法, 其语法为[S,V,D]=svd(A)。
F. Lanczos算法的介绍
Lanczos算法
输入:对称矩阵A
输出:正交阵P,对称三对角阵S(只有对角线和对角线上下两个次对角线的元素非0),满足A=PSP'
在对称阵进行特征值分解时,如果只求最大的几个特征值和特征向量,那么lanczos方法将非常好用。
因为此时不需要完全求出P,只需要求出P的前几列就可以。接着
求解S的特征值分解:S=Q D Q',(D为对角阵,Q为正交阵),
最后得到A的特征值分解:A=PQ D (PQ)'
现在来看看复杂度,假设我们要求A的最大的r个特征值,一般来说,当r比较大时只需要求出P的前1.5*r列,此时注意到S为1.5*r的三对角阵,远远小于A的大小,所以其特征值分解会很快。这就是lanczos算法的优点所在。
更多资料,请见:
lanczos算法及C++实现(〇)C++代码
http://www.cnblogs.com/qxred/p/lanczoscpp.html
lanczos算法及C++实现(一)框架及简单实现
http://www.cnblogs.com/qxred/p/lanczos.html
lanczos算法及C++实现(二)实对称阵奇异值分解的QR算法
http://www.cnblogs.com/qxred/p/qralgorithm.html
lanczos算法及C++实现(三)实对称三对角阵特征值分解的分治算法
http://www.cnblogs.com/qxred/p/dcalgorithm.html
G. ANSYS 中有哪几种提取模态的方法
在 ANSYS 中有以下几种提取模态的方法:
(1) Block Lanczos 法
(2) 子空间法
(3) PowerDynamics 法
(4) 减缩法
(5) 不对称法
(6) 阻尼法
使用何种模态提取方法主要取决于模型大小(相对于计算机的计算能力而言)和具体的应用场合。
(1) Block Lanczos 法
Block Lanczos 法可以在大多数场合中使用:
- 是一种功能强大的方法,当提取中型到大型模型(50,000 ~ 100,000 个自由度)的大量振型时(40+),这种方法很有效;
- 经常应用在具有实体单元或壳单元的模型中;
- 在具有或没有初始截断点时同样有效。(允许提取高于某个给定频率的振型);
- 可以很好地处理刚体振型;
- 需要较高的内存。
(2) 子空间法
子空间法比较适合于提取类似中型到大型模型的较少的振型 (<40)
- 需要相对较少的内存;
- 实体单元和壳单元应当具有较好的单元形状,要对任何关于单元形状的警告信息予以注意;
- 在具有刚体振型时可能会出现收敛问题;
- 建议在具有约束方程时不要用此方法。
(3) PowerDynamics 法
PowerDynamics 法适用于提取很大的模型(100.000个自由度以上)的较少振型(< 20)。这种方法明显比
Block Lanczos 法或子空间法快,但是:
- 需要很大的内存;
- 当单元形状不好或出现病态矩阵时,用这种方法可能不收敛;
- 建议只将这种方法作为对大模型的一种备用方法。
注: PowerDynamics 方法
- 子空间技术使用 Power 求解器 (PCG) 和 一致质量矩阵;
- 不执行 Sturm 序列检查 (对于遗漏模态); 它可能影响多个重复频率的模型;
- 一个包含刚体模态的模型, 如果你使用 PowerDynamics 方法,必须执行 RIGID 命令 (或者在分析设置对话框中指定
RIGID 设置)。
(4) 减缩法
如果模型中的集中质量不会引起局部振动,例如象梁和杆那样,可以使用缩减法:
- 它是所有方法中最快的;
- 需要较少的内存和硬盘空间;
- 使用矩阵缩减法,即选择一组主自由度来减小[K] 和 [M] 的大小;
- 缩减[的刚度矩阵 [K] 是精确的,但缩减的质量矩阵 [M] 是近似的,近似程度取决于主自由度的数目和位置;
- 在结构抵抗弯曲能力较弱时不推荐使用此方法,如细长的梁和薄壳。
注意:选择主自由度的原则。
(5) 不对称法
不对称法适用于声学问题(具有结构藕合作用)和其它类似的具有不对称质量矩阵[M]和刚度矩阵[K] 的问题:
- 计算以复数表示的特征值和特征向量
* 实数部分就是自然频率
* 虚数部分表示稳定性,负值表示稳定,正值表示不确定
注意: 不对称方法采用 Lanczos 算法,不执行 Sturm 序列检查,所以遗漏高端频率。
(6) 阻尼法
在模态分析中一般忽略阻尼,但如果阻尼的效果比较明显,就要使用阻尼法:
- 主要用于回转体动力学中,这时陀螺阻尼应是主要的;
- 在 ANSYS 的 BEAM4 和 PIPE16单元中,可以通过定义实常数中的 SPIN(旋转速度,弧度/秒)选项来说明
陀螺效应;
- 计算以复数表示的特征值和特征向量。
* 虚数部分就是自然频率;
* 实数部分表示稳定性,负值表示稳定,正值表示不确定。
注意:
- 该方法采用 Lanczos 算法
- 不执行 Sturm 序列检查,所以遗漏高端频率
- 不同节点间存在相位差
- 响应幅值 = 实部与虚部的矢量
H. Lanczos算法的该算法的一个matlab实现程序
A代表任意一个需要三对角化的矩阵,b是任意一个向量,且b的行数与A的列数相同因为要用到v = A*q;
nmax是你想要得到的矩阵的大小,例如nmax=12,最后得到12*12的三对角矩阵。
结果输出的是一个三对角矩阵
输入形式为:lanczos([1 2 3;4 5 6;7 8 9],[1;1;1],12);
function T = lanczos(A, b, nmax)
m = size(A,1);
beta(1) = 0;
qprev = zeros(m, 1);
q = b / norm(b);
for n = 1:nmax
v = A*q;
alpha(n) = q' * v;
v = v - beta(n) * qprev - alpha(n) * q;
beta(n+1) = norm(v);
qprev = q;
q = v / beta(n+1);
end
beta = beta(2:end-1);
T = diag(alpha) + diag(beta,1) + diag(beta,-1);
I. 矩阵补全的经典算法有哪些
比如说,乘幂法,反幂法,Rayleigh商迭代,子空间迭代,QR算法,Jacobi算法,二分法,分治法,qd算法,MRRR算法,Lanczos算法 ,Arnoldi算法,PCG算法,围道积分法……
方法有很多,看你的需求了
J. matlab 有lanczos函数吗
概况这是一段Lanczos算法的程序。Lanczos算法是一种将矩阵通过正交相似变换变成对称三对角矩阵的算法,可用于求方阵的特征值和特征向量或一般矩阵的奇异值分解,以20世纪匈牙利数学家CorneliusLanczos命名。网络上关于该算法的介绍要求是