Julia. Язык программирования. Быстрый старт

Вадим Никитин, 2023

Начните писать программы на Julia в первый же день.Необходимы только минимальные знания в использовании компьютеров и программировании. Вы знаете что такое файл или каталог? Вам известны алгоритмы? Этого достаточно.Ничего лишнего. В этом справочнике раскрыты самые важные и часто затрагиваемые темы в краткой и ясной форме, а для желающих погрузиться в тему глубже представлены ссылки на необходимые источники информации.Подробные инструкции не упускают ни единого шага, а наглядные примеры полностью отображают в себе весь процесс работы. Вы всегда будете знать, что должно получиться в результате. Все примеры были протестированы на актуальной версии языка программирования Julia, доступной на момент написания данного справочника.Удобный дизайн оглавления позволяет быстро находить нужные примеры функции и команд. Нет нужды держать все в голове или постоянно лезть в интернет.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Julia. Язык программирования. Быстрый старт предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Числа с плавающей точкой

Типы чисел с плавающей точкой в Julia:

Числа с плавающей точкой вводятся и выводятся стандартным образом:

julia> 1.0

1.0

julia> 1.

1.0

julia> 0.5

0.5

julia>.5

0.5

julia> — 1.23

–1.23

При необходимости можно использовать E-нотацию:

julia> 1e10

1.0e10

julia> 2.5e-4

0.00025

Все результаты из примеров выше имеют тип Float64 (тип по умолчанию). Если вы хотите ввести значение с типом Float32, то необходимо использовать f вместо e следующим образом:

julia> x = 0.5f0

0.5f0

julia> typeof(x)

Float32

julia> 2.5f-4

0.00025f0

Значение с типом Float16:

julia> Float16(4.)

Float16(4.0)

julia> 2*Float16(4.)

Float16(8.0)

Ноль с плавающей точкой

Числа с плавающей точкой имеют два нуля — положительный нуль и отрицательный нуль. Они равны друг другу, но имеют разные двоичные представления, что можно увидеть с помощью функции bitstring(), которая дает буквальное битовое представление примитивного типа:

julia> 0.0 == — 0.0

true

julia> bitstring(0.0)

"0000000000000000000000000000000000000000000000000000000000000000"

julia> bitstring(-0.0)

"1000000000000000000000000000000000000000000000000000000000000000"

Когда точности или размерности Float64 недостаточно, можно использовать специальный тип BigFloat:

julia> 2.0^100/4

3.1691265005705735e29

julia> BigFloat(2.0)^100/4

3.16912650057057350374175801344e+29

BigFloat знаковый тип арифметики произвольной точности, не назначаемый автоматически при вводе, а требующий явного объявления для использования.

Функции минимального и максимального значений для типов также применимы:

julia> (typemin(Float16),typemax(Float16))

(-Inf16, Inf16)

julia> (typemin(Float32),typemax(Float32))

(-Inf32, Inf32)

julia> (typemin(Float64),typemax(Float64))

(-Inf, Inf)

Результатом будут специальные значения — отрицательная и положительная бесконечности. Значения чисел превышающих числовой диапазон типа также будут заменены на специальные значения:

julia> 4.2^1000

Inf

julia> — 4.2^1000

–Inf

Специальные значения

Существует три определенных стандартных значения с плавающей точкой, которые не соответствуют ни одной точке на линии вещественных чисел:

По стандарту IEEE 754, эти значения с плавающей точкой являются результатами определенных арифметических операций:

julia> 1/0

Inf

julia> — 5/0

–Inf

julia> 0.000001/0

Inf

julia> 0/0

NaN

julia> 1/Inf

0.0

julia> 1/-Inf

–0.0

julia> — 1/Inf

–0.0

julia> — 1/-Inf

0.0

julia> 500 + Inf

Inf

julia> 500 — Inf

–Inf

julia> Inf + Inf

Inf

julia> — Inf — Inf

–Inf

julia> Inf — Inf

NaN

julia> Inf * Inf

Inf

julia> Inf*-Inf

–Inf

julia> — Inf * — Inf

Inf

julia> Inf / Inf

NaN

julia> Inf /-Inf

NaN

julia> — Inf /Inf

NaN

julia> — Inf /-Inf

NaN

julia> 0 * Inf

NaN

julia> 0 *-Inf

NaN

Тип NaN

NaN не равно, не меньше и не больше чего-либо, включая самого себя:

julia> NaN == NaN

false

julia> NaN!= NaN

true

julia> NaN < NaN

false

julia> NaN > NaN

false

Это может вызвать проблемы, например при работе с массивами:

julia> [1 NaN] == [1 NaN]

false

Функции Julia для работы со специальными значениями:

Функция isequal() считает NaNs равными друг другу:

julia> isequal(NaN, NaN)

true

julia> isequal([1 NaN], [1 NaN])

true

julia> isequal(NaN, NaN32)

true

Функцию isequal() можно также использовать для различения знаковых нулей:

julia> — 0.0 == 0.0

true

julia> isequal(-0.0, 0.0)

false

Машинный эпсилон

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

Функция eps() в Julia дает расстояние между 1.0 и следующим большим значением с плавающей точкой, при использовании в качестве аргумента типа числа с плавающей точкой:

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Julia. Язык программирования. Быстрый старт предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я