선형대수학   프로그램 HLINPRAC 제작동기 및 사용법

수학교육의 컴퓨터 활용에 대하여...

 교실의 교수 학습과정, 특히 수학교육 및 연구에서 우리는 지금까지 컴퓨터를 거의 활용하지 않았다. 그 이유는 지금까지 우리 나라에서 개발되어 온 수학 소프트웨어들이 전통적인 지필 환경보다 더 나은 환경을 제공해 주지 못했기 때문이다. 그러나 역으로 양질의 소프트웨어가 개발되지 못하는 이유는 개발에 대한 기술이 부족해서라기 보다는 수학교육계에 종사하는 모든 사람들이 수학교육에서의 컴퓨터의 활용에 대한 관심이 부족한 때문이다.

 그래픽과 애니메이션은 추상적인 수학내용을 시각화하여 지도할 수 있게끔 할뿐만 아니라 그 시각화가 학생들의 직접적인 경험이나 통제를 통해 이루어질 수 있다는 점에서 수학 학습의 어려움을 크게 완화 시켜준다. 특히 형식적인 증명이나 개념 학습의 전 단계로 그래픽이나 애니메이션을 통한 직관적인 지도는 대단히 효과적이다.

 1980년대이래 컴퓨터의 기억용량, 속도, 가격, 사용의 편의성, 유연성, 표상능력 등은 눈에 띌 만큼 발달해 왔다. 시각적인 인터페이스와 계산 능력, 데이터 기억 능력이 획기적으로 향상되고 있으며 소프트웨어 측면에서도 학교수학을 획기적으로 변화 시킬 만한 특별한 컴퓨터 언어와 강력한 힘을 지닌 도구가 개발되고 있다.

 교실에서 사용하는 여러 수학 컴퓨터 소프트웨어의 가능성은 무한하다. 중학교 학생들은 소수 또는 최대 공약수 계산, 주어진 날짜가 어느 주 무슨 요일에 해당하는가를 계산하는 등의 프로그램을 만들 수 있다.

 대수를 배우는 학생은 연립방정식을 풀고 행렬 연산과 복소수 계산을 수행하기 위한 프로그램뿐만 아니라 상당히 다양한 축척과 변환 개념을 가진 곡선을 그리고, 직선과 곡선의 삽입, 근 구하기 등의 프로그램에서 매혹적인 도구를 발견할 것이다. 해석학을 배우는 학생들은 극한, 도함수, 그리고 적분 등을 계산하기 위한 프로그램을 쉽게 이용할 수 있다. 정교한 시뮬레이션을 하는 것뿐만 아니라 순열과 조합을 계산하기 위한 프로그램은 확률을 배우는 학생들이 이용할 수 있다. 통계를 배우는 학생들은 어떤 일반적인 분포에서 주어진 값에 따른 확률을 계산하거나, 여러 가지 훌륭한 통계 조사를 수행, 또는 주어진 자료의 회귀분석을 완성하는 데에 프로그램을 적용하는 것은 그리 문제가 되지 않을 것이다. 무수한 다른 응용들이 의심할 여지없이 매일 같이 만들어지고 있고, 그 가능성은 끝이 없는 것처럼 보인다. 소형컴퓨터에 수학적 프로그램의 조작이나 미분방정식, 선형대수, 그리고 약간의 추상대수까지 포함하여 더 넓은 분야에서 유용한 다양한 프로그램을 적용할 수 있다는 것이 앞으로 다가올 미래에 대한 올바른 예측이 될지도 모른다. 따라서 개발의 모델과 방법을 가르쳐 주는 project를 수학하는 교수 및 교사의 탄생이 필요한 때라고 생각한다.

     그러나 외국의 예와 비교해 볼 때 우리는 자체적인 소프트웨어가 없어 근본적인 취약점을 갖고 있었다. 최근 서울대 수학교육과의 조한혁교수가 개발한 MAL 프로그램은 초등학교에서 고등학교까지의 학생들에게 프랙탈등의 개념을 이해시키는데 큰 역할을 하였다. 이제 우리는 대학수학교육과 연구에 이와 같은 시도가 필요한 때라고 생각한다.

    특히, 본인은 선형대수학을 전공하여 이 분야의 시도로 미국 NSF 지원의 ATLAST project를 학습하며 수학적 개념의 깊고 직관적인 이해와 conjecture의 개발 및 증명 등 많은 가능성을 인식하고 본 논문에서는 조지아대학의 Edwards 교수의 LINPRAC을 성균관대 수학과의 이상구교수가 한글화한 선형대수학 교육용 소프트웨어인 HLINPRAC의 사용법을 설명하고자 한다.

