I'm trying to build a system for simulating sliding done arbitrary slopes, but it requires that I find the intersection of half a circle and an arbitrary function. However, when I use sympy, it does find a solution despite one clearly existing.
Is there a numerical approach I could take to this in NumPy?
See code below, where x, y, and r and all constants:
z = symbols('z')
print(solve(z * 1, ((r**2 - (z - x)**2) ** 0.5) y))
p1 = plot(z, show=False)
p2 = plot(((r**2 - (z - x)**2) ** 0.5) y, show=False)
p1.append(p2[0])
p1.show()
This results in:
[]
Despite a solution clearly existing:
Note that in the case used for testing, x=0.4, y=0.4, r=1
CodePudding user response:
You are passing two arguments to solve
but it should be a single argument as an equation (Eq
):
In [58]: eq = Eq(z * 1, ((r**2 - (z - x)**2) ** 0.5) y)
In [59]: eq
Out[59]:
0.5
⎛ 2⎞
z = ⎝1 - (z - 0.4) ⎠ 0.4
In [60]: solve(eq)
Out[60]: [1.10710678118655]
A second argument, if provided, should be the symbol to solve for or a list of symbols to solve for e.g.:
In [61]: solve(eq, z)
Out[61]: [1.10710678118655]