funm

Функция общей матрицы

Синтаксис

Описание

пример

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

Примеры

Корень матричного куба

Поиск матричных 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

Найдите матричную функцию Lambert 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);

Чтобы найти функцию Lambert 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 функции Lambert W.

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, как его второй входной параметр.

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

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

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

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

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

См. также

| | | |

Введенный в R2014b