数値計算
昔書いた記事のコメントでzheevの使い方を書けと言われた。 なので書いた。僕は優しいなあ。 こういうのは他人が書いた記事を鵜呑みにするより、zheev.fでググってヒットする一次情報を見るほうがいいと思うよ。 Fortranが分からなくても普通に読めると思う…
数値解析の授業で逆行列は求めちゃダメって言われたけど、気にしない気にしない。 実行列の逆行列を求める Fortranの DGETRF でLU分解した後、 DGETRI で逆行列を求める。 /* * hoge.c * SIZE*SIZE型の実行列の逆行列を計算 * 元の行列は * (2 3 ) * (1 0.5)…
普通の(並列計算でない)プログラムで乱数を使用する際に、 プログラムを実行するたびに異なる系列で擬似乱数を発生させるには seed に現在時刻を使用するのが一般的だ。 要するに srand((unsigned) time(NULL)); とすればよい。詳細は以下のページにまとまっ…
インストール Linux(Ubuntu)への導入 インストール $ sudo apt-get install libfftw3-3 libfftw3-dev libfftw3-doc コンパイル方法 $ gcc hoge.c -lm -lfftw3 Windowsへの導入 fftwのwindows版インストーラのページから 32-bit version: fftw-3.3.3-dll32.zi…
フリーな数式処理ソフト Maxima を使用して ロバートソン・ウォーカー計量 からアインシュタインテンソルを計算したメモ。 腕力で式変形するのは大変すぎる。 まず最初に ctensor を load して csetup() し、計量を作る。 (%i1) load(ctensor); (%o1) C:/PRO…
/* * SIZE*SIZE型の複素行列の固有値と固有ベクトルを計算 * (1 2i) * (i 1+i) */ #define SIZE 2 // 2*2型の行列 #include <stdio.h> #include <complex.h> int main(void) { char jobvl = 'N' ;// 左固有ベクトルは計算しない char jobvr = 'V' ;// 右固有ベクトルは計算する i</complex.h></stdio.h>…
Fortran には LAPACK と呼ばれる密行列用の線形演算パッケージが存在する。 行列の固有値を求めたり連立方程式を解いたりしてくれる。便利。 疎行列にはARPACKを使ったほうがいいらしい。 今回は LAPACK を導入して C言語から呼び出す方法を書くよ。 Linux L…