exponenta event banner

funm

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

Синтаксис

Описание

пример

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]

Матрица Ламберта W Функция

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

Сначала создайте матрицу 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);

Чтобы найти функцию Ламберта W (W0 ветвь) в матричном смысле, вызовfunm использование 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 = (d1⋯0⋮⋱⋮0⋯dn)

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

f (A) =P⋅ (f (d1) ⋯0⋮⋱⋮0⋯f (dn)) ⋅P−1

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

f (λ10⋯00⋱⋱⋱⋮⋮⋱⋱⋱0⋮⋱⋱⋱10⋯⋯0λ)) = (f (λ) 0! f (λ) 1! f (λ) 2!⋯f (n 1) (λ) (n 1)! 0⋱⋱⋱⋮⋮⋱⋱⋱f (λ) 2!⋮⋱⋱⋱f ′ (λ) 1!0⋯⋯0f (λ) 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.

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

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

См. также

| | | |

Представлен в R2014b