Esempio n. 1
0
 def test_rootfinding_quad_df(self):
     roots_approx_equal(self.C.roots(self.f,
                                     self.df,
                                     intMethod='quad',
                                     verbose=True),
                        (self.roots, self.multiplicities),
                        decimal=10)
Esempio n. 2
0
def test_rootfinding_df(C, roots, multiplicities):
    f = lambda z: np.prod([z - r for r in roots], axis=0)
    df = lambda z: np.sum([
        np.prod([z - r for r in np.delete(roots, i)], axis=0)
        for i in range(len(roots))
    ],
                          axis=0)
    roots_approx_equal(C.roots(f, df, verbose=True), (roots, multiplicities))
Esempio n. 3
0
def test_guess_symmetry_1(symmetry):
	C = Circle(0, 3)
	f = lambda z: z**4 + z**3 + z**2 + z

	roots = [0,-1,1j,-1j]
	multiplicities = [1,1,1,1]

	roots_approx_equal(C.roots(f, verbose=True, guessRootSymmetry=symmetry), (roots, multiplicities))
Esempio n. 4
0
def test_reevaluation_of_N():
    from cxroots import Circle
    C = Circle(0, 2)
    f = lambda z: (z - 1) * (z - 0.2)**2

    roots = [1, 0.2]
    multiplicities = [1, 2]
    roots_approx_equal(
        C.roots(f, NIntAbsTol=10, intMethod='romb', verbose=True),
        (roots, multiplicities))
Esempio n. 5
0
def test_guess_root(guesses):
	C = Circle(0, 3)
	f = lambda z: (z-2.5)**2 * (exp(-z)*sin(z/2.) - 1.2*cos(z))

	roots = [2.5,
			 1.44025113016670301345110737, 
			 -0.974651035111059787741822566 - 1.381047768247156339633038236j,
			 -0.974651035111059787741822566 + 1.381047768247156339633038236j]
	multiplicities = [2,1,1,1]

	roots_approx_equal(C.roots(f, guessRoots=[2.5], verbose=True), (roots, multiplicities))
Esempio n. 6
0
def test_guess_symmetry_2(usedf):
	C = Circle(0, 1.5)
	f = lambda z: z**27-2*z**11+0.5*z**6-1
	df = (lambda z: 27*z**26-22*z**10+3*z**5) if usedf else None

	symmetry = lambda z: [z.conjugate()]

	roots = [-1.03509521179240, 
		  	 -0.920332541459108, 
		  	 1.05026721944263, 
		  	 -0.983563736801535 - 0.382365167035741j, 
		  	 -0.983563736801535 + 0.382365167035741j, 
		  	 -0.792214346729517 - 0.520708613101932j, 
		  	 -0.792214346729517 + 0.520708613101932j, 
		  	 -0.732229626596468 - 0.757345327222341j, 
		  	 -0.732229626596468 + 0.757345327222341j, 
		  	 -0.40289002582335 - 0.825650446354661j, 
		  	 -0.40289002582335 + 0.825650446354661j, 
		  	 -0.383382611408318 - 0.967939747947639j, 
		  	 -0.383382611408318 + 0.967939747947639j, 
		  	 -0.02594227096144 - 1.05524415820652j, 
		  	 -0.02594227096144 + 1.05524415820652j, 
		  	 0.160356899544475 - 0.927983420797727j, 
		  	 0.160356899544475 + 0.927983420797727j, 
		  	 0.41133738621461 - 0.967444751898913j, 
		  	 0.41133738621461 + 0.967444751898913j, 
		  	 0.576737152896681 - 0.719511178392941j, 
		  	 0.576737152896681 + 0.719511178392941j, 
		  	 0.758074415348703 - 0.724716122470435j, 
		  	 0.758074415348703 + 0.724716122470435j, 
		  	 0.903278407433416 - 0.22751872334709j, 
		  	 0.903278407433416 + 0.22751872334709j, 
		  	 0.963018623787179 - 0.427294816877434j, 
		  	 0.963018623787179 + 0.427294816877434j]
	
	multiplicities = np.ones_like(roots)

	roots_approx_equal(C.roots(f, df, verbose=True, guessRootSymmetry=symmetry), (roots, multiplicities))
Esempio n. 7
0
def test_rootfinding_f(C, roots, multiplicities):
    f = lambda z: np.prod([z - r for r in roots], axis=0)
    roots_approx_equal(C.roots(f, verbose=True), (roots, multiplicities))
Esempio n. 8
0
 def test_rootfinding_b_f(self):
     roots_approx_equal(self.C.roots(self.f, verbose=True, M=2),
                        (self.roots, self.multiplicities),
                        decimal=12)
Esempio n. 9
0
 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)
Esempio n. 10
0
 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)
Esempio n. 11
0
 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)
Esempio n. 12
0
 def test_rootfinding_circle_f(self):
     roots_approx_equal(self.Circle.roots(self.f, self.df, verbose=True),
                        (self.roots, self.multiplicities),
                        decimal=7)