공학적 도구를 이용한 행렬의 계산

 

 

성균관대학교 행렬이론 연구실

 

지도교수 : 이 상 구

 

 

 (I) 자바와 엑셀 이용한 행렬의 계산

 

    

  선형대수학을 배우고 우리는 3, 4, 5차 정도의 계산의 예를 다루는 것만을 학습하였다. 그러나 실제로 선형대수학을 배운 수학전공은 물론 자연계의 학생들은 졸업 후 현장에서 방법은 아는데 손으로 직접 풀 수는 없는 큰 크기의 행렬을 만나게 된다.

 

  이런 현상은 폰 노이만이 최초의 컴퓨터를 만든  50년 전이나 현재나 같습니다. 그러나 우리가 살고있는 사회는 50년 전과는 비교할 수 없을 정도로 발전하였다. 특히 과학기술에서는 더욱 그렇다.

 

  결국 소프트웨어는 기본적으로 수학과는 떼어놓고 생각 할 수 없다는 것이고, 우리가 MATHEMATICA 등의 프로그램의 이용에 대하여 논하는 것은 아주 자연스러운 일이라고 생각한다. (다음 주소에서 다양한 프로그램의 이용을 확인 할 수 있다.)

http://matrix.skku.ac.kr/sglee/java/java_all.html

 

  그러나 궁극적으로 지난 10년간 개발된  우리에게 가용했던 소프트웨어는 그래픽 계산기와 MATLAB, MATHEMATICA,  Maple, GSP, CAS등에 한정되었다. 게다가 이런 모든 것들이 외국에서 개발된 도구로서 이를 수백 만 명이나 되는 전국의 학생들을 대상으로 수입하여 각 PC 실에서 매년 업그레이드하며 집에서의 예습 복습을 위해서는 불법복제를 염려하며 이용을 강요하는 것에 대한 문제점 때문에 궁극적으로는 독립적인 프로그램이 필요하였다. 인터넷을 이용한 JAVA 프로그램이 이러한 문제에 대한 해법이 된다고 생각하여 아래와 같은 도구를 만들었으니 이것을 이용하여 구한 답을 확인하는 것을 권장한다.

 

(1) 인터넷 상에서의 연립일차방정식의 풀이

 

주소 : http://matrix.skku.ac.kr/newMatrixCal/Test.html

 

[1] 행렬의 행렬식(determinant)를 계산할 수 있는 JAVA 프로그램

 (Determinant 계산과정)

1. 행렬의 차수를 입력한다.

2. 구하고자 하는 행렬의 성분을 입력한다.

3. Det를 클릭한다.

 

(마방진을 계산하는 방법)

1. 구하려는 차수를 입력한다.

2. 마방진을 클릭한다.

 

 

주소 :  http://matrix.skku.ac.kr/calculus/Matrixcal/Applet1.html 도 참고하세요!

 

 

[2] 다양한 선형대수학을 위한 JAVA 프로그램

 

(이용 가능한 JAVA 프로그램)

1. 그래프 그리기

2. 행렬연산

3. 연립방정식 풀이

4. 내적계산

*해당 항목을 클릭하여 행렬을 입력하고 연산키를 클릭하면 답이 보여진다.

 

 

 

[3] Linear Algebra Calculator

 

(사용법)

 

1.  3차 행렬 를 입력한다.

2. 로 복사한 후 를 수정한다.

3. 등을 클릭하여 결과를 확인한다.

 

위와 같은 방법으로 4차 행렬의 여인자, 역행렬, 행렬식 등을 구할 수 있다.

 

(2) 프로그램(엑셀)을 이용한 연립일차방정식의 풀이

 

  우리 주위에서 쉽게 접근할 수 있는 프로그램으로 MS-오피스 안에 있는 엑셀프로그램에서도 연립방정식을 계산할 수 있다.

  엑셀의 ARRAY 기능과 내장함수 MINVERSE와 MMULT를 이용하여 일차연립방정식을 푼다.  

 

  주어진 선형 연립방정식 문제는 행렬을 이용하여 풀 수 있다. 엑셀 내부의 행렬 함수들을 사용하면, 행렬까지 계산할 수 있다. 행렬을 이용하여 선형 연립방정식 을 아주 쉽게 해결할 수 있다. 여기서 는 행렬이고, 는 열벡터이며 구하고자하는 미지수이다. 는 상수의 열벡터이다. 이 방정식을 풀기 위해서 행렬의 양변에 역행렬을 곱하면 된다. 즉, . 정의에 따르면 행렬에 역행렬을 곱하면 단위행렬이 되어 버리기 때문에 이 방정식은 다음과 같이 표현된다. 따라서 그 근인 를 얻게 된다.

