python中的线性方程组

时间:2012-10-09 14:12:50

标签: python numpy linear-algebra

我想解决一组10变量的线性方程。

我创建了第一个这样的数组:

  

A = np.random.random_integers(15,size =(10,10))

我希望等于0之后的值

  

(A.x + d.y + .... + N = 0)

所以我做了类似的事情:

  

B = np.zeros(形状=(10))

但是当我应用线性代数函数时

  

print linalg.solve(A,b)

我得到一个10个零的数组。

  

[0. 0. 0. 0. -0。 -0。 -0。 -0。 0. 0。]

谁能帮忙?

1 个答案:

答案 0 :(得分:0)

我不明白第二行代码的含义。

尽管如此:

A=np.random.random_integers(15, size=(10,10))
b=np.zeros(shape=(10))

你正在解决这个问题:

A * x = b

这意味着你有:

A[1,1] * x_1 + A[1,2] * x_2 + ... + A[1,10] * x_10 = 0
A[2,1] * x_1 + A[2,2] * x_2 + ... + A[2,10] * x_10 = 0
...

因此x =零向量总是一个完美的解决方案=你正在寻找这样的x,即A x = 0,所以x为零。尝试

b = np.random.random_integers(15, size=(10,1))

和由linalg.solve(A,b)产生的x将指定A的列的线性组合,总计为随机b向量。

https://stackoverflow.com/questions/12910513/how-to-verify-the-results-of-a-linear-equation-system中你试过numpy.svd(这是奇异值decmposition,我认为你不想要)和numpy.lstsq试图找到最小化最小平方距离的不精确解(例如对于超定矩阵) )。

我可能没有理解你在寻找什么 - 请澄清一下这一行,说明你究竟想要什么。