余白の書きなぐり

aueweのブログ

LAPACK

C言語からLAPACKのzheevを呼んでエルミート行列を対角化

昔書いた記事のコメントでzheevの使い方を書けと言われた。 なので書いた。僕は優しいなあ。 こういうのは他人が書いた記事を鵜呑みにするより、zheev.fでググってヒットする一次情報を見るほうがいいと思うよ。 Fortranが分からなくても普通に読めると思う…

C言語からLAPACKを呼んで逆行列を求める(LU分解する)

数値解析の授業で逆行列は求めちゃダメって言われたけど、気にしない気にしない。 実行列の逆行列を求める Fortranの DGETRF でLU分解した後、 DGETRI で逆行列を求める。 /* * hoge.c * SIZE*SIZE型の実行列の逆行列を計算 * 元の行列は * (2 3 ) * (1 0.5)…

C言語からLAPACKのzgeevを呼んで複素行列を対角化

/* * 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>…

LAPACKを導入してC言語からコンパイル (Linux, Windows)

Fortran には LAPACK と呼ばれる密行列用の線形演算パッケージが存在する。 行列の固有値を求めたり連立方程式を解いたりしてくれる。便利。 疎行列にはARPACKを使ったほうがいいらしい。 今回は LAPACK を導入して C言語から呼び出す方法を書くよ。 Linux L…