1

大規模なプログラムの一部として、非常に単純な ODE を Fortran で解く必要があります。ソルバーを自分で実装する必要がないようにするために (そして、正しく理解する前にいくつかのバグを確実に導入する必要があります)、ライブラリがあればそれを使用すると考えましたが、機能するものが見つかりません。

私はODEPACKを見て、それを再パッケージ化した人を見つけましたが、元のディストリビューションは非常に毛深いソース コードとして配布されておりINTEGER(8)、再パックは私のラップトップではビルドされません。そして止まる前にREAL(8)INTEGER(4)REAL(4)

gfortran -shared -o libodepack.so opkda1.o opkda2.o opkdmain.o
/usr/bin/ld: opkda1.o: relocation R_X86_64_32 against `dls001_' can not be used when making a shared object; recompile with -fPIC
opkda1.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [odepack.so] Error 1

したがって、32/64 ビットの非互換性の問題だと思います (私は 64 ビット プロセッサを使用しています)。エラーメッセージが示唆するようにフラグを追加して-fPICも役に立ちませんでした-とにかく同じメッセージが表示されました。

ODEPACK、または同様のものは、最新の Ubuntu ディストリビューションで、より簡単にインストールできる形式で利用できますか?

4

2 に答える 2

-1

なぜこれにパッケージが必要なのですか?単純な ODE の場合、わずか 10 分で独自の単純な RK 関数をコーディングできます。そうすることで、プログラムの不必要な依存を回避し、いくつかの非常に有用なアルゴリズムを学習できます。この考えが気に入らない場合は、プログラムのライセンスで許可されている場合は、他の場所からコードを取得してください。John Burkardt氏のコレクションをご覧ください。Fortran コードを書いている人なら知っているはずですが、とにかくここに 2 つのリンクを示します。 http://people.sc.fsu.edu/~jburkardt/f_src/rk4/rk4.html http://people.sc.fsu.edu/~jburkardt/f_src/rkf45/rkf45.html

于 2013-05-17T17:10:50.050 に答える