用Python解决方程式

时间:2011-08-18 01:18:59

标签: python equation-solving

我正在尝试解决方程,但我不知道如何做到这一点。我有一个向量x它实际上是一个矩阵类型,我想解决方程x.transpose()* v = 0其中v是另一个向量

有人可以帮助我吗?

我提前感谢你

2 个答案:

答案 0 :(得分:2)

取任何向量并将其投影到x的{​​{3}}。

Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> x = numpy.matrix([1, 3.14, 2.73]).T
>>> P = x * x.T / (x.T * x) # projector onto the space spanned by x
>>> Pperp = numpy.identity(3) - P # projector onto x's orthogonal complement
>>> Pperp * x
matrix([[  0.00000000e+00],
        [  0.00000000e+00],
        [ -2.22044605e-16]])
>>> y = numpy.matrix(numpy.ones((3,1)))
>>> yperp = Pperp * y
>>> yperp
matrix([[ 0.62484642],
        [-0.17798225],
        [-0.02416928]])
>>> x.T * yperp
matrix([[ -4.16333634e-16]])

正如所写,这是非常无拘无束的,并给出了一个相当随意的解决方案,但可以建立相同的想法来为所有解决方案找到一组基础向量。

答案 1 :(得分:1)

x.T*v是在向量xv之间编写dot product的另一种方式,所以听起来你想找到一个向量v,它是orthogonalx。对于一般情况,存在无限多个解(在3维中,想象平面中的任何向量v 垂直于x)。

你在评论中说过,你知道有很多可能的解决方案,你怎么能得到一个,所以这里有一个给你:

v = 0