0

我试图在笛卡尔空间中找到一个点的坐标,只知道它与其他已知点的距离。我最初用 3 个距离公式尝试 scipy.optimize.fsolve 并很快了解到 4 个距离是必要的,因为 3 个球体可能在多达 2 个不同的位置重叠。

当我的方程多于变量时,scipy.optimize.fsolve 似乎不起作用。使用 fsolve,我尝试了:

from scipy.optimize import fsolve


def func1(C):
    func =     [(atom14[0]  - C[0])**2 + (atom14[1]  - C[1])**2 + (atom14[2]  - C[2])**2 - Cdist1**2]
    func.append((atom106[0] - C[0])**2 + (atom106[1] - C[1])**2 + (atom106[2] - C[2])**2 - Cdist2**2)
    func.append((atom125[0] - C[0])**2 + (atom125[1] - C[1])**2 + (atom125[2] - C[2])**2 - Cdist3**2)
    func.append((atom76[0]  - C[0])**2 + (atom76[1]  - C[1])**2 + (atom76[2]  - C[2])**2 - Cdist4**2)
    return func

solve = fsolve(func1, [0, 0, 0])

其中 atomxxx[0:3] 是已知空间中其他 4 个点的 x、y、z 笛卡尔坐标,而 Cdist# 是所需点与每个点的距离。

其他优化选项让我不知所措,其中许多需要我不熟悉的不同语法(这个库的新手)。我可以用什么来解决这个至少有 4 个方程的 3 维问题?

谢谢

4

0 回答 0