Создайте символьные матричные переменные

Начиная с R2021a

Символьные матричные переменные представляют матрицы, векторы и скаляры в компактном матричном обозначении. Когда математические формулы включают матрицы и векторы, запись их с помощью переменных символьной матрицы более кратка и ясна, чем запись их компонентно. Когда вы делаете это, можно взять векторные выражения и уравнения из учебников, ввести их в Symbolic Math Toolbox™, выполнить математические операции над ними и вывести из них дальнейшие уравнения.

Производные уравнения, включающие переменные символьной матрицы, отображаются в наборе типов, как они были бы в учебниках. Для примера создайте три переменные символьной матрицы A, x, и y при помощи syms. Найдите дифференциал выражения yTAx относительно вектора x.

syms A [3 4] matrix
syms x [4 1] matrix
syms y [3 1] matrix
eq = y.'*A*x
eq = yTAxтранспонирование (симматрица ('y', [3 1])) * симматрица ('A', [3 4]) * симматрица ('x', [4 1])
D = diff(eq,x)
D = yTAтранспонирование (симматрица ('y', [3 1])) * симматрица ('A', [3 4])

Сравнение между матрицей символьных скалярных переменных и символьных матричных переменных

Переменные символьной матрицы являются альтернативой символьным скалярным переменным. Эти две опции имеют различные типы и отображаются по-разному.

Для примера создайте два 3-by-4 матрицы символьных скалярных переменных при помощи syms. Для краткости матрицы символьных скалярных переменных иногда называют символьными матрицами. Эти матрицы отображаются путем перечисления их компонентов.

syms A B [2 3]
A
A = 

(A1,1A1,2A1,3A2,1A2,2A2,3)[A1_1, A1_2, A1_3; A2_1, A2_2, A2_3]

B
B = 

(B1,1B1,2B1,3B2,1B2,2B2,3)[B1_1, B1_2, B1_3; B2_1, B2_2, B2_3]

Матрица символьных скалярных переменных имеет тип sym.

class(A)
ans = 
'sym'

Применение символьных математических операций к этим матрицам может привести к комплексному решению, выраженному в терминах матричных компонентов. Для примера умножьте матрицы A и B'.

C = A*B'
C = 

(A1,1B1,1+A1,2B1,2+A1,3B1,3A1,1B2,1+A1,2B2,2+A1,3B2,3A2,1B1,1+A2,2B1,2+A2,3B1,3A2,1B2,1+A2,2B2,2+A2,3B2,3)[A1_1*conj (B1_1) + A1_2*conj (B1_2) + A1_3*conj (B1_3), A1_1*conj (B2_1) + A1_2*conj (B2_2) + A1_3*conj (B2_3); A2_1*conj (B1_1) + A2_2*conj (B1_2) + A2_3*conj (B1_3), A2_1*conj (B2_1) + A2_2*conj (B2_2) + A2_3*conj (B2_3)]

Чтобы создать символьные матричные переменные того же размера, используйте syms команда, за которой следуют имена переменных, их размер и matrix ключевое слово. Переменные символьной матрицы отображаются жирным шрифтом, чтобы отличить их от символьных скалярных переменных.

syms A B [2 3] matrix
A
A = Asymmatrix('A', [2 3])
B
B = Bsymmatrix('B', [2 3])

Переменные символьной матрицы имеют тип symmatrix.

class(A)
ans = 
'symmatrix'

Применение символьных математических операций к переменным символьной матрицы приводит к краткому отображению. Для примера умножьте A и B'.

