MATLAB 을 사용해서 또 어떤걸 해 볼까~~ 하고 찾아보던 중~ batman 함수를 그려보면 잼 있겠다는 생각이 들어서 검색을 해 봤습니다.
역시나 무수한 자료들이 나오더군요.
아래 주소의 내용에는 MATLAB 코드도 있어서 한번 그려보기로 했습니다.
http://gauravtiwari.org/2011/09/24/how-to-draw-the-famous-batman-equation/
코드는 다음과 같습니다. 아래 코드가 정상적으로 실행되기 위해서는 Symbolic Math Toolbox 가 설치되어 있어야 합니다.
clf; clc; clear all;
syms x y
eq1 = ((x/7)^2*sqrt(abs(abs(x)-3)/(abs(x)-3))+(y/3)^2*sqrt(abs(y+3/7*sqrt(33))/(y+3/7*sqrt(33)))-1);
eq2 = (abs(x/2)-((3*sqrt(33)-7)/112)*x^2-3+sqrt(1-(abs(abs(x)-2)-1)^2)-y);
eq3 = (9*sqrt(abs((abs(x)-1)*(abs(x)-.75))/((1-abs(x))*(abs(x)-.75)))-8*abs(x)-y);
eq4 = (3*abs(x)+.75*sqrt(abs((abs(x)-.75)*(abs(x)-.5))/((.75-abs(x))*(abs(x)-.5)))-y);
eq5 = (2.25*sqrt(abs((x-.5)*(x+.5))/((.5-x)*(.5+x)))-y);
eq6 = (6*sqrt(10)/7+(1.5-.5*abs(x))*sqrt(abs(abs(x)-1)/(abs(x)-1))-(6*sqrt(10)/14)*sqrt(4-(abs(x)-1)^2)-y);
axes('Xlim', [-7.25 7.25], 'Ylim', [-5 5]); hold on
ezplot(eq1,[-8 8 -3*sqrt(33)/7 6-4*sqrt(33)/7]);
ezplot(eq2,[-4 4]);
ezplot(eq3,[-1 -0.75 -5 5]);
ezplot(eq3,[0.75 1 -5 5]);
ezplot(eq4,[-0.75 0.75 2.25 5]);
ezplot(eq5,[-0.5 0.5 -5 5]);
ezplot(eq6,[-3 -1 -5 5]);
ezplot(eq6,[1 3 -5 5]);
colormap([0 0 1]), title('Batman'); xlabel(''); ylabel(''); hold off
실행해보니 이런 결과가 나오더군요.
뭐 너무 유명한 그림이다 보니 아래 주소에서도 batman 함수를 다양한 방법으로 그려 볼 수 있는 스크립트가 있더군요.
http://www.mathworks.com/matlabcentral/fileexchange/33124-batman-equation-the-legend
위 주소에 가셔서 아래 그림과 같이 코드를 다운로드 받을 수 있습니다.
다운로드 받은 zip 파일을 압축해제하고~ plotbatmaneq.m 파일을 실행해 보시면 아래 그림과 같은 결과를 얻을 수 있습니다.
아래 그림은 octave 에서 그려본건데요~ MATLAB 에 비해 약간 시간은 걸렸고~ 아래 그림과 같은 0 나누기 에러메시지는 나왔지만~
결과는 정상적으로 나오더군요.
재미있죠~
그 외 참조자료
http://www.wolframalpha.com/input/?i=batman+function&lk=4&num=1
'programming language > MATLAB' 카테고리의 다른 글
MATLAB comma로 나눠진 파일(csv) 읽기 csvread(), 쓰기 csvwrite() (0) | 2013.11.09 |
---|---|
MATLAB 구매 가격에 대해 질문하는 분들을 위해… (2) | 2013.11.07 |
MATLAB, OCTAVE Root Raised Cosine Filter Coefficient (0) | 2013.11.03 |
MATLAB hash table 사용하기 (0) | 2013.10.22 |
MATLAB 시작 폴더 변경 및 startup.m 파일 설정 (0) | 2013.09.30 |
MATLAB filter() 함수의 고급 사용 (0) | 2013.09.21 |
MATLAB 모든 경우의 수 뽑기 Cartesian Product (0) | 2013.08.18 |
MATLAB에서 sqlite 사용하기 (0) | 2013.06.16 |
댓글