성균논문집(기초과학편) 제50집 No.1 (1999)
Linear Algebra with Advanced Technique
Bas. Sci. , Sungkyunkwan Univ., Vol. 50, 1999
선형대수학의 연구와 교육에서
ADVANCED TECHNIQUE의
적용방안
Linear Algebra with Advanced Technique
이 상 구* . 김 은 태** . 정 경 훈***
(2000年 2月 20日 接受)
Linear Algebra with Advanced Technique
Lee, Sang-Gu* . Kim, Eun-Tae . Chung, Kyung-Hun
ABSTRACT
In order to visualize the various concept of matrix theory and to develop conjectures, MATLAB were utilized in this research. By visualizing the eigenvalues of matrix and eigenvectors which have been recognized only theoretically, we were able to understand their meaning more clearly with this method. And it was also significant that various eigenvalues of matrix and the existing range of eigenvalues were visually presented with regard to Gerschgorin Circle's theorem by the help of MATLAB. In conclusion, mathematical research which are taking advantage of MATHEMATICA or MATLAB is becoming more and more popular among researchers. That's why these research tools are getting more popular. These researches are aligned with the ongoing 6 and 7th Curriculum which has been emphasizing the transfer from the 'what to teach' style of instruction to the 'how to teach' style.
_____________________
* 수학과 부교수
** 수학과 석사과정
*** 수학과 박사과정
I. 서 론
우리가 선형대수학에서
특히 행렬의 이론을 연구하고 전개해 나아갈 때 차의 행렬에 대하여 그 이론을 다루지만 실질적으로 보여지는 예는 2, 3, 4, 5차
정도에 불과하다. 또, 그 개념을 익히는 데도 주로 지필 환경만을 이용해 오고 있다.
그러나 이 개념을 컴퓨터를 활용하여 시각화하고 실습을 통하여 더욱 직관적으로
이해시킨다면 그 이해의 폭은 더욱 넓어질 것이다. 보통 전통적인 방법으로 행렬을
배운 수학전공자는 물론 자연계 학생들이 졸업후 사회의 현장에서 그 지식을 이용하여,
실제 상황의 문제를 풀려고 노력하지만, 문제의 크기가 크기 때문에 내용을 알면서도
결국에는 풀 수 없는 한계에 봉착하게되는 경우가 종종 일어난다. 이러한 현상은
대개의 수학교실에서는 폰노이만(Von Neumann)이 최초로 컴퓨터를 만든 50년 전이나
현재나 비슷하다. 그러나 우리가 살고 있는 사회환경은 50년 전과는 비교할 수 없을
정도의 빠른 속도로 발전해가고 있으며, 특히 과학기술분야에 있어서는 더욱 그렇다.
그렇다면 우리가 이런 문제점을 해결하는 대안을 제시할 수 없을까 하는 것이 이
논문의 주제이다.
1850년경에 대학원생이던 Guthire가 "네 가지 색만 있으면 아무리 나라가 많고 붙어 있어도 구분이 되게 평면지도를 만들 수 있다"고 소개한 "4색 문제(4-color problem)"는 많은 수학자를 고민 시켰다. 결국 Appel과 Haken에 의하여 1976년에 컴퓨터를 이용하여 해결하였으며, 1976년에는 'public key code'라는 개념으로 암호론에 새로운 아이디어가 소개된 후 Rivert, Shamir, Adleman이라는 세 명의 교수가 RSA code로 알려진 코드를 개발하고, 현재 RSA Data Security Inc. 라는 큰 회사가 생겼다. 이들은 자신의 코드가 풀리려면 129자리수의 소인수분해를 하는 기술이 필요한데 아마 23,000년 정도 후에나 가능 할 것이라고 예언하고 이를 해독하는 첫 번째 사람에게 상금으로 100달러를 걸면서 이를 연리 6%의 복리로 예금해두면 약 20,000년 후에는 500자리수의 어마어마한 거금이 될 것이라고 호언장담했다. 이는 RSA-129라고 알려진 정수의 소인수분해와 관련된다. 그러나 호언과는 달리, 이 RSA-129를 인수분해 하고자하는 프로젝트는 여러 사람의 손을 거쳐 (0,1)-행렬과 "Structured Gauss"라고 알려진 선형대수학의 기법을 이용하여 super computer에 접속하여 Arjen Lenstra에 의하여 1994년 4월에 해결되었다. 여기서 당대의 중요한 수학 문제를 푸는데 이미 컴퓨터가 우리 가까이 에 와 있음을 보게된다. 더구나 오늘날 과학 기술은 빠른 속도로 수학에 접근하고 있기 때문에, 실제로 컴퓨터의 발전은 수학의 이용과 불가분의 관계에 있으며 이것은 순수수학의 연구 및 수학적 사고를 배양시키는 전통수학교육의 중요성을 더욱 강조하게 한다.
수학의 변천사를 볼 때, 컴퓨터가 수학에 끼친 영향은 이루 말할 수 없으며, 특히 선형대수학에 대해서는 컴퓨터를 이용한 새로운 연구가 매우 활발하게 진행되고 있다. 그럼에도 불구하고 아직도 수학의 전반적인 분야에서 컴퓨터의 활용이 부진한 이유는 수학의 본질이 추상성에 근거하는 이유이기도 하지만, 지금까지 우리 나라에서 개발되어 온 수학 소프트웨어들이 전통적인 지필 환경보다 더 나은 환경을 제공해 주지 못했기 때문이다. 그러나 역으로 양질의 소프트웨어가 개발되지 못하는 이유는 개발에 대한 기술이 부족하기 때문이기보다는 수학계에 종사하는 대부분의 사람들이 수학을 연구함에 있어서 컴퓨터의 활용에 대한 이해와 관심이 부족했기 때문이 아닌가 생각되어 진다.
컴퓨터 쪽의 발전을 보면, 1980년대이래 컴퓨터의 기억용량, 속도, 가격, 사용의 편의성, 유연성, 표상능력 등은 눈에 띌 만큼 발달해 왔다. 시각적인 인터페이스와 계산 능력, 데이터 기억 능력이 획기적으로 향상되고 있으며 소프트웨어 측면에서도 MATHEMATICA나 MATLAB등과 같은 학교수학을 획기적으로 변화시킬 만한 특별한 컴퓨터 언어와 강력한 힘을 지닌 도구가 개발되고 있다. 이들은 다양한 그래픽과 애니메이션을 제공하고 있으며 추상적인 수학내용을 시각화하여 지도할 수 있게 할뿐만 아니라 그 시각화가 학생들의 직접적인 실습이나 경험을 통해 이루어질 수 있다는 점에서 수학 학습의 어려움을 크게 완화시켜준다.
대수학을 배우는 학생은 연립방정식을 풀고 행렬 연산과 복소수 계산을 수행하기 위한 프로그램 등을 이용하여 상당히 다양한 축척과 변환 개념을 가진 곡선을 그리고, 직선과 곡선의 삽입, 근 구하기 등의 프로그램에서 수학적 개념의 매력을 발견하게 되고, 해석학을 배우는 학생들은 극한, 도함수, 그리고 적분 등을 계산하기 위한 프로그램을 쉽게 이용할 수 있다. 또한 정교한 시뮬레이션을 하는 것뿐만 아니라 순열과 조합을 계산하기 위한 프로그램은 확률을 배우는 학생들이 이용할 수 있다. 통계를 배우는 학생들은 어떤 일반적인 분포에서 주어진 값에 따른 확률을 계산하거나, 여러 가지 훌륭한 통계 조사를 수행, 또는 주어진 자료의 회귀분석을 완성하는 데에 프로그램을 적용하는 것은 그리 문제가 되지 않을 것이다. 수학에서 시작한 컴퓨터가 다시 수학의 교육과 연구에 영향을 미치는 다양한 적용으로 돌아 왔으며, 그 이용의 가능성은 끝이 없는 것처럼 보인다. 소형컴퓨터에 수학적 프로그램의 조작이나 미분방정식, 선형대수, 그리고 약간의 추상대수까지 포함하여 더 넓은 분야에서 유용한 다양한 프로그램을 적용할 수 있으리라는 것이 앞으로 다가올 미래에 대한 올바른 예측일 것이다. 따라서 그런 과정을 이해하고 개발하며 이용하는 교수 및 교사의 탄생이 필요한 때라고 생각한다. 그 예가 2000년 1월에 있었던 제2회 Math Fesitval에서 보여졌으며, 대한수학회 소식지 제 69호(2000년 1월)에서도 대학에서 수학을 가르치는 방법의 변화를 촉구하였다. 이미 그런 시도는 미국, 일본, 독일 등 여러 나라에서는 진행되고 있으며 Teachers Teaching with Technology라 일컫는 T3활동이 그 본보기이며 10여 년 전부터 지금까지 지속적으로 발전해오고 있다. 또 그 내용의 일부가 1998년 8월 14일 중등교육을 중심으로 삼성동 무역센타(KOEX) 국제회의실에서 우리에게 소개되었다. 대학과정에서의 변화에서 가장 눈에 띄는 것은 MATHEMATICA를 수단으로 한 Calculus Reform Project와 MATLAB을 수단으로 한 ATLAST(Augmenting the Teaching of Linear Algebra through the use of Software Tools) Project이다. 이와 관련하여 미국 등에서는 NSF(National Science Foundation)지원 등을 통한 수많은 보고서와 database, software들이 속속 제공되고 있다[8]. 그러나 외국의 예와 비교해 볼 때 우리는 자체적인 소프트웨어가 없어 근본적인 취약점을 갖고 있었다. 최근 이에대한 자각으로 서울대(셈틀로 http://www.cemtool.co.kr/, MAL http:// plaza.snu.ac.kr/ ~mal/), 성균관대(Mathrix, HLINPRAC http://math.skku.ac.kr/ algebra/mshm/), 배재대(LINEAR SOLVER)등에서 자체 소프트웨어를 개발해 왔으나 더욱 많은 노력이 필요한 현실이다. 본 논문의 중점과제는 대학에서의 수학교육과 연구에 High Technology를 적용하는 것이며, 특히 선형대수학을 중심으로 그 적용방안에 대하여 논하고자 한다.
II. 본 론
선형대수학에서 중요한 역할을 하는 행렬에 대한 성질들의 개념을 시각화하고 직관적으로 이해하기 위하여 컴퓨터의 이용을 생각해볼 수 있다. 행렬의 기본 연산에는 행렬끼리의 덧셈, 곱셈, 스칼라 배, 행렬의 거듭제곱 등이 있으며, 선형연립방정식을 구하는 방법으로는 역행렬을 이용하거나, 가우스 소거법을 사용하는 방법이 있다. 행렬의 크기가 커지면 역행렬이나 가우스 소거법을 적용하는 것은 많은 시간을 소비하게 되고 계산이 복잡하게 되지만 컴퓨터를 사용하면 쉽고 간편하게 해결된다.
본론에서는 ATLAST Project를 분석하여 깊이 있는 수학적 개념의 직관적인 이해와 conjecture의 개발에 비중을 두었다. 즉 MATLAB을 이용하여 선형대수학 개념을 시각화(visualization)함으로써 개념의 깊고도 폭넓은 직관적인 이해를 도모했다. 이를 통하여 다양한 개념의 새로운 해석방법을 제시하고 선형변환, Gerschgorin정리의 순서로 위의 가능성을 검증하며 전개해 나가겠다. 참고로 이 논문에서 예로 쓰여진 모든 그림과 결과치 들은 윈도우 환경에서 Multi Tasking을 이용하여 직접 만들어낸 결과의 내용들을 복사하고 아래아 한글에서 붙이기 하는 방법을 취하였다.
선형대수학 연구 및 교육용 프로그램인 MATLAB은 Matrix Laboratory의 약자로 거의 대부분을 행렬의 이론에 기초를 두고 있다[5].
ATLAST Project는 Augmenting the Teaching of Linear Algebra through the use of Software Tools의 약자로 미국의 Linear Algebra Curriculum Study Group(LACSG)이 National Science Foundation의 지원아래 선형대수학을 행렬의 관점에서 가르치고, 또한 소프트웨어를 사용하여 교육을 개선하기 위하여 생겨났다. 따라서 ATLAST Project 는 이러한 목적을 달성하기 위한 LACSG의 추진 계획이며 1992년부터 1997년까지 450명의 교수들의 참여 속에 선형대수학 입문 강좌에서 다루는 모든 주제를 포함한 포괄적인 컴퓨터 예제들이 MATLAB을 이용하여 개발되었다. 이 Project에 쓰인 컴퓨터 예제들은 ATLAST Computer Exercises for Linear Algebra라는 책에 수록되어 있으며, MATLAB routines의 모임(M-files)도 이 책과 함께 개발되었다. 이 M-file의 대부분은 coordinate system, linear transformation, eigenvalue등의 중요한 선형대수의 개념의 시각적인 삽화를 주기 위해 디자인되었다. 다른 M-file들은 computer animation을 위한 linear transformation의 사용이나 digital imaging을 위한 matrix factorizations 사용과 같은 시각적 응용을 그림으로 설명하고 있다. 또 다른 M-file들은 특별한 구조의 행렬을 만드는데 사용된다. 저자가 개발한 한국판 ATLAST Project는 web page http://math.skku.ac.kr/algebra/atlastkp/ 에서 얻을 수 있을 것이다.
여러 개의 변수를 가진 곡선의 방정식은 그 변화가 매우 복잡한 양상을 띄고 있기 때문에 곡선의 연립방정식을 해결하는 일반적인 이론은 존재하지 않는다. 그러나 어떠한 곡선이라도 작은 간격으로 끊어 보면 거의 직선으로 간주할 수 있으며 행렬을 이용하여 선형 연립 방정식을 해결하는 훌륭한 이론이 있기 때문에 Linear System은 물리학, 경제학, 통계학 등 다양한 분야에 적용되고 있다. 이 장에서는 아무리 복잡한 Linear System이라 할지라도 쉽고 간편하게 해결해주는 MATLAB의 commands를 이용하여 Linear Systems에 관한 다양한 문제 거리들을 해결하기로 한다.
III. 선형변환 대 비선형변환
3장에서는 선형변환은 직선을 직선 (또는 점)으로 옮겨 주지만 비 선형변환은 그러한 성질을 갖지 않는다는 것을 MATLAB을 이용하여 시각적으로 분명하게 볼 수 있음을 보여줌으로서 선형변환의 개념을 직관적으로 이해하도록 한다.
3.1 선형변환
정의
: mapping 이 다음조건을 만족할 때,
를 linear transformation(선형변환)이라 한다.
for all u and v in R^n,
한 편, 임의의 행렬
에 대하여,
이 성립하므로, 변환 을
로 정의하면
는 분명히 선형 변환이며,
를 선형변환
의 행렬이라 한다.
[예제1] 행렬
에 대하여, 변환
를
로 정의하면
는 선형변환임을 보여라.
[풀이] For all u and v in R^n,
이므로 는 선형변환이다.
3.2 기하학적 관점에서의 선형변환 대 비선형변환
벡터 를 변환
에 의한 벡터
의 image(상) 라고 하며, 벡터
를 변환
에 의한
의 preimage(원상) 이라고 한다. 변환
를, 벡터
를 변환하여 벡터
로 옮기는 mapping(사상)이라 생각할 수 있다. “평면 위의 모든 벡터를 변환하면
어떻게 될까?”하는 자연스러운 질문은 직선을 직선 또는 점으로 옮기는 선형변환의
연구로 발전되어 왔다.
일반적으로 에서
로 가는 선형변환은 다음과 같다.
이제 행렬 와
로 정의되는 변환(mapping)을 생각할 때
,
이면
는 다음과 같이 나타낼 수 있다.
이것의 기하학적 의미는 무엇일까? 이것을 다음의 예를 통하여 설명하자.
[예제2] 과
로 정의되는 평면 위의 선형변환이 있다. MATLAB을 이용하여 이 선형변환에 의하여
직선이 직선으로 변환됨을 보여라.
[풀이] 먼저 가로 세로의 직선들을 만든다. 이것은 MATLAB을 이용하면 쉽게 만들 수 있다.
아래의 MATLAB 명령어는 그림 1 에서 보여주는 가로 세로의 직선들과 변환된 직선들을 만들어 준다. 이 작업은 MATLAB 명령어를 순서대로 차례차례 입력하면 된다.
아래의 M-file은 이런 목적으로 만들어졌다.
% 그림 1.을 위한 M-file
% Initialize and set the figure window ( figure window 의 배치 및 초기화 상태 )
close all(%이미 열린 창을 모두 닫는다.)
≫ fig1=figure; (그려지는 그림을 Fig1 이라고 하자. )
≫ set(fig1,'units','normalized','Position',[0.1,0.25,0.8,0.5])(%그림의 setting)
% Creat a grid of x-and y-values ( x, y의 격자 좌표 만들기 )
≫ [x,y]=meshgrid(-10:10); ( % -10에서 10까지의 x, y 영역을 나다낸다. )
% Plot the grid of lines (가로 세로의 격자선을 그리는 방법)
% subplot(m,n,p) (Fig1을 m×n행렬형의 좌표평면으로 나누어 p번째의 좌표축을 그리는 방법)
subplot(1,1,1)
subplot(2,1,1)
subplot(1,2,2)
subplot(1,2,1)
≫ subplot(1,2,1) (fig1을 1×2행렬형의 좌표평면으로 나누어 1번(왼쪽)의 좌표축을
그리는 방법)
≫ plot(x,y,'r') ( mesh x들을 red 색의 줄로 그려라. )
≫ hold on ( 현재의 그림에 아래의 그림을 합친다. )
≫ plot(x',y','g') ( y축과 평행한 green 색의 줄을 만든다. )
≫ hold off ( 더 이상의 첨가를 방지한다. )
≫ axis square ( 위의 그림을 네모 반듯한 사각형 그림으로 만든다. )
% Apply the transformation to the x-and y-values ( x, y에 대한 변환식 )
≫ xp=sqrt(3)/2*x-1/2*y;
% 를
로 놓자
≫ yp=1/2*x+sqrt(3)/2*y;
% 를
로 놓자.
% Plot the transformed data ( 변환된 데이터를 그림으로 표현하자. )
≫ subplot(1,2,2) ( 1 x 2 행렬형의 두 개의 좌표 평면을 만든다. )
(
% 1:2의 비율로 ,
축방향의 좌표축을 2번 오른쪽위치에 그려라. )
≫ plot(xp, yp,'r') (
mesh 들을 red 색 줄로 그려라. )
≫ hold on ( 위의 그림을 그대로 두고 )
≫ plot(xp',yp','g') ( mesh
들을 green 색 줄로 그려라. )
≫ hold off ( 이 겹친 그림을 그대로 두고 )
≫ axis square ( 정사각형 모양으로 그려라. )
그림 1. 직선은 직선으로 옮겨진다.
이 그림은 원상을 시계
반대 방향으로 회전한 모양이다. 즉, 위의 선형변환이
의 한 점을 시계반대방향으로
회전하면 직선을 직선으로 옮기는 변환임을 알 수 있다.
[연습1]
과
로 정의되는 평면 위의 선형변환이 있다. 위의 예의 MATLAB 명령어를 이용하여
이 선형변환에 의하여 직선이 직선으로 변환됨을 보여라. 이것은 학생에게 직접 해
보도록 함으로서 교육효과를 높일 수 있다.
[풀이]
≫ fig1=figure;
≫ set(fig1,'units','normalized','Position',[0.1,0.25,0.8,0.5])
≫ [x,y]=meshgrid(-10:10);
≫ subplot(1,2,1)
≫ plot(x,y,'r')
≫ hold on
≫ plot(x',y','g')
≫ hold off
≫ axis square
≫ xp=sqrt(2)/2*x-sqrt(2)/2*y;
≫ yp=sqrt(2)/2*x+sqrt(2)/2*y;
≫ subplot(1,2,2)
≫ plot(xp,yp,'r')
≫ hold on
≫ plot(xp',yp','g')
≫ hold off
≫ axis square
설명 : 우선 격자 축을 그리고 mesh 와 mesh
를 왼쪽으로 그린 후, 비교가 가능하도록 mesh
와 mesh
의 그림을 오른쪽으로 그린 것이다.
원상(pre imge), 상(image)
이것은 원상을 시계
반대방향으로 로 회전시킨 모양으로 전형적인 선형변환의 예이다.
[예제3] 와
로 정의되는 평면 위의 비선형변환이 있다. MATLAB을 이용하여 이 비선형변환에
의해서는 직선이 직선으로 변환되지 않음을 보여라.
[풀이] 이미 앞에서 연구하였던 것처럼 MATLAB code는 이 작업을 매우 간편하게 처리하여 준다.
다음의 code는 image를 그림과 같이 만들어 준다.
≫ fig1-figure;
≫ set(fig1,'units','normalized','Position',[0.1,0.25,0.8,0.5])
≫ [x,y]=meshgrid(-10:10);
≫ subplot(1,2,1)
≫ plot(x,y,'b')
≫ hold on
≫ plot(x',y','y')
≫ hold off
≫ axis square
≫ xr=x.^2+y.^2;
≫ yr=x+y;
≫ subplot(1,2,2)
≫ plot(xr,yr,'b')
≫ hold on
≫ plot(xr',yr','y')
≫ hold off
≫ axis square
그림 2. 비선형변환은 직선을 직선으로 옮기지
않는다.
설명 : 선형을 visualization 하고 나서 비선형을 visualization 하는 것은 아주 쉬었다. 그러나 실제로 이러한 비선형을 그림으로 그리거나 선형변환과 비선형변환의 차이를 눈으로 보는 것은 드문 경우이다. 이와 같이 MATLAB을 이용하여 수학적 개념을 visualization 하는 것은 단순히 이미 알고 있는 지식만을 확인하는데 그치지 않고, 이전에 확인하기 어려웠던 새로운 개념을 확실하게 인식하는데 도움을 준다. 그리고 이를 통하여 배운 개념의 이용이 가능하다. 이것이 우리가 이 논문을 쓰는 이유중의 하나이다.
[연습2] 과
으로 정의되는 평면 위의 비선형변환이 있다. 이 비선형변환에 의하여
직선이 직선으로 변환되지 않음을 MATLAB을 이용하여 보여라.
[풀이]
≫ fig1=figure;
≫ set(fig1,'units','normalized','Position',[0.1,0.25,0.8,0.5])
≫ [x,y]=meshgrid(-10:10);
≫ subplot(1,2,1)
≫ plot(x,y,'r')
≫ hold on
≫ plot(x',y','g')
≫ hold off
≫ axis square
≫ xp=x.^2+y;
≫ yp=x.*y;
≫ subplot(1,2,2)
≫ plot(xp,yp,'r')
≫ hold on
≫ plot(xp',yp','g')
≫ hold off
≫ axis square
( plot(xp,yp,'r') )
원상(preimage) 상(image)
이와 같이 선형변환과 비선형변환에 대한 비교연구를 MATLAB을 이용하여 시각화함으로써 두 변환에 대한 개념과 그 차이점을 쉽게 이해할 수 있었고. 특히 관념적으로 생각해 왔던 비선형변환의 내용을 그림으로 나타내어 구체화 할 수 있었음은 큰 수확이 아닐 수 없다. 이러한 관점에서 볼 때 컴퓨터를 이용한 연구는 추상적인 수학적 내용을 시각적으로 구체화함으로써 그 개념을 더욱 충실히 전개할 수 있으므로 수학을 연구하는데 있어서 새로운 방향을 제시해 준다.
IV. 고유값 (Eigenvalues)
행렬 A가 차 정사각행렬이고, 영벡터가 아닌 임의의 벡터
가 적당한 스칼라
에 대하여
를 만족할 때
를 행렬
의 고유값,
를
에 대응하는 행렬
의 고유벡터라는 것은 이미 알고 있다. 이장에서는 그러한 고유값의 의미를
MATLAB을 이용하여 눈으로 보고, 고유값에 관한 conjecture를 만들고, 유명한 Gershgorin
정리를 분석해 보고자 한다.
4.1 고유값
행렬 의 고유값과 고유벡터를 MATLAB을 이용하여 그림으로 구해 보자. 행렬 A의 고유값과
고유벡터를 그림으로 보여주는 명령어는 eigshow(A)이다.
≫A=[1 -3;-3 1]
≫eigshow(A)
아래의 두 그림은
마우스를 이용하여 움직임으로써 나타내어지는 그림이며 원은 단위 원이고 원에 닿은
벡터는 단위벡터 이며 긴 벡터는
이다. 벡터
를 회전시킬 때
와 방향이 겹치거나 방향이 반대인 경우가 생기는 데, 이때의 값이 고유 벡터와
그에 대응하는 고유값임을 그림은 잘 나타내 주고 있다. 즉,
와
가 겹치는 경우
가 되고 그 크기
는 고유값이 되는 것이며 그 값이 norm
로서 오른쪽 위에 나타난다. 이것이 고유값이 되는 것이다. 따라서 고유값은 4와
-2임을 알 수 있다.
이번에는 행렬의 고유값을
다른 방법으로 얻어보자. 행렬 를 입력한 다음에 명령어는 eigplot(B)를 이용하면 행렬 B의 고유값을 좌표평면
위에서 그 위치를 알 수 있게 된다.
B =
2.0000 0
1.5000 0.5000
≫eigplot(B)
그 M-file을 보면 다음과 같다.
≫ ea=eig(a);
≫ plot(real(ea),imag(ea),'x')
≫ v=axis;
≫ v(1)=min(v(1),-1);
≫ v(2)=max(v(2),1);
≫ v(3)=min(v(3),-1);
≫ v(4)=max(v(4),1);
≫ axis=v;
≫ xd=(v(2)-v(1))/40;
≫ yd=(v(4)-v(3))/20;
≫ xpos=v(2)+xd;
≫ ypos=v(4)+yd;
≫ text('Position',[xpos 0],'String','Re')
≫ text('Position',[-xd,ypos],'String','Im')
≫ hold on
≫ plot([v(1),v(2)],[0,0],'r',[0,0],[v(3),v(4)],'r')
이와 같이
명령어 eigplot(B)는 행렬 의 고유값의 위치를 그림으로 보여 준다. 행렬의 고유값과 고유벡터를 연구하는데
있어서 흥미있는 임의의 행렬을은 gallery 행렬이 있다. 이제 5차 gallery 행렬 (nice한
고유값을 갖는 행렬)의 고유값에 대하여 알아보자.
A=gallery(5)
A =
-9 11 -21 63 -252
70 -69 141 -421 1684
-575 575 -1149 3451 -13801
3891 -3891 7782 -23345 93365
1024 -1024 2048 -6144 24572
위의 5차 gallery 행렬 의 고유값은 아래 5개이다. 이는 아래와 같이 고유값을 구하는 명령어 "eig"
으로도 쉽게 구할 수 있다. 이 경우 복소수 고유값이 4개가 있다. 그림은 나타나지
않아 시각화는 안되지만 실용적인 명령어이다.
≫ e=eig(A)
e =
-0.0157 + 0.0116i
-0.0157 - 0.0116i
0.0061 + 0.0183i
0.0061 - 0.0183i
0.0192
이 때 p=poly(A)는 행렬 A의 특성방정식의 계수를 구해줌으로써 특성방정식의 형태를 알게 해 준다. 아래의 수의 배열은 다항식 P의 각 항의 계수들을 나타낸다.
≫P=poly(A)
p =
1.0000 0.0000 0.0000 0.0000 0.0000 0.0000
roots(p) 은 특성방정식의 근을 구하여 주며 그 근이 바로 위와 같은 고유값임을 알게 해 준다.
≫ roots(p)
ans =
-0.0157 + 0.0116i
-0.0157 - 0.0116i
0.0061 + 0.0183i
0.0061 - 0.0183i
0.0192
한편, 5차 gallery 행렬 A는 Schur 정리에 의하여 위의 고유값을 주대각성분으로 갖는 상삼각행렬
과 유니타리닮음(unitarily similar)이고 그 고유값은 5개
모두 0 에 근사한 값이므로 임을 감지할 수 있으며 이를 확인하면 다음과 같다.
≫ B=A^5
B = 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
다음에는 부호행렬의 고유값을 생각해 보자.
≫S =signmat(5)
S= 1 -1 1 -1 1
-1 1 -1 1 -1
1 -1 1 -1 1
-1 1 -1 1 -1
1 -1 1 -1 1
의 고유값은 아래와 같음을 알 수 있다.
≫eig(S)
ans =
0
0
0
5
0
위와 같은 방법으로 Hadamard 행렬의 고유값을 구해보자.[5]
≫H=hadamard(4)/2
H =
0.5000 0.5000 0.5000 0.5000
0.5000 -0.5000 0.5000 -0.5000
0.5000 0.5000 -0.5000 -0.5000
0.5000 -0.5000 -0.5000 0.5000
eig(H)은 위의 행렬의 고유값을 준다.
≫eig(H)
ans =
1.0000
1.0000
-1.0000
-1.0000
A=randint(3) 로 임의의 행렬을 만들자.
A =
-6 6 0
-7 -9 9
1 1 5
p=round(poly(A))는 행렬 의 특성다항식을 나타내 주며 MATLAB에서는 다음과 같이 다항식의
계수만을 나타내 준다. 따라서 행렬
의 특성다항식은
이다.
≫P=round(poly(A))
p =
1 10 12 -588
≫ e=eig(A)
e =
-7.8712 + 6.3594i
-7.8712 - 6.3594i
5.7423
한편 위의 특성다항식을
행렬에 대한 특성방정식
으로 만들어 주는 명령어로는 polyvalm(p,A)이 있다.
≫polyvalm(P,A)
ans =
0 0 0
0 0 0
0 0 0
이는 이 성립함을 의미하는 것이며, 이것이 바로 임의의
차 정사각행렬
가 자신의 특성방정식
을 만족한다는 Cayley-Hamilton 정리이다. 이와 같이 우리는 MATLAB을 이용하여
Cayley-Hamilton 정리의 의미를 시각적으로 어렵지 않게 확인 할 수 있으며
이러한 시각화가 MATLAB을 이용한 연구와 교육방법상의 장점인 것이다. 이와
같은 시각화를 이용한 개념의 접근 방법은 주요 정리의 의미가 무엇인지를 기억속에
분명히 심어 준다.
4.2 고유값에 대한 conjecture 만들기
이 절에서는 여러 개의
N자 모양의 차 행렬을 만들고 명령어 eig
로 고유값을 구하여
차의 N행렬의 고유값이 일반적으로 어떻게 추정되는지를 알아보기로 한다.
≫ N3=nmatrix(3)
N3 =
1 0 1
1 1 1
1 0 1
≫ eig(N3)
ans =
1
2
0
≫ N5=nmatrix(5)
N5 =
1 0 0 0 1
1 1 0 0 1
1 0 1 0 1
1 0 0 1 1
1 0 0 0 1
≫ eig(N5)
ans =
1
1
1
2
0
이와
같이 이런 실험을 여러 번 반복함으로써 N자 모양의 차 행렬에 대한 conjecture를 만들 수 있다. 더구나 이것은 Gauss 소거법과 일차독립인
행의개수의 의미를 깊이 인식해준다.
conjecture : 차의 N행렬은 1이
-2개, 2가, 1개, 0이 한 개인 고유값들을 갖는다고 추측할 수 있다. 물론 이것을
보이는 것도 어렵지 않다.
Hermitian 행렬과 Skew Hermitian 행렬의 고유값이 갖는 성질들에 대하여도 확인이 가능하다.
N =
1 0 0 0 1
1 1 0 0 1
1 0 1 0 1
1 0 0 1 1
1 0 0 0 1
≫ h=N'*N 은 Hermitian 행렬이 된다.
h =
5 1 1 1 5
1 1 0 0 1
1 0 1 0 1
1 0 0 1 1
5 1 1 1 5
≫ eig(h) 는 고유값을 아래와 같이 준다.
ans =
1.0000
1.0000
0.3765
0.0000
10.6235
보다시피 h는 Hermitian행렬이고 이런 행렬의 고유값은 언제나 모두 실수임을 확인 할 수 있었다. 이제 임의의 5차 정사각행렬을 만들고 이를 이용하여 Hermitian 행렬과 Skew Hermitian 행렬의 고유값에 대하여 연구해 보자
≫ A=randint(5)은 임의 5차 행렬을 만들어 준다.
A =
1 -5 -9 -5 -7
7 4 -2 -6 3
2 -7 -9 -3 -2
6 -8 4 7 -2
-6 -4 8 3 0
≫ B=A+A'은 당연히 Hermitian 행렬이 된다.
B =
2 2 -7 1 -13
2 8 -9 -14 -1
-7 -9 -18 1 6
1 -14 1 14 1
-13 -1 6 1 0
≫ eig(B)는 고유값을 아래와 같이 준다.
ans =
-12.2516
-1.9744
-22.8912
16.1528
26.9644
이처럼 Hermitian행렬 B의 고유값은 모두 실수임을 알 수 있다.
≫ C=A-A' (Skew Hermitian)
C =
0 -12 -11 -11 -1
12 0 5 2 7
11 -5 0 -7 -10
11 -2 7 0 -5
1 -7 10 5 0
≫ eig(C)
ans =
0.0000 +22.7468i
0.0000 -22.7468i
0.0000 +11.0266i
0.0000 -11.0266i
0.0000
또, Skew―Hermitian 행렬 C의 고유값이 모두 0 또는 순허수임도 MATLAB이 확인해 주었다.
V. Gerschgorin Circle 정리
1931년에 발견된
Gerschgorin Circle의 정리는 복잡한 차 정사각행렬의 고유값을 계산에 의하지 않고 단지 행렬의 성분들을 이용하여
그려지는 원들을 이용하여 고유값이 존재하는 영역과 그의 위치를 복소평면 위에
나타낼 수 있은 근거를 준다. 이 절에서는 Gerschgorin Circle 정리를 MATLAB을
이용하여 고유값이 존재하는 영역과 그의 위치를 복소평면 위에 그림으로 나타냄으로써
시각화 하고자 한다.[3]
제 1 Gerschgorin Circle 정리 |
제 1 Gerschgorin Circle 정리는 행렬의 주대각선의 성분들을 중심으로 하고 주대각선성분 각각에 대하여 그 성분이 있는 행의 나머지 성분들의 절대값의 합을 반지름으로 하는 원들 안에 그 행렬의 고유값이 모두 놓인다는 정리로서 ATLAST M-file 인 gersch는 Gerschgorin Circle들의 영역을 그림으로 나타내 준다.
이제 여러 가지 다양한 행렬을 가지고 ATLAST M-file 인 gersch를 이용하여 Gerschgorin Circle정리를 시각화 해 보도록 한다. 먼저, N자형의 5차 정사각행렬의 고유값을 명령어 eig를 이용하여 구한 다음에 명령어 gersch로 Gerschgorin Circle을 만들어 비교해 보자.
≫N=nmatrix(5)
N =
1 0 0 0 1
1 1 0 0 1
1 0 1 0 1
1 0 0 1 1
1 0 0 0 1
≫e=eig(N)
e =
1
1
1
2
0
≫gersch(N)
≫gersch(N,1)
(gersch(N)) (gersch(N,1))
gersch(N) 은 위의 행렬 의 Gerschgorin Circle 들은 복소평면 위에 그림으로 나타내어 주었으며
gersch(N,1)은 Gerschgorin Circle 로 주어진 원의 내부에 고유값 0, 1, 2들을 실수축
위에 점으로 나타내 주었다. 다음의 행렬은 그 고유값이 실수와 허수를 모두
갖는 경우를 예로 든 것이다.
≫A=randint(5,5,6)
A =
-4 -2 0 -1 0
-6 0 2 2 -5
2 4 -6 1 2
2 -6 -2 6 -1
6 -6 -6 5 3
≫e=eig(A)
e =
8.5126
-5.2720 + 1.3596i
-5.2720 - 1.3596i
-1.2324
2.2639
≫gersch(A)
≫gersch(A,1)
(gersch(A)) (gersch(A,1))
제 2 Gerschgorin Circle 정리 |
이제 제 2 Gerschgorin
Circle 정리를 쉽게 이해하기 위하여 행렬를 만든 다음에 명령어 gersch를 이용하여 아래와 같이 Gerschgorin Circle을
만들어 보았다.
≫B=[-15 -2 0 1 3;0 10 2 4 -1;-1 -2 -10 0 -7;1 -1 0 15 3;0 0 -1 2 -20]
B =
-15 -2 0 1 3
0 10 2 4 -1
-1 -2 -10 0 -7
1 -1 0 15 3
0 0 -1 2 -20
≫e=eig(B)
e =
-9.1358
-15.1345
14.2857
10.7284
-20.7438
≫gersch(B,1)
위의 그림은 5차 정사각행렬
의 Gerschgorin Circle들 중에서 서로소가 아닌 3개의 원의 합집합과 2개의 원의
합집합의 내부에 행렬
의 고유값들이 각각 3개와 2개씩 존재하고 있음을 보여 주는 것이며, 이것이 바로
제2 Gerschgorin Circle 정리를 의미하는 것이다. 이와 같이 MATLAB은 정리의 깊은
이해와 계산능력 그리고 시각화를 통하여 새로운 정리를 만드는 수학내용을 학습하고
방법을 크게 바꿀 수 있는 수학적 도구로 성장해 오고 있는 것이다.
VI. 결 론
선형대수학의 행렬이론에 관한 여러 가지 성질을 새로이 해석하여 연구하는 방안으로 그들의 개념을 시각화하고 conjecture의 개발을 모색하기 위하여 선형대수학 컴퓨터 프로그램인 HLINPRAC과 MATLAB을 활용해 보았다. HLINPRAC을 활용함으로써 행렬의 여러 가지 기본연산과 근사곡선의 그래프, 고유값의 계산등 행렬에 관련된 여러 가지 계산들을 쉽고 간단하게 구할 수 있었으며, MATLAB은 행렬의 복잡하고 다양한 추상적인 개념들을 직관적으로 이해하기 위하여 그 개념들을 그림으로 시각화하고 conjecture를 개발하는데 상당한 도움을 주었다. 이를테면 선형연립방정식을 활용하여 해결할 수 있는 수치해석학에서의 다양한 프로젝트들을 적당한 크기의 행렬로 바꾸어 MATLAB을 이용하여 해결할 수 있었으며 행렬에 관련된 문제를 시각화하고 새로운 사실을 conjecture함으로써 그 개념을 쉽게 풀어나가는 과정에도 MATLAB을 이용할 수 있었다. 또한 선형변환과 비선형변환의 내용을 그림으로 시각화하여 비교해 봄으로써 선형변환의 개념이 구체적으로 확인되었고 더구나 추상적으로만 인식되어 왔던 비선형변환을 구체화 할 수 있었다. 이론적으로만 알고 인식되어 왔던 행렬의 고유값과 고유벡터를 그림으로 시각화함으로써 그 의미를 더욱 분명히 할 수 있었으며, Gerschgorin Circle에 관한 정리를 MATLAB을 이용하여 다양한 행렬의 고유값과 고유값이 존재하는 영역을 그림으로 확인할 수 있었음은 매우 큰 수확이 아닐 수 없다.
결론적으로 MATHEMATICA나 MATLAB과 같은 컴퓨터 프로그램을 이용한 수학 연구는 다양한 수학적 개념을 구체적이면서도 쉽게 확인할 수 있는 장점이 있으므로 수학적 개념을 깊이 이해시키고 더욱 발전시키기 위한 수단으로 자리를 잡아가고 있다. 관련 자료는 web page http://math.skku.ac.kr/algebra/
atlastkp/ 에서 얻을 수 있을 것이다. 이러한 연구는 “무엇을 가르칠 것인가”에서 “어떻게 가르칠 것인가”로의 강조점이 변해온 우리 나라의 현행 6차 및 7차 교육과정과 일치하며 구체화 된 수학적 이론을 배경으로 실제로 사회에서 필요로 하는 여러 가지 현상들을 수학적으로 해결해 주는 방향도 아울러 제시해 주는 것이다.
VI. 引 用 文 獻
[1] 계승혁, 대한수학회소식, V69. 20-35, 대한수학회 2000.1
[2] 이상구, 성균관대 선형대수학 Homepage, http://math.skku.ac.kr/algebra/atlastkp/, 2000
[3] 이상구, 이광연, 천기상, 신항균, 선형대수학과 응용, 경문사, 1998
[4] Carl C. Cowen, "A Project of Circles in Space." In Resources for Teaching Linear Algebra, Washington, D.C., MAA, 1996.
[5] Duane, Hanselman, and Bruce Littlefield, and the staff at the MathWorks. Inc., The Student Edition of MATLAB, Prentice-Hall, 1995.
[6] Roger A. Horn and Charles R. Johnson, Matrix Analysis, Cambridge Univ. Press, 1985.
[7] Steven J. Leon, Linear Algebra with Applications, Prentice-Hall, 1994.
[8] Steven Leon, Eugene Herman and Richard Faulkenberry, Computer Exercises for Linear. Algebra, Prentice-Hall, 1996.
The End 성대 이상구교수 |