|
setup diary |
R | julia | ruby | python3 | |
導入 | julia using Pkg Pkg.add("SpecialFunctions") | aptitude install ruby-gsl | aptitude install python3-scipy | |
初期化 | using SpecialFunctions | require "gsl" | from scipy import special | |
ガンマ関数 | gamma(3) | gamma(3) | Math.gamma(3) | special.gamma(3) |
ダイガンマ関数 | digamma(3) | digamma(3) | GSL::Sf::psi(3) | special.psi(3) |
ベッセル関数 | besselJ(0.1,1) | besselj(1,0.1) | GSL::Sf::bessel_Jn(1,0.1) | special.jv(1,0.1) |
R | julia | ruby | python3 | |
導入 | aptitude install r-cran-polynom R install.packages("orthopolynom") | julia using Pkg Pkg.add("SpecialPolynomials") | aptitude install ruby-gsl | aptitude install python3-scipy |
初期化 | library(polynom);library(orthopolynom) | using SpecialPolynomials | require "gsl" | from scipy import special |
エルミート多項式 | predict(hermite.h.polynomials(3)[[3]],0.8) | basis(Hermite,2)(0.8) | GSL::Poly.hermite(2).eval(0.8) | special.hermite(2)(0.8) |
R | julia | ruby | python3 | |
導入 | aptitude install r-cran-gsl | julia using Pkg Pkg.add("WignerSymbols") | aptitude install ruby-gsl | aptitude install python3-sympy |
初期化 | library(gsl) | using WignerSymbols | require "gsl" | from sympy.physics.wigner import wigner_3j |
厳密 | wigner3j(0.5,1,1.5,0.5,0,-0.5) | wigner_3j(0.5,1,1.5,0.5,0,-0.5) | ||
浮動小数 | coupling_3j(1,2,3,1,0,-1) | wigner3j(Float64,0.5,1,1.5,0.5,0,-0.5) | GSL::Sf::coupling_3j(1,2,3,1,0,-1) | float(wigner_3j(0.5,1,1.5,0.5,0,-0.5)) |
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に登録して意見を投稿すれば可能性はあるかも知れないけど,難しいかな.