이것은 아주 간단해 보이지만 실제로는 역행렬을 구하여야 한다. 엑셀에서는 역행렬을 구하는 함수인 MINIVERSE 함수를 내장하고 있다.

 

다음의 예를 살펴보도록 하자.

 

다음의 방정식들은 3원 1차 연립방정식들이다.

이 방정식의 해는이다. 이 방정식을 행렬로 나타내면 다음과 같다.

이 문제를 워크시트에서 실행하는 과정을 알아보자.

 

1. 행렬 의 역행렬을 구하기 위하여 적당한 셀에 역행렬을 구하는 함수(MINVERSE)를 적용하여 역행렬을 구한다. 역행렬을 구하는 과정(MINVERSE이용)은 다음과 같다

(1) 아래와 같이 계수행렬 와 상수 열벡터 를 입력한다.

(2) 구하고자하는 역행렬이 표시될 셀의 위치를 지정한다.(예, A16:C18)

(3) 함수 마법사에서 MINVERSE를 선택한다.

(4) 배열입력에서 원래행렬의 셀영역을 마크하여 선택한다.(예, A11:C13)

(5) Enter를 눌러 계산을 수행한다.

(6) 수식표시를 함수마법사 옆에서 Ctrl+Shift+Enter를 누르면 다음과 같이 결과가 (A16:C18 사이의   블록)  표시된다.

2. 의 역행렬과 계수 의 값을 곱하여 결과 값 의 열을 구한다. 이 과정은행렬과 행렬의 곱은 MMULT(,) 함수를 이용하며 구하는 과정은 MINVERSE함수때와 같은 방법으로 결과 가 표시 될 위치(E16:E18)를 지정하고 MMULT(A11:C13, E11:E13)함수를 실행한 후 Ctrl+Shift+Enter를 누르면 E16:E18 사이에 3×1 블록에 해가 나온다.

   

계산된 결과는 이다.

 

 

 (II) MATLAB을 이용한 행렬의 계산

 

  MATLAB은 강력한 수학적 능력을 갖고 있고, 또한 쉽게 주어진 상황을 코딩화 할 수 있다. 그 동안 전산수학과 행렬론 강의를 들으며 Mathematica나  Hlinprac과 같은 수학관련 도구를 들어 보고 또 간단히 나마 사용해 보았는데 MATLAB만큼 강력하지 않다고 한다. 현재 외국의 여러 나라에서도 모든 코딩을 대부분 MATLAB으로 전환하려는 추세인 듯 하다. 우리나라에서 개발 된 "셈툴로(Cemtulro)"라는 소프트웨어도 MATLAB과 같은 구조이다.

 

  과거에는 Fortran으로 작성되었으나, 현재는 MathWorks사에서 C++로 작성하였다. 일반적으로 MATLAB이 이용되는 범위는 수학과 관련된 계산이나 알고리즘 개발, 상황 모델링과 data분석, 여러 가지 과학과 공학적인 그래픽 표현, Graphical User Interface에 의한 에플리케이션 개발등이다.

 

 

http://matrix/sglee/algebra/atlastkp/matlab/

http://matrix.skku.ac.kr/sglee/krf/linearalgebra/multi/l_matlab/index.html

 

 

 (III) MATHMATICA를 이용한 행렬의 계산

 

http://matrix.skku.ac.kr/sglee/algebra/atlast/index.html

 

Mathematica는 컴퓨터로 수학을 하기 위한 아주 유용한 툴입니다. 특히 Mathematica는 수학을 이용하여 이학과 공학들에 유용한 기능을 제공하기도 합니다. 특히 Mathematica는 수학을 이용하기 위한 툴이기 때문에 자체의 이용법을 익히기 위해서는 수학적인 이해도 필요합니다.

 

1. Mathematica의 용도

 

수치와 기호계산 함수와 데이터의 시각화

고급 프로그래밍 언어

모델링 및 데이터 분석

특정 어플리케이션을 위한 소프트웨어 플렛폼

외부 프로그램에 대한 제어 언어

수식과 그래픽등이 복합된 문서작성기

2. Mathematica의 사용법 (Wolfram Research Mathematica Manual, 3rd Edition 참조)

 

제 1 장 : 설치

제 2 장 : Mathematica의 대략적인 설명

제 3 장 : 수치에 대한 계산법 및 표현법 - chap3.nb

