числовой::

Числовые собственные значения и собственные вектора матрицы

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

numeric::eigenvectors(A, options)

Описание

numeric::eigenvectors(A) возвращает числовые собственные значения и собственные вектора матричного A.

Все записи матрицы должны быть числовыми. Числовые выражения такой как и т.д. приняты и преобразованы в плавания. Нечисловые символьные записи приводят к ошибке.

Собственные значения сортируются по numeric::sort.

Матричный X обеспечивает собственные вектора: i-th столбец X является числовым собственным вектором, соответствующим собственному значению di. Каждый столбец является или нулем или нормированный к Евклидовой длине 1.0.

Для матриц с несколькими собственными значениями и недостаточным количеством собственных векторов, некоторые собственные вектора могут совпасть или могут быть нулем, т.е. X является не обязательно обратимым.

Список остатков res = [res 1, res 2, …] обеспечивает некоторое управление качеством числовых спектральных данных. Остатками дают

,

где x i является нормированным собственным вектором (i-th столбец X) сопоставленный с числовым собственным значением d i. Для Эрмитовых матриц res i обеспечивает верхнюю границу для абсолютной погрешности d i.

С опцией NoResidues подавлено вычисление остатков, возвращенным значением является NIL.

Если никакие не возвращаются, тип задан с помощью опции ReturnType = t, доменный тип матрицы собственного вектора, X зависит от типа входной матрицы A:

  • Собственные вектора массива возвращены как массив.

  • Собственные вектора hfarray возвращены как hfarray.

  • Собственные вектора плотной матрицы типа Dom::DenseMatrix() возвращены как плотная матрица типа Dom::DenseMatrix() по звонку выражений.

  • Для всех других матриц категории Cat::Matrix собственные вектора возвращены как матрицы типа Dom::Matrix() по звонку выражений MuPAD®. Это включает входные матрицы A типа Dom::Matrix(...), Dom::SquareMatrix(...), Dom::MatrixGroup(...) и т.д.

Примечание

Матрицы A матричной области, такие как Dom::Matrix(...) или Dom::SquareMatrix(...) внутренне преобразованы в массивы по выражениям через expr(A). Обратите внимание на то, что linalg::eigenvectors должен использоваться, когда собственные значения/векторы должны быть вычислены по области компонента. Cf. Пример 3.

Примечание

Собственные значения аппроксимированы с абсолютной точностью, где r является спектральным радиусом A (т.е. r является максимальным сингулярным значением A). Следовательно, большие собственные значения должны быть вычислены правильно к десятичным разрядам DIGITS. Числовые приближения маленьких собственных значений менее точны.

Примечание

Для числового алгоритма не возможно различать плохо разделенные отличные собственные значения и несколько собственных значений. Поэтому numeric::eigenvectors и linalg::eigenvectors используют различные форматы возврата: последний может предоставить информацию о кратности собственных значений из-за ее внутренней точной арифметики.

Используйте numeric::eigenvalues, если только собственные значения должны быть вычислены.

Взаимодействия среды

Функция чувствительна к переменной окружения DIGITS, который определяет числовую рабочую точность.

Примеры

Пример 1

Мы вычисляем спектральные данные 2×2 Гильбертова матрица:

A := linalg::hilbert(2)

[d, X, res] := numeric::eigenvectors(A):

Собственные значения:

d

Собственные вектора:

  X

Гильбертовы матрицы являются Эрмитовыми, т.е. вычисление спектральных данных является численно стабильным процессом. Это подтверждено маленькими остатками:

res

Стандартный linalg::hilbert обеспечивает вход как матрицу типа Dom::Matrix(). Следовательно, собственные вектора также состоят из такой матрицы. Для последующей обработки мы преобразовываем список собственных значений к диагональной матрице:

d := matrix(2, 2, d, Diagonal):

Мы восстанавливаем матрицу от ее спектральных данных:

X*d*X^(-1)

Мы извлекаем собственный вектор от матричного X и перепроверяем его числовое качество:

eigenvector1 := X::dom::col(X, 1);
norm(A*eigenvector1 - d[1, 1]*eigenvector1)

delete A, d, X, res, eigenvector1:

Пример 2

Мы демонстрируем численно плохо обусловленный случай. Следующая матрица имеет только один собственный вектор и не может быть diagonalized. Численно, нулевой вектор возвращен как второй столбец матрицы собственного вектора:

A := array(1..2, 1..2, [[5, -1], [4, 1]]):
DIGITS := 6:
numeric::eigenvectors(A)

delete A, DIGITS:

Пример 3

Следующая матрица имеет доменные компоненты:

A := Dom::Matrix(Dom::IntegerMod(7))([[6, -1], [0,  3]])

Обратите внимание на то, что numeric::eigenvectors вычисляет спектральные данные следующей матрицы:

