Выполните общую матричную функцию
F = funm (A, fun)
F = funm (A, fun, опции)
F = funm (A, fun, опции, p1, p2...)
[F, exitflag] = funm (...)
[F, exitflag, вывод] = funm (...)
F = funm(A,fun) оценивает пользовательский функциональный fun в аргументе A квадратной матрицы. F = fun(x,k) должен принять векторный x и целочисленный k, и возвратить векторный f, одного размера из x, где f(i) является k th производная функционального fun, оцененного в x(i). Функция, представленная fun, должна иметь Ряд Тейлора с бесконечным радиусом сходимости, за исключением fun = @log, который обработан как особый случай.
Можно также использовать funm, чтобы выполнить специальные функции, перечисленные в следующей таблице в матричном A.
Функция | Синтаксис для того, чтобы выполнить функцию в матрице А |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Для матричных квадратных корней используйте sqrtm(A) вместо этого. Для матричных экспоненциалов, какой из expm(A) или funm(A, @exp) является более точным, зависит от матричного A.
Функция, представленная fun, должна иметь Ряд Тейлора с бесконечным радиусом сходимости. Исключением является @log, который обработан как особый случай. Параметризация Функций объясняет, как предоставить дополнительные параметры функциональному fun при необходимости.
F = funm(A,fun,options) устанавливает параметры алгоритма на значения в структуре options.
В следующей таблице перечислены поля options.
Поле | Описание | Значения |
|---|---|---|
| Уровень отображения |
|
| Допуск к блокированию формы Шура | Положительный скаляр. Значением по умолчанию является |
| Допуск завершения к оценке Ряда Тейлора диагональных блоков | Положительный скаляр. Значением по умолчанию является |
| Максимальное количество условий Ряда Тейлора | Положительное целое число. Значением по умолчанию является |
| При вычислении логарифма максимальное количество квадратных корней вычисляется в масштабирующейся инверсии и обработке на квадрат методу. | Положительное целое число. Значением по умолчанию является |
| Указывает, что упорядоченное расположение Шура формирует | Вектор длины |
F = funm(A,fun,options,p1,p2,...) передает дополнительные входные параметры p1,p2,... функции.
[F,exitflag] = funm(...) возвращает скалярный exitflag, который описывает выходное условие funm. exitflag может иметь следующие значения:
0 — Алгоритм был успешен.
1 — Одна или несколько оценок Ряда Тейлора не сходились, или, в случае логарифма, слишком много квадратных корней необходимы. Однако вычисленное значение F может все еще быть точным.
[F,exitflag,output] = funm(...) возвращает структуру output со следующими полями:
Поле | Описание |
|---|---|
| Вектор, для которого |
| Массив ячеек, для которого блок |
| Упорядоченное расположение формы Шура, как передано |
| Переупорядоченная форма Шура |
Если форма Шура является диагональной затем output = struct('terms',ones(n,1),'ind',{1:n}) n.
Следующая команда вычисляет матричный синус 3 3 волшебной матрицы.
F=funm(magic(3), @sin)
F =
-0.3850 1.0191 0.0162
0.6179 0.2168 -0.1844
0.4173 -0.5856 0.8185Операторы
S = funm(X,@sin); C = funm(X,@cos);
приведите к тем же результатам к в ошибке округления как
E = expm(i*X); C = real(E); S = imag(E);
В любом случае результаты удовлетворяют S*S+C*C = I, где I = eye(size(X)).
Чтобы вычислить функциональный exp(x) + cos(x) в A с одним вызовом funm, использовать
F = funm(A,@fun_expcos)
где fun_expcos является следующей функцией.
function f = fun_expcos(x, k)
% Return kth derivative of exp + cos at X.
g = mod(ceil(k/2),2);
if mod(k,2)
f = exp(x) + sin(x)*(-1)^g;
else
f = exp(x) + cos(x)*(-1)^g;
end Алгоритм, который использует funm, описан в [1].
[1] Дэвис, P. I. и Н. J. Хигем, “Алгоритм Шура-Парлетта для вычислительных матричных функций”, SIAM J. Matrix Anal. Appl., Издание 25, Номер 2, стр 464-485, 2003.
[2] Golub, G. H. и К. F. ван Лоун, Матричное Вычисление, Третий Выпуск, Johns Hopkins University Press, 1996, p. 384.
[3] Moler, C. B. и К. F. ван Лоун, “Девятнадцать Сомнительных Способов Вычислить Экспоненциал Матрицы, Двадцать пять лет Спустя” Анализ SIAM 20, Издание 45, Номер 1, стр 1-47, 2003.