제 4 장 : 발전된 표현법 - chap4.nb

제 5 장 : Mathematica의 사용

제 6 장 : Mathematica의 계산법 - chap6.nb

제 7 장 : 변수계산법 - chap7.nb

제 8 장 : 수치계산법 - chap8.nb

제 9 장 : 함수와 프로그래밍 - chap9.nb

제 10 장 : 리스트 사용법과 벡터 그리고 행렬 - chap10.nb

제 11 장 : 그래픽과 사운드 - chap11.nb

 

http://matrix.skku.ac.kr/sglee/krf/linearalgebra/multi/usage/index.html

 

 (VI) 성균관대 JAVA를 이용한 행렬의 계산

 

http://matrix.skku.ac.kr/newMatrixCal/Test.html

 

  여러 시행과 보완을 거치며 독창적이고, 외국의 소프트웨어에 의존하지 않으며 궁극적으로 누구든지 언제 어디서나 사용이 가능한 아래의 SKKU-JAVA 도구를 개발하여 인터넷에 올려 놓게 되었습니다.

 

 http://matrix.skku.ac.kr/newMatrixCal/Test.html

 

 

 (V) 성균관대 HLINPRAC 을 이용한 행렬의 계산

 

http://matrix.skku.ac.kr/sglee/krf/linearalgebra/multimediaproject/2week/20203/20203.html

 

이는 1993-1998년 사이에 사용한 파스칼 7.0으로 짠 도스용 행렬 계산 도구입니다. 교육적으로 아주 우수한 프로그램이며 효과적으로 이용해 왔습니다. 그러나 현재는 Pentium 3 이후의 하드웨어에서는 프로그램을 완전히 다시 짜야합니다.

 

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

 

  선형대수학에서 중요한 역할을 하는 행렬에 대한 성질들을 컴퓨터를 이용하고자 한다. 행렬의 기본 연산에는 행렬끼리의 덧셈, 곱셈, 스칼라 배, 행렬의 거듭제곱등이 있으며, 선형연립방정식을 구하는 방법으로는 역행렬을 이용하거나, 가우스 소거법을 사용하는 방법이 있다. 행렬의 차수가 커지면 역행렬이나 가우스 소거법을 적용하는 것은 많은 시간을 소비하게 되고 계산이 복잡하게 되므로 우리는 컴퓨터를 사용하여 계산을 하고자 한다. 원저작자는 Edward Penny 교수의 허가를 얻어 "HLINPRAC" 이란 software를 화학과 학생과 함께 한글판을 성균관대학교 선형대수학 연구실에서 만들었고 이를 이용해서 행렬의 기본계산, 행렬의 고유치 계산, 그리고 임의의 점을 지나는 근사 곡선 식을 구하여 좌표의 Curve Fitting을 하는 것이 가능하다.

 

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

 

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

 

  여러 가지를 고려하여 궁극적으로 누구든지 언제 어디서나 사용이 가능한 아래의 SKKU-JAVA 도구를 개발하여 인터넷에 올려 놓게 되었습니다.

 http://matrix.skku.ac.kr/newMatrixCal/Test.html

 

 

 (VI) 성균관대 Mathrix 을 이용한 행렬의 계산

 

이는 1995-2000년 사이에 사용한 윈도우용 행렬 계산 도구입니다. 그래프 기능은 좋으나 다른 기능이 단순하여  누구든지 언제 어디서나 사용이 가능한 SKKU-JAVA 도구를 개발하여 인터넷에 올려놓게 되었습니다.

 

http://matrix.skku.ac.kr/sglee/krf/linearalgebra/multi/mathrix/mathrix.htm

 

 http://matrix.skku.ac.kr/newMatrixCal/Test.html

  참고 : http://matrix.skku.ac.kr/calculus/Matrixcal/Applet1.html

 

 

    

맺는말 :

 

이제 여러분은 선형대수학에서 배운 행렬과 행렬의 집합, 그 들 사이의 함수에 대한 지식을 사장시키지 않고 실제로 주위에서 만나는 문제를 행렬을 이용해 표현하고 위의 다양한 도구를 이용하여 실질적으로 답을 구 할 수 있는 계산 능력은 갖추었습니다.

 

 

읽을거리 : 행렬이론의 역사:

 http://matrix.skku.ac.kr/sglee/SampleLecture-3week/index.htm 행렬의 이용(수학적모델링): http://matrix.skku.ac.kr/sglee/l_LAAppl/index.html

 

  성균관대학교 이상구 교수