|
setup diary |
R | julia | ruby | python3 | |
初期化 | using LinearAlgebra | require "numo/linalg" | import numpy as np | |
定義 | a<-matrix(c(1,3,2,4),2,2) | a=[1 2; 3 4] | a=Numo::NArray[[1,2],[3,4]] | a=np.array([[1,2],[3,4]]) |
単位行列 | b<-diag(2) | b=I(2) | b=Numo::DFloat.eye(2) | b=np.eye(2) b=np.identity(2) |
対角行列 | d<-diag(c(1,2)) | d=diagm([1,2]) | d=Numo::NArray[1,2].diag | d=np.diag([1,2]) |
対角要素 | diag(a) | diag(a) | a.diagonal | np.diag(a) np.diagonal(a) a.diagonal() |
型 | dim(a) | size(a) | a.shape | a.shape |
要素 | a[1,2] | a[1,2] | a[0,1] | a[0,1] |
行 | a[1,] | a[1,:] | a[0,true] | a[0,:] |
列 | a[,1] | a[:,1] | a[true,0] | a[:,0] |
転置 | t(a) | transpose(a) | a.transpose | a.T a.transpose() |
随伴行列 | Conj(t(a)) | a' adjoint(a) | a.transpose.conj | a.T.conjugate() |
跡 | sum(diag(a)) | tr(a) | a.trace | a.trace() |
行列式 | det(a) | det(a) | Numo::Linalg.det(a) | np.linalg.det(a) |
和 | a+b | a+b | a+b | a+b |
差 | a-b | a-b | a-b | a-b |
スカラー倍 | 2*a a*2 | 2*a a*2 | 2*a a*2 | 2*a a*2 |
要素毎の積 | a*b | a.*b | a*b | a*b |
積 | a%*%b | a*b | Numo::Linalg.matmul(a,b) a.dot(b) | a@b np.matmul(a,b) a.dot(b) |
冪乗 | Reduce("%*%",replicate(3,a,FALSE)) | a^3 | Numo::Linalg.matrix_power(a,3) | np.linalg.matrix_power(a,3) |
逆行列 | solve(a) | inv(a) I/a a\I | Numo::Linalg.inv(a) | np.linalg.inv(a) |
対角化 | eigen(a) | eigen(a) | Numo::Linalg.eig(a) | np.linalg.eig(a) |
固有値 | eigen(a)$values | eigvals(a) | Numo::Linalg.eigvals(a) | np.linalg.eigvals(a) |
固有ベクトル | eigen(a)$vectors | eigvecs(a) | Numo::Linalg.eigvecs(a) | np.linalg.eig(a)[1] |
module Numo class NArray alias_method :tr, :trace alias_method :t, :transpose def determinant() Numo::Linalg.det(self) end alias_method :det, :determinant def inverse() Numo::Linalg.inv(self) end alias_method :inv, :inverse def eig() Numo::Linalg.eig(self) end alias_method :eigensystem, :eig alias_method :eigen, :eigensystem class << self alias_method :identity, :eye alias_method :unit, :identity alias_method :I, :identity end end endnumoに組み込んでもらえないかな.githubに登録して意見を投稿すれば可能性はあるかも知れないけど,難しいかな.