Матричные функции
Весьма представителен в MATLAB набор матричных функций. Они перечислены ниже.
ехрт(Х) — возвращает е х от матрицы X. Комплексный результат получается, если X имеет неположительные собственные значения. Функция expm является встроенной и использует разложение Паде. Ее вариант в виде m-файла располагается в файле expm1.m. Второй метод вычисления матричной экспоненты использует разложение Тейлора и находится в файле expm2.m. Метод Тейлора не рекомендуется применять как основной, так как он зачастую бывает относительно медленным и неточным. Реализация третьего способа вычисления матричной экспоненты находится в файле ехртЗ.m и использует спектральное разложение матрицы А. Этот метод неудачен, если входная матрица не имеет полного набора линейно независимых собственных векторов.
Пример:
» S-[l.0.3:1.3.1:4.0.0]
S=
1 0 3
1 3 1
4 0 0
>>a=expm(S)
а =
31.2203 0 23.3779
38.965920.0855 30.0593
31.1705 0 23.4277
funm(X, @f unction)[ Форма funm(X,@function), как в предыдущих версиях MATLAB, по-прежнему возможна, но не рекомендуется.— Примеч. ред. ]— возвращает любую функцию от квадратной матрицы X, если правильно ввести имя, составленное из латинских букв. Команды funm(X ,@exp), funm(X,@sqrt), funm(X.@log) Hexpm(X),sqrtm(x),logm(X) вычисляют соответственно одинаковые функции, но используют разные алгоритмы. Однако предпочтительнее использовать ехрт(Х), sqrtm(x).logm(X);
[Y.esterr] = funm(X.@f uncti on) — не выдает никакого сообщения, но помимо результата вычислений в матрице Y возвращает грубую оценку относительной погрешности результата вычислений funm в esterr. Если матрица X — действительная симметрическая или комплексная эрмитова, то ее форма Шура диагональна и полученный результат может иметь высокую точность.
Примеры:
» S=[1,0.3:1.3.1:4,0.0]
1 0 3
1 3 1
4 0 0
» a=funm(S.@exp)
a=
31.22030.0000 23.3779
38.965920.085530.0593
31.1705-0.000023.4277
logm(X) — возвращает логарифм матрицы. Результат получается комплексным, если X имеет отрицательные собственные значения;
[Y.esterr]=logm(X) — не выдает какого-либо предупреждающего сообщения, но возвращает оценку погрешности в виде относительной невязки norm(expm(Y)-X)/norm(X);
Если матрица X — действительная симметрическая или комплексная эрмитова, то теми же свойствами обладает и logm(X).
Пример:
а=
31.22030.0000 23.3779
38.965920.085530.0593
31.1705-0.000023.4277
» logm(a)
ans =
1.0000 0.0000 3.0000
1.0000 3.0000 1.0000
4.0000 -0.0000-0.0000
sqrtm(X) — возвращает квадратный корень из X, соответствующий неотрицательным действительным частям собственных значений X. Результат получается комплексным, если X имеет отрицательные собственные значения. Если X вырожденная, то выдает предупреждение об ошибке;
[Y.resnonii]=sqrtm(X) — не выдает какого-либо предупреждающего сообщения, но возвращает оценку погрешности в виде относительной невязки по нормам Фробениуса (см. урок 11) norm(X-Y ^ 2, ' fro') /norm(X, ' fro') ;
[Y. alpha, condest]=sqrtm(X) — с тремя выходными аргументами функция помимо квадратного корня возвращает также фактор стабильности (но не невязку!) и оценку числа обусловленности результирующей матрицы Y.
Пример:
» S=[2.1.0;6,7.-2:3.4.0]; » e=sqrtm(S)
е =
1.2586 0.2334 0.0688
1.6066 2.7006 -0.6043
0.5969 1.1055 0.7918