gpt4 book ai didi

python : intersection geometrical objects in 3D space

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:57 25 4
gpt4 key购买 nike

问题的定义

我正在尝试在Python中计算几何对象(例如两个平面和一个球体)的交点。让我们考虑一下这三个对象:

1
2
3

该系统给出了两种解决方案:
4
5

我想知道是否有一个Python库可以帮助开发一个求解器来计算这些交点。我正在寻找像 Wolfram alpha 一样工作的东西,我们可以在其中输入三个方程,并且为了简单起见,当解决方案数量有限时,它会返回所有可能的解决方案。

我尝试过的

我尝试使用 SymPy,但它返回 []:

from sympy.solvers import solve
from sympy import Symbol
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
solve(z, x, x**2 + y**2 + z**2 -1)


然后我尝试使用 scipy:

from scipy.optimize import fsolve


def f(x):
y = np.zeros(3)
y[2] = x[2]
y[0] = x[0]
y[1] = x[0] ** 2 + x[1] ** 2+ x[2] ** 2 - 1
return y


x0 = np.array([10, 10, 10])
solution = fsolve(f, x0)
print(solution[0],solution[1],solution[2])

但它只返回两个解决方案之一:
6.79746218330325e-28 1.0000000000000002 -2.3528179942097343e-35

我还尝试了 gekko,但它仍然只返回一种可能的解决方案(这取决于最初的猜测):

from gekko import GEKKO
m = GEKKO()
x = m.Var(value = 1)
y = m.Var(value = 1)
z = m.Var(value = 1)
m.Equation(x == 0)
m.Equation(z == 0)
m.Equation(x**2 + y**2+z**2 ==1)
m.solve()

最佳答案

来自 scipy 的 fsolve 以及我个人所知的所有其他函数将接受任何形式的输入函数,将返回一个值。如果您知道另一个解决方案在哪里,一种解决方法是通过第二次调用 fsolve 给出更接近第二个解决方案的 x0 值(请参阅 https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fsolve.html )。

如果您知道要尝试在哪个范围内找到解决方案,最简单的方法是创建一个数组,然后检查该数组以查看值在哪里更改符号(这将从头开始执行)

关于 python : intersection geometrical objects in 3D space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com