def testRoots_7(): # This test sometimes fails due to stability issues... f1_coeff = np.zeros((3,3,3)) f1_coeff[(0,2,0)] = 1 f1_coeff[(1,1,0)] = -1 f1_coeff[(1,0,1)] = -2 f1 = MultiPower(f1_coeff) f2_coeff = np.zeros((4,4,4)) f2_coeff[(0,3,0)] = 1 f2_coeff[(0,0,2)] = 1 f2_coeff[(0,0,0)] = 1 f2 = MultiPower(f2_coeff) f3_coeff = np.zeros((3,3,3)) f3_coeff[(2,1,1)] = 1 f3_coeff[(0,1,1)] = -1 f3 = MultiPower(f3_coeff) roots = rf.roots([f1, f2, f3]) values_at_roots = [[f1.evaluate_at(root) for root in roots], [f2.evaluate_at(root) for root in roots], [f3.evaluate_at(root) for root in roots]] assert(np.all(np.isclose(values_at_roots, 0)))
def testRoots_3(): # roots of [x^2-y, x^3-y+1] f1 = MultiPower(np.array([[0,-1],[0,0],[1,0]])) f2 = MultiPower(np.array([[1,-1],[0,0],[0,0],[1,0]])) roots = rf.roots([f1, f2]) values_at_roots = np.array([[f1.evaluate_at(root) for root in roots], [f2.evaluate_at(root) for root in roots]]) assert(np.all(values_at_roots==0))
def testRoots(): f1 = MultiPower(np.array([[0,-1.5,.5],[-1.5,1.5,0],[1,0,0]]), clean_zeros=False) f2 = MultiPower(np.array([[0,0,0],[-1,0,1],[0,0,0]]), clean_zeros=False) f3 = MultiPower(np.array([[0,-1,0,1],[0,0,0,0],[0,0,0,0],[0,0,0,0]]), clean_zeros=False) roots = rf.roots([f1, f2, f3]) values_at_roots = np.array([[f1.evaluate_at(root) for root in roots], [f2.evaluate_at(root) for root in roots], [f3.evaluate_at(root) for root in roots]]) assert(np.all(values_at_roots==0))
def test_evaluate_at(): # Evaluate .5xyz + 2x + y + z at (4,2,1) poly = MultiPower( np.array([[[0, 1, 0], [1, 0, 0], [0, 0, 0]], [[2, 0, 0], [0, .5, 0], [0, 0, 0]]])) assert (poly.evaluate_at((4, 2, 1)) == 15)
def test_evaluate_at2(): # Evaluate -.5x^2y + 2xy^2 - 3z^2 + yz at (7.4,2.33,.25) poly = MultiPower( np.array([[[0, 0, -3], [0, 1, 0], [0, 0, 0]], [[0, 0, 0], [0, 0, 0], [2, 0, 0]], [[0, 0, 0], [-.5, 0, 0], [0, 0, 0]]])) assert (np.isclose(poly.evaluate_at((7.4, 2.33, .25)), 16.94732))
def testRoots_2(): f1 = MultiPower(np.array([[[5,0,0],[0,0,0],[0,0,0]], [[0,-2,0],[0,0,0],[0,0,0]], [[1,0,0],[0,0,0],[0,0,0]]])) f2 = MultiPower(np.array([[[1,0,0],[0,1,0],[0,0,0]], [[0,0,0],[0,0,0],[1,0,0]], [[0,0,0],[0,0,0],[0,0,0]]])) f3 = MultiPower(np.array([[[0,0,0],[0,0,0],[3,0,0]], [[0,-8,0],[0,0,0],[0,0,0]], [[0,0,0],[0,0,0],[0,0,0]]])) roots = rf.roots([f1, f2, f3]) values_at_roots = np.array([[f1.evaluate_at(root) for root in roots], [f2.evaluate_at(root) for root in roots], [f3.evaluate_at(root) for root in roots]]) assert(np.all(abs(values_at_roots)<1.e-5))