j**u 发帖数: 6059 | 1 ☆─────────────────────────────────────☆
harrry (harrry) 于 (Fri Jan 26 12:41:47 2007) 提到:
偶是物理的,数值计算方面的菜鸟。
现在要解个 N0000*N0000 甚至更大的实对称矩阵的最小的一些本征值和本征矢,调用
lapack解的时候总是说memory insufficent。看了arpack的user guide, 好像适合我现
在的case, 但没弄明白到底怎么调用它。这儿有人用过么?或者还有更好的方法推荐么
?
Thanks!
☆─────────────────────────────────────☆
harrry (SleepingCat) 于 (Wed Jan 31 21:35:03 2007) 提到:
自己顶一下
没人回复我的问题,5555~~~
☆─────────────────────────────────────☆
jzxu (自然) 于 (Wed Jan 31 21:44:39 2007) 提到:
这个东西我不用会。如果是我遇到这种问题,肯 |
|
t**********n 发帖数: 135 | 2 Mingw 5.1 GCC 3.4.5 ARPACK++ 1.08。
加上
#include "arlsnsym.h"
之后就疯狂得出了很多错误信息。有人遇到过么?
projectpath/arpackpp/include/blas1f.h:27: error: `sasum' was not declared in
this scope
projectpath/arpackpp/include/blas1f.h:27: error: `_' was not declared in
this scope
projectpath/arpackpp/include/blas1f.h:27: error: initializer expression list
treated as compound expression
projectpath/arpackpp/include/blas1f.h:27: error: expected `,' or `;' before
'(' token
projectpath/arpackpp/include/blas1f.h:29: error: v |
|
L***n 发帖数: 6727 | 3 预处理如果是数学上的matlab也逃不掉,如果
纯粹是从底层的预处理基本上科学计算包的界面
也不需要,matlab wrap了一个统一的界面,但是
其他包的界面并不更复杂,比如我的例子算稀疏矩
阵的特征值,matlab和其他 scipy, SLEPc, ARPACK,
要求的参数都差不多,当然安装和使用SLEPc, ARPACK
本身就比用matlab, scipy麻烦多了 |
|
l*******r 发帖数: 322 | 4 请教哪位有经验的?
没有看到windows下编译的readme
尝试用cygwin也是一知半解
那位出手搭救?谢谢了 |
|
|
t*****n 发帖数: 4908 | 6 估计能用的极少了。好像有个arpack的是fortran的。但也有c++ wrapper。
市面上纯粹fortran的库、没c/c++ wrapper的,我真没见过。估计是我太孤陋寡闻 。
那位高说说几个,我学习学习。 |
|
m********5 发帖数: 17667 | 7 我承认,SLEPc, ARPACK的确预处理上干预较少
但是他们只处理特征值问题 |
|
P**H 发帖数: 1897 | 8 一般都是10k左右的sparse system,底层用的arpack。多了pc也算不过来。 |
|
L***n 发帖数: 6727 | 9 恩,我的python数值解在5万这个数量级开始有奇怪的现象,我用mkl是因为
ananconda缺省配置,我自己不会设置python怎么链接底层的库,你是怎么
在python里用arpack的? |
|
P**H 发帖数: 1897 | 10 matlab和scipy解sparse eigen都是用的arpack。目前我没发现例外的。
我就是用的numpy/scipy/matplot。至于dense的,对我没有多大用。linux下底层用的
gotoblas/openblas,win下用mkl。 |
|
L***n 发帖数: 6727 | 11 哦,anaconda可以用mkl作选项,matlab我不知道,你安装scipy的时候
自动装arpack吗?还是要链接到自己编译的库? |
|
P**H 发帖数: 1897 | 12 好像scipy自己就有arpack的源码。算自带了。 |
|
|
j****x 发帖数: 943 | 14 sparse:dense vs ARPACK:LAPACK vs orange:apple ? |
|
D***n 发帖数: 6804 | 15 netlib-java is a wrapper for low-level BLAS, LAPACK and ARPACK that performs
as fast as the C / Fortran interfaces.
只是个Java Warpper而已,真正干活的还是Fortran. 你好意思拿Warpper来比speed?
通过这个事情,鉴定你连大名鼎鼎的netlib都不知道,谈个毛的分布式计算。 |
|
y**i 发帖数: 86 | 16 用fortran,
用arpack包,不用存矩阵,
中间费时的是矩阵和矢量相乘,并行处理,
低精度和计算少量本征值的话用时很少。
eigenfunctions
网 |
|
m********e 发帖数: 5088 | 17 100万*100万的算大型矩阵了,比较推荐Arpack(in Fortran77),但估计这么大的矩阵得
用64bit机器。
一般的32bit机器,4Gdual processor, 4G ram,最多可以解到30万*30万。
再小一点的10万,20万左右的,就可以用matlab*P解了
一般的Matlab如果用sparse+eigs,最多解10000*10000,再多没戏。
所以还是用fortran比较好。
如果我没猜错,应该是要解simultaneous eigenvalue equations吧。
好运
1000000*
最 |
|
k******n 发帖数: 35 | 18 I do not think LAPACK is a good choice in your case unless your problem is
really small.
I assume your matrices are dense. Since S and T are positive definite, S^{1/
2} and T^{1/2} can be obtained by Cholesky decomposition. To use LAPACK, K
has to be calculated explicitly. If you only a few singular values, this is
totally not necessary. Consider K as an operator and use ARPACK.
If the problem is small or you need all singular values, LAPACK will be your
choice. However, I would say Matlab will |
|
c*******h 发帖数: 1096 | 19 ok, to be serious.
there are numerous ways.
the best way i prefer is to apply a few steps of lanczos iterations
and then solve the largest eigenvalue of a tridiagonal matrix.
i beleive matlab implements this in eigs(), since it uses arpack.
the
a |
|