update task4
This commit is contained in:
@@ -9,11 +9,17 @@ from matplotlib.patches import Rectangle
|
|||||||
import multiprocessing
|
import multiprocessing
|
||||||
|
|
||||||
|
|
||||||
class GoodOrbit(Orbit):
|
class BetterOrbit(Orbit):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.kAlpha = mp.mpf("1.7") / (2 * mp.pi)
|
self.kAlpha = mp.mpf("1.7") / (2 * mp.pi)
|
||||||
self.kCriticalTheta = 2.86 / ((2 / 3) * self.kAlpha) - 0.1
|
def f(x):
|
||||||
|
r=(1/3)*self.kAlpha*mp.sqrt(1+x**2)
|
||||||
|
phi=mp.atan(x)
|
||||||
|
L=mp.mpf("2.86")
|
||||||
|
return (r+3*r*mp.cos(mp.pi-2*phi)-L)**2+(3*r*mp.sin(mp.pi-2*phi))**2-L**2
|
||||||
|
self.kCriticalTheta = mp.findroot(f, 15, solver='secant')
|
||||||
|
print(f"CriticalTheta={self.kCriticalTheta}", file=sys.stderr)
|
||||||
self.r = (1 / 3) * self.kAlpha * mp.sqrt(1 + self.kCriticalTheta**2)
|
self.r = (1 / 3) * self.kAlpha * mp.sqrt(1 + self.kCriticalTheta**2)
|
||||||
self.point_A_cartesian = (
|
self.point_A_cartesian = (
|
||||||
self.kAlpha * self.kCriticalTheta * mp.cos(self.kCriticalTheta),
|
self.kAlpha * self.kCriticalTheta * mp.cos(self.kCriticalTheta),
|
||||||
@@ -179,7 +185,7 @@ class GoodOrbit(Orbit):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
orbit = GoodOrbit()
|
orbit = BetterOrbit()
|
||||||
loong = Loong(orbit, 224, mp.mpf("2.0"), mp.mpf("1e-8"))
|
loong = Loong(orbit, 224, mp.mpf("2.0"), mp.mpf("1e-8"))
|
||||||
res_list = []
|
res_list = []
|
||||||
for ti in np.arange(5, 10, 0.025):
|
for ti in np.arange(5, 10, 0.025):
|
||||||
|
@@ -13,7 +13,13 @@ class GoodOrbit(Orbit):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.kAlpha = mp.mpf("1.7") / (2 * mp.pi)
|
self.kAlpha = mp.mpf("1.7") / (2 * mp.pi)
|
||||||
self.kCriticalTheta = 2.86 / ((2 / 3) * self.kAlpha)
|
def f(x):
|
||||||
|
r=(1/3)*self.kAlpha*mp.sqrt(1+x**2)
|
||||||
|
phi=mp.atan(x)
|
||||||
|
L=mp.mpf("2.86")
|
||||||
|
return (r+3*r*mp.cos(mp.pi-2*phi)-L)**2+(3*r*mp.sin(mp.pi-2*phi))**2-L**2
|
||||||
|
self.kCriticalTheta = mp.findroot(f, 15, solver='secant')
|
||||||
|
print(f"CriticalTheta={self.kCriticalTheta}", file=sys.stderr)
|
||||||
self.r = (1 / 3) * self.kAlpha * mp.sqrt(1 + self.kCriticalTheta**2)
|
self.r = (1 / 3) * self.kAlpha * mp.sqrt(1 + self.kCriticalTheta**2)
|
||||||
self.point_A_cartesian = (
|
self.point_A_cartesian = (
|
||||||
self.kAlpha * self.kCriticalTheta * mp.cos(self.kCriticalTheta),
|
self.kAlpha * self.kCriticalTheta * mp.cos(self.kCriticalTheta),
|
||||||
|
Reference in New Issue
Block a user