C = A*B'
C = ABTsymmatrix ('A', [2 3]) * транспонирование (conj (symmatrix ('B', [2 3]))

Математические операции с переменными Символьной матрицы

Переменные символьной матрицы распознаются как некоммутативные объекты. Они поддерживают общие математические операции, и можно использовать эти операции для создания выражений переменных символьной матрицы.

syms A B [2 2] matrix
A*B - B*A
ans = AB-BAsymmatrix('A', [2 2])*symmatrix('B', [2 2]) - symmatrix('B', [2 2])*symmatrix('A', [2 2])

Для примера проверьте отношение коммутации на умножение между двумя переменными символьной матрицы.

isequal(A*B,B*A)
ans = logical
   0

Проверьте коэффициент коммутации для сложения.

isequal(A+B,B+A)
ans = logical
   1

Если операция имеет какие-либо аргументы типа symmatrixрезультат автоматически преобразуется в тип symmatrix. Для примера умножьте матрицу A который представлен символьной матрице переменной и скаляра c который представлен символьной скалярной переменной. Результатом является тип symmatrix.

syms A [2 2] matrix
syms c
class(A)
ans = 
'symmatrix'
class(c)
ans = 
'sym'
M = c*A
M = cAsymmatrix('c', [1 1])*symmatrix('A', [2 2])
class(M)
ans = 
'symmatrix'

Умножите три матрицы, которые представлены переменными символьной матрицы. Результатом X является symmatrix объект.

syms V [2 1] matrix
X = V.'*A*V
X = VTAVтранспонирование (симматрица ('V', [2 1])) * симматрица ('A', [2 2]) * симматрица ('V', [2 1])
class(X)
ans = 
'symmatrix'

Можно пройти symmatrix объекты как аргументы в математические функции. Для примера выполните математическую операцию, чтобы X путем взятия дифференциала X относительно V.

diff(X,V)
ans = VTAT+VTAтранспонирование (symmatrix ('V', [2 1])) * транспонирование (symmatrix ('A', [2 2])) + транспонирование (symmatrix ('V', [2 1])) * симматрица ('A', [2 2])

Создайте Символьную Матрицу Переменной Из Массива Символьных Скалярных Переменных

Можно преобразовать массив символьных скалярных переменных в одну символьную матрицу с помощью symmatrix функция. Переменные символьной матрицы, которые преобразуются таким образом, отображаются элементарно.

syms A [3 4]
class(A)
ans = 
'sym'
B = symmatrix(A)
B = 

(A1,1A1,2A1,3A1,4A2,1A2,2A2,3A2,4A3,1A3,2A3,3A3,4)[A1_1, A1_2, A1_3, A1_4; A2_1, A2_2, A2_3, A2_4; A3_1, A3_2, A3_3, A3_4]

class(B)
ans = 
'symmatrix'

Преобразуйте переменную Символьной матрицы в массив Символьных Скалярных Переменных

Можно создать символьные матричные переменные, вывести уравнения и затем преобразовать результат в массивы символьных скалярных переменных с помощью symmatrix2sym функция.

Например, найдите матричный продукт двух переменных символьной матрицы A и B. Результат X имеет тип symmatrix.

syms A B [2 2] matrix
X = A*B
X = ABsymmatrix('A', [2 2])*symmatrix('B', [2 2])
class(X)
ans = 
'symmatrix'

Преобразуйте переменную символьной матрицы X в массив символьных скалярных переменных. Преобразованная матрица Y имеет тип sym.

Y = symmatrix2sym(X)
Y = 

(A1,1B1,1+A1,2B2,1A1,1B1,2+A1,2B2,2A2,1B1,1+A2,2B2,1A2,1B1,2+A2,2B2,2)[A1_1*B1_1 + A1_2*B2_1, A1_1*B1_2 + A1_2*B2_2; A2_1*B1_1 + A2_2*B2_1, A2_1*B1_2 + A2_2*B2_2]

class(Y)
ans = 
'sym'

Проверяйте, что продукт, полученное путем преобразования переменных символьной матрицы, равен продукту двух массивов символьных скалярных переменных.

syms A B [2 2]
isequal(Y,A*B)
ans = logical
   1

Индексация в переменные символьной матрицы

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

syms A [2 3] matrix
a = A(2,3)
a = A2,3symmatrix ('A2 _ 3', [1 1])
class(a)
ans = 
'symmatrix'

Также преобразуйте переменную символьной матрицы A в матрицу символьных скалярных переменных. Затем индексируйте в эту матрицу.

Asym = symmatrix2sym(A)
Asym = 

(A1,1A1,2A1,3A2,1A2,2A2,3)[A1_1, A1_2, A1_3; A2_1, A2_2, A2_3]

asym = Asym(2,3)
asym = A2,3A2_3
class(asym)
ans = 
'sym'

Обратите внимание, что оба результата равны.

isequal(a,symmatrix(asym))
ans = logical
   1

Отображение операций с символьными переменными символьной матрицы

Матрицы, подобные тем, которые возвращаются eye, zeros, и ones часто имеют особый смысл с определенным обозначением в символьных рабочих процессах. Объявление этих матриц переменными символьной матрицы отображает матрицы жирным шрифтом вместе с матричными размерностями.

symmatrix(eye(3))
ans = I3symmatrix (глаз (3))
symmatrix(zeros(2,3))
ans = 02,3symmatrix (нуль (2, 3))
symmatrix(ones(3,5))
ans = 13,5symmatrix ( таковых (3, 5))

Если входы к компонентной операции в MATLAB ® являются символьными матричными переменными, то также есть выход. Эти операции отображаются в специальных обозначениях, которые следуют соглашениям из учебников.

syms A B [3 3] matrix
A.*B
ans = ABsymmatrix('A', [3 3]) .* symmatrix('B', [3 3])
A./B
ans = ABsymmatrix('A', [3 3]) ./ symmatrix('B', [3 3])
A.\B
ans = BAsymmatrix('B', [3 3]) ./ symmatrix('A', [3 3])
A.*hilb(3)
ans = 

A(11213121314131415)symmatrix ('A', [3 3]). * [sym (1), sym (1/2), sym (1/3); sym (1/2), sym (1/3), sym (1/4); sym (1/3), sym (1/4), sym (1/5)]

A.^(2*ones(3))
ans = A213,3symmatrix ('A', [3 3]). ^ 2 * symmatrix ( таковых (3, 3))
A.^B
ans = ABsymmatrix ('A', [3 3]). ^ symmatrix ('B', [3 3])
kron(A,B)
ans = ABkron(symmatrix('A', [3 3]), symmatrix('B', [3 3]))
adjoint(A)
ans = adj(A)adj(symmatrix('A', [3 3]))
trace(A)
ans = Tr(A)Tr(symmatrix('A', [3 3]))

См. также

| |

Похожие темы