def rootsAnnSec(m, rMin, rMax, aMin, aMax):
    f0 = lambda k: ivp(m, η * k) * hankel1(m, k) / η + iv(m, η * k) * h1vp(
        m, k)
    f1 = (lambda k: ivp(m, η * k, 2) * hankel1(m, k) + c * ivp(m, η * k) *
          h1vp(m, k) + iv(m, η * k) * h1vp(m, k, 2))

    A = AnnulusSector(center=0.0, radii=(rMin, rMax), phiRange=(aMin, aMax))
    z = A.roots(f0, df=f1)
    return z.roots
Exemple #2
0
def test_PolarRect_contains():
    r0 = 8.938
    r1 = 9.625
    phi0 = 6.126
    phi1 = 6.519

    z = (9 - 1.04825594683e-18j)
    C = AnnulusSector(0, [r0, r1], [phi0, phi1])

    # import matplotlib.pyplot as plt
    # plt.scatter((9),(0))
    # C.show()

    assert C.contains(z)
Exemple #3
0
    def setUp(self):
        self.roots = roots = [0, -1.234, 1 + 1j, 1 - 1j, 2.345]
        self.multiplicities = [1, 1, 1, 1, 1]
        self.f = lambda z: (z - roots[0]) * (z - roots[1]) * (z - roots[2]) * (
            z - roots[3]) * (z - roots[4])
        self.df = lambda z: (z - roots[1]) * (z - roots[2]) * (z - roots[
            3]) * (z - roots[4]) + (z - roots[0]) * (z - roots[2]) * (
                z - roots[3]) * (z - roots[4]) + (z - roots[0]) * (z - roots[
                    1]) * (z - roots[3]) * (z - roots[4]) + (z - roots[0]) * (
                        z - roots[1]) * (z - roots[2]) * (z - roots[4]) + (
                            z - roots[0]) * (z - roots[1]) * (z - roots[2]) * (
                                z - roots[3])

        self.Circle = Circle(0, 3)
        self.Rectangle = Rectangle([-2, 2], [-2, 2])
        self.halfAnnulus = AnnulusSector(0, [0.5, 3], [-pi / 2, pi / 2])
        self.Annulus = Annulus(0, [1, 2])
Exemple #4
0
def boundStateRegion(vRange, maxFreq=1):
    from cxroots import AnnulusSector
    # get the region in which to look for bound state eigenvalues
    radiusBuffer = 0.05

    # With lambda=mu in Eq.9 of "Breaking integrability at the boundary"
    # As in Eq. II.2 in "Spectral theory for the periodic sine-Gordon equation: A concrete viewpoint" with lambda=Sqrt[E]
    mu = lambda v: 0.25j * sqrt((1 - v) / (1 + v))

    acosFeq = arccos(maxFreq)
    phiRange = [acosFeq, pi - acosFeq]

    radiusRange = np.sort(np.abs(mu(np.array(vRange))))
    radiusRange = [
        radiusRange[0] - radiusBuffer, radiusRange[1] + radiusBuffer
    ]
    center = 0
    return AnnulusSector(center, radiusRange, phiRange)
Exemple #5
0
from numpy import pi
from cxroots import AnnulusSector
annulusSector = AnnulusSector(center=0.2, radii=(0.5, 1.25), phiRange=(-pi/4, pi/4))
annulusSector.show()
Exemple #6
0
class TestRootfindingContours(unittest.TestCase):
    def setUp(self):
        self.roots = roots = [0, -1.234, 1 + 1j, 1 - 1j, 2.345]
        self.multiplicities = [1, 1, 1, 1, 1]
        self.f = lambda z: (z - roots[0]) * (z - roots[1]) * (z - roots[2]) * (
            z - roots[3]) * (z - roots[4])
        self.df = lambda z: (z - roots[1]) * (z - roots[2]) * (z - roots[
            3]) * (z - roots[4]) + (z - roots[0]) * (z - roots[2]) * (
                z - roots[3]) * (z - roots[4]) + (z - roots[0]) * (z - roots[
                    1]) * (z - roots[3]) * (z - roots[4]) + (z - roots[0]) * (
                        z - roots[1]) * (z - roots[2]) * (z - roots[4]) + (
                            z - roots[0]) * (z - roots[1]) * (z - roots[2]) * (
                                z - roots[3])

        self.Circle = Circle(0, 3)
        self.Rectangle = Rectangle([-2, 2], [-2, 2])
        self.halfAnnulus = AnnulusSector(0, [0.5, 3], [-pi / 2, pi / 2])
        self.Annulus = Annulus(0, [1, 2])

    def test_rootfinding_circle_fdf(self):
        roots_approx_equal(self.Circle.roots(self.f, self.df, verbose=True),
                           (self.roots, self.multiplicities),
                           decimal=7)

    def test_rootfinding_circle_f(self):
        roots_approx_equal(self.Circle.roots(self.f, self.df, verbose=True),
                           (self.roots, self.multiplicities),
                           decimal=7)

    def test_rootfinding_rectangle_fdf(self):
        roots_approx_equal(self.Rectangle.roots(self.f, self.df, verbose=True),
                           (self.roots[:-1], self.multiplicities[:-1]),
                           decimal=7)

    def test_rootfinding_rectangle_f(self):
        roots_approx_equal(self.Rectangle.roots(self.f, self.df, verbose=True),
                           (self.roots[:-1], self.multiplicities[:-1]),
                           decimal=7)

    def test_rootfinding_halfAnnulus_fdf(self):
        roots_approx_equal(self.halfAnnulus.roots(self.f,
                                                  self.df,
                                                  verbose=True),
                           (self.roots[2:], self.multiplicities[2:]),
                           decimal=7)

    def test_rootfinding_halfAnnulus_f(self):
        roots_approx_equal(self.halfAnnulus.roots(self.f,
                                                  self.df,
                                                  verbose=True),
                           (self.roots[2:], self.multiplicities[2:]),
                           decimal=7)

    def test_rootfinding_Annulus_fdf(self):
        roots_approx_equal(self.Annulus.roots(self.f, self.df, verbose=True),
                           (self.roots[1:-1], self.multiplicities[1:-1]),
                           decimal=7)

    def test_rootfinding_Annulus_f(self):
        roots_approx_equal(self.Annulus.roots(self.f, self.df, verbose=True),
                           (self.roots[1:-1], self.multiplicities[1:-1]),
                           decimal=7)
Exemple #7
0
from numpy import pi

from cxroots import Circle, Annulus, AnnulusSector, Rectangle

# make the contours for the tutorial
Circle(0, 2).show('circle.png')
Rectangle([-2,2],[-1,1]).show('rectangle.png')
Annulus(0, [1,2]).show('annulus.png')
AnnulusSector(0, [1,2], [0,pi]).show('annulussefig.png')