선형대수응용_HW_3,4

649 days 전, jongha4886 작성

# 2번 문제 - 일차독립 or 일차종속 여부 결정 v1 = vector(QQ,[4,-5,2,6,-6,1,8]) v2 = vector(QQ,[2,-2,1,3,-1,-6,5]) v3 = vector(QQ,[6,-3,3,9,-8,-9,-7]) v4= vector(QQ,[4,-1,5,6,-8,1,-6]) v5 = vector(QQ,[-7,0,6,9,3,-5,1]) v6 = vector(QQ,[3,9,-5,0,-9,-3,2]) v7= vector(QQ,[7,-5,4,2,0,-3,3]) ## 1st sol. 열 개수와 선행변수 개수를 통한 방법 A = column_matrix([v1,v2,v3,v4,v5,v6,v7]) print "A = " print A print if A.ncols() == len(A.pivots()): print "해당 벡터들은 일차독립입니다." else: print "해당 벡터들은 일차종속입니다." ## 2nd sol. 가역행렬의 동치정리를 이용한 방법(정방행렬임에 추가) print A.is_invertible() if A.is_invertible(): print "해당 벡터들은 일차독립입니다." else: print "해당 벡터들은 일차종속입니다." ## 3rd sol. 내장 함수 사용 방법 L = [v1, v2, v3, v4, v5, v6, v7] V = QQ^7 if (V.linear_dependence(L) == []): print "해당 벡터들은 일차독립입니다." else: print "해당 벡터들은 일차종속입니다." 
       
A = 
[ 4  2  6  4 -7  3  7]
[-5 -2 -3 -1  0  9 -5]
[ 2  1  3  5  6 -5  4]
[ 6  3  9  6  9  0  2]
[-6 -1 -8 -8  3 -9  0]
[ 1 -6 -9  1 -5 -3 -3]
[ 8  5 -7 -6  1  2  3]

해당 벡터들은 일차독립입니다.
True
해당 벡터들은 일차독립입니다.
해당 벡터들은 일차독립입니다.
A = 
[ 4  2  6  4 -7  3  7]
[-5 -2 -3 -1  0  9 -5]
[ 2  1  3  5  6 -5  4]
[ 6  3  9  6  9  0  2]
[-6 -1 -8 -8  3 -9  0]
[ 1 -6 -9  1 -5 -3 -3]
[ 8  5 -7 -6  1  2  3]

해당 벡터들은 일차독립입니다.
True
해당 벡터들은 일차독립입니다.
해당 벡터들은 일차독립입니다.
A = matrix(QQ,7,7, [1,0,0,0,1,0,1,0,3,0,0,0, -3,0,0,4,0,0,1,1,0,0,-3,0,4,0,3,0,0,1,2,0,1, 0,0,1,3,0,1,0,2,0,0,0,0,2,-2,1,1]) I = identity_matrix(7) AI = A.augment(I) AI.add_multiple_of_row(3,1,1) AI.swap_rows(2,4) AI.add_multiple_of_row(5,1,-1) AI.add_multiple_of_row(5,0,-1) AI.add_multiple_of_row(4,2,-4) AI.add_multiple_of_row(2,1,-1/3) AI.add_multiple_of_row(4,2,4) AI.add_multiple_of_row(6,5,-2) AI.add_multiple_of_row(5,3,-1/4) AI.add_multiple_of_row(5,4,1) AI.add_multiple_of_row(6,5,9/10) AI.add_multiple_of_row(0,5,1) AI.add_multiple_of_row(5,6,10/21) AI.add_multiple_of_row(4,5,-1/2) AI.add_multiple_of_row(2,4,-1) AI.add_multiple_of_row(2,5,-1/10) AI.add_multiple_of_row(1,5,3/10) AI.add_multiple_of_row(0,5,-1) AI.add_multiple_of_row(0,4,-1) AI.rescale_row(1,1/3) AI.rescale_row(2,1/2) AI.rescale_row(3,1/4) AI.rescale_row(5,1/10) AI.rescale_row(6,10/21) if AI == A.augment(I).rref(): print "기본행 연산이 잘 수행되었습니다." print "역행렬은 다음과 같습니다." print AI[:,[7,8,9,10,11,12,13]] else: print "기본행 연산이 잘못 되었습니다." print "다시 한 번 계산하세요." 
       
기본행 연산이 잘 수행되었습니다.
역행렬은 다음과 같습니다.
[  5/21   5/42   -5/7  -1/14      0  16/21  -5/21]
[ -1/21   5/84    1/7  -1/28      0   1/21   1/21]
[ -2/21  -1/21  -3/14  -1/14    1/2   2/21   2/21]
[     0    1/4      0    1/4      0      0      0]
[  5/21   1/28    2/7   5/28      0  -5/21  -5/21]
[ -1/21 -23/84    1/7  -1/28      0   1/21   1/21]
[ 11/21 -13/84    3/7  -3/28      0 -11/21  10/21]
기본행 연산이 잘 수행되었습니다.
역행렬은 다음과 같습니다.
[  5/21   5/42   -5/7  -1/14      0  16/21  -5/21]
[ -1/21   5/84    1/7  -1/28      0   1/21   1/21]
[ -2/21  -1/21  -3/14  -1/14    1/2   2/21   2/21]
[     0    1/4      0    1/4      0      0      0]
[  5/21   1/28    2/7   5/28      0  -5/21  -5/21]
[ -1/21 -23/84    1/7  -1/28      0   1/21   1/21]
[ 11/21 -13/84    3/7  -3/28      0 -11/21  10/21]