선형대수학에서 수학 소프트웨어의 필요성

  선형대수학에서 중요한 역할을 하는 행렬에 대한 성질들을 컴퓨터를 이용하고자 한다. 행렬의 기본 연산에는 행렬끼리의 덧셈, 곱셈, 스칼라 배, 행렬의 거듭제곱등이 있으며, 선형연립방정식을 구하는 방법으로는 역행렬을 이용하거나, 가우스 소거법을 사용하는 방법이 있다. 행렬의 차수가 커지면 역행렬이나 가우스 소거법을 적용하는 것은 많은 시간을 소비하게 되고 계산이 복잡하게 되므로 우리는 컴퓨터를 사용하여 계산을 하고자 한다. 행렬이론에 관한 많은 software들이 있지만 1장에서는 "LINPRAC"(린플랙) 이란 software를 이용하고자 한다. "LINPRAC" 이란 softwarewin95, win3.1, Dos에서 시행이 가능하며, 한글판을 97년 성균관대학교 선형대수학 연구실에서 만들었고 "HLINPRAC" 이라 명명하였고 이를 이용해서 행렬의 기본계산, 행렬의 고유치 계산, 그리고 임의의 점을 지나는 근사 곡선 식을 구하여 좌표의 Curve Fitting을 하는 것을 알아보기로 한다.

 

 HLINPRAC의 사용법

HLINPRAC은 간단한 프로그램으로 다운 받아 직접 한글 옵션에 따라 한 두 번 해보면 쉽게 사용법을 숙지할 수 있는 장점이 있다.

행렬의 크기가 8차 이하 정사각행렬인 경우에 계산이 용이하다.

1. 시작은 hlinprac.exe 를 다운(http://math.skku.ac.kr/~mong/ocu/hlinprac.zip) 받아서 압축을 푼 후 새로 만든 subdirectory C:\hlinprac\ 에 복사하고 C:\hlinprac\ hlinprac.exe 를 실행시킨다.

2. 행렬을 만들려면, 먼저 M을 누르면 다음의 화면이 나온다.  

3. 다음 N을 누르면 행렬을 만들 수 있으며, 만들 행렬의 이름을 지정해 준다. (예: a.....)

4. 행과 열의 수를 지정하여 준다 (예: 3 과 3 )

5. 첨가될 열의 수와 원소를 정하여 준다.

6. 첨가행렬인 경우에는 가우스 소거법을 사용할 수 있고, 가우스 소거법을 하는 경우 그 과정을 따라가면서 볼 수도 있고 바로 답만 구할 수도 있다.

7. main menu로 돌아가서 연립 방정식의 해를 구할 수도 있다. ...

 

(예) 가우스(Gauss-Jordan) 소거법을 이용한 연립방정식 풀이

◇ 첨가행렬 입력

가우스 소거법을 이용하여 AX = b라는 8차 연립방정식을 풀기 위해서는 먼저 행렬 Ab의 값을 입력하여 첨가행렬을 만들기로 한다.

 

◇ 근사곡선 그리기

근사곡선을 그리려면, 명령어 C를 누르자.

data point의 좌표를 입력하면, 예를 들어 q를 눌러서 원하는 것의 명령어를 type 한다. 예를 들어, F를 누르면 근사곡선의 차수를 물어보게 되며 enter key를 누르면 근사다항식과 그래프를 볼 수 있게 된다.

근사곡선의 피팅에 있어서 HLINPRAC에 단점이 그래프 출력에 있어서 좌표 값들이 표현이 되지 않는다는 것이다. 그렇기 때문에 미리 X, Y의 최소값과 최대값을 나타내고 이에 해당하는 근사곡선을 그리는 것이었다. 하지만 이 값들은 우리가 입력을 한 좌표 값을 한 폭의 그래프로 나타내기 위해서 나온 값이기 때문에 어느 정도 추측을 할 수가 있었을 것이다.

위의 실행된 그래프를 보면 동그란 모양이 우리가 입력을 한 X, Y 좌표 값에 해당하는 좌표들이다. 10개의 점을 지나는 근사곡선을 구해 놓았다. 이 근사곡선은 Least Square(즉, 오차제곱의 최소값을 유지하는 곡선 피팅) 방식을 이용하여서 그려낸 것이다. 그리고 Degree Polynomial7차에 해당하는 즉, 7차 근사곡선이 된 것이다.

 

◇ 파일 저장하기

만든 행렬을 디스켓이나 하드에 저장하려면, W를 누른다.

만일 만든 행렬의 이름이 "a" 이었고, 하드에 이름을 u.mat로 저장하려면,

c:\u.mat 와 같이 타자한다.

 

◇ 파일 불러오기

저장한 파일을 불러오려면, R을 타자하고 하드에 있는 파일의 이름을 타자한다.

예를 들어 c:\a.mat 를 타자하고 저장할 이름을 다시 지정해준다.

a.mat

 

◇ Eigenvalue 구하기

이제는 행렬의 고유치에 대해서 구해보기로 한다. 우리가 앞에서 입력한 Matrix A를 가지고 고유값을 구하기에는 너무나 복잡한 특성방정식을 가지기 때문에, 그리고 HLINPRAC의 실습이라는 목적을 가지고 있으므로 조금은 간단한 행렬을 가지고 고유값을 분석하고 구해보기로 하자.

HLINPRAC에서는 그래프를 이용하여 고유값을 구하는 과정을 보여준다. 그리고 y=0일 때, x의 값을 Newton's Method를 이용해서 근사해를 구함으로써 얻는데, 여기서는 이 과정을 보기 위해서 간단한 형식의 행렬을 입력해 보시기 바랍니다..

위에 있는 설명을 바탕으로 프로그램을 자주 반복하다보면 Hlinprac의 강력한 기능을 여러분의 것으로 만들 수 있습니다. "Do your best"