矩阵的特征值与特征向量分解是非常重要的数学工具在matlab中一般使用eig()函数完成矩阵特征值与特征向量和特征向量的提取,其用法如下
显然eig()就是一般意义上的计算矩阵的特征值与特征向量和特征向量
E = eig(A) 返回方阵A的所有特征值与特征向量构成列向量E。
[V,D] = eig(A) 返回方阵A的特征值与特征向量和特征向量其中特征值与特征向量排满对角阵D的对角元素,对应的特征向量排列为方阵V的每一列
而eigs()也能求取矩阵的特征值与特征向量和特征向量,不过其返回的方陣幅值最大的6个特征值与特征向量和特征向量用法和eig()类似。不过eigs()通过迭代的方式来求解特征值与特征向量所以其在加快运算速度的同時降低了准确度。另外一般eigs()处理的大型稀疏矩阵。
一般情况下eig()和eigs()返回的特征值与特征向量是从大到小排列,然而这并不是一定的经過测试,两者的特征值与特征向量排序都可能为乱序所以,在对顺序有要求的情况下需要通过sort()函数来自动排序。
按特征值与特征向量夶小排序结果如下:
John D’Errico设计了一个eigenshuffle.m函数能够得到排序后的特征值与特征向量和特征向量该方法排序方式为特征值与特征向量大小降序排列。
显然eigenshuffle函数的速度比传统方法略低
%通过映射关系找出每个基元上的洛巴托点对应的点 %把均分点调整成洛巴托积分点
%自由节点们在单元中的序号 %各个标准区间上的节点基函数在高斯点出的函数值 %高斯点在具有自由度的几个基函数上的值 %导数值映射到一般区间上会变
%%计算拉格朗日节点基函数在xi处的值及其导数值
-setupdofs.m设置自由度返囙自由点的内部编号集以及自由点对应整体的一个编号。
编写该程序需要注意的是要给单元,节点自由节点等编号号码,特别是自由節点的存放可以用结构体的方式,使用空集占位这样由连接矩阵和自由节点结构体,很快就能提取出每个单元对应的自由节点
对于強制(本质)边界条件,可以在最后刚度矩阵上处理也可以在前面不将边界点视为自由点而产生自由度。殊途同归
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。