Szukaj…


Składnia

  • + x
  • -x
  • a + b
  • a - b
  • a * b
  • a / b
  • a ^ b
  • a% b
  • 4a
  • sqrt (a)

Równanie kwadratowe

Julia używa podobnych operatorów binarnych do podstawowych operacji arytmetycznych, jak matematyka lub inne języki programowania. Większość operatorów można zapisać w notacji infiksowej (to znaczy pomiędzy obliczanymi wartościami). Julia ma kolejność operacji zgodną ze wspólną konwencją w matematyce.

Na przykład poniższy kod implementuje formułę kwadratową , która pokazuje operatory + , - , * i / dla dodawania, odejmowania, mnożenia i dzielenia. Pokazano również ukryte mnożenie , gdzie liczba może być umieszczona bezpośrednio przed symbolem, co oznacza mnożenie; to znaczy 4a oznacza to samo co 4*a .

function solvequadratic(a, b, c)
    d = sqrt(b^2 - 4a*c)
    (-b - d) / 2a, (-b + d) / 2a
end

Stosowanie:

julia> solvequadratic(1, -2, -3)
(-1.0,3.0)

Sito Eratostenesa

Reszta operatora w Julii jest operatorem % . Ten operator zachowuje się podobnie do % w językach takich jak C i C ++. a % b to pozostała podpisana pozostałość po podzieleniu a przez b .

Ten operator jest bardzo przydatny do implementacji niektórych algorytmów, takich jak następująca implementacja Sita Eratostenesa .

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

Stosowanie:

julia> sieve(20)
8-element Array{Int64,1}:
  2
  3
  5
  7
 11
 13
 17
 19

Arytmetyka Matrycowa

Julia używa standardowych matematycznych znaczeń operacji arytmetycznych po zastosowaniu do macierzy. Czasami zamiast tego pożądane są operacje elementarne. Są one oznaczone kropką ( . ) Poprzedzającą operację, którą należy wykonać elementarnie. (Należy pamiętać, że operacje elementarne często nie są tak wydajne jak pętle).

Sumy

Operator + na macierzach jest sumą macierzy. Jest podobny do sumy elementarnej, ale nie nadaje kształtu. To znaczy, jeśli A i B mają ten sam kształt, to A + B jest taki sam jak A .+ B ; w przeciwnym razie A + B jest błędem, podczas gdy A .+ B niekoniecznie musi być.

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

Podobnie - oblicza różnicę macierzy. Zarówno + jak i - mogą być również używane jako operatory jednoargumentowe.

Produkty

* Operator macierzy jest produktem macierzowym (nie produktem elementarnym). W przypadku produktu elementarnego użyj operatora. .* . Porównaj (używając tych samych matryc jak powyżej):

julia> A * B
2×2 Array{Int64,2}:
 19  22
 43  50

julia> A .* B
2×2 Array{Int64,2}:
  5  12
 21  32

Uprawnienie

Operator ^ oblicza potęgowanie macierzy . Potęgowanie macierzy może być przydatne do szybkiego obliczania wartości niektórych nawrotów. Na przykład liczby Fibonacciego mogą być generowane przez wyrażenie macierzowe

fib(n) = (BigInt[1 1; 1 0]^n)[2]

Jak zwykle, operator .^ Może być użyty tam, gdzie pożądana jest potęgowanie elementarne.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow