python; 2차 정방행렬(2X2)의 고윳값(고유치) 구하기

    고유특성다항식 및 특수한 형태일 때 고유치를 구해보자.

    Solution1:

    $A_{2X2}$ 의 고유특성다항식 ⇒ $\lambda^2-trace(A)+det(A)$

    Solution2: 

    $A=\begin{bmatrix}
    a & b \\
    c & d \\
    \end{bmatrix}$

    행렬 A에서 행 또는 열의 합이 같으면 그 합은 두개의 고유치 중 하나이며,

    나머지 하나는 tr(A)가 고유치의 합과 같으므로 tr(A)에서 빼서 구한다.

    print("⌈a b⌉\n⌊c d⌋\n")
    a = int(input('a:'))
    b = int(input('b:'))
    c = int(input('c:'))
    d = int(input('d:'))
    
    def get_tr(m):
        res = 0
        for i in range(len(m)):
            res += m[i][i]
        return res
    
    
    def get_det(m):
        return (m[0][0]*m[1][1])-(m[0][1]*m[1][0])
    
    
    def quadratic_formula(a, b, c):  # ax^2+bx+c=0
        x = [0, 0]
        x[0] = (-b+(((b ** 2)-4*a*c)**0.5))/(2*a)
        x[1] = (-b-(((b ** 2)-4*a*c)**0.5))/(2*a)
        return x
    
    if((a+b) == (c+d) or (a+c) == (b+d)):
        print("λ=", (a+b), ",", (d-b))
    elif (a == d) and (b == c):
        print("λ=", (a+b), ",", (a-b))
    else:
        m = [[a, b], [c, d]]
        r = quadratic_formula(1, -get_tr(m), get_det(m))
        print(r[0], r[1])

    댓글