expr(A)

numeric::eigenvectors(A, NoResidues)

Стандартный linalg::eigenvectors должен использоваться, если спектральные данные должны быть вычислены по доменному Dom::IntegerMod компонента (7):

linalg::eigenvectors(A)

delete A:

Пример 4

Мы демонстрируем использование аппаратных плаваний. Следующая матрица является вырожденной: это имеет ранг 1. Для двойного собственного значения 0, различные основные векторы соответствующего eigenspace возвращены с HardwareFloats и SoftwareFloats, соответственно:

A := array(1..3, 1..3, [[1, 2, 3], [2, 4, 6],
                 [3*10^12, 6*10^12, 9*10^12]]):
[d1, X1, res1] := numeric::eigenvectors(A, HardwareFloats):
d1, X1

[d2, X2, res2] := numeric::eigenvectors(A, SoftwareFloats):
d2, X2

delete A, d1, X1, res1, d2, X2, res2:

Параметры

A

Числовая матрица доменный тип DOM_ARRAY или DOM_HFARRAY, или категории Cat::Matrix.

Опции

Hard, HardwareFloats, Soft, SoftwareFloats

С Hard (или HardwareFloats), вычисления сделаны с помощью быстрой аппаратной плавающей арифметики из сеанса MuPAD. Hard и HardwareFloats эквивалентны. При использовании этой опции входные данные преобразованы в аппаратные плавания и обработаны скомпилированным кодом С. Результат повторно преобразован в плавания MuPAD и возвращен в сеанс MuPAD.

С Soft (или SoftwareFloats) вычисления являются плавающей арифметикой программного обеспечения использования купола, обеспеченной ядром MuPAD. Soft и SoftwareFloats эквивалентны. SoftwareFloats используется по умолчанию, если текущее значение DIGITS больше, чем 15 и входная матрица, A не имеет доменного типа DOM_HFARRAY.

По сравнению с SoftwareFloats, используемым ядром MuPAD, вычисление с HardwareFloats может быть много раз быстрее. Обратите внимание, однако, что точность аппаратной арифметики ограничивается приблизительно 15 цифрами. Далее, размер чисел с плавающей запятой не может быть больше, чем приблизительно 10 308 и не меньшим, чем приблизительно 10 - 308.

Если никакой HardwareFloats или SoftwareFloats не требуют явным образом, следующая стратегия используется: Если текущее значение DIGITS меньше, чем 16 или если матричный A является аппаратным плавающим массивом доменного типа DOM_HFARRAY, то аппаратную арифметику пробуют. Если это успешно, результат возвращен.

Если результат не может быть вычислен с аппаратными плаваниями, арифметику программного обеспечения ядром MuPAD пробуют.

Если текущее значение DIGITS больше, чем 15 и входная матрица, A не имеет доменного типа DOM_HFARRAY, или если одна из опций, Soft, SoftwareFloats или Symbolic заданы, MuPAD, вычисляет результат со своей арифметикой программного обеспечения, не пытаясь использовать аппаратные плавания сначала.

Может быть несколько причин аппаратной арифметики, чтобы перестать работать:

  • Текущее значение DIGITS больше, чем 15.

  • Данные содержат символьные объекты.

  • Данные содержат числа, больше, чем 10 308 или меньший, чем 10 - 308, который не может быть представлен аппаратными плаваниями.

Если ни HardwareFloats, ни SoftwareFloats не заданы, пользователю не сообщают, используются ли аппаратные плавания или плавания программного обеспечения.

Если HardwareFloats задан, но перестал работать из-за одной из причин выше, предупреждение выдано, что (намного более медленное) программное обеспечение арифметика с плавающей точкой ядра MuPAD используется.

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

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

Примечание

Для плохих обусловленных матриц результаты, возвращенные с HardwareFloats и SoftwareFloats, могут значительно отличаться! Смотрите Пример 4.

NoResidues

Подавляет вычисление ошибочных оценок

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

Альтернативное имя опции NoErrors, используемый в предыдущих версиях MuPAD, все еще доступно.

ReturnType

Опция, заданная как ReturnType = t

Возвратите собственные вектора как матрицу доменного типа t. Следующее возвращает типы, t доступен: DOM_ARRAY, DOM_HFARRAY, Dom::Matrix() или Dom::DenseMatrix().

NoWarning

Отключает предупреждения

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

Перечислите [d, X, res]. Список d = [d1, d2, …] содержит числовое собственное значение. i-th столбец матричного X является собственным вектором, сопоставленным с собственным значением di. Список остатков res = [res1, res2, …] обеспечивает ошибочные оценки для числовых собственных значений.

Алгоритмы

Стандартная программа реализует стандартные числовые алгоритмы из Руководства Автоматического Вычисления Уилкинсоном и Рейншем.