Julia Language
Arithmetik
Suche…
Syntax
- + x
- -x
- a + b
- a - b
- a * b
- a / b
- a ^ b
- a% b
- 4a
- Quadrat (a)
Quadratische Formel
Julia verwendet für grundlegende Rechenoperationen ähnliche binäre Operatoren wie Mathematik oder andere Programmiersprachen. Die meisten Operatoren können in Infix-Notation geschrieben werden (dh zwischen den berechneten Werten platziert werden). Julia hat eine Reihenfolge von Operationen, die der üblichen Konvention in der Mathematik entspricht.
Der folgende Code implementiert beispielsweise die quadratische Formel , die die Operatoren +
, -
, *
und /
für Addition, Subtraktion, Multiplikation und Division veranschaulicht. Ebenfalls gezeigt ist die implizite Multiplikation , bei der eine Zahl direkt vor einem Symbol platziert werden kann, um die Multiplikation zu bedeuten; das heißt, 4a
bedeutet dasselbe wie 4*a
.
function solvequadratic(a, b, c)
d = sqrt(b^2 - 4a*c)
(-b - d) / 2a, (-b + d) / 2a
end
Verwendungszweck:
julia> solvequadratic(1, -2, -3)
(-1.0,3.0)
Sieb von Eratosthenes
Der Restoperator in Julia ist der Operator %
. Dieser Operator verhält sich ähnlich wie %
in Sprachen wie C und C ++. a % b
ist der unterschriebene Rest, der nach der Division von a
durch b
übrig bleibt.
Dieser Operator ist sehr nützlich, um bestimmte Algorithmen zu implementieren, beispielsweise die folgende Implementierung des Sieve of Eratosthenes .
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
Verwendungszweck:
julia> sieve(20)
8-element Array{Int64,1}:
2
3
5
7
11
13
17
19
Matrix-Arithmetik
Julia verwendet die mathematischen Standardbedeutungen von arithmetischen Operationen, wenn sie auf Matrizen angewendet werden. Manchmal sind elementweise Operationen stattdessen erwünscht. Diese sind mit einem Punkt ( .
) Vor dem Operator markiert, der elementweise erfolgen soll. (Beachten Sie, dass elementweise Operationen oft nicht so effizient wie Schleifen sind.)
Summen
Der Operator +
auf Matrizen ist eine Matrixsumme. Es ähnelt einer elementweisen Summe, überträgt jedoch keine Form. Das heißt, wenn A
und B
die gleiche Form haben, dann ist A + B
das Gleiche wie A .+ B
; Andernfalls ist A + B
ein Fehler, wohingegen A .+ B
nicht unbedingt der Fall sein muss.
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
Ebenso berechnet -
eine Matrixdifferenz. Sowohl +
als auch -
können auch als unäre Operatoren verwendet werden.
Produkte
Der Operator *
auf Matrizen ist das Matrixprodukt (nicht das Elementweise Produkt). Verwenden Sie für ein elementweises Produkt den Operator. .*
. Vergleiche (mit den gleichen Matrizen wie oben):
julia> A * B
2×2 Array{Int64,2}:
19 22
43 50
julia> A .* B
2×2 Array{Int64,2}:
5 12
21 32
Befugnisse
Der Operator ^
berechnet die Exponentiation der Matrix . Die Matrix-Exponentiation kann hilfreich sein, um Werte bestimmter Wiederholungen schnell zu berechnen. Zum Beispiel können die Fibonacci-Zahlen durch den Matrixausdruck generiert werden
fib(n) = (BigInt[1 1; 1 0]^n)[2]
Wie üblich kann der Operator .^
Verwendet werden, wenn die Elementweise Potenzierung die gewünschte Operation ist.