Mathematica,用很多方程和变量求解非线性方程组

时间:2013-11-30 23:14:30

标签: matrix wolfram-mathematica equation-solving nonlinear-functions

我需要找到满足等式的方阵A

ALA = -17 / 18A -2(ALL + LAL +(LL).A)+ 3(AL + LA)-4L.LL + 8L.L - 44 / 9L + 8/9 *(ID)< / p>

,其中L是对角矩阵L = {{2 / 3,0,0,0},{0,5 / 12,0,0},{0,0,11 / 12,0},{ 0,0,0,2 / 3}}

我可以在A的尺寸为2和3的情况下找到答案,但尺寸4及以上存在问题。

实际上,矩阵A也必须满足方程A.A = A,但是如果有一个合适的矩阵L,只有上面的方程就足够了。

这是我的代码;

A =表[a [i,j],{i,1,4},{j,1,4}]

B = A.L.A

ID = IdentityMatrix [4]

M = -17 / 18A -2(ALL + LAL +(LL).A)+ 3(AL + LA)-4L.LL + 8L.L - 44 / 9L + 8/9 *(ID)< / p>

diff =(B - M)// ExpandAll // Flatten(所以我在这里得到16个非线性方程组)

A1 = A / .Solve [diff == 0] [[1]]

在运行此代码很长一段时间后,出现错误的是没有足够的内存来计算。

在这种情况下,有16个方程和16个变量。有些条目是参数,但在获得结果之前我只知道哪一个。

我不确定是否有解决这个问题的方法。我需要理性的答案(可能是整数),这在理论上是可能的。

这个问题可以通过矩阵方程或任何其他方法解决吗?我看到一个问题是方程和变量太多了。

1 个答案:

答案 0 :(得分:0)

对于这个大小的问题,这可以非常快速地进行评估并使用适度的内存。

L = {{2/3, 0, 0, 0}, {0, 5/12, 0, 0}, {0, 0, 11/12, 0}, {0, 0, 0, 2/3}};
A = {{a, b, c, d}, {e, f, g, h}, {i, j, k, l}, {m, n, o, p}};
Reduce[{A.L.A == -17/18 A - 2 (A.L.L + L.A.L + (L.L).A) + 3 (A.L + L.A) - 
   4 L.L.L + 8 L.L - 44/9 L + 8/9*IdentityMatrix[4]},
   {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p}, Backsubstitution->True
]

然后你只需要对它返回的143个潜在解决方案进行排序。 您可以从满足A.A == A的那些中选择。您还可以在Reduce返回的结果上使用ToRules将其放入类似于Solve返回的表单中,但要仔细检查以确保它正在按预期执行。

仔细检查以确保我没有犯任何错误。