Общая матричная функция
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)]
Для совместимости с функцией 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.