wxMaxima를 설치하고 실행시키면 명령어를 입력할 수 있는 윈도우가 실행된다. wxMaxima에서는 입력 명령어와 출력 결과가 하나의 쌍으로 표시되며 화면 왼편에 다음 그림과 같은 모양의 바가 표시 되는데 이것을 셀(cell)이라고 칭한다.


[그림 1[ 명령 입력 단위인 셀(cell)


하나의 셀을 가리키는 이 바의 상단의 작은 삼각형을 클릭하면 셀의 내용을 접었다 폈다 할 수 있다. 이제 이곳에 명령어를 타이핑해서 입력하면 그 계산결과가 바로 같은 셀 안에 표시된다.

 처음에 wxMaxima에서 주의할 것은 명령을 입력하려면 그냥 [Enter]키가 아니라 󰍬[Shift]+[Enter] 를 눌러야 명령이 입력된다는 것이다. 하나의 명령이 끝났다는 표시는 세미콜론(;) 혹은 달러($)표시를 명령 끝에 타이핑하면 되지만, [Shift]+[Enter]를 입력하면 자동으로 명령 끝에 세미콜론(;)이 붙고 결과가 표시된다.



 한 줄에 여러 개의 명령을 입력하고 싶을 때는 세미콜론(;) 또는 달러($)로 구분하면 되며, 차이점으로는 달러($)로 끝나는 명령의 출력은 화면에 표시되지 않는다는 것이다. 다음 예에서 x^2+2*x$ 명령은 $로 끝났기 때문에 결과가 화면에 표시되지 않는다.



위에서 sqrt()함수는 제곱근(square root) 값을 입력하는데 사용된다. sin( ), cos( )함수는 각각 사인함수와 코사인함수를 입력하는데 사용된다. 사인함수를 입력하는데 그냥 sinx라고 하면 안 되고 반드시 독립변수에 괄호를 쳐서 sin(x)라고 입력해야 됨에 유의하자.




Posted by 살레시오
,

 맥시마(Maxima)로 미분방정식을 풀 수 있다. 이때 사용되는 대표적인 함수로서 ode2() 함수와 desolve() 함수가 있는데 이 중에서 ode2()함수를 이용하여 아래의 2계 선형 상미방을 풀어보자.

이것을 손으로 풀면 A4용지 한 페이지가 꽉 찰 정도로 풀이 과정이 꽤 복잡한 문제이다. ode2()함수의 첫번째 인자는 미분방정식을 입력해야 된다. wxMaxima에서는

y'(x) 은 'diff(y,x)
y''(x) 는 'diff(y,x,2)

로 입력한다. 그리고 ode2()의 두 번째 인자는 함수(이 경우는 y), 세 번째 인자는 독립변수(이 예제에서는 x이다.)를 넣어주면 된다.


위에서 %k1, %k2는 적분상수를 표시한다. 초기 조건(initial condition)을 입력하여 적분상수를 구하려면 다음과 같이 ic2()함수를 이용하면 된다.


이것으로부터 미방의 해는 y=sin(x) + 3x/25 - 8/25 + 3.1e-0.5x 임을 알 수 있다.


 이 해의 그래프를 그려보고 싶다면 wxplot2d()함수를 이용하면 된다.

위 에서 wxplot2d()의 첫 번째 인자로 도시하려는 함수를 입력해야 하는데 rhs(%o2)라고 되어 있다. 이것은 결과가 저장된 변수 %o2 의 우변(right-hand side)을 추출하는 함수이다. 그리고 두 번째 인자는 [x,0,20] 인데 x축의 범위를 설정하는 것이다.



Posted by 살레시오
,

 맥시마(Maxima)에서 라플라스 변환을 구하기 위한 함수로 laplace() 가 있다.

         문법 : laplace ( f , t , s ) 함수, 시간 변수, 라플라스 변수의 순으로 입력한다.

예를 들어서 1, eat, sin(wt), cosh(at) 함수들의 라플라스 변환을 구하면 다음과 같다.

약간 더 복잡한 함수로 eatcos(wt), tsin(wt), δ(t), t^1.5 의 라플라스 변환은 다음과 같다.

역라플라스 변환은 ilt() 함수를 이용하면 된다.

         문법 : ilt( F, s, t) 라플라스 함수, 라플라스변수, 시간변수 순서대로 입력한다.

예를 들면 다음과 같다.


이와 같이 맥시마를 이용하면 라플라스 변환과 역라플라스 변환 결과를 손쉽게 구할 수 있다.



Posted by 살레시오
,

 학부생들에게는 (공대생이라 할 지라도) 수학 계산에 쓰이는 프로그램이 낯설 것이다. 여기서 '수학 계산에 쓰이는 프로그램'이라는 것은 윈도우를 깔면 기본으로 제공되는 계산기 프로그램을 말하는 것이 아니라 수학 문제를 해결하는데 사용되는 전문적인 프로그램을 말하는 것이다.


 사실 공대에 들어와서 <일반 수학>이나 <공학 수학>같은 과목들을 배울 때에는 손으로 풀거나 공학용 계산기 같은 것으로 함수 입력해서 그래프를 그리고 하는 방식이 아직까지는 익숙한 풍경이다. 학부생들이 전문적인 컴퓨터 프로그램을 이용한다는 것은 그리 일반적이지는 않은 것 같다. '곱셈이나 나눗셈' 하면 '계산기'가 보통은 떠오르지만 '방정식'을 푸는데 컴퓨터로 그 식들을 입력하고 엔터키를 치면 그 해를 간단히 구할 수 있다는 것을 아는 학부생들이 얼마나 될까.


 이러한 수학 과목에서 매스메티카(mathematica)나 매트랩(matlab)을 실습에 도입한 교재들이 간간히 있기는 하다. 하지만 이들 패키지는 고가의 상용 제품들이므로 학부생들이 자유롭게 실습에 이용하기에는 제약이 따른다. 하지만 훌륭한 대안이 있는데 바로 Maxima와 Sage라는 프리웨어들이다.

[그림 1] Maxima의 외형

 이 그림의 첫번째 명령에서 보면 입력방정식이 x2+ax+b=0 으로 a와 b라는 기호를 어떤 수치값을 갖는 변수가 아니라 문자상수로 취급하여 그 해를 보여줌을 알 수 있다. 이렇게 문자 상수를 숫자처럼 다루는 것을 기호식 해석(symbolic analysis)라 하고 mathematica, maple, maxima, sage와 같은 프로그램이 사용된다. 반면, 변수 이외의 모든 기호는 어떤 수치값을 지정하여 문제를 푸는 것을 수치 해석(numerical analysis)라고 하고 일반 계산기 (프로그램), MATLAB, SciLab, Octave, FreeMat 등의 프로그램이 사용된다.


[그림 2] Sage의 외형


 개인적인 관심은 <공학 수학>의 교과 과정에 Maxima나 Sage 같은 프로그램의 사용법을 접목시킬 수 있는가이다. 공과 대학의 수학 과목들이 학생들이 주어진 공학적 문제를 수학적으로 모델링하고 그것을 해결하는 능력을 배양하는 데에 목적이 있지만 이제는 컴퓨터를 이용한 문제 해결 능력도 같은 비중으로 다루어져야 한다고 생각하기 때문이다. 즉, 기존에는 수학에서 컴퓨터 이용 능력이 보조적인 역할로 다루어졌지만 이제는 동등하거나 혹은 더 비중있게 다루어져야 하지 않을까 하는 생각이 든다.



Posted by 살레시오
,