funm

Общая матричная функция

Синтаксис

F = funm(A,f)

Описание

пример

F = funm(A,f) вычисляет функциональный f (A) для квадратной матрицы A. Для получения дополнительной информации смотрите Матричную Функцию.

Примеры

Матричный кубический корень

Найдите матричный B, такой, что B3 = A, где A является 3х3 единичной матрицей.

Чтобы решить B3 = A, вычислите кубический корень матричного A с помощью функции funm. Создайте символьный функциональный f(x) = x^(1/3) и используйте его в качестве второго аргумента для funm. Кубический корень единичной матрицы является самой единичной матрицей.

A = sym(eye(3))

syms f(x)
f(x) = x^(1/3);

B = funm(A,f)
A =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]
 
B =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]

Замените один из элементов 0 матричного A с 1 и вычислите матричный кубический корень снова.

A(1,2) = 1
B = funm(A,f)
A =
[ 1, 1, 0]
[ 0, 1, 0]
[ 0, 0, 1]

B =
[ 1, 1/3, 0]
[ 0,   1, 0]
[ 0,   0, 1]

Теперь, вычислите кубический корень верхней треугольной матрицы.

A(1:2,2:3) = 1
B = funm(A,f)
A =
[ 1, 1, 1]
[ 0, 1, 1]
[ 0, 0, 1]

B =
[ 1, 1/3, 2/9]
[ 0,   1, 1/3]
[ 0,   0,   1]

Проверьте тот B3 = A.

B^3
ans =
[ 1, 1, 1]
[ 0, 1, 1]
[ 0, 0, 1]

Матрица функция Ламберта В

Найдите матрицу функцией Ламберта В.

Во-первых, создайте 3х3 матричный A с помощью арифметики переменной точности с пятью точностью цифры. В этом примере, с помощью арифметики переменной точности вместо точных символьных чисел позволяет вам ускорить вычисления и уменьшить использование памяти. Используя только пять цифр помогает результату соответствовать на экране.

savedefault = digits(5);
A = vpa(magic(3))
A =
[ 8.0, 1.0, 6.0]
[ 3.0, 5.0, 7.0]
[ 4.0, 9.0, 2.0]

Создайте символьный функциональный f(x) = lambertw(x).

syms f(x)
f(x) = lambertw(x);

Найти функцию Ламберта В (ответвление W0) в матричном смысле, callfunm использование f(x) в качестве его второго аргумента.

W0 = funm(A,f)
W0 =
[  1.5335 + 0.053465i, 0.11432 + 0.47579i, 0.36208 - 0.52925i]
[ 0.21343 + 0.073771i,  1.3849 + 0.65649i, 0.41164 - 0.73026i]
[  0.26298 - 0.12724i,  0.51074 - 1.1323i,   1.2362 + 1.2595i]

Проверьте, что этим результатом является решение матричного уравнения A = W0·eW0 в заданной точности.

W0*expm(W0)
ans =
[               8.0, 1.0 - 5.6843e-13i, 6.0 + 1.1369e-13i]
[ 3.0 - 2.2737e-13i, 5.0 - 2.8422e-14i, 7.0 - 4.1211e-13i]
[ 4.0 - 2.2737e-13i, 9.0 - 9.9476e-14i, 2.0 + 1.4779e-12i]

Теперь, создайте символьный функциональный f(x), представляющий ответвление W-1 функции Ламберта В.

f(x) = lambertw(-1,x);

Найдите ответвление W-1 для матричного A.

Wm1 = funm(A,f)
Wm1 =
[   0.40925 - 4.7154i, 0.54204 + 0.5947i, 0.13764 - 0.80906i]
[ 0.38028 + 0.033194i, 0.65189 - 3.8732i, 0.056763 - 1.0898i]
[   0.2994 - 0.24756i, - 0.105 - 1.6513i,  0.89453 - 3.0309i]

Проверьте, что этим результатом является решение матричного уравнения A = Wm1·eWm1 в заданной точности.

