Поиск…


Синтаксис

  • + х
  • -Икс
  • a + b
  • a - b
  • a * b
  • a / b
  • a ^ b
  • a% b
  • SQRT (а)

Квадратичная формула

Джулия использует аналогичные двоичные операторы для основных арифметических операций, как и математика или другие языки программирования. Большинство операторов могут быть записаны в инфиксной нотации (т. Е. Помещены между вычисленными значениями). У Джулии есть порядок операций, соответствующий общей конвенции в математике.

Например, приведенный ниже код реализует квадратичную формулу , которая демонстрирует операции + , - , * и / для сложения, вычитания, умножения и деления соответственно. Также показано неявное умножение , где число может быть помещено непосредственно перед символом, чтобы означать умножение; то есть 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)

Сито Эратосфена

Оператор остатка в Юлии является оператором % . Этот оператор ведет себя аналогично % в таких языках, как C и C ++. a % b - остаток, оставшийся после подписания, после деления a на b .

Этот оператор очень полезен для реализации определенных алгоритмов, таких как следующая реализация Сита Эратосфена .

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

Матричная арифметика

Джулия использует стандартные математические значения арифметических операций при применении к матрицам. Иногда вместо этого требуются элементарные операции. Они помечены полной остановкой ( . ), Предшествующей оператору, выполняемой по-разному. (Обратите внимание, что элементарные операции часто не так эффективны, как циклы).

Суммы

Оператор + на матрицах является матричной суммой. Он похож на элементную сумму, но не передает форму. То есть, если 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]

Как обычно, оператор .^ Можно использовать, когда поэтапное возведение в степень является желаемой операцией.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow