【发布时间】:2013-12-25 20:11:12
【问题描述】:
我有一组可以表示为矩阵的方程,我还要求对于解中的所有变量 xi,(xi)3 - xi = 0.例如,
A = [0 1 0 0]
[0 0 1 0]
[1 0 0 1]
我也有,不是所有的变量 = 0。
这意味着
x2 = 0
x3 = 0
x1 + x4 = 0
(x1)3 - x1 = 0
(x2)3 - x2 = 0
(x3)3 - x3 = 0
(x4)3 - x4 = 0
一个简单的解决方案是 x1 = 1 和 x4 = -1。
您如何求解此类方程组的小实例?最好我想要一个至少可以从 python 调用的解决方案。
我目前解决问题的方法是尝试所有 3n 个不同的向量,其值从 -1,0,1 开始。
for v in itertools.product([-1,0,1], repeat = n):
vector = np.asarray(v)
if (not np.dot(M,v).any()):
print "Solution found!"
break
编辑
这应该是对@alko 答案的评论,但它太长了。让我通过一个例子来完成这个方法。
A = np.matrix([[0, 1, 1, 1, 1, 0, 1], [1, 0, 1, 1, 1, 1, 0], [0, 1, 0, 1, 1, 1, 1], [1, 0, 1, 0, 1, 1, 1], [0, 1, 0, 1, 0, 1, 1]])
p,l,u=scipy.linalg.lu(A)
print u
[[ 1. 0. 1. 1. 1. 1. 0.]
[ 0. 1. 1. 1. 1. 0. 1.]
[ 0. 0. -1. 0. 0. 1. 0.]
[ 0. 0. 0. -1. 0. 0. 1.]
[ 0. 0. 0. 0. -1. 0. 0.]]
我不清楚下一步会是什么......?
【问题讨论】:
-
到目前为止你尝试过什么?
-
您的变量是否限制为 -1,0 和 1?
-
这对我来说更像是一道数学题,为什么不试试math.stackexchange.com?
-
@lennon310 是的,这就是术语 x_i^3 - x_i = 0 所强制执行的内容。
-
可能不是你想要的,但也有简单的解决方案。
标签: python math numpy scipy sympy