GNU Octave:MATLAB互換の数値解析プラットフォーム
GNU Octaveは、
数値解析を主な目的とした高水準
プログラミング[[言語]]です。MATLABとの互換性を重視しており、MATLABの代替として利用できます。オープンソースソフトウェアであり、
GNU General Public Licenseの下で自由に利用、配布、改変が可能です。
開発の経緯
Octaveの開発は1988年頃に始まり、当初は化学反応器設計の授業のために作成されました。1992年からはジョン・イートン (John W. Eaton) が開発を引き継ぎ、1994年にバージョン1.0がリリースされました。名前の由来は、イートンの指導教官であったオクターブ・レヴェンシュピール教授(
反応工学)にちなんでいます。
当初は個人的な利用を目的としていましたが、現在では学術研究や産業分野でも広く利用されています。例えば、ピッツバーグ・スーパーコンピューティング・センターでは、大規模
並列計算による
社会保障番号の脆弱性検証に用いられました。
特徴
MATLAB互換性: MATLABと互換性の高いインタプリタを実装しており、多くのMATLABプログラムを修正なしで実行できます。
GUI環境: バージョン3.8.0からGUIが搭載され、より直感的な操作が可能になりました。
C++とSTL: C++とSTLを用いて開発されており、高度な数値計算処理を実現しています。
拡張性: C/
C++で作成したプログラムをOct-fileとして呼び出すことができ、機能を拡張できます。
OpenGLグラフィックス: Octave 4.0からは、OpenGL graphics with Qt widgetsを用いてグラフィック表示を行います。
高速な行列計算: BLASを呼び出すことで、高速かつ信頼性の高い行列計算が可能です。
*
OpenMP対応: Octave 4.0から
OpenMPがデフォルトで有効になり、並列処理による高速化が期待できます。
対話形式での利用
Octaveは対話形式でコマンドを入力し、数値計算を実行できます。タブ補完機能やヒストリ機能も搭載されており、効率的な作業をサポートします。
対話形式で用いるコマンドをスクリプト化することで、
プログラミング[[言語]]として利用できます。
C[[言語]]のような構造化
言語であり、
C[[言語]]の標準ライブラリに含まれる多くの関数が実装されています。また、
UNIXのシステムコールも利用可能です。Octaveの文法はMATLABと非常によく似ており、両方で実行可能なスクリプトを作成できます。
Octaveでは、スカラー、行列、文字列など、様々なデータ型を持つ構造体を定義できます。
octave
x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
条件判定
条件判定には、短絡評価を行う`&&`および`||`演算子と、短絡評価を行わない`&`および`|`演算子が使用できます。
インクリメント/デクリメント演算子
C[[言語]]と同様の`++`および`--`演算子、`+=`および`-=`演算子が使用可能です。
例外処理
Octaveは、LISPの`unwind_protect`を実装しており、例外処理を記述できます。また、MATLABとの互換性のために`try`と`catch`を使った例外処理も利用可能です。
可変長引数と返り値
関数は可変個の引数を受け取ることができ、`varargin`を使用します。また、`varargout`を使うことで、返り値の数を実行時に決定できます。
C++プログラムからOctaveの関数を呼び出すことが可能です。
MATLABとの互換性
OctaveはMATLABとの互換性を重視しており、多くのMATLABプログラムは修正なしで動作します。主な相違点としては、コメント行の指定方法、
C[[言語]]の演算子の使用、配列要素の参照方法、文字列の定義方法などが挙げられます。
まとめ
GNU Octaveは、MATLABと互換性のある強力な
数値解析プラットフォームです。オープンソースであり、無償で利用できるため、研究開発、教育、産業など、様々な分野で活用されています。