이공학도를 위한 수학문제 해결사 maxima 소개 0...
TRANSCRIPT
이공학도를
위한
수학문제
해결사 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.2×103 1.2E3
1.2e3E
또는 e
는
일반변수로
사용할
수
없음
명령어
비고
절대값 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)
x
는 rad.
단위임에
주의
역삼각함수 asin(x), acos(x), atan(x), etc
쌍곡선함수 sinh(x),cosh(x),tanh(x) etc
명령어
또는
기호
비고
원주율 %pi
네이피어
상수 %e
허수
단위 %i
Ⅰ
기본
사항
1.
기본
연산자
2.
기본
수학
함수
3.
기본
상수
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>)
앞으로
이
글을
읽어
나갈
때 expr1)
은
수식표현을, eqn2)
은
방정식을, var3)
은
변수를
의미
하는
것으로
약속한다. expr
은
등호(=)
가
없는
수식이고, eqn
은
등호(=)
가
포함되어
있는
수식이라고
할
수
있다.
1) expression(
수식)
의
줄인
말
2) equation(
방정식)
의
줄인
말
3) variable(
변수)
의
줄인
말
명령어
사용
예
출력
설명
limit(sin(x)/x,x,0); 1lim→
sin
극한의
수식표현
sum(n^2,n,1,5); 55
수열의
합
1+4+9+16+25
=55
product(n^2,n,1,5); 14400
수열의
곱
1x4x9x16x25=
1440
전개
※
문법(syntax): expand(expr)
예제1
를
전개하시오.
+
또는
좀
더
완벽한
수학식으로
표현하고
싶으면
다음과
같이
타이핑한다.
+
아포스토로피기호(‘)
와
등호(=)
사이에
있는
부분은
연산을
수행하지
않고
그냥
화면에
출
력만
해준다.
인수
분해
문법(syntax) : factor(expr)
예제2
을
인수분해
하시오.
+
expand, factor
이외에도
수많은
명령어들이
준비되어
있는데
앞에
기술한
공식사이트에서
Maple User's Manual
을
다운받아서
참고하기
바란다.
표1
몇
가지
유용한
명령어
사용예
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
을
입력하고, ① , ②, ③, ④ ⑤
을
구하시오
+
행렬의
곱을
계산할
때 *(asterisk)
가아니고 .(period)
를
사용해야
한다.
① ② ③
④ ⑤
예제3
앞
예제에서
입력한
행렬 A
의 ①
행렬식의
값 ②
역행렬 ③
고유치 ④
고유벡터 ⑤
계수
를
구하시오.
+
고유치에서
뒤에
있는 [1,1]
은
고유치
해의
중복도(multiplicities)
를
나타낸다.
고유벡터에서
맨
뒤에
있는
은
각각의
고유치에
해당되는
고유벡터이다.
Ⅳ
미적분(Calculus)
1.
미분
문법 diff(expr,x,n)
expr
은
미분하고자하는
식이고, x
는
미분
변수, n
은
미분
회수이다.
예제1
를 x
에
대해
미분하시오.
+
단순히
미분
결과뿐만
아니라
좀
더
수학적인
식으로
나타내고
싶으면
아래와
같이
코딩한
다.
세
가지
다
동일한
결과를
얻을
수
있다.
+ +
+
예제2
에서 x=2
에서의
미분
계수를
구하시오.
+
위에서 %
는
직전에
실행한
결과( )
를
나타낸다.
또는
한
줄로
코딩하면
+
예제3 sin
를 x
에
대하여
세
번
미분하시오.(y'''
또는
)
+
또는
+
예제4
일
때
다음을
구하시오.(
편미분
문제)
1)
2)
1)
+
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
이다.
매일
매일
연구나
강의하면서
일어나는
전공분야의
크고
작은
문제들을
손쉽게
해결하는데
큰
도움을
받고
있
다.