이공학도를위한수학문제해결사 Maxima 소개 0 개요 무료공개소프트웨어 Maxima는작지만매우강력한수학프로그램이다. 이공학도들을위하여전공관련된수학적인문제를거의해결해줄수있다. 수치계산은물론이고대수적인계산도거의완벽하게수행한다. 이런종류의소프트웨어로 Maple, Mathematica, Mathcad 등이있는데가격이적어도수백만원에서수천만원에이른다. Maxima를개발하고수십년간에걸쳐서끊임없이새로운버전및소스까지도무료로공개하고있는개발자에게늘감사하는마음을가진다. Maxima 가기본적으로할수있는것들. - Equations... 대수방정식및각종선형및비선형연립방정식등의해를구해준다. - Algebra... 일반대수학은물론선형대수학에서의각종연산수행한다. - Calculus... 미적분및편미분중적분에대한대수해및수치해등을구해준다. - ODE... 상미분방정식의일반해및초기조건을고려한해등을구해준다. - Plot... 다양한옵션에따라 2D 및 3D 그래프를나타낸다. - Simplify... 각종수식계산및표현식등을간단히표현해준다. 이외에도 Maxima는각종수학문제, 단위변환, 라플라스변환, 푸리에급수, 통계학등의문제를해결할수있는무궁무진한내장함수들을구비하고있다. 또한반복문 (do~loop) 및조건분기문 (if~then~elseif~) 등이있어서웬만한프로그램이가능하여간이언어로도사용할수있다. 다운로드및설치 Maxima 프로그램을실행시키려면 Maxima를설치해야한다. Maxima는아래주소로접속해서무료로다운로드할수있다. 공식사이트주소 http://maxima.sourceforge.net 아래주소로직접액세스하여도된다. http://sourceforge.net/projects/maxima/files/maxima-windows/ 현재최신버전은 maxima-5.31.2.exe 이다. maxima-5.31.2.exe를한번만실행시키기만하면프로그램설치 O.K. 고급사용자들은 User Manual을다운받아서참고하기바란다. 방대한분량의 User Manual 도무료로다운로드할수있다. 스마트폰용애플리케이션도 Play 스토어에서 maxima on Android로검색하면쉽게다운받아서설치할수있다.
Ⅰ 기본사항 1. 기본연산자 명령어 비고 더하기 + + 빼기 - - 곱하기 * 매트릭스연산에서는. ( 마침표 ) 를사용 나누기 / 지수 ^ ** 도같이사용할수있음 1.2E3 지수표기 1.2 10 3 1.2e3 E 또는 e 는일반변수로사용할수없음 2. 기본수학함수 명령어 절대값 abs(x) 역수 1/x 또는 x^(-1) 제곱근 sqrt(x) x^(1/n) x^(m/n) 지수합수 %e^x 또는 exp(x) 자연로그 ln log(x) 상용로그 log log(x)/log(10) 삼각함수 sin(x),cos(x), tan(x), csc(x), sec(x), cot(x) 역삼각함수 asin(x), acos(x), atan(x), etc 쌍곡선함수 sinh(x),cosh(x),tanh(x) etc 비고 x 는 rad. 단위임에주의 3. 기본상수 명령어또는기호 원주율 %pi 네이피어상수 %e 허수단위 %i 비고 4. Maxima 맛보기 일반계산기처럼사용하여보자. Maxima 화면에서이라고타이핑한다음 shift+enter 키를눌러보라. 그냥 Enter 키만누르면명령을실행하지않고단순히줄만바꾸고, 또다른명령어입력을기다리는상태가된다. 어떤명령어를실행시키기위해서는반드시 shift+enter 키를누르는것에주의할것. 맨끝에있는 ;( 세미콜론 ) 은명령어의끝이라는의미로반드시붙여주어야한다. 아래와같은화면을볼수있다.
그림 3 맥시마맛보기 (%i1) 과 (%o1) 은실제로입력하는것이아니고 maxima에서입력1(%i1) 과출력1(%o1) 을나타내기위해서자동으로붙여준다. 번호는자동으로증가되면서붙여진다. 입출력번호를초기화하려면맥시마화면맨위에있는메인메뉴에서 Maxima 밑에있는서브메뉴 Restart Maxima를클릭하면된다.( 그러나굳이이럴필요는없다 ) 다음에는 실행해보라. 연이어서다음을실행해보라., numer 를붙여주면수치 (numeric value) 로나타낸준다. fpprintprec:6$ 유효숫자의자릿수를 6자리로지정한다. (format print precision의준말 ) 맨끝의 $ 표시는역시명령의끝이라는의미로붙여주는것인데 ;(semi colon) 와다른점은그행의실행결과를내부적으로는처리하되화면에는나타내지는않는다는점이다. 1) 간단한대수계산 sin 를계산하는문제를풀어보자. 를입력하고 sfift+enter 키를누르면 ( 앞으로는 로표시 ) 이출력될것이다.
2) 수학함수사용예 sin 의계산 sin 의계산 윗식에서는 45 도 (degree) 를라디안 (radian) 으로바꾸기위해 %pi/180 를곱해준다. 의계산 앞의문제는다음과같이코딩해도같은결과를얻을수있다. float 함수는결과를소숫점형태로바꾸어준다. % 기호는항상직전에실행한결과를의미한다. 3) 다중계산예 2+3, sin,, tan 계산결과를한줄에나타내라. 다중계산을하기위해서는반드시 [ ] 로묶고컴마 (,) 로분리해주어야한다. 4) 전개 (<expand>) 및인수분해 (<factor>) 앞으로이글을읽어나갈때 expr 1) 은수식표현을, eqn 2) 은방정식을, var 3) 은변수를의미하는것으로약속한다. expr은등호 (=) 가없는수식이고, eqn은등호 (=) 가포함되어있는수식이라고할수있다. 1) expression( 수식 ) 의줄인말 2) equation( 방정식 ) 의줄인말 3) variable( 변수 ) 의줄인말
전개 문법 (syntax): expand(expr) 예제 1 를전개하시오. 또는좀더완벽한수학식으로표현하고싶으면다음과같이타이핑한다. 아포스토로피기호 ( ) 와등호 (=) 사이에있는부분은연산을수행하지않고그냥화면에출 력만해준다. 인수분해 문법 (syntax) : factor(expr) 예제 2 을인수분해하시오. expand, factor 이외에도수많은명령어들이준비되어있는데앞에기술한공식사이트에서 Maple User's Manual 을다운받아서참고하기바란다. 표 1 몇가지유용한명령어사용예 명령어사용예출력설명 limit(sin(x)/x,x,0); 1 sum(n^2,n,1,5); 55 product(n^2,n,1,5); 14400 sin lim 극한의수식표현수열의합 1+4+9+16+25 =55 수열의곱 1x4x9x16x25= 1440
gcd(6,10); 2 최대공약수 lcm(6,10); 30 최소공배수 factor(20); 소인수분해 trigreduce(sin(x)^3); trigexpand(sin(alpha+beta)); ratsimp((x^3-1)/(x-1)); subst([x=1,y=2,z=3],x^2+y^2+z^3); 32 고차삼각함수의 차수를 낮추어 주기때문에적 분할때유용하 다 삼각함수의전개 대수식을간단히 정리해준다식의값구하기 x=1,y=2,z=3 일 때 의값 5. 간단한프로그램예세개의점수를입력받아서평균을구한다음평균이 90점이상이면수 (Soo), 80점이상이면우 (Woo), 70점이상이면미 (Mee), 60점이상이면양 (Yang), 60점미만이면가 (Gha) 로평가하고총점, 평균및평어를출력해주는프로그램을만들어본다. 입력변수점수 : s1. s2, s3 계산변수총점 : Sum, 평균 : Avg 평어 : grade /* Progrma title and/or any comment here */ print("input data -----------")$ '[Jumsu1,Jumsu2,Jumsu3]=[s1,s2,s3]:[79,65,87]; Sum:s1+s2+s3$ Avg:Sum/3$ Avg:floor(%+0.5)$ if Avg>=90 then grade:soo elseif Avg>=80 then grade:woo elseif Avg>=70 then grade:mee elseif Avg>=60 then grade:yang else grade:gha$ print("output data ----------")$ print("total=",sum," Average=",Avg," Grade is ",grade)$
위프로그램에서 floor 함수는계산결과를반올림해서정수로처리하기위해서사용하였 다. 점수를바꾸어서실행시켜보라. Ⅱ Equation( 방정식 ) 1. solve 명령어 문법 (syntax) solve(eqn, var); solve([eqn1,, eqnn], [var1,, varn]); 연립방정식처럼식이여러개있을때는반드시 [ ] 를쓰고, 각방정식및미지변수를컴마 (,) 로분리해주어야한다. 예제 1 2 차방정식 의해를구하라. 당연한결과지만이차방정식의근의공식임을알수있다. 예제 2 이차방정식 을푸시오. 예제 3 x,y 에관한 2 원 2 차연립방정식의해를구하라.
예제 3 4 차방정식 을풀어보시오. 위의 4 차방정식은허근 2 개와실근 2 개를가짐을알수있다. %i 는 이다. 2. algsys 명령어 문법 algsys([eqn1,, eqnn], [var1,, varn]); algsys(algebraic system) 는연립방정식에서만쓸수있다. 예제 4 앞의예제 3 을 algsys 명령어로풀이하시오. 3. find_root 명령어 때로는방정식의해가대수적으로는구할수없거나, 매우어려운경우도많다. 이럴때 find_root 명령어는수치해를구하는데매우강력한수단이된다. 문법 find_root(eqn,var,a,b); a 와 b 는구하고자하는해 (solution) 가포함되어있는구간을나타낸다. 즉, a 해 b 이다. 예제 5 삼각방정식 tan 를만족하는 를구해보자. tan 와 그래프를그려보면이방정식의해는무수히많음을알수있다. x=0 는하나나의해가되지만의미없는해이다. 그중에서 π/2 x 3π/2 구간에서해를구해본다.
Ⅲ 선형대수 (Linear Algebra) 1. 행렬 (matrix) 의입력 문법 : matrix (row1,, rown) row1 은제 1 행이고, rown 은제 N 행이다. 예제1 를입력하시오. 위와같이입력하여실행하면 A 에그행렬을기억시켜둔다. 행렬의규모가커지면다음과같이행단위로한줄씩입력하는것이보기에편하다. 2. 행렬 (matrix) 연산예제2 을입력하고, 1, 2, 3, 4 5 을구하시오 행렬의곱을계산할때 *(asterisk) 가아니고.(period) 를사용해야한다. 1 2 3 4 5
예제 3 앞예제에서입력한행렬 A 의 1 행렬식의값 2 역행렬 3 고유치 4 고유벡터 5 계수 를구하시오. 고유치에서뒤에있는 [1,1] 은고유치해의중복도 (multiplicities) 를나타낸다. 고유벡터에서맨뒤에있는 고유벡터이다. 은각각의고유치에해당되는 Ⅳ 미적분 (Calculus) 1. 미분 문법 diff(expr,x,n) expr 은미분하고자하는식이고, x 는미분변수, n 은미분회수이다. 예제 1 를 x 에대해미분하시오. 단순히미분결과뿐만아니라좀더수학적인식으로나타내고싶으면아래와같이코딩한 다. 세가지다동일한결과를얻을수있다.
예제 2 에서 x=2 에서의미분계수를구하시오. 위에서 % 는직전에실행한결과 ( ) 를나타낸다. 또는한줄로코딩하면 예제3 sin를 x에대하여세번미분하시오.(y''' 또는 ) 또는 예제 4 일때다음을구하시오.( 편미분문제 ) 1) 1) 2) 2)
2. 적분 문법 : 부정적분 integrate(expr, x) 정적분 integrate(expr, x, a, b) 예제 1 를 x 에관하여적분하시오. 또는 예제 2 를 x=0 에서 2 까지정적분 ( 수치적분 ) 하시오. 또는 예제 3
또는 예제 4 3. 미분방정식 문법 : 상미분방정식 (Ordinary Differential Equation) 의일반해 ode2 (eqn, dvar, ivar) eqn 은미분방정식, dvar은종속변수 (y), ivar은독립변수 (x) 초기조건 (initial condition) 문제 ic1 (solution, xval, yval) ic2 (solution, xval, yval, dval) xval은 x값, yval은 y값, dval은 1계미분계수 경계조건 (boundary condition) 문제 bc2 (solution, xval1, yval1, xval2, yval2) 미분기호입력방법, :, :
예제 5 y 는 t 의함수일때상수계수 2 계선형상미분방정식 sin 의일반해및초기조건, 를만족하는해를구하시오. 일반해 (general solution) 윗식에서 %k1, %k2 는임의상수이다. %e 는 초기조건, 를만족하는해 예제 6 1 계미분방정식 sin 의일반해및초기조건 를만족하는해를구하시오. 일때 4. 멱급수 (power series) 전개 문법 : taylor (expr, x, a, n) (x-a) 의멱급수로최고차항 (x-a) n 까지나타낸다. 예제 7 sin 를 의멱급수로 7 차항까지나타내시오.
예제 8 를 의멱급수로 5 차항까지나타내시오. Ⅴ 그래프 형태의 2D 그래프및 형태의 3D 그래프를그릴수있다. 뿐만아니 라옵션을사용하면극좌표계, 원주좌표계, 구면좌표계등모든그래프를그릴수있으며눈금, 크기, 범례, 색깔, 선의굵기및모양, 심볼등거의모든것들을컨트롤할수있다. 문법 : wxplot2d(expr, x_range,, options, ), options,... plot2d(expr, x_range,, options, ), options,... wxplot3d (expr, x_range, y_range,, options, ), options,... plot3d (expr, x_range, y_range,, options, ), options,... wxplot 은현재작업창에그래프를출력하해주고, plot 은별도의새창에그래프를출력한 다. 굵은글씨로표시한항목은생략할수없는것들이다. 2d, 3d 는각각이차원 3 차원그 래프를나타낸다. 예제 1 sin 그래프 예제 2 tan 과 의그래프
두개이상의그래프를동시에그릴때는반드시함수식을 [ ] 로묶고, 컴마 (,) 로분리해주 어야한다. 예제3 의그래프 Ⅵ Maxima 소개를마치면서 이공계학생들에게수학은필수적인도구이다. 이글에서소개한내용은 Maxima가가지고있는기능중에서극히일부분만을소개한것에불과하다. 필자는아침에연구실에출근하면컴퓨터를부팅한다음맨먼저화면에띄워놓는것이 Maxima이다. 매일매일연구나강의하면서일어나는전공분야의크고작은문제들을손쉽게해결하는데큰도움을받고있다.