Как я могу получить Mathematica для распознавания равенства символических матричных выражений?


4

У меня есть две матричные выражения:

X.Transpose[T].Transpose[X] 

и

X.T.Transpose[X] 

хочу Mathematica признать, что эти выражения равны. Можно ли это сделать?

+1

Ответ, вероятно, зависит от того, как вы планируете использовать известное соотношение. Можете ли вы пояснить прецедент? 27 авг. 132013-08-27 09:52:23

  0

Я смущен. Почему они равны? 'x = RandomReal [1, {4, 4}]; t = RandomReal [1, {4, 4}]; z0 = x. Переведите [t]. Переместите [x]; z1 = x.t.Transpose [x]; z1 - z0' дает! [Графика Mathematica] (http://i.stack.imgur.com/VG7KO.png), если это не все нули, если они равны? 27 авг. 132013-08-27 11:01:44

  0

Разве это не тот же вопрос, что и [этот] (http://mathematica.stackexchange.com/q/31184/89)? 27 авг. 132013-08-27 11:33:23

  0

@ Nasser Я не думаю, что OP означает, что они в целом равны, но больше в способе «$ Assumptions». 27 авг. 132013-08-27 11:46:54

  0

@ Nasser Huh, но как обычно используются '$ Assumptions', нет? Вопрос только в том, будет ли это полезно для ОП, поскольку кирма указала ... 27 авг. 132013-08-27 11:52:48

  0

@sebhofer Я использовал только предположения, чтобы сказать M использовать Element [] и принять определенные значения, как в 'x> 0', и такие. Никогда не использовал его, чтобы сказать ему, что одно выражение совпадает с другим. Но опять же, хорошо знать, что это можно сделать. 27 авг. 132013-08-27 11:57:56

  0

Не могли бы вы так любезно объяснить, что вы ожидали?У одного пользователя есть некоторые сомнения, как вы можете видеть под моим ответом, теперь вы должны сделать заявление достаточно ясным. 27 авг. 132013-08-27 12:35:27

5

Мы можем легко проверить, что предположение о том, что ваши матрицы равны, неверно, например. давайте возьмем два 2 x 2 матрицы:

A = {{10, 5}, {2, 2}}; 
B = {{1, 0}, {1, 6}}; 

теперь мы имеем

A.B.Transpose[A] == A.Transpose[B].Transpose[A] 
False 

Однако простой факт в линейной алгебре говорит, что бывшая матрица равна последней одной транспонированные.

TraditionalForm[ X.T.Transpose[X] == Transpose[X.Transpose[T].Transpose[X]] ] 

enter image description here

Теперь мы можем использовать новые возможности тензорные в Mathematica 9, первый предположить, что X и T являются n x m матрицы:

$Assumptions = (X | T) ∈ Matrices[{n, m}]; 

то можно использовать, например, TensorReduce:

TensorReduce[ X.T.Transpose[X] == Transpose[ X.Transpose[T].Transpose[X]] ] 
True 
  0

@sebhofer Большинство этих пользователей сайта хорошо знают эту простую идентичность в линейной алгебре. Я продемонстрировал, что его «теорема» неверна, предоставляя простой пример. Затем я показал, какую личность он мог принять, а затем решил эту проблему. Мой ответ достаточно ясен даже для студентов первого курса. 27 авг. 132013-08-27 12:29:28

  0

С большим трудом я мог интерпретировать ОП, спрашивая, как обеспечить предположение, что 'T' является симметричным. Если это так, постановка вопроса не очень прямое. 27 авг. 132013-08-27 13:00:28

  0

Я ошибся, извините ... Я думал, что можно построить пример, где 'T-Transpose @ T' находится в нулевом пространстве' X', но это невозможно. Сначала мне следовало подумать. Извините за пух! 27 авг. 132013-08-27 13:04:16

+2

@kirma Если вы хотите, чтобы такое предположение использовало '$ Assumptions = G ∈ Matrices [{n, n}, Комплексы, Симметричные [{1, 2}]]'. Затем 'TensorReduce [G - Transpose [G]]' дает '0'. Если бы ваша интерпретация была бы такой, следует было предположить, что 'Det [X]! = 0'. 27 авг. 132013-08-27 14:11:21


2

Очевидно, ваши выражения одинаковы только тогда, когда матрица T симметрична. При таком предположении, Mathematica может доказать ваши выражения равны, используя:

TensorReduce[ 
    X.Transpose[T].Transpose[X] == X.T.Transpose[X], 
    Assumptions -> X ∈ Matrices[{n, n}] && T ∈ Matrices[{n,n}, Symmetric[{1,2}]] 
] 

Правда