zhuningyuan126 发表于 2011-7-17 16:40:29

大型矩阵求解

我这有个(125000X125000)的稀疏矩阵a,现需要求解au=b;b为已知,求解U值。直接左除的方法会出现out of memory!求教是否有其他求解办法??

pasuka 发表于 2011-7-17 20:27:31

最方便快捷的办法,增加内存,安装64位的操作系统和64位的matlab;
第二简便的方法是,把矩阵分块求解,暂时利用不到的部分写入硬盘,需要的时候读取;
其次就是改用压缩行(列)、坐标存储方式,减少内存使用量
如果lz会C/C++、Fortran 的话,可以安装intel的ivf专业版,里面自带pardiso,利用C/C++或Fortran调用pardiso求解,当然矩阵必须是压缩行(列)或者坐标存储格式的
根据偶的经验,对于有限元生成的对称正定刚度阵而言,采用压缩行(列)存储方式,大致上4G内存的机器,利用64位的matlab,应该可以计算10wX10w数量级的矩阵
lz可以先用spy画一张图,看看矩阵的稀疏性

zhuningyuan126 发表于 2011-7-17 21:23:23

2# pasuka
我也想过要分块求解,但不知道如何下手。我要求u=a\b,如何分块呢?这就相当于一个大型线性方程组的求解,x1~xn是有关联的,怎么就能分开呢?
页: [1]
查看完整版本: 大型矩阵求解