や、言語関係など覚えたいもの、覚えるべきものはたくさんある一方で、注目が集まっているから、やってみたい。ということでプログラミング言語としてのを学んでいく。
3. Juliaライブラリの使い方
3.1 線形代数
には線形代数の各種計算を行うモジュールがある。ここではこのモジュールの使い方を扱う。
3.1.1 ベクトルへの基礎演算
using LinearAlgebra ################################ ### ベクトルの基礎演算の一部 ### ################################ # 内積 inner_prod = dot([1,2,3],[4,5,6]) println(inner_prod) # 外積 cross_prod = cross([1,2,3],[4,5,6]) println(cross_prod) v = [1, 2, 3] # L1ノルム norm_L1 = norm(v,1) println(norm_L1) # L2ノルム norm_L2 = norm(v,2) println(norm_L2) # L∞ノルム norm_L_Inf = norm(v, Inf) println(norm_L_Inf) # L1ノルムによる規格化 v_L1_standardized = normalize(v, 1) println(v_L1_standardized) # L2ノルムによる規格化 v_L2_standardized = normalize(v, 2) println(v_L2_standardized)
3.1.2 行列演算
using LinearAlgebra # 行列演算 A = [1 2 3; 4 1 6; 7 8 1] println(A) tr_A = tr(A) println(tr_A) det_A = det(A) println(det_A) inv_A = inv(A)
3.1.3 行列の種類
には特殊な形の行列専用の型が用意されている。
型 |
概要 |
|
---|---|---|
対称行列 |
||
行列 |
||
上三角行列 |
||
下三角行列 |
||
三重対角行列 |
||
対称三重対角行列 |
||
二重対角行列 |
||
対角行列 |
################## ### 行列の種類 ### ################## using LinearAlgebra A = rand(3,3) # 1. 対称行列の生成 sym_A_U = Symmetric(A) # 上三角部分が対称に(明示的に引数を指定するならば:U) sym_A_L = Symmetric(A, :L) # 下三角部分が対称に println(sym_A_U) println(sym_A_L) issymmetric(Symmetric(A)) # 対称行列か否かの診断 ###
using LinearAlgebra A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] B = Symmetric(A, :L) # 対称行列 C = Hermitian(A) # Hermite行列 D = UpperTriangular(A) # 上三角行列 E = LowerTriangular(A) # 下三角行列 F = Tridiagonal(A) # 三重対角行列 G = SymTridiagonal(Symmetric(A, :L)) # 対称三重対角行列 H = Diagonal(A) # 二重対角行列 I = Bidiagonal(H, :U) # 対角行列 println(A) println(B) println(C) println(D) println(E) println(F) println(G) println(H) println(I)
3.1.4 行列分解
関数 |
概要 |
|
---|---|---|
分解 |
||
分解 |
||
分解 |
||
分解 |
||
スペクトル分解 |
||
using LinearAlgebra A = rand(Float64, 4, 3) F = svd(A) # 特異値分解 println(typeof(F)) # F.と入力してから<Tab>キーを押すと引数候補が表示される F.S println(F.S) println(F.U) println(F.V) println(F.Vt)