Выполните общую матричную функцию
F = funm(A,fun)
F = funm(A,fun,options)
F = funm(A,fun,options,p1,p2,...)
[F,exitflag] = funm(...)
[F,exitflag,output] = 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.
Поле | Описание | Значения |
|---|---|---|
| Level of display |
|
| Допуск к блокированию формы Шура | Положительная скалярная величина. Значением по умолчанию является |
| Допуск завершения к оценке Ряда Тейлора диагональных блоков | Положительная скалярная величина. Значением по умолчанию является |
| Максимальное количество терминов Ряда Тейлора | Положительное целое число. Значением по умолчанию является |
| При вычислении логарифма максимальное количество квадратных корней вычисляется в масштабирующейся инверсии и обработке на квадрат методу. | Положительное целое число. Значением по умолчанию является |
| Указывает, что упорядоченное расположение Шура формирует | Вектор из длины |
F = funm(A,fun,options,p1,p2,...) передает дополнительные входные параметры p1,p2,... к функции.
[F,exitflag] = funm(...) возвращает скалярный exitflag это описывает выходное условие funmexitflag может иметь следующие значения:
0 — Алгоритм был успешен.
1 — Одна или несколько оценок Ряда Тейлора не сходились, или, в случае логарифма, слишком много квадратных корней необходимы. Однако вычисленное значение F может все еще быть точным.
[F,exitflag,output] = funm(...) возвращает структуру output со следующими полями:
Поле | Описание |
|---|---|
| Вектор, для который |
| Массив ячеек, для который |
| Упорядоченное расположение формы Шура, как передано |
| Переупорядоченная форма Шура |
Если форма Шура является диагональной затем output = struct('terms',ones(n,1),'ind',{1: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. и Н. Дж. Хигем, “Алгоритм Шура-Парлетта для вычислительных матричных функций”, SIAM J. Matrix Anal. Appl., Издание 25, Номер 2, стр 464-485, 2003.
[2] Golub, G. H. и К. Ф. ван Лоун, Матричный Расчет, Третий Выпуск, Johns Hopkins University Press, 1996, p. 384.
[3] Moler, C. B. и К. Ф. ван Лоун, “Девятнадцать Сомнительных Способов Вычислить Экспоненциал Матрицы, Двадцать пять лет Спустя” Анализ SIAM 20, Издание 45, Номер 1, стр 1-47, 2003.