числовой::

Спектральный радиус матрицы

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

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

Синтаксис

numeric::spectralradius(A, <x0>, <n>, <mode>, <ReturnType = t>, <NoWarning>)

Описание

numeric::spectralradius(A) возвращает данные, соответствующие собственному значению матричного A, который имеет самое большое абсолютное значение.

Спектральным радиусом матрицы с собственными значениями λ i является max (i |).

Возвращаемое значение lambda является приближением соответствующего собственного значения: abs(lambda) является спектральным радиусом.

Возвращаемое значение x является соответствующим нормированным собственным вектором:.

Возвращаемое значение обеспечивает ошибочную оценку для собственного значения. Для Эрмитовых матриц это - строгая верхняя граница для ошибки |lambda - λ exact |, где λ exact является точным собственным значением.

numeric::spectralradius реализует метод степени, чтобы вычислить собственное значение и связанный собственный вектор, задающий спектральный радиус: векторная итерация “сходится” к eigenspace, сопоставленному со спектральным радиусом. Стартовый векторный x 0 обеспечивается вторым аргументом numeric::spectralradius. Если никакой стартовый вектор не обеспечивается пользователем, случайным образом выбранный вектор используется.

Примечание

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

Внутренне, остановки итерации, когда приближение собственного значения становится стационарным в относительной точности, данной DIGITS. Если этого не происходит в итерациях n, то предупреждение выдано, и приведенные значения возвращены. Cf. Пример 4.

numeric::spectralradius и numeric::spectralRadius эквивалентны.

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

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

Примеры

Пример 1

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

A := matrix(2, 2, [[10, 1], [1, 20]]):
numeric::spectralradius(A)

Мы задаем стартовый вектор как 1-мерный массив и позволяем максимум 1 000 внутренних итераций:

A := array(1..2, 1..2, [[1, 2], [5, -10]]):
x0 := array(1..2, [1, 1]):
numeric::spectralradius(A, x0, 1000)

Затем, мы используем список, чтобы задать стартовый вектор:

A := array(1..2, 1..2, [[I, 3], [3, I]]):
numeric::spectralradius(A, [1, 1], 1000)

delete A, x0:

Пример 2

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

A := hfarray(1..2, 1..2, [[10^4, 10^4], [50,  60]]):
x0 := array(1..2, [1, 1]):
numeric::spectralradius(A, x0)

Мы запрашиваем SoftwareFloats в следующем вызове. Отметьте различие в запаздывающих цифрах:

numeric::spectralradius(A, x0, Soft)

delete DIGITS, A, x0:

Пример 3

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

A:= array(1..2, 1..2, [[1, 2], [3, 4]]):
[l, x, residue]:= numeric::spectralradius(A);

domtype(x)

A:= hfarray(1..2, 1..2, [[1, 2], [3, 4]]):
[l, x, residue]:= numeric::spectralradius(A):
domtype(x)

A:= matrix(2, 2, [[1, 2], [3, 4]]):
[l, x, residue]:= numeric::spectralradius(A):
domtype(x)

Если стартовый вектор обеспечивается, его тип определяет тип вектора возврата:

A:= hfarray(1..2, 1..2, [[1, 2], [3, 4]]):
x0:= [1, 1]:
[l, x, residue]:= numeric::spectralradius(A, x0):
domtype(x)

x0:= array(1..2, [1, 1]):
[l, x, residue]:= numeric::spectralradius(A, x0):
domtype(x)

x0:= hfarray(1..2, [1, 1]):
[l, x, residue]:= numeric::spectralradius(A, x0):
domtype(x)

x0:= matrix([1, 1]):
[l, x, residue]:= numeric::spectralradius(A, x0):
domtype(x)

Тип возврата можно требовать явным образом:

[l, x, residue] :=
  numeric::spectralradius(A, x0, ReturnType = DOM_LIST):
domtype(x)

[l, x, residue] :=
  numeric::spectralradius(A, x0, ReturnType = DOM_HFARRAY):
domtype(x)

delete A, x0, l, x, residue:

Пример 4

Следующая матрица имеет два отличных собственных значения 1 и-1 из того же абсолютного значения. Метод степени должен перестать работать.

A := array(1..2, 1..2, [[1, 0], [0, -1]]):

Мы позволяем максимум 1 000 внутренних шагов. Вызов приводит к предупреждению. Большой остаток также указывает, что метод степени не сходился:

numeric::spectralradius(A, [1, 1], 1000)
Warning: No convergence of vector iteration. [numeric::spectralradius]

delete A:

Параметры

A

m ×m массив доменного типа DOM_ARRAY или DOM_HFARRAY или матрица категории Cat::Matrix

x0

Стартовый вектор: 1-мерный массив, или hfarray или список длины m. Также 2-мерные массивы (array(1..m, 1..1, ...), hfarray(1..m, 1..1, ...)) и матрицы, представляющие векторы, приняты.

n

Максимальное количество итераций: положительное целое число. Значение по умолчанию 1000.

mode

Один из флагов Hard, HardwareFloats, Soft или SoftwareFloats

Опции

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, могут отличаться.

ReturnType

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

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

NoWarning

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

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

Список [lambda, x, residue] возвращен. Число с плавающей запятой lambda является приближением собственного значения самого большого абсолютного значения. Векторный x является числовым собственным вектором, соответствующим lambda. residue является числом с плавающей запятой, указывающим на числовое качество lambda и x.

Если никакие не возвращаются, тип требуют с помощью опции ReturnType, типа возвращенного вектора, x совпадает с типом входного вектора x 0 (т.е. это - 1-мерный массив типа DOM_ARRAY или DOM_HFARRAY, соответственно, или список или вектор-столбец типа matrix или densematrix. Если никакой стартовый вектор не задан, тип x определяется типом A.