Wm1*expm(Wm1)
ans =
[ 8.0 - 8.3844e-13i,  1.0 - 3.979e-13i, 6.0 - 9.0949e-13i]
[ 3.0 - 9.6634e-13i,  5.0 + 1.684e-12i, 7.0 + 4.5475e-13i]
[ 4.0 - 1.3642e-12i, 9.0 + 1.6698e-12i, 2.0 + 1.7053e-13i]

Матричный экспоненциал, логарифм и квадратный корень

Можно использовать funm с соответствующими вторыми аргументами, чтобы найти матричный экспоненциал, логарифм и квадратный корень. Однако более эффективный подход должен использовать функции expm, logm и sqrtm для этой задачи.

Создайте эту квадратную матрицу и найдите ее экспоненциал, логарифм и квадратный корень.

syms x
A = [1 -1; 0 x]
expA = expm(A)
logA = logm(A)
sqrtA = sqrtm(A)
A =
[ 1, -1]
[ 0,  x]
 
expA =
[ exp(1), (exp(1) - exp(x))/(x - 1)]
[      0,                    exp(x)]
 
logA =
[ 0, -log(x)/(x - 1)]
[ 0,          log(x)]
 
sqrtA =
[ 1, 1/(x - 1) - x^(1/2)/(x - 1)]
[ 0,                     x^(1/2)]

Найдите матричный экспоненциал, логарифм и квадратный корень из A с помощью funm. Используйте символьные выражения exp(x), log(x) и sqrt(x) в качестве второго аргумента funm. Результаты идентичны.

expA = funm(A,exp(x))
logA = funm(A,log(x))
sqrtA = funm(A,sqrt(x))
expA =
[ exp(1), exp(1)/(x - 1) - exp(x)/(x - 1)]
[      0,                          exp(x)]
 
logA =
[ 0, -log(x)/(x - 1)]
[ 0,          log(x)]
 
sqrtA =
[ 1, 1/(x - 1) - x^(1/2)/(x - 1)]
[ 0,                     x^(1/2)]

Входные параметры

свернуть все

Введите матрицу, заданную как квадратная символьная или числовая матрица.

Функция, заданная как символьная функция или выражение.

Выходные аргументы

свернуть все

Получившаяся функция, возвращенная как символьная матрица.

Больше о

свернуть все

Матричная функция

Матричная функция является скалярной функцией, которая сопоставляет одну матрицу с другим.

Предположим, f(x), где x является скаляром, имеет расширение Ряда Тейлора. Затем матричный функциональный f(A), где A является матрицей, задан Рядом Тейлора f(A) со сложением и умножением, выполняемым в матричном смысле.

Если A может быть представлен как A = P·D·P-1, где D является диагональной матрицей, такой что

D=(d100dn)

затем матричный функциональный f(A) может быть вычислен можно следующим образом:

f(A)=P(f(d1)00f(dn))P1

Недиагонализируемые матрицы могут быть представлены как A = P·J·P-1, где J является Жорданова форма матричного A. Затем матричный функциональный f(A) может быть вычислен при помощи следующего определения на каждом Иорданском блоке:

f((λ10000100λ))=(f(λ)0!f(λ)1!f(λ)2!f(n1)(λ)(n1)!0f(λ)2!f(λ)1!00f(λ)0!)

Советы

  • Для совместимости с функцией MATLAB® funm funm принимает следующие аргументы:

    • Указатели на функцию, такие как @exp и @sin, как его второй входной параметр.

    • Входной параметр options, такой как funm(A,f,options).

    • Дополнительные входные параметры функционального f, такие как funm(A,f,options,p1,p2,...)

    • Выходной аргумент exitflag, такой как [F,exitflag] = funm(A,f). Здесь, exitflag является 1, только если ошибки вызова функции funm, например, если это сталкивается с делением на нуль. В противном случае exitflag является 0.

    Для получения дополнительной информации и список всех приемлемых указателей на функцию, смотрите, что funm MATLAB функционирует.

  • Если входная матрица, A является числовым (не символьный объект) и второй аргумент f, является указателем на функцию, то вызов funm вызывает функцию funm MATLAB.

Смотрите также

| | | |

Введенный в R2014b