求助有关大型稀疏阵的求解问题
对于大型系数阵 s[][],由方程组s*x=f如果直接求解x=s\f
和用分解方法如LU分解
=lu(s);
qq=L\f;
x2=U\qq;
得出的结果不相等
我想问那个精度高??
=lu(stiff);中的P是衡量什么的??
如果用系数矩阵函数sparse,得到的结果精度怎样呢??
这是线性情况,如果是非线性怎么解决呢????请高手指点
[ 本帖最后由 eight 于 2008-1-21 19:00 编辑 ]
回复 楼主 的帖子
x=s\f的精度应该没有后者高=lu(stiff);请看帮助文档
L*U=P*A 谢谢
那其他几种分解方法呢????
qr cholesk等等
那种比较适合呢?? 你可以先用一些等带宽或者变带宽的方法提高存储和运算效率。
计算方法方面:迭代方法和分解方法相比更加适合于求解大型稀疏矩阵
对于各种直接解法(分解方法等)虽然计算简单,但是由于大型稀疏矩阵0元素很多,直接接法很影响效率,同时其不能对解的误差进行检查和控制。解的误差主要来自计算机的有效字长,方程组阶数和矩阵的性态。在一定字长条件下,阶数越高,舍入误差越大。矩阵性态越差,一定有效字长的截断误差越大。而大型稀疏矩阵往往随着计算规模的增加,以上性质都会变得更为恶劣,所以解的误差相对较大,甚至有时候不收敛。
而迭代的优点是计算时能够最大限度的节约存储空间,同时对解的误差进行控制,提高计算精度。不足之处是每种迭代只适合某些类型,缺乏一定的通用型,迭代方式选择不当不仅计算慢,而且可能计算不收敛。
对于结构动力学而言常用的求解大型矩阵特征值的方法:
解方程:二维等带宽高斯循环消去法,带状三角分解,分块解法,波前法,jacobi迭代,G-S迭代,共扼梯度法等。
特征值:有反迭代,子空间迭代,ritz向量直接叠加和lanczos方法。工程上比较推荐子空间和lanczos。尤其是后者是默认的标准方法。
关于结构动力学的大型稀疏矩阵的其他内容可以参考王勖成《有限单元法》和K。J。bathe的有限元的书,讲的很详细
PS:以上内容针对结构动力学而谈,其他领域的大型稀疏矩阵的解法和优缺点我不太清楚,无能为力。祝好运:lol :lol
[ 本帖最后由 appleseed05 于 2008-1-15 11:03 编辑 ] 谢谢啦
呵呵
你说的那两本我都找不到啊
我从别的书上找的
我是做电磁场计算的
用稀疏矩阵存储,用不完全桥列斯基分解共轭梯度求解
现在遇到一个问题
我要形成n*n个子快构成的稀疏矩阵
每个子块是
3*3阶
这样总的矩阵阶数为3n*3n阶
子块由循环产生
能不能用sparse指令直接生成矩阵??
还是比需要以矩阵对角线为单位,逐次生成? appleseed05 发表于 2008-1-15 10:52 static/image/common/back.gif
你可以先用一些等带宽或者变带宽的方法提高存储和运算效率。
计算方法方面:迭代方法和分解方法相比更加适 ...
感谢这么中肯的话。
页:
[1]