Иллюстрированный самоучитель по MatLab

Матричные функции

Весьма представителен в 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)
a =
31.2203 0 23.3779
38.965920.0855 30.0593
31.1705 0 23.4277
  • funm(X, @function) [Форма 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.@function) – не выдает никакого сообщения, но помимо результата вычислений в матрице 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).

Пример:

a=
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)
e =
1.2586 0.2334 0.0688
1.6066 2.7006-0.6043
0.5969 1.1055 0.7918

Что нового мы узнали?

В этом уроке мы научились:

  • Создавать матрицы различного вида, включая "магическую" матрицу.
  • Создавать векторы равноотстоящих точек с разным масштабом.
  • Объединять матрицы, используя функцию конкатенации.
  • Создавать матрицы с заданной диагональю.
  • Выполнять перестановки элементов матриц.
  • Вычислять суммы и произведения элементов матриц.
  • Осуществлять поворот матриц и выделение их треугольных частей.
  • Работать с тестовыми матрицами Адамара, Ганкеля, Гильберта, Паскаля, Теплица и Уилкинсона.
  • Работать с различными матричными функциями.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.