2022年
5月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2022-05-02 Rとjuliaとrubyとpython

_ 特殊関数

4つの言語の比較の第八弾として特殊関数などの使い方についてまとめてみた.まず,比較的一般的な特殊関数は,以下の表のように使うことができる.
Rjuliarubypython3
導入 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)
次に,多項式で表される特殊関数は,例えば以下のように使うことができる.
Rjuliarubypython3
導入 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)
さらに特殊な関数の例として,Wigner Symbolは以下のように使う.
Rjuliarubypython3
導入 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))
rubyはすべてgslから使うことが出来るのに対して,他の言語ではいくつかのライブラリなどを使い分けないといけないのが,面倒である.また,Rやjuliaでは,多項式の取り扱い方が,少し特殊な感じである.という訳で,使いやすさはruby,python,R,juliaという順かな.