요즘 회사에서 일이 생겨서 Symbolic Math 라는 쪽을 공부 하고 있다. 내가 뭐 수학적으로 아주 뛰어나서 이걸 보는건 아니고, 이쪽 관련 툴을 소개해야 할 필요가 있어서 메뉴얼과 튜토리얼을 열심히 보면서 공부하고 있는 중이다.

일반적으로 프로그래머는 Symbolic Math라는 말을 못 들어 봤을지도 모르겠다. 공학적인 문제를 풀기 위해서는, 쉽게 생각하면 동역학 시스템이다, 어떤 형태로든 미분 방정식이라는 것을 풀어야 한다. 보통은 속도나 쉽게 구현하기 위해서 수치해석적인 방법으로 문제를 풀게 되는데, 이렇게 푸는 수치해석적인 방법은 정확한 해를 구할 수가 없다. 항상 수치해석적인 오류를 가지고 있으니까... Symbolic Math는 수치해석적으로 풀지 않고, 사람이 손으로 식을 풀듯이 푸는 것이다.

실제로 (x-1)(x+1) 의 식을 푼다고 보면, 프로그래밍적으로 이 식을 푼다고 생각하면, 간단하게

double cal1(double x)
{
  return (x-1)*(x+1);
}

과 같이 프로그래밍을 하고, 값을 얻기 위해서는 cal1(5) 이런 식으로 실제 숫자를 넣어 줘야 한다. 이를 Symbolic Math를 지원하는 툴에서 쓴다면 아래와 같이 된다.
사용자 삽입 이미지

즉 수식의 형태로 값을 가지고 되고, 여기에 필요할때 값을 넣으면 결과를 얻을 수 있다. 이게 무슨 장점이 있냐고 할지 모르지만, 실제로 수식을 보게 되면 경향성이라던지 여러 가지 얻을 수 있는 장점이 많이 있다. 특히나 미분 방정식을 푼다고 생각해 보면 훨씬 큰 차이를 얻을 수 있다.

물론 이런 Symbolic Math의 경우 컴퓨터의 리소스를 무지 많이 잡아 먹는다는 단점이 있으며, 수식을 계산하는데 많은 시간이 걸린다는 단점이 있다.

Symbolic Math로 유명한 프로그램은 Mathmatica와 Maple이 있으며, 공학에서 대표적인 툴로 사용되는 MATLAB에도 Symbolic Math Toolbox가 있다. 작년초 까지만해도 MATLAB에서의 Symbolic Math Toolbox는 Maple의 엔진을 이용해서 계산했지만, 작년에 MuPAD라고 하는 Symbolic Math를 전문으로 하는 소프트웨어 회사를 합병하고 나서는 자체적인 MuPAD 엔진을 사용한다. 덕분에 예전에 없었던, 리포팅 기능이 쉽게 포함되었으며, 훨씬 좋아 졌다.

차분히 시간을 내서 Symbolic Math Toolbox에 대해서 설명을 해볼 생각이다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

트랙백을 보내세요

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/181

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)