Выполните общую матричную функцию
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
это описывает выходное условие funm
exitflag
может иметь следующие значения:
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.