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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow