Спектральный радиус матрицы
Блокноты 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
, который определяет числовую рабочую точность.
Мы позволяем стандартной программе выбрать случайный стартовый вектор:
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:
С настройкой по умолчанию 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:
Собственный вектор, который возвращен, может иметь различные типы. Если никакой стартовый вектор не обеспечивается, тип матрицы определяет тип собственного вектора:
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:
Следующая матрица имеет два отличных собственных значения 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:
|
m ×m массив доменного типа |
|
Стартовый вектор: 1-мерный массив, или hfarray или список длины m. Также 2-мерные массивы ( |
|
Максимальное количество итераций: положительное целое число. Значение по умолчанию 1000. |
|
Один из флагов |
|
С С По сравнению с Если никакой Если результат не может быть вычислен с аппаратными плаваниями, арифметику программного обеспечения ядром MuPAD пробуют. Если текущее значение Может быть несколько причин аппаратной арифметики, чтобы перестать работать:
Если ни Если Обратите внимание на то, что Запаздывающие цифры в результатах с плавающей точкой, вычисленных с |
|
Опция, заданная как Возвратите собственный вектор, сопоставленный со спектральным радиусом как вектор доменного типа |
|
Отключает предупреждения |
Список [lambda, x, residue]
возвращен. Число с плавающей запятой lambda
является приближением собственного значения самого большого абсолютного значения. Векторный x
является числовым собственным вектором, соответствующим lambda
. residue
является числом с плавающей запятой, указывающим на числовое качество lambda
и x
.
Если никакие не возвращаются, тип требуют с помощью опции ReturnType
, типа возвращенного вектора, x
совпадает с типом входного вектора x 0 (т.е. это - 1-мерный массив типа DOM_ARRAY
или DOM_HFARRAY
, соответственно, или список или вектор-столбец типа matrix
или densematrix
. Если никакой стартовый вектор не задан, тип x
определяется типом A
.