GNU Octave 완전 정복: MATLAB 호환 수치해석 튜토리얼
GNU Octave 개요
GNU Octave는 MATLAB과 거의 호환되는 고수준 프로그래밍 언어로 수치 계산에 사용됩니다. GPL 라이선스로 자유롭게 재배포/수정 가능.
MATLAB과 공통 특징
- 행렬이 기본 데이터 타입
- 복소수 내장 지원
- 내장 수학 함수/라이브러리
- 사용자 정의 함수 지원
MATLAB vs Octave 호환성
대부분 MATLAB 프로그램은 Octave에서 실행되지만, Octave 전용 구문(큰따옴표 문자열 등)은 MATLAB에서 안 될 수 있습니다.
호환되는 예제: 3D 표면 플롯
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
MATLAB/Octave 동일하게 실행되어 3D 표면 그래프 생성.
비호환 예제: 곡선 아래 면적 구하기
f(x) = x² cos(x), -4 ≤ x ≤ 9
MATLAB 버전 (int 함수 사용):
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a))
결과: Area: 0.3326
Octave 버전 (symbolic 패키지 + quad 함수 필요):
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a))
핵심 차이: MATLAB은 심볼릭 int로 정적분 직접 계산, Octave는 수치 적분 quad 사용.