示例#1
0
 def check_simple_complex(self):
     a = [[1,2,3],[1,2,3],[2,5,6+1j]]
     w,vl,vr = eig(a,left=1,right=1)
     for i in range(3):
         assert_array_almost_equal(dot(a,vr[:,i]),w[i]*vr[:,i])
     for i in range(3):
         assert_array_almost_equal(dot(conjugate(transpose(a)),vl[:,i]),
                                   conjugate(w[i])*vl[:,i])
示例#2
0
 def check_simple(self):
     a = [[1,2,3],[1,2,3],[2,5,6]]
     w,v = eig(a)
     exact_w = [(9+sqrt(93))/2,0,(9-sqrt(93))/2]
     v0 = array([1,1,(1+sqrt(93)/3)/2])
     v1 = array([3.,0,-1])
     v2 = array([1,1,(1-sqrt(93)/3)/2])
     v0 = v0 / sqrt(dot(v0,transpose(v0)))
     v1 = v1 / sqrt(dot(v1,transpose(v1)))
     v2 = v2 / sqrt(dot(v2,transpose(v2)))
     assert_array_almost_equal(w,exact_w)
     assert_array_almost_equal(v0,v[:,0]*sign(v[0,0]))
     assert_array_almost_equal(v1,v[:,1]*sign(v[0,1]))
     assert_array_almost_equal(v2,v[:,2]*sign(v[0,2]))
     for i in range(3):
         assert_array_almost_equal(dot(a,v[:,i]),w[i]*v[:,i])
     w,v = eig(a,left=1,right=0)
     for i in range(3):
         assert_array_almost_equal(dot(transpose(a),v[:,i]),w[i]*v[:,i])
示例#3
0
    def test_singular(self):
        """Test singular pair"""
        # Example taken from
        # http://www.cs.umu.se/research/nla/singular_pairs/guptri/matlab.html
        A = array(( [22,34,31,31,17], [45,45,42,19,29], [39,47,49,26,34],
            [27,31,26,21,15], [38,44,44,24,30]))

        B = array(( [13,26,25,17,24], [31,46,40,26,37], [26,40,19,25,25],
            [16,25,27,14,23], [24,35,18,21,22]))

        w, vr = eig(A,B)
        wt = eigvals(A,B)
        val1 = dot(A, vr)
        val2 = dot(B, vr) * w
        res = val1 - val2
        for i in range(res.shape[1]):
            if all(isfinite(res[:, i])):
                assert_array_almost_equal(res[:, i], 0)
示例#4
0
    def test_falker(self):
        """Test matrices giving some Nan generalized eigen values."""
        M = diag(array(([1,0,3])))
        K = array(([2,-1,-1],[-1,2,-1],[-1,-1,2]))
        D = array(([1,-1,0],[-1,1,0],[0,0,0]))
        Z = zeros((3,3))
        I = identity(3)
        A = bmat([[I,Z],[Z,-K]])
        B = bmat([[Z,I],[M,D]])
        A = asarray(A)
        B = asarray(B)

        w, vr = eig(A,B)
        val1 = dot(A, vr)
        val2 = dot(B, vr) * w
        res = val1 - val2
        for i in range(res.shape[1]):
            if all(isfinite(res[:, i])):
                assert_array_almost_equal(res[:, i], 0)