Posted on 2015/01/04, 3:54 PM By admin22
線形計算のための数値解析ライブラリLAPACKがXcodeで標準で使える、ということを知って試してみました。
環境 : Xcode ver 6.1 / MacOSX 10.9.5
#import <Foundation/Foundation.h> #import <Accelerate/Accelerate.h> #define SIZE 2 int main(int argc, const char * argv[]) { @autoreleasepool { int m = SIZE; // 行 int n = SIZE; // 列 int lda = SIZE; double A[SIZE*SIZE]; int info ; int ipiv[SIZE]; int lwork = SIZE; double work[SIZE]; A[0] = 1; A[2] = 2; A[1] = 3; A[3] = 4; // LU分解 dgetrf_( &m, &n, A, &lda, ipiv, &info); // 逆行列 dgetri_( &n, A, &lda, ipiv, work, &lwork, &info); printf("%+lf %+lf\n", A[0], A[2]); printf("%+lf %+lf\n", A[1], A[3]); printf("--------------\n"); // LU分解 dgetrf_( &m, &n, A, &lda, ipiv, &info); // 逆行列 dgetri_( &n, A, &lda, ipiv, work, &lwork, &info); printf("%+lf %+lf\n", A[0], A[2]); printf("%+lf %+lf\n", A[1], A[3]); } return 0; }
Accelerateフレームワークをインボートするだけで使えます。
プログラムは、逆行列を求めるものです。さらに逆行列を求めて元の行列を表示しています。
こんなに簡単に利用できるとは、ちょっと驚きました。
Macでは最近iPhone開発以外、あまり使っていませんでしたが、このような用途でも使いたくなりました。Swiftも試したいし・・
参考 :
http://auewe.hatenablog.com/entry/2013/11/25/024149
Categories: 未分類 タグ: Objective-C