numeric::eigenvalues

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

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

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

Синтаксис

numeric::eigenvalues(A, options)

Описание

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

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

Примечание

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

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

Примечание

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

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

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

Примеры

Пример 1

Мы вычисляем собственные значения 3×3 Гильбертова матрица:

numeric::eigenvalues(linalg::hilbert(3))

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

A := array(1..3, 1..3,
           [[   I     ,     PI   ,  exp(1)  ],
            [   2     ,  10^100  ,    1     ],
            [10^(-100), 10^(-100), 10^(-100)]
           ]):

Цель точности и рабочая точность установлены DIGITS. Со стандартной настройкой DIGITS = 10, следующий результат вычисляется с HardwareFloats:

numeric::eigenvalues(A)

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

DIGITS := 200: 
eigenvals := numeric::eigenvalues(A):
DIGITS := 5:   
eigenvals;

delete A, eigenvals, DIGITS:

Пример 2

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

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

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

expr(A), numeric::eigenvalues(A)

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

linalg::eigenvalues(A, Multiple)

delete A:

Пример 3

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

A := linalg::hilbert(15):
numeric::eigenvalues(A, HardwareFloats),
numeric::eigenvalues(A, SoftwareFloats)

delete A:

Параметры

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 может значительно отличаться! Смотрите Пример 3.

NoWarning

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

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

Упорядоченный список числовых собственных значений

Алгоритмы

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