Jak zdefiniować transformację Cayleya?
Jestem początkującym w Mathematica. Próbuję zdefiniować funkcję, która oceniałaby transformatę macierzy Cayleya, a mianowicie przyjmowanie macierzy$M$ takie że $I + M$ jest odwracalny do $(I-M)(I+M)^{-1}$. Chyba najpierw chciałbym pokryć macierze 2 na 2.
Mój kod to
cayley[x_] :=
(IdentityMatrix[2] - x) . (Inverse[IdentityMatrix[2] + x]) \;
Det[IdentityMatrix[2] + x] != 0
Otrzymuję błąd.
po cayley [x_] nie może następować ...
Z pewnością występuje jakiś bardzo podstawowy błąd składniowy, ale po kilku próbach i błędach nie mogę go rozgryźć z dokumentacji ani z treści komunikatu o błędzie. Każda pomoc bardzo doceniona!
Dodatkowe punkty PS za pomoc w dodaniu rozmiaru matrycy jako kolejnego parametru. Czy byłoby to po prostu cayley[x_,n_] := ...,zastąpienie 2 nwe wzorze?
Odpowiedzi
Czy to zadziała dla Ciebie?
cayley[x_] /;
(SquareMatrixQ[x] && Det[IdentityMatrix[Length[x]] + x] != 0) :=
Module[{i = IdentityMatrix[Length[x]]},
(i - x).Inverse[i + x]]
Kilka testów
m = Partition[Range[16], 4];cayley[m]
{{-(13/9), -(4/3), -(2/9), 8/9}, {-(6/5), 1/5, -(2/5), 0}, {2/45, -(4/15), 19/45, -(8/9)}, {58/45, 4/15, -(34/45), -(7/9)}}
To nie jest macierz kwadratowa.
mx = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; cayley[mx]
cayley[{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}]
$M+I$ nieodwracalne.
my = -IdentityMatrix[4]; cayley[my]
cayley[{{-1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]