numeric::spectralradius

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

Блокноты 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, то предупреждение выдано, и приведенные значения возвращены. См. Пример 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остаток число с плавающей запятой, указывающее на числовое качество lambda и x.

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