Как уменьшить количество независимых переменных в Mathematica - PullRequest
5 голосов
/ 15 февраля 2011

Я не уверен, действительно ли это математический вопрос или вопрос математики. : D

предположим, у меня есть матрица

{{4/13 + (9 w11)/13 + (6 w12)/13, 
  6/13 + (9 w21)/13 + (6 w22)/13}, {-(6/13) + (6 w11)/13 + (4 w12)/
   13, -(9/13) + (6 w21)/13 + (4 w22)/13}}

с w11, w12, w21, w22 в качестве свободных параметров.

И по визуальному осмотру я знаю, что 3*w11+2*w12 можно представить как одну переменную, а 3*w21+2*w22 можно представить как другую. По сути, эта матрица имеет только две независимые переменные. Учитывая какую-либо матрицу этой формы, есть ли способ автоматически уменьшить количество независимых переменных? Я предполагаю, что застрял в формулировании этого точным математическим способом.

Пожалуйста, поделитесь своими мыслями. Большое спасибо.

Edit:

Мой вопрос действительно следующий. Данная матрица похожа на эту

{{4/13 + (9 w11)/13 + (6 w12)/13, 
  6/13 + (9 w21)/13 + (6 w22)/13}, {-(6/13) + (6 w11)/13 + (4 w12)/
   13, -(9/13) + (6 w21)/13 + (4 w22)/13}}

или с использованием некоторых других символических констант

{{a+4/13 + (9 w11)/13 + (6 w12)/13, 
  6/13*c + (9 w21)/13 + (6 w22)/13}, {-(6/13)/d + (6 w11)/13 + (4 w12)/
   13, -(9/13) + (6 w21)/13 + (4 w22)/13}}

Я хочу использовать mathematica для автоматического определения числа n независимых переменных (в данном случае 2), а затем назвать эти независимые переменные y1, y2, ..., yn, а затем переписать матрицу в терминах y1, y2, ..., yn вместо w11, w12, w21, w22.

1 Ответ

10 голосов
/ 16 февраля 2011

Начиная с

mat = {{4/13 + (9 w11)/13 + (6 w12)/13,6/13 + (9 w21)/13 + (6 w22)/13},
  {-(6/13) + (6 w11)/13 + (4 w12)/13, -(9/13) + (6 w21)/13 + (4 w22)/13}};

Сформируйте вторую матрицу неопределенных, тех же размеров.

mat2 = Array[y, Dimensions[mat]];

Теперь рассмотрим полиномиальную (фактически линейную) систему, образованную установкой mat-mat2 == 0. Мы можем исключить исходные переменные и искать зависимости среди новых. Могли бы использовать Устранить; Я покажу с GroebnerBasis.

GroebnerBasis[Flatten[mat - mat2], Variables[mat2], Variables[mat]]

Out [59] = {-3 + 2 года [1, 2] - 3 года [2, 2], -2 + 2 года [1, 1] - 3 года [2, 1]}

Таким образом, мы получаем пару явных отношений между исходными матричными элементами.

--- редактировать ---

Вы можете получить выражения для новых переменных, которые четко указывают на зависимость двух из них от двух других. Для этого сформируйте базу Гребнера и используйте ее для полиномиального сокращения.

gb = GroebnerBasis[Flatten[mat - mat2], Variables[mat2], Variables[mat]];
vars = Flatten[mat2];

PolynomialReduce[vars, gb, vars][[All, 2]]

Out [278] = {1 + 3/2 y [2, 1], 3/2 + 3/2 y [2, 2], y [2, 1], y [2, 2]}

--- конец редактирования ---

Даниэль Лихтблау Wolfram Research

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...