[ios8] 新たな線形代数ライブラリ linear algebra
DESCRIPTION
2014/09/18 ios8勉強会セッション、『新たな線形代数ライブラリ Linear Algebra』の発表資料TRANSCRIPT
Copyright © Classmethod, Inc.
新たな線形代数ライブラリ!Linear Algebra
Classmethod Inc!安達勇一
1
Copyright © Classmethod, Inc.
自己紹介
• iPhone アプリ・サービス事業部!
• iOS歴二年半!• 物理系出身!• 最近はサーバサイドでWebAPIを作ったり、AWSをいじったり
2
Copyright © Classmethod, Inc.
線形代数 is 何
3
Copyright © Classmethod, Inc.
線形代数 is 何
代数学の重要な部門で、 応用の広い線形空間の理論 - 岩波数学辞典 第三版
4
Copyright © Classmethod, Inc. 5
Copyright © Classmethod, Inc. 6
線形代数 @iOS
• UIViewのtransformはCGAffineTransform!
• 3x3の行列で回転、拡大、平行移動を表す。!
• CIImageでの画像フィルタリングでは行列を使える。
Copyright © Classmethod, Inc.
連立方程式を解く
7
x+ 4y + 5z = 3
2x+ 3y � 6z = 10
5x+ 7y � 11z = 13
Copyright © Classmethod, Inc.
連立方程式を解く
8
0
@1 4 52 3 �65 7 �11
1
A
0
@x
y
z
1
A =
0
@31013
1
A
Copyright © Classmethod, Inc.
連立方程式を解く
9
let mat =la_matrix_from_double_buffer( [1, 4, 5, 2, 3, -6, 5, 7, -11], 3, 3, 3, la_hint_t(LA_NO_HINT), la_attribute_t(LA_DEFAULT_ATTRIBUTES))let vec =la_matrix_from_double_buffer( [3, 10, 13], 3, 1, 1, la_hint_t(LA_NO_HINT), la_attribute_t(LA_DEFAULT_ATTRIBUTES))let ans = la_solve(mat, vec)
Copyright © Classmethod, Inc.
連立方程式を解く
10
x = -11.0714285714286 y = 6.28571428571428 z = -2.21428571428571
Copyright © Classmethod, Inc.
連立方程式を解く
11
x = -11.0714285714286 y = 6.28571428571428 z = -2.21428571428571
普通に解くと !x = - 155 /14, y = 44 / 7, z = -31 / 14
Copyright © Classmethod, Inc.
New BLAS For iOS / OS X
• la_object_t !• 遅延評価!• etc…
12
Basic Linear Algebra Subprograms
Copyright © Classmethod, Inc.
la_object_t
• 行列、ベクトルを表すオブジェクト!• Objective-Cでのオブジェクトとして扱える!• ARCがメモリの面倒みてくれる!• Swiftでも使える
13
Copyright © Classmethod, Inc.
la_object_t
• バッファから生成!
• 単位行列を生成!
• 対角行列を生成
14
la_matrix_from_double_buffer
la_identity_matrix
la_diagonal_matrix_from_vector
Copyright © Classmethod, Inc.
la_object_t
• 内容をバッファに書き出し!
• サイズの取得!
• 大きさの取得
15
la_matrix_to_double_buffer
la_matrix_rows la_matrix_cols
la_norm_as_double
Copyright © Classmethod, Inc.
la_object_t
• 和・差!
• 内積・行列の積!
• 解を求める
16
la_sum la_difference
la_inner_product la_matrix_product
la_solve
Copyright © Classmethod, Inc.
遅延評価
• la_object_tの演算は実際には計算しない!• オブジェクト同士の関連が記録されていく!• 実際の計算発火タイミングはバッファ書き込み時
17
Copyright © Classmethod, Inc. 18
Copyright © Classmethod, Inc.
線形代数の様々な応用
• 2D/3D画像処理
19
Copyright © Classmethod, Inc.
線形代数の様々な応用
• 統計解析/パターン認識
20
Copyright © Classmethod, Inc.
線形代数の様々な応用
• クライアントサイドでのデータ前処理・フィルタリング
21
Copyright © Classmethod, Inc. 22
数学方面はコロコロAPIが変わらない!!一回覚えればつぶしが効く!
Copyright © Classmethod, Inc. 23
Copyright © Classmethod, Inc. 24
http://dev.classmethod.jp/references/ios-8-accelerate-framework