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 1n 1, m 2n 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 1i 1n 1, m 2i 2n 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.

Примеры

Пример 1

Аппаратные плавающие массивы не имеют неинициализированных записей. Если никакое значение инициализации не дано, соответствующая запись установлена в 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])

Пример 2

Границы массива могут быть отрицательными целыми числами также:

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:

Пример 3

Если размерность и размер 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]

Пример 4

Можно использовать $ оператор, чтобы создать последовательность уравнений инициализации:

hfarray(1..4, 1..4, (i, i) = 1 $ i = 1..4)

Эквивалентно, можно использовать $ оператор, чтобы создать список инициализаций:

hfarray(1..8, [i*PI $ i = 1..8])

Пример 5

Создайте 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:

Пример 6

Создайте 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:

Пример 7

Можно использовать вложенный список, чтобы инициализировать двумерный 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])

Пример 8

Основная арифметика доступна для массивов доменного типа 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)

Параметры

m1, n1, m2, n2, …

Контуры индекса: целые числа

index1, index2, …

Последовательность целых чисел, задающих допустимый индекс массива

number1, number2, …

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

List

Простой список записей для инициализации массива

ListOfLists

Вложенный список (списков списков …) записей для инициализации массива

Возвращаемые значения

Объект типа DOM_ARRAY или DOM_HFARRAY, соответственно.

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

Области MuPAD

Функции MuPAD