通过python定位给定距离的3D点

通过python定位给定距离的3D点,python,scipy,nonlinear-functions,equations,Python,Scipy,Nonlinear Functions,Equations,我想定位一个三维点,给定三个基点之间的距离。 我尝试了辣味.optimize.fslove,但结果似乎并不令人满意 point1 = [0., 0., 0.] point2 = [1., 0., 0.] point3 = [0., 1., 0.] def solveLocate(x): xp = float(x[0]) yp = float(x[1]) zp = float(x[2]) return[ (xp - point1[0]) ** 2

我想定位一个三维点,给定三个基点之间的距离。 我尝试了
辣味.optimize.fslove
,但结果似乎并不令人满意

point1 = [0., 0., 0.]
point2 = [1., 0., 0.]
point3 = [0., 1., 0.]

def solveLocate(x):
    xp = float(x[0])
    yp = float(x[1])
    zp = float(x[2])

    return[
        (xp - point1[0]) ** 2 + (yp - point1[1]) ** 2 + (zp - point1[2]) ** 2,
        (xp - point2[0]) ** 2 + (yp - point2[1]) ** 2 + (zp - point2[2]) ** 2,
        (xp - point3[0]) ** 2 + (yp - point3[1]) ** 2 + (zp - point3[2]) ** 2,
    ]

result1=scipy.optimize.fsolve(solveLocate, [0.,1.,1.])
print result1
print solveLocate(result1)
我得到的答案是:

    /Library/Python/2.7/site-packages/scipy/optimize/minpack.py:161: RuntimeWarning: The iteration is not making good progress, as measured by the 
  improvement from the last ten iterations.
  warnings.warn(msg, RuntimeWarning)

[ 0.38997015  0.38805274  0.00093549]
[0.30266251961577206, 0.5227222226668922, 0.5265570428112971]
所以我想问我如何才能更有效、更准确地求解


谢谢

抱歉,
result1
中我不清楚您在做什么:您想做平方根吗?或者你正在寻找非线性函数的根?
fsolve
顾名思义,就是一个解算器,它会找到零。但是你的目标函数没有零。如果你想最小化,专用的最小化器更合适。还要注意的是,就目前情况而言,您的函数可以在组件方面最小化(如果您的误差度量是平方和的话),因此您可以使用1d最小化器,甚至可以进行分析。
(xp-point1[0])**2+(yp-point1[1])**2+(zp-point1[2])**2=0``(xp-point2[0])**2+(yp-point2[1])**2+(zp-point2[2])**2=1``(xp-point3[0])**2+(yp-point3[1])**2+(zp-point3[2])**2=1
@dadept方程应该有解
[0.0,0.0,0.0]
@PaulPanzer@KeyYD除非我弄错了,否则在点
[0,0,0]
中,函数具有值
[norm(point1)**2,norm(point2)**范数(第3点)**2]
非常非零,所以Paul是对的。此外,你的问题与三个点之间没有“给定距离”,只有三个点。这表明您确实需要最小化搜索,而不是零搜索。