• 締切済み

数値計算ライブラリ集の実際の使い方について

Fortran やCでは数多くのソースコードがあり、それらを組み合わせて仕事ができるようになっていると思います。特に連立方程式の求解とかフーリエ変換とか数値積分とか特殊関数とか定型処理に近いものは多くの知見とそれに対応したソースコード群がネットにもあるようです。BLAS, LAPACK, LINPACKとかそれらを先導したドンガラ教授など、いっぱい検索できます。一方で、実際に自分が何か仕事でガウスの消去法程度を使う場合、いつもやるように、ソースプログラム集の本を見てサブルーチンをコツコツと打ち込んで仕事に使うことはまあ、できます。連立方程式も普通の感じ(初等物理に近い問題なので)ですのでそれでもいいのですが、先に書いたようなプロが作ったソースコードでもいいはずです。そこで質問ですが、先のソースコード群からどのように自分の問題に必要なものを選び出すのかという疑問があります。また、どれをダウンロードするのかということもです。例えば、ソースプログラム全体が提供されていて全部をコンパイルするけれどもメインから呼び出すのはそのほんの一部だけというようなことなのでしょうか。 ゼロベース(スクラッチ)からプログラム全体をできるだけ早く構築する、という場合、先のソースコード群は役に立つものでしょうか。使い方のドキュメントを調べ読みしているうちにガウスの消去法のシンプルなコードぐらい打ち込めそうなのですが。やはりプロが作ったソースコードは高速性、堅牢性、柔軟性とかに富んでいるのでしょうが、そこまで必要ない場合はほぼほぼ適当なものでもいいということになるのかなと思いますが。あと、使用するハードウェア、コンパイラなどの環境との関係もあるはずなのですが。つまり、トータルな意味でのこれらのコード群の考え方が私にはわかっていないのです。そのあたりの考え方について教えて頂ければと思います。 長文ですみません。よろしくお願いします。

みんなの回答

  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.1

商用の場合、基本的に「参考にする」程度しか使えません。 多くのライブラリは「商用利用」に制限や条件を設けています。 例えば「商用利用不可」とか「商用に利用する場合は著作権表示を行なう事」とか。 また、場合によっては、開発の現場で「セキュリティの関係上、第三者が作ったソースコードや、実行プログラムは利用しないこと」と制限している場合があります。 ですので「そのまま取り込む」のはほぼ不可能で >ソースプログラム集の本を見てサブルーチンをコツコツと打ち込んで仕事に使う くらいしか許されていない筈です。 今の時代、下手なライブラリを使うと「無許可で転用した」と騒がれるので、やりにくいです。

