我試圖找到兩個函式的交點,在本例中是 circle1 和 circle2,半徑為 r。當我試圖找到交點時,Sympy 需要永遠進行計算。
這是帶有交叉點的影像:

我認為這是因為當 theta_1 和 theta_2 被提升時,有無限數量的交點。因此,我猜 sympy 會一直解決它直到無窮大。
不幸的是,solve或者solveset不允許為給定范圍內的兩個變數求解方程。
我使用的代碼是:
def SYMPY():
theta_1, theta_2, r = symbols('theta_1, theta_2, r', real=True)
r = 10
x1 = r*cos(theta_1) 5
x2 = r*cos(theta_2)
y1 = r*sin(theta_1)
y2 = r*sin(theta_2)
test = sp.Eq((x1-x2) (y1-y2),0)
ans = sp.solve(test, theta_1, theta_2)
print(ans)
SYMPY()
有誰知道如何解決這個問題?
我知道 Sympy 也有 circle() 方法,但我想用上面的公式計算它。這是因為我有另一個(大)方程要求解,它也涉及兩個圓和一個交點。
謝謝,穆迪:)
uj5u.com熱心網友回復:
測驗是否(x1,y1)與 相同點(x2,y2),Eq((x1-x2) (y1-y2),0)不做這項作業。你需要Eq(x1,x2)和Eq(y1,y2)。(請注意,您不應創建r符號變數,因為您為其分配了一個常量。另請注意,(theta_1, theta_2)應將其寫為元組(或串列))。
出于某種原因,我不清楚,sympy 沒有找到解決方案:
from sympy import symbols, sin, cos, Eq, solve
theta_1, theta_2 = symbols('theta_1, theta_2', real=True)
r = 10
x1 = r * cos(theta_1) 5
x2 = r * cos(theta_2)
y1 = r * sin(theta_1)
y2 = r * sin(theta_2)
test = [Eq(x1, x2), Eq(y1, y2)]
ans = solve(test, (theta_1, theta_2))
print(ans) # [] ???
另一種方法是使用直接圓方程。可以使用反正切找到角度。
from sympy import symbols, sin, cos, atan2, Eq, solve
x1, y1 = symbols('x1 y1', real=True)
r = 10
xm1, ym1 = 5, 0 # center of the first circle
xm2, ym2 = 0, 0 # center of the second circle
test = [Eq((x1 - xm1) ** 2 (y1 - ym1) ** 2, r ** 2),
Eq((x1 - xm2) ** 2 (y1 - ym2) ** 2, r ** 2), ]
ans = solve(test, (x1, y1))
for xa, ya in ans:
theta1 = atan2(xa - xm1, ya - ym1)
theta2 = atan2(xa - xm2, ya - ym2)
print(f'theta1: {theta1}, (in radians: {theta1.evalf():.6f})')
print(f'theta2: {theta2}, (in radians: {theta2.evalf():.6f})')
這找到了兩個解決方案(x1, y1):
[(5/2, -5*sqrt(15)/2),
(5/2, 5*sqrt(15)/2)]
以及對應的角度:
theta1: -pi atan(sqrt(15)/15), (in radians: -2.888912)
theta2: pi - atan(sqrt(15)/15), (in radians: 2.888912)
theta1: -atan(sqrt(15)/15), (in radians: -0.252680)
theta2: atan(sqrt(15)/15), (in radians: 0.252680)
uj5u.com熱心網友回復:
JohanC 的答案很好,但我想我要補充一點,如果你使用笛卡爾坐標而不是極坐標,你實際上可以得到任意符號的完全通用術語的答案:
In [88]: x1, x2, y1, y2, xi, yi, r = symbols('x1, x2, y1, y2, xi, yi, r', real=True)
In [89]: eq1 = Eq((x1 - xi)**2 (y1 - yi)**2, r**2)
In [90]: eq2 = Eq((x2 - xi)**2 (y2 - yi)**2, r**2)
In [91]: solve([eq1, eq2], [xi, yi])
Out[91]:
?? ? ____________________________________________
?? ? ╱ ? 2 2 2 2
?? 2 2 2 2 ?y? y? ╲╱ -?x? - 2?x??x? x? y? - 2?y??y? y?
??x? - x? y? - y? (-2?y? 2?y?)??── ── - ───────────────────────────────────────────────
?? ?2 2 ? 2
?? ? 2??x? - 2?x??
??─────────────────────────────────────────────────────────────────────────────────────────────────
?? 2?(x? - x?)
??
_______________________________________________________ ?
? ? 2 2 2 2 2? ?
???- 4?r x? - 2?x??x? x? y? - 2?y??y? y? ? ?(x? - x?)?
─────────────────────────────────────────────────────────────────? __________________
2 2 2? ? ╱ ? 2
x? x? y? - 2?y??y? y? ? ? y? y? ╲╱ -?x? - 2?x??x?
──────────────────────────────────────────────────────────────────, ── ── - ─────────────────────
2 2
? ?
? ?
? ? 2
_________________________________________________________________________________ ? ?x?
2 2 2? ? 2 2 2 2 2? ? ?
x? y? - 2?y??y? y? ???- 4?r x? - 2?x??x? x? y? - 2?y??y? y? ? ?(x? - x?)? ?
───────────────────────────────────────────────────────────────────────────────────────────?, ?────
? 2 2 2 2? ? ?
2??x? - 2?x??x? x? y? - 2?y??y? y? ? ? ?
? __________________________________________________
? ╱ ? 2 2 2 2? ?
2 2 2 ?y? y? ╲╱ -?x? - 2?x??x? x? y? - 2?y??y? y? ???- 4
- x? y? - y? (-2?y? 2?y?)??── ── ─────────────────────────────────────────────────────
?2 2 ? 2
? 2??x? - 2?x??x? x
───────────────────────────────────────────────────────────────────────────────────────────────────
2?(x? - x?)
_________________________________________________ ?
2 2 2 2 2? ?
?r x? - 2?x??x? x? y? - 2?y??y? y? ? ?(x? - x?)?
───────────────────────────────────────────────────────────? ________________________
2 2 2? ? ╱ ? 2 2
? y? - 2?y??y? y? ? ? y? y? ╲╱ -?x? - 2?x??x? x?
────────────────────────────────────────────────────────────, ── ── ───────────────────────────
2 2
??
??
??
___________________________________________________________________________ ??
2 2? ? 2 2 2 2 2? ??
y? - 2?y??y? y? ???- 4?r x? - 2?x??x? x? y? - 2?y??y? y? ? ?(x? - x?)??
─────────────────────────────────────────────────────────────────────────────────────??
? 2 2 2 2? ??
2??x? - 2?x??x? x? y? - 2?y??y? y? ? ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415342.html
標籤:
下一篇:3個月日期間隔回圈
