問題タブ [arpack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - ARPACK はスレッドセーフですか?
C で書かれたプログラムから同時に異なるスレッドからARPACK固有値ソルバーを使用しても安全ですか? または、ARPACK 自体がスレッドセーフでない場合、API 互換のスレッドセーフな実装はありますか? Google で簡単に検索しても有用なものは何も見つかりませんでしたが、大規模な科学計算で ARPACK が頻繁に使用されているという事実を考えると、スレッドセーフなスパース固有値ソルバーを最初に必要とする人になるのは非常に驚くべきことです。
Fortran にあまり詳しくないので、ARPACK のソースコードを を使って C に翻訳したところ、f2c
かなりの数の静的変数が存在するようです。基本的に、変換されたルーチン内のすべてのローカル変数は静的であるように見えます。これは、ライブラリ自体がスレッド セーフではないことを意味します。
c++ - コードを OSX 上の ARPACK にリンクする際の問題 (ARPACK に MacPorts を使用)
C++
ARPACK ライブラリを呼び出すプログラムをコンパイルしようとしています。
私の問題は、すべてがリンクされると、ARPACK ライブラリ内の一部のシンボルが解決されないことです。彼らです
ディレクトリで総当たり検索をlib
行いましたが、これらのシンボルをすべて提供するライブラリは見つかりませんでした。それらのいくつかは によって提供されており、いくつかの同様のシンボル ( に置き換えられています) があるlibf77blas
ように見えますが、他に何をインストールする必要があるかについて完全に途方に暮れています。コードをコンパイルしていますg95
gfortran
g95
g++-mp-4.5 -O3 -Wall -Wl,-search_paths_first -headerpad_max_install_names my.o -o my.out -L/opt/local/lib -larpack -lm -L/opt/local/lib -lgsl -lgslcblas -lm -lf77blas -llapack -larpack -lqblas -lsquack
実際には、/opt/local/lib
私が参照するすべてのライブラリがあります。
誰かがこの問題に遭遇しましたか、または解決策を指摘できますか?
fortran - ARPACK での配列 ipntr への値の代入
ARPACKでポインタを格納するipntrという配列にどのように値を代入するのかを調べています。私は fortran に比較的慣れていないため、この配列の値が最初にどのように設定されているかを正確に把握できません。私が見ているコードは ARPACK で配布されている非対称ドライバーの例 dndrv1.f で、私が理解していない部分は次のとおりです。
write ステートメントの結果は次のとおりです。
1606679396 32767 1606696480 32767 1606918048 32767 0 0 0 0 0 0 0
明らかに、ipntr(1) = 1606679396 のようなものはありません。では、これらの値はどのように割り当てられたのでしょうか?
ありがとう
arpack - arpack++ エラー: 行列データに矛盾があります
「arpackpp.doc」のサンプル コードを入力すると、次のような実行時エラーが発生しました。
ここに私のコードがあります:
そして行列は
c++ - VS2010 から ARPACK へのリンク
ARPACK
ライブラリを で実行しようとしていVS2010
ます。
++ が提供する C++ ラッパーを使用したいと思いARPACK
ます (いくつかの背景 - 巨大な行列の固有値と固有ベクトルを取得する必要があります)。このテーマに関する非常に優れたチュートリアルがここにあります。
g77
onを使用して fortran コードをコンパイルすることができたチュートリアルに従って、説明どおりmingw
に dll と lib を正常に生成しました。Visual Studio プロジェクトをライブラリにリンクしようとすると、問題が発生します。
リンクしようとしている方法は次のとおりです。
- シンプルな VS2010 C++ コンソール アプリを作成しました
- ARPACK++ ライブラリを含むフォルダーを「追加のインクルード フォルダー」に追加しました。
- libファイルを「追加の依存関係」に追加しました
- libファイルを含むディレクトリを「追加のライブラリディレクトリ」に追加しました
この短いテストコードをコンパイルしようとすると、これらの設定にもかかわらず:
次のようなエラーが表示されます。
リンカが言及されたメソッドを見つけられない理由がわかりません。dllwrap ユーティリティによって生成された .def ファイルを調べると、実際にこれらすべての機能が言及されているため、それらが利用可能であると確信しています。それでも、明らかな何かが欠けていると感じています。
更新(機能しました!):
構成設定でx86に切り替え、生成されたdefファイルを構成プロパティ->リンカー->入力->追加定義ファイルに含めると、64ビットプログラムを32ビットライブラリにリンクしようとしていたことがわかりました。 32ビットの場合(ただし、64が必要でした)。私にとってうまくいった最終的な解決策は、LinuxでMinGWとgfortranを使用してWin64用にクロスコンパイルすることでした。これは驚くほどうまく機能し、VS の 64 ビット C++ アプリからリンクできる dll を生成しました。これを行う方法についてのチュートリアルを書く必要があると思います:)
scipy - scipyの一般化された固有問題と正の半確定
こんにちは、みんな!!!
次の形式の一般化された固有分解を計算したい:
Lf=ラムダAf
scipy.sparse.linalg.eigs関数を使用しますが、次のエラーが発生します:
/usr/local/lib/python2.7/dist-packages/scipy/linalg/decomp_lu.py:61:RuntimeWarning:対角線の数65は正確にゼロです。特異行列。RuntimeWarning)**DLASCLパラメーター番号4への入力時に不正な値がありました
対角行列、正半定値(PSD)行列、数値K(最初のK個の固有値)の3つの引数を渡します。Matlabのeigs関数は、同じ入力パラメーターを使用してうまく機能しますが、私が理解しているように、SciPyでは、PSDで計算するために、シグマパラメーターも指定する必要があります。
だから、私の質問は、MatLabのようにシグマパラメータの設定を回避する方法はありますか、そうでない場合は、シグマ値を取得する方法はありますか?
アドバイスやヒントをお待ちしております...よろしくお願いします!
c++ - MinGW64 .o を MSVC 2010 にリンクします。
MinGW64 fortran (gfortran) コンパイラ (.o) で生成されたオブジェクト ファイルを MSVC 2010 にリンクするにはどうすればよいですか?
64 ビット MSVC ソリューションで 64 ビット arpack ライブラリを使用したいだけですが、それを行う他の方法はすべて失敗しました。MSVC は 32 ビット ソリューションの構成で arpack 関数を見つけますが、ランタイム エラーでアプリケーションを起動し、64 ビット ソリューションの構成で arpack 関数をまったく見つけることができません。
math - Scipy arpack eig と固有値の eigsh 数
scipy の ARPACK バインディングでは、行列のすべての固有値を計算することはできません。ただし、eigsh は n - 1 個の固有値を計算できるのに対し、eigs は n - 2 個の固有値しか計算できないことがわかりました。これが実際には ARPACK の基本的な制限であり、scipy のバグではないことを誰かが確認できますか?
コード例は次のとおりです。
macos - Mac OS X のオクターブ 3.6.4 で eigs() 関数を使用する方法
Matlab の eigs() 関数を利用するツールボックスを使用しようとしています。これを Octave (Mac OS X に Homebrew 経由でインストールされた 3.6.4) で実行すると、次のように返されます。
error: eigs: not available in this version of Octave
ARPACK(-ng)プログラムをOctaveで動作させることについて、多くの潜在的な解決策を見つけました。覚えているよりも多くの方法を試しましたが、どれもうまくいかなかったようです。
eigs() 関数を使用して Octave の現在のステータスを知っている人はいますか? できればHomebrewのパッケージを使用することで、これは可能ですか?
ありがとう。