関連するQ&A

  • 連立方程式の解法

    有限要素法のプログラムにおいて、連立方程式を解く方法にガウスの消去法を使用しています。ガウスの消去法の他に、行列を解く方法や計算精度が上がるテクニックなどあれば教えてほしいのですが‥‥

  • FFT(高速フーリエ変換)のプログラム

    お世話になります。 仕事でFFTのプログラムを内製しようとしています。 初心者なので、他の人(今は退社していません)が昔作ったFFTのプログラムを参考にしようと思いそれを解読中です。 そのプログラムはC言語で書かれていますが、「ガウスの消去法を使って連立方程式を解く」というプロセスが含まれています。 私の認識では、FFTではガウスの消去法を使う事はないので、私が見たプログラムはFFTではなくDFTのプログラムではないかと思っています。 FFTのプログラムでガウスの消去法を使う事はあるのでしょうか?勉強中なのと、周りに知っている人がいないため、どなたか教えて下さい。 よろしくお願いします。

  • ガウスの消去法

    1000変数の連立一次方程式をガウスの消去法で解いたとき、計算時間は10秒だったとする。このとき10000変数の連立一次方程式をガウスの消去法で解くのにどれぐらいの計算時間がかかるのかという疑問について、いったい何秒になるのでしょうか?オーダ(n^3/3)に10000を入れればいいのでしょうか?

  • 連立方程式

    C言語で反復法の「ヤコビ法」と「ガウス・ザイデル法」、消去法を用いて連立方程式を解くプログラムを作りたい。 また、プログラムは任意の元数に対応できるように作りたい。 分かる方がいましたら、回答よろしくお願いします。

  • Sparse matrix 計算

    Sparse matrix 計算 Ax=Bの行列計算で、行列は最大で10000*10000になります。Cでガウスの消去法を使ってコードが書いたのですが、計算がかなり遅いので,何かいいライブラリがないかと思って探しているのですが、CLAPACKはsparse matrixに向いてないと書いてあり、どうすればいいのか考えているところです。BLASだけでも計算時間は早くなるのでしょうか?sparse matrixの解を求めるソフトウェアは出てるのですが,有料のものもあるのですが、無料のものでできるのであればそちらを使いたいと思ってます。アドバイスお願いします。

  • 連立一次方程式を解くプログラム

    すこし煩雑な(21×11です)の連立一次方程式を解くプログラムを作りたいのですが 何か良い文献、HPなどは無いでしょうか? いろいろなものを見ましたが大体縦横が同じ(n次元?)の 計算のヒントみたいなのしか見つけれませんでした。 プログラムはほとんどやったことが無いので、 ソースなどが公表されていてそれをちょっと書き換えれば 目的のものがつくれるというのが理想ですが・・・。 解法はガウスジョルダンとかガウスサイデル あるいは他にもっとよいものがあればそちらで構いません。 また、連立一次方程式のちゃんとした答え(言い方悪いですね)が求まらない場合、 近似解を算出することになると思うのですが これはどういった基準で「解」とされるのでしょうか? 計算の反復回数とかでしょうか? まとまりのない質問ですがよろしくお願いします。 何かあれば補足をお願いします。

  • ガウスの消去法

    次の連立方程式の解を、ガウスの消去法で出来るだけ精度よく求めたいです 0.001x+y=1 x+2y=3

  • 連立一次方程式を解くプログラムについて

    数値計算の本を見たら必ず載っている連立1次方程式の解法ですが、どのようなタイプの行列でも解くことができるものにはどのような解法があるでしょうか。もちろん、解くことができる範囲でということではあります。その意味でガウスの消去法(ピボット付)になるでしょうか。ガウスの消去法は解き方に基本的な制約はないですね。一方、共役勾配法の説明を見ると"対称正定値行列の場合、..."となっており、その範囲でしか考えていないということでしょうか。そうなるとかなり絞られることになってしまいます。任意の行列は変換して対称正定値に変換できる、ということでもないと思いますが。 有限要素法に関連した連立方程式解法についても書籍1冊分の解説とかありそうですが。高速化のために長い解説があったとしても前提によって使える範囲が狭いものが多いように思えるのですが。よろしくお願いします。

  • 1つの項に2つの未知数を含まないように変形するには

    次のような、4未知数の連立する方程式が4つあります。 この連立方程式をガウスの消去法で解きたいのですが、θが他の未知数(x,y,z)と同じ項にあって、解けません。 この方程式をガウスの消去法で解けるような、1つの項に未知数が一つの形に変換するにはどのようにすればよいのでしょうか? 式) cos(θ)*x - sin(θ)*y - P*z + cos(θ)*A - sin(θ)*B - P*C = 0 未知数:θ, x, y, z 定数:A, B, C, P 未知数全てと、C以外の定数(A, B, P)は0を取り得ます。 よろしくお願いします。

  • LU分解のピボッティングについて

    連立1次方程式を,LU分解を用いて解くことを考えます. このとき,LU分解の完全ピボッティングの定義がわかりません. ガウスの消去法の場合にならって,解を求める際,割る数の絶対値をできるだけ大きくすれば良いと思い,添付画像のように変形しました. LU分解の完全ピボッティングとは,添付画像に示した手法のことで合っているのでしょうか? ご回答,よろしくお願いします.