[摘自SMTH]稀疏矩阵求逆讨论

转载 2004年08月12日 23:23:00

 发信人: lingruoxuan (lingruoxuan), 信区: Num_Analysis
标  题: [摘自SMTH]稀疏矩阵求逆讨论
发信站: 日月光华 (2004年08月11日21:05:20 星期三), 站内信件

来源:HTTP://BBS.SMTH.EDU.CN  NUMCOMP
水木清华之数值版
[合集] matlab中好像对稀疏矩阵求逆的处理没有特殊方法
>>难道还是高斯消去法?那大型的不是要求死啊
help GMRES
BICG
BICGSTAB
CGS
QMR
.......
>>高斯消去算个10来阶的小矩阵还成,算大了一定出问题!
>>求逆就是用解方程AX=I来求?
>>求逆的复杂度总是很大,能少用就少用
Ax=ei   (1=<i<=n)
把解得的xi按顺序拼成一个矩阵就完了。。
>>这样看来跟求一个方程的复杂度一样了啊。矩阵是正定对称稀疏矩阵,现在的情况
是不但要求,而且维数还非常的大。麻烦啊
>>对称正定的稀疏矩阵很好办啊,用LU分解就可以了。
如果维数实在太大,比如超过10^4量级,那就只能用
共轭梯度法之类的迭代法求解了。
>>你觉得LL’分解不会破坏矩阵的稀疏性么——如果矩阵不是带状的话?
而且数值稳定性也有问题。
>>会啊,会产生注入元,不过一般不是很多,
可以通过预测的方法事先得出注入元的位置,形成稀疏矩阵的时候
保留下这些空位。
>>这个好像不是很可行,能说得仔细点么?
>>这个如果用二维链表的存储方式倒是好办,Fortran 77里面就麻烦一些了,
不过也是可以实现的。主要是通过不完全模拟一次LU分解过程,计算出注
入元的位置。
我去年花了很长时间写了一个稀疏矩阵类库,可以说专门用于解线性方程
组相关问题的,就是用的这种方法,另外自己做了一个内存管理的模块,
整体效果非常好。不过我的领域稀疏矩阵的规模一般不是很大,一般不会
超过10000维。
维数再多就不知道效果怎么样了。
>>嗯。。对于一些注入元不是很多的矩阵这应该是个好办法。
但是对于有些矩阵,LU分解后可能就把整个矩阵充满了。~
这是比较郁闷的事情。。
>>求逆一般是不可取的,无需多说。但稀疏矩阵的直接解法还是不少的。基本上都是对
矩阵进行重新排序以期减少填充或运算量。
在matlab里面,有许多算法可以利用:
colamd, colmmd, colperm, spparms, symamd, symmmd, symrcm.
根据是否对称,采用LU分解或者chol分解。
这些算法在internet上搜一下,很多都有相应的C或fortran版本。
稀疏矩阵的存储最常见的是压缩列(行)存储,最近发现一种利用hash表来存储的,其
存取复杂度是O(1),很是不错。有幸趣的可以看看下面网页咯,作者提供了源程序。
http://www.informatik.hs-bremen.de/~brey/
>>对于带状的稀疏矩阵 <matrix computations>里面介绍了一些很巧妙的数据结构。
同时推荐一个网址,资源还是很丰富的。不知道前面是不是有人推荐过了。。
http://math.nist.gov/MatrixMarket/
>>事实上Hash表存储的效率也跟Hash算法有关,弄不好的话,不见得比直接按行或者列

>>我对这个了解并不深。
那个网页上的程序利用的是stl的hashtable和自己实现两种方法,效率还是可以的,并
且附有一个效率比较的程序。
另外,从hash表的初衷来看,应该是规模越大,效率越高才对。压缩列(行)存储的存
取效率才会随规模增大而降低。
hash表存储直接用于计算估计不会太好,毕竟现有的程序大多是用压缩列存储。但利用
它编程会很方便,就像matlab里面的稀疏矩阵一样。并且hash表和压缩列存储的相互转
换很容易,可以很方便地调用现有的稀疏矩阵软件包。
>> 维数再多还是用不完全LU分解预处理+CG or Gmres
我一个同学这么求过200W阶的矩阵
>>各种各样的预处理+GMRES是现在解决大规模稀疏矩阵的主力方法。。


--
>>天空依然阴霾,>>
    >>依然有鸽子在飞翔.>>
※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 10.85.12.89]

 

大规模稀疏矩阵求逆

大规模xinshujuzhen根据矩阵特点用不用的分解,写成几个例程,每次实验之前进行尝试,根据尝试结果在算法里决定里决定用哪个。 irst 我想问: 1.全阶矩阵A的求逆运算inv(A...
  • ZQ_onlytime
  • ZQ_onlytime
  • 2014年09月09日 16:27
  • 3949

稀疏矩阵的加减法、乘法、求逆运算

(项目需要,借此学习,感谢!转自:http://jgzhen125.blog.163.com/blog/static/44508644201010169277572/)...
  • u011478505
  • u011478505
  • 2015年01月15日 20:24
  • 853

使用MKL求解矩阵的行列式值与逆

在FORTRAN下有很多求矩阵行列式值以及逆的方法,这些方法包括自己写程序求解,使用如IMSL和MKL等下面的库函数求解。一般来说,使用IMSL求解矩阵的行列式值和逆最简单且速度适中,但是IMSL现在...
  • lcj_cjfykx
  • lcj_cjfykx
  • 2015年04月01日 10:36
  • 4676

利用三元组求稀疏矩阵的加、减、逆置(c语言)

#include #include typedef struct{ int clo,row; int value; }three; three arr1[100]; three arr...
  • m0_37787222
  • m0_37787222
  • 2017年10月24日 22:46
  • 147

3 广义逆矩阵

矩阵论广义逆笔记
  • q1w2e3r4470
  • q1w2e3r4470
  • 2016年02月01日 17:30
  • 2072

数据结构之---C/C++实现稀疏矩阵的十字链表

数据结构之---C/C++实现稀疏矩阵的十字链表
  • u012965373
  • u012965373
  • 2015年05月31日 15:36
  • 3273

稀疏矩阵及其逆置矩阵

在矩阵中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。M*N的...
  • qq_36221862
  • qq_36221862
  • 2017年04月25日 22:43
  • 344

Scipy 基础 —— 稀疏矩阵

稀疏矩阵,也即仅存储非零元素,既提升了矩阵操作的效率,也节省了内存。 稀疏矩阵的存储格式(Sparse Matrix Storage Formats)很多语言、平台都支持稀疏矩阵这一数据存储结构,尽管...
  • lanchunhui
  • lanchunhui
  • 2016年04月01日 10:46
  • 1129

python中scipy学习——随机稀疏矩阵及操作

1.生成随机稀疏矩阵:scipy中生成随机稀疏矩阵的函数如下:scipy.sparse.rand(m,n,density,format,dtype,random_state)参数介绍: 参数 ...
  • newbieMath
  • newbieMath
  • 2017年01月08日 11:16
  • 2254

Java之求逆矩阵

public class MatrixInverse { public static double Det(double [][]Matrix,int N)//计算n阶行列式(N=n-1) { ...
  • u014581901
  • u014581901
  • 2016年03月04日 19:39
  • 2263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[摘自SMTH]稀疏矩阵求逆讨论
举报原因:
原因补充:

(最多只允许输入30个字)