主题:请问:如何编程解10000×10000的线性方程组?
zrydd
[专家分:0] 发布于 2011-05-09 13:52:00
所求方程为线性方程组Ax=b
A大约是10000×10000个元素的矩阵
直接用声明A数组好像不行 元素个数ms太多了 系统不支持
不知道这类问题有什么办法解决没有?谢谢!
回复列表 (共13个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-05-09 14:34:00
用Allocate
板凳
dongyuanxun [专家分:7180] 发布于 2011-05-09 14:39:00
按照双精度
10000×10000×8Byte=762.9M
大于栈默认的空间(1M),只能放在heap上,所以使用动态数组
3 楼
11016 [专家分:0] 发布于 2011-05-09 23:13:00
方程组有什么特点?三对角还是五对角的吗?
4 楼
zrydd [专家分:0] 发布于 2011-05-10 14:39:00
我用了 allocate(ita(3*N,3*N))
其中 N=36000
然后报告 "cannot allocate array, overflow on array size calculation"
看来allocate也不行啊
5 楼
cgl_lgs [专家分:21040] 发布于 2011-05-10 14:48:00
开玩笑,36000*3!!!那是多大啊。。。
你要想整这么大规模的,一是分块儿,二是去64位超级计算机上整。。。
6 楼
cgl_lgs [专家分:21040] 发布于 2011-05-10 14:51:00
(36000*3)*(36000*3)*8字节约为87GB~~~~~32位系统是绝对不可能承受得了这么大的连续空间的~~~~
7 楼
zrydd [专家分:0] 发布于 2011-05-10 22:11:00
有限元一般划分网格也超级多啊 不知道那些商业有限元软件是用什么办法来解决这类问题的?
8 楼
dongyuanxun [专家分:7180] 发布于 2011-05-10 22:59:00
[quote]有限元一般划分网格也超级多啊 不知道那些商业有限元软件是用什么办法来解决这类问题的?[/quote]
稀疏存储,以时间换空间
9 楼
cgl_lgs [专家分:21040] 发布于 2011-05-10 23:07:00
I fuller U~~~~
FEA竟然用满阵?
您要不先看看FEAP吧。或是看看王勖成的《有限单元法》,这东东一般是只存上三角且用带状存储。。。
10 楼
zrydd [专家分:0] 发布于 2011-05-11 12:34:00
我用的不是有限元,我只是想知道有限元存储是怎么做到的。
可惜的我的矩阵不是稀疏阵,真的有点窘了。。
我来回复