使用 Mathematica 求解非线性矩阵系统
Solving a nonlinear system of matrices using Mathematica
我正在尝试使用 Mathematica 寻找非线性矩阵方程组的解。解决方案 space 太复杂,无法尝试使用 Solve,因此我尝试使用 FindInstance。这是一个最简单的非线性系统示例,我正在尝试为其寻找解决方案:
T + A + C + CBA = 0
I - A - C - ABC = 0
其中A、B、C为任意矩阵,Det[T] = 1,I为2x2维的单位矩阵。我还希望所有矩阵都只有整数项。我正在使用命令
FindInstance[{T + a + c + c.b.a == z, IdentityMatrix[2] - a - c -
a.b.c == z, Det[T]==1} , Integers]
其中 z 是零矩阵。但是,每次我这样做时它都会响应 "FindInstance::exvar: The system contains a nonconstant expression a independent of variables {Integers}."
重试命令为
FindInstance[{T + a + c + c.b.a == z,
IdentityMatrix[2] - a - c - a.b.c == z,
Det[T] == 1} /. {a -> {{1, 0}, {0, 1}}}, Integers]
returns "FindInstance::exvar: The system contains a nonconstant expression b independent of variables {Integers}."
如何使用 FindInstance 或 Solve 找到该系统的解决方案,而无需自己通过修复 "independent variables?"
找到解决方案
我发现我遇到了语法问题。
求解这些矩阵方程的正确语法如下:
A = {{A11, A12}, {A21, A22}}
B = {{B11, B12}, {B21, B22}}
C = {{C11, C12}, {C21, C22}}
T = {{T11, T12}, {T21, T22}}
FindInstance[{T + A + C + C.B.A==0, IdentityMatrix[2] - A - C - A.B.C==0, Det[T]==1},
{T11, T12, T21, T22, A11, A12, A21, A22, B11, B12, B21, B22, C11, C12, C21, C22},
Integers]
我正在尝试使用 Mathematica 寻找非线性矩阵方程组的解。解决方案 space 太复杂,无法尝试使用 Solve,因此我尝试使用 FindInstance。这是一个最简单的非线性系统示例,我正在尝试为其寻找解决方案:
T + A + C + CBA = 0
I - A - C - ABC = 0
其中A、B、C为任意矩阵,Det[T] = 1,I为2x2维的单位矩阵。我还希望所有矩阵都只有整数项。我正在使用命令
FindInstance[{T + a + c + c.b.a == z, IdentityMatrix[2] - a - c -
a.b.c == z, Det[T]==1} , Integers]
其中 z 是零矩阵。但是,每次我这样做时它都会响应 "FindInstance::exvar: The system contains a nonconstant expression a independent of variables {Integers}."
重试命令为
FindInstance[{T + a + c + c.b.a == z,
IdentityMatrix[2] - a - c - a.b.c == z,
Det[T] == 1} /. {a -> {{1, 0}, {0, 1}}}, Integers]
returns "FindInstance::exvar: The system contains a nonconstant expression b independent of variables {Integers}."
如何使用 FindInstance 或 Solve 找到该系统的解决方案,而无需自己通过修复 "independent variables?"
找到解决方案我发现我遇到了语法问题。
求解这些矩阵方程的正确语法如下:
A = {{A11, A12}, {A21, A22}}
B = {{B11, B12}, {B21, B22}}
C = {{C11, C12}, {C21, C22}}
T = {{T11, T12}, {T21, T22}}
FindInstance[{T + A + C + C.B.A==0, IdentityMatrix[2] - A - C - A.B.C==0, Det[T]==1},
{T11, T12, T21, T22, A11, A12, A21, A22, B11, B12, B21, B22, C11, C12, C21, C22},
Integers]