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

