hfarray
Создайте массив оборудования значения с плавающей точкой
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
hfarray(m1 .. n1
, <m2 .. n2, …
>) hfarray(m1 .. n1
, <m2 .. n2, …
>,index1 = number1, index2 = number2, …
) hfarray(m1 .. n1
, <m2 .. n2, …
>,List
) hfarray(<m1 .. n1, m2 .. n2, …
>,ListOfLists
)
hfarray(...)
создает массив, специализированный, чтобы содержать оборудование значения с плавающей точкой. Эти значения не реагируют на DIGITS
, и никакие символьные выражения не могут быть помещены в hfarray
. Значения могут быть действительными или комплексными. Если вы передаете символьные объекты hfarray
, он выдает ошибку.
hfarray(m_1..n_1, m_2..n_2, ...)
создает массив с плавающей точкой, обнуляет, куда первый индекс запускается от m 1 к n 1, вторые индексные выполнения от m 2 к n 2, и так далее.
hfarray(m_1..n_1, m_2..n_2, ..., List)
создает массив чисел с плавающей запятой с записями, инициализированными от List
.
hfarray(ListOfLists)
создает массив чисел с плавающей запятой с записями, инициализированными от ListOfLists
. Размерность hfarray
совпадает с размерностью ListOfLists
.
Массивы являются контейнерными объектами для того, чтобы хранить данные. В отличие от tables
, индексы должны быть последовательностями целых чисел. В то время как tables
может вырасти в размере динамически, количество записей в массиве, созданном hfarray, фиксируется.
Массивы, созданные через hfarray
, имеют доменный тип DOM_HFARRAY
. Они могут только содержать числа с плавающей запятой как записи. Внутренне, эти числа с плавающей запятой хранятся как аппаратные плавающие значения приблизительно с 15 значительными десятичными цифрами (“двойная точность”). Этот тип данных служит для хранения больших сумм числовых данных. Например, массив значений с плавающей точкой с 15 значительными десятичными цифрами, созданными через array
(использующий DIGITS
= 15), берет почти в 10 раз больше пространства памяти, чем соответствующий массив, созданный hfarray
.
На входе записи, переданные hfarray
, могут быть числами с плавающей запятой MuPAD®, целыми числами или рациональными числами или точными числовыми выражениями, такими как PI + sin(sqrt(2))
, который может быть преобразован в числа с плавающей запятой. Точные входные данные автоматически преобразованы в оборудование значения с плавающей точкой двойной точности. Это преобразование не зависит от текущего значения DIGITS
!
Записи абсолютного значения, меньшего, чем приблизительно 10 - 308, хранятся как 0,0 hfarray
!
Для массива A
типа DOM_HFARRAY
и последовательность целых чисел index
, формирующий допустимый индекс массива, индексируемый вызов, A[index]
возвращает соответствующую запись. Смотрите Пример 1 и Пример 5.
Индексируемое присвоение формы A[index] := entry
инициализирует или перезаписывает запись, соответствующую index
. Смотрите Пример 1 и Пример 5.
Индексные контуры должны удовлетворить m 1 ≤ n 1, m 2 ≤ n 2, и так далее. Размерность полученного массива является количеством данных аргументов области значений; по крайней мере один аргумент области значений должен быть задан. Общее количество записей полученного массива (n 1 - m 1 + 1) (n 2 - m 2 + 1) ….
Массивы, созданные hfarray
, не могут иметь неинициализированных записей. Записи автоматически установлены в 0,0, если никакие значения не заданы. Смотрите Пример 1.
Если уравнения формы, index = entry
присутствует, то запись массива, соответствующая index
, инициализируется с entry
. Это полезно для того, чтобы выборочно инициализировать некоторые конкретные записи массива.
Каждый индекс должен быть допустимым индексом массива формы i1
для одномерных массивов и (i1, i2, …)
для более многомерных массивов, где i1, i2, …
является целыми числами в допустимых контурах, удовлетворяя m 1 ≤ i 1 ≤ n 1, m 2 ≤ i 2 ≤ n 2, и так далее, и количество целых чисел в index
совпадает с размерностью массива.
Если вы используете аргумент List
, то полученный массив инициализируется с записями от List
. Это полезно для инициализации всех записей массива целиком. Список должен иметь (n 1 - m 1 + 1) (n 2 - m 2 + 1) … элементы, каждый становящийся операндом массива, который будет создан. В случае двумерных массивов, рассматриваемых как матрица, список содержит строку записей после строки.
Аргумент ListOfLists
должен быть вложенным списком, совпадающим со структурой массива точно. Глубина вложения списка должна быть больше или равной размерности массива. Количество записей списка в k-th уровень вложенности должно быть равно размеру k-th индексная область значений, то есть, n k - m k + 1. Смотрите Пример 7.
Одномерный массив распечатан как вектор - строка. Индекс соответствует номеру столбца.
Двумерный массив распечатан как матрица. Первый индекс соответствует номеру строки, и второй индекс соответствует номеру столбца.
Массивы размерности, больше, чем два, распечатаны в форме hfarray(m_1..n_1, m_2..n_2, dots, index_1 = entry_1, index_2 = entry_2, ...)
. Смотрите Пример 6 и Пример 7.
Арифметические операции не заданы для массивов доменного типа DOM_ARRAY
. Используйте matrix
, чтобы создать 1-мерные векторы или 2-мерные матрицы в математическом смысле.
Арифметические операции заданы для массивов доменного типа DOM_HFARRAY
. Например, линейная комбинация массивов, A, B
может быть вычислен через a*A + b*B
, если A, B
имеет тот же формат и если скалярные факторы a, b
является числами (значения с плавающей точкой, целые числа или rationals). Двумерный hfarrays A, B
обрабатывается как матрицы: операции, такие как умножение матриц A*B
, матричные степени, A^n
или матричная инверсия 1/A
, возможен везде, где это значимо математически. Смотрите Пример 8.
Аппаратные плавающие массивы не имеют неинициализированных записей. Если никакое значение инициализации не дано, соответствующая запись установлена в 0,0:
hfarray(-1..5)
Установите одну из записей в приближение с плавающей точкой PI и другой записи в приближение с плавающей точкой sqrt(2)*exp(2)
:
hfarray(-1..5, 2 = PI, 4 = sqrt(2)*exp(2))
Используйте список случайных значений, чтобы задать записи массива:
hfarray(-1..5, [frandom() $ i = -1..5])
Используйте вложенный список, чтобы задать записи массива:
hfarray(1..2, 1..3, [[1, 2, 3], [4, 5, 6]])
Также используйте плоский список:
hfarray(1..2, 1..3, [1, 2, 3, 4, 5, 6])
Границы массива могут быть отрицательными целыми числами также:
A := hfarray(-1..2, -3..-1, [[-1, -1, -1], [ 0, 0, 0], [ 1, 1, 1], [ 2, 2, 2]])
A[-1, -2], A[0, -3], A[2, -3]
delete A:
Если размерность и размер hfarray
не заданы явным образом, то оба значения приняты из данного списка:
hfarray([1.0,2.0,3.0,4.0,5.0]) = hfarray(1..5, [1.0,2.0,3.0,4.0,5.0]); bool(%)
Обратите внимание на то, что все подполя одной размерности должны иметь тот же размер и размерность. Поэтому следующий вход приводит к ошибке:
hfarray([[1],[3,4],[5,6]])
Error: Invalid argument. [hfarray]
Можно использовать оператор $
, чтобы создать последовательность уравнений инициализации:
hfarray(1..4, 1..4, (i, i) = 1 $ i = 1..4)
Эквивалентно, можно использовать оператор $
, чтобы создать список инициализаций:
hfarray(1..8, [i*PI $ i = 1..8])
Создайте 2×2 матрица как 2-мерный массив:
A := hfarray(1..2, 1..2, (1, 1) = 1.0, (2, 2) = 1.0)
Внутренне, записи массива хранятся в линеаризовавшей форме. К ним можно получить доступ в этой форме через op
или через индексный доступ:
op(A, 1), op(A, 2), op(A, 3), op(A, 4)
A[1, 1], A[1, 2], A[2, 1], A[2, 2]
Измените запись массива индексируемым присвоением:
A[2, 2] := PI: A[1, 2] := 5: A
delete A:
Создайте 3-мерный hfarray:
A := hfarray(1..2, 2..3, 3..4, (1, 2, 3) = 123, (2, 3, 4) = 234)
hfarray(1..2, 2..3, 3..4, [123.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 234.0])
delete A:
Можно использовать вложенный список, чтобы инициализировать двумерный hfarray. Внутренние списки являются строками созданной матрицы:
hfarray(1..2, 1..3, [[1, 2, 3], [4, 5, 6]])
Создайте 3D hfarray и инициализируйте его из вложенного списка глубины три. Внешний список имеет две записи для первой размерности. Каждая из этих записей является списком с тремя записями для второго измерения. Наконец, самые внутренние списки у каждого есть одна запись для третьей размерности:
hfarray(2..3, 1..3, 1..1, [ [ [1], [2], [3] ], [ [4], [5], [6] ] ])
hfarray(2..3, 1..3, 1..1, [1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
Основная арифметика доступна для массивов доменного типа DOM_HFARRAY
:
A := hfarray(1..5, [1, 2, 3, 4, 5]): B := hfarray(1..5, [5, 4, 3, 2, 1]): A + B
2*A
2*A - 3* B
Двумерные массивы типа DOM_HFARRAY
рассматриваются как матрицы. Они могут быть умножены соответственно:
A := hfarray(1..3, 1..3, [frandom() $ i = 1..9]): B := hfarray(1..3, 1..2, [frandom() $ i = 1..6]): A, B, A * B, A^10 * B
Следующая команда вычисляет матричную инверсию A
:
1/A
Некоторые функции, такие как norm
, принимают hfarrays:
norm(A)
|
Индексные контуры: целые числа |
|
Последовательность целых чисел, задающих допустимый индекс массива |
|
Действительные или комплексные числа с плавающей запятой или числовые выражения, которые могут быть преобразованы в действительные или комплексные числа с плавающей запятой |
|
Простой список записей для инициализации массива |
|
Вложенный список (списков списков …) записей для инициализации массива |
Объект типа DOM_ARRAY
или DOM_HFARRAY
, соответственно.