Julia Language
算術
サーチ…
構文
- + x
- -バツ
- a + b
- a - b
- a * b
- a / b
- a ^ b
- a%b
- 4a
- sqrt(a)
二次式
Juliaは、数学や他のプログラミング言語と同様に、基本的な算術演算にも同様の2項演算子を使用します。ほとんどの演算子は、中置表記(infix notation)で記述することができます(つまり、計算される値の間に配置されます)。ジュリアは、数学の一般的な慣例に一致する操作の順序を持っています。
たとえば、以下のコードは、それぞれ加算、減算、乗算、および除算の+
、 -
、 *
、および/
演算子を示す2次式を実装しています。 暗示的な乗算も示されています。ここで、数字は乗算を意味する記号の直前に置くことができます。つまり、 4a
は4*a
と同じ意味です。
function solvequadratic(a, b, c)
d = sqrt(b^2 - 4a*c)
(-b - d) / 2a, (-b + d) / 2a
end
使用法:
julia> solvequadratic(1, -2, -3)
(-1.0,3.0)
エラトステネスのふるい
Juliaの残りの演算子は%
演算子です。この演算子は、CやC ++などの言語の%
と同様に動作します。 a % b
分割後に残さ符号付き剰余であることによりa
b
。
この演算子は、次のようなEratosthenesのSieveの実装など、特定のアルゴリズムを実装するのに非常に便利です。
iscoprime(P, i) = !any(x -> i % x == 0, P)
function sieve(n)
P = Int[]
for i in 2:n
if iscoprime(P, i)
push!(P, i)
end
end
P
end
使用法:
julia> sieve(20)
8-element Array{Int64,1}:
2
3
5
7
11
13
17
19
行列演算
Juliaは、行列に適用すると算術演算の標準的な数学的意味を使用します。場合によっては、代わりに要素単位の操作が望ましい場合もあります。これらには、要素ごとに実行される演算子の前にフルストップ( .
)が付いています。 (要素単位の操作は、ループほど効率的でないことが多いことに注意してください)。
合計
行列の+
演算子は行列の和です。それは要素的な合計に似ていますが、形をブロードキャストしません。つまり場合、でありA
及びB
同一形状であり、その後、 A + B
同じであるA .+ B
。そうでない場合は、 A + B
、一方、エラーであるA .+ B
必ずしもではないかもしれません。
julia> A = [1 2
3 4]
2×2 Array{Int64,2}:
1 2
3 4
julia> B = [5 6
7 8]
2×2 Array{Int64,2}:
5 6
7 8
julia> A + B
2×2 Array{Int64,2}:
6 8
10 12
julia> A .+ B
2×2 Array{Int64,2}:
6 8
10 12
julia> C = [9, 10]
2-element Array{Int64,1}:
9
10
julia> A + C
ERROR: DimensionMismatch("dimensions must match")
in promote_shape(::Tuple{Base.OneTo{Int64},Base.OneTo{Int64}}, ::Tuple{Base.OneTo{Int64}}) at ./operators.jl:396
in promote_shape(::Array{Int64,2}, ::Array{Int64,1}) at ./operators.jl:382
in _elementwise(::Base.#+, ::Array{Int64,2}, ::Array{Int64,1}, ::Type{Int64}) at ./arraymath.jl:61
in +(::Array{Int64,2}, ::Array{Int64,1}) at ./arraymath.jl:53
julia> A .+ C
2×2 Array{Int64,2}:
10 11
13 14
同様に、 -
行列の差を計算します。 +
と-
両方を単項演算子として使用することもできます。
製品
行列の*
演算子は行列積です (要素ごとの積ではありません)。要素単位の製品の場合は、 .*
演算子を使用し.*
。比較(上記と同じ行列を使用):
julia> A * B
2×2 Array{Int64,2}:
19 22
43 50
julia> A .* B
2×2 Array{Int64,2}:
5 12
21 32
パワーズ
^
演算子は、 行列のべき乗を計算します。行列累乗は、特定の再帰の値を迅速に計算するのに役立ちます。例えば、 フィボナッチ数は行列式によって生成することができる
fib(n) = (BigInt[1 1; 1 0]^n)[2]
いつものように、 .^
演算子は、要素ごとのべき乗が目的の演算である場合に使用できます。