GNU Octaveは、数値計算を扱うために使用できる強力で使いやすく拡張可能な高水準言語を提供することを目的とした、オープンソースで自由に配布されるコマンドラインソフトウェアプロジェクトです。
線形および非線形問題を数値的に解くのに使用できます
このソフトウェアは、線形問題と非線形問題の両方を数値的に解くだけでなく、さまざまな数値実験を行うためにも使用できます。マルチパラダイム数値計算環境であるMatlabと互換性があり、バッチ指向の言語として使用できます。
また、GNU Octaveは、一般的な数値の線形代数問題の解法、多項式の操作、通常の関数の統合、非線形方程式の根の発見、および通常の微分代数方程式や微分方程式の統合を可能にするさまざまなユーティリティを提供しています。 / p>
動的にロードされるモジュールやユーザ定義関数を使ってGNU Octaveを拡張することができます。これらは、Octaveの独自のプログラミング言語やC、C ++、Fortranなどで記述することができます。
GNU Octaveを使い始める
GNU / LinuxオペレーティングシステムにGNU Octaveをインストールするには、2つの方法があります。最初のものは最も簡単で、“オクターブ”あなたの配布物のSoftware Centerアプリ(例えば、Synaptic Package Manager)の
パッケージ
2番目の方法は、製品の最新バージョンをインストールするのに役立ちますが、ターミナルエミュレータでコマンドを実行することです。あなたがそれをダウンしているなら、Softowareまたはプロジェクトの公式ホームページ(記事の最後にあるリンクを参照)から最新のソースパッケージをダウンロードし、PCに保存して解凍してください。
端末エミュレータアプリを開き、‘ cd’を実行します。コマンドの後ろに、抽出されたアーカイブファイルの場所へのパス(例:cd /home/softoware/octave-3.8.2)を入力し、‘ ./ configure&& make’コマンドを使用してプログラムを構成し、コンパイルしてから、‘ sudo make install’を実行します。コマンドを使用してインストールします。コマンドラインインターフェースから‘ octave’を実行して使用します。コマンド。
フードの下
GNU Octaveプログラムのフードを見てみると、C ++プログラミング言語で書かれていることがわかります。上記のセクションで提供されている指示に従って、Arch LinuxやUbuntuを含むGNU / Linuxのいくつかのディストリビューションにインストールしました。このソフトウェアは、32ビットおよび64ビットコンピュータプラットフォームと互換性があります。
このリリースの新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つグラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョンの新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョン4.2.0の新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョン4.0.3の新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョン4.0.1の新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョン4.0.0の新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョン3.8.2の新機能:
Octave 3.8.xリリースシリーズの最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
バージョン3.8.0の新機能:
Octave 3.8の最大の新機能の1つは、グラフィカルユーザーインターフェイスです。これは、ユーザーが過去数年間に最も頻繁にリクエストしたものの1つで、現在はほぼ準備が整っています。しかし、それほど洗練されていないので、GUIをデフォルトのインタフェースにする前に、4.0.xリリースシリーズまで待つことにしました(これまでは、--force-guiオプションを使用してGUIを起動できます)。
最後のメジャーリリースであるOctave以来の時間とバグ修正と改善の回数を考えると、GUIを完成させるためだけに、これらの新機能のリリースを遅らせることに反対しました。だからOctaveの3.8リリースと新しいGUIのプレビューをお楽しみください。私たちはそれが合理的にうまくいくと信じていますが、明らかに荒い部分があり、改善できるものがたくさんあることも知っています。
バージョン3.4.0の新機能:
BLASライブラリとLAPACKライブラリはOctaveをビルドする必要があります。参照BLASおよびLAPACKライブラリのサブセットは、Octaveソースから削除されています。`lookup '関数は、汎用バイナリ検索のためにより有効に拡張されました。この改善を使用して、ismember関数が大幅に改善されたパフォーマンスに書き直されました。
インデックスで使用された実数、整数、および論理行列は、インデックスとして正常に使用されると、内部のindex_vector値(ゼロベースのインデックス)をキャッシュし、同じマトリックスによる後続のインデックス作成のための変換ペナルティを排除します。特に、パフォーマンス上の理由からfindを使用して、論理配列によるインデックスの繰り返しを避ける必要がなくなりました。
論理行列はインデックスとして使用するとより効率的に扱われるようになりました。 Octaveは、特殊なコードを使用して、真の要素の比率が十分に小さい場合を除いて、索引を論理マスクとして保持します。以前は、すべての論理行列は常に最初にインデックスベクトルに変換されていました。これにより、メモリと計算時間の両方が節約されます。`sub2ind 'と` ind2sub'関数は、より良い性能のためにコンパイルされた関数として再実装されました。これらの関数はより高速になり、範囲に対してより経済的な結果を提供でき、前の段落で説明したインデックスキャッシュメカニズムを再利用できます。
連想演算子に相当する組込み関数( `plus '、` times'、 `mtimes '、` and'、 `or ')は、複数の引数を受け入れるように拡張されています。これは、オブジェクトのリスト(場合によっては異なるタイプのもの)の集計(掛け算など)に特に便利です。
matrix_sum =プラス(matrix_list {:});
libcurlに基づくFTPオブジェクトタイプが実装されています。これらのオブジェクトを使用すると、FTP接続、ダウンロード、およびアップロードを管理できます。例えば、
fp = ftp( "ftp.octave.org"; cd(fp、 "gnu / octave"); mget(fp、 "octave-3.2.3.tar.bz2"); close(fp);
`assert(observed、expected) 'のデフォルトの動作は緩和されており、値の内部を一致させる必要のない厳密ではない検査を採用しています。これにより、将来のOctaveバージョンで導入された新しい内部クラスのために、以前から有効なテストが中断するのを防ぎます。
たとえば、これらのアサーションはすべてOctave 3.0.xではtrueでしたが、新しい最適化と改善のために3.2.xではfalseでした。assert(2 * linspace(1,5,5)、2 *(1:5))assert(0(ゼロ)、[])assert(2 * ones(1,5)、(2) 1,5)))
ライブラリ関数 `ismatrix '、` issquare'、 `issymmetric 'の動作は、より一貫性のために変更されました。 `ismatrix '関数は、すべての数値、論理、文字の2-DまたはN-D行列に対して真を返すようになりました。以前は、第1次元または第2次元がゼロの場合、 `ismatrix 'はfalseを返しました。したがって、ismatrix([])はfalseで、ismatrix(0(1,2,0))は真です。
`issquare '関数は論理スカラを返すようになり、式
ismatrix(x)&& ndims(x)== 2& amp;行(x)==列(x)
ディメンションは返されなくなりました。その結果、 `issquare([]) 'が真となります。 `issymmetric '関数は、Hermitiannessの代わりに対称性をチェックするようになりました。後者については、アイソトミズムが作成されました。また、ディメンションではなく論理スカラーが返されるため、 `issymmetric([]) 'がtrueになります。関数ハンドルは、オーバーロードされた関数を認識します。関数が多重定義されている場合、ハンドルはその参照時にどの関数を呼び出すかを決定します。オーバーロードされていないバージョンは存在する必要はありません。組み込みクラス(double、int8、cellなど)の関数のオーバーロードはMatlabと互換性があります。
関数ハンドルは、 `isequal '関数と同様に、==と!=演算子と比較できるようになりました。
多次元配列では、連結のパフォーマンス([]を使用)と関数 `cat '、` horzcat'、および `vertcat 'が改善されました。
操作代入演算子+ =、 - =、* =および/ =は、場合によってはより効率的に動作するようになりました。例えば、Mが行列でSがスカラーならば、文
M + = S;
Mのデータが他の変数と共有されていない場合は、通常は時間とメモリの両方の効率が向上します。選択された共通の組合せのみが影響を受けます:行列+ =行列行列 - =行列行列。* =行列行列./=行列
行列+ =スカラー行列 - =スカラー行列* =スカラー行列/ =スカラー
論理行列| =論理行列論理行列&=論理行列
行列とスカラーは同じクラスに属します。左側は単純な変数参照でなければなりません。
さらに、単項演算子が式に含まれる場合、引数が一時的な式であれば、Octaveはその場で操作を実行しようとします。複素数に適用された比較演算子(、=)の効果は、 `max '、` min'、 `sort '関数で定義された厳密な順序と一致するように変更されました。より具体的には、複素数は、対[abs(z)、arg(z)]の辞書的比較によって比較される。これまでは、実際の部品のみを比較していました。 real()でオペランドをラップすることで、これを実現できます。
複雑な計算結果の自動簡略化が変更されました。オクターブはゼロの虚数部分を持つ複素数、または虚数部分がゼロのすべての要素が真の値になる複素行列を単純化します。以前は、これは正のゼロに対してのみ行われていました。複素関数の挙動は変わらず、虚数部がゼロであっても複素数値を生成することに注意してください。
liboctaveでのコードリファクタリングの副作用として、バイナリ論理演算はコンパイラの最適化により容易に受け入れられるため、大幅に高速化されます。
Octaveでは、ユーザ定義の `subsasgn 'メソッドで冗長コピーを最適化することができます。詳細については、マニュアルを参照してください。
より効率的な行列分割処理。オクターブはM 'V Mという表現を扱えるようになりました。 V V / M(Mは行列であり、Vはベクトルである)。特に、Mが三角形である場合、3つの式はすべて、適切なフラグを持つxTRTRS(LAPACKから)の単一の呼び出しによって処理されます。以前は、3つの式すべてがMの物理的転置を必要としていました。
特定の複合実数複素行列演算の効率的な処理。例えば、RMが実行列であり、CMが複素行列である場合、RM CM
次のように評価することができます。
複合(RMリアル(CM)、RMイメージ(CM))
または
複合(RM)CM、
寸法によって異なります。最初の形式では、より多くの一時的なコピーとコピーが必要ですが、FLOP数は半分になります。これは、RMに十分な行がある場合、通常はパフォーマンスが向上します。以前は、2番目の形式が常に使用されていました。
マトリックスの分割も同様に影響を受けます。
因数分解から返された三角マトリックス因子のより効率的な取り扱い。 QR、LU、およびコレスキー分解を計算する関数は、適切な内部matrix_typeが設定された三角行列ファクタを自動的に返します。このため、行列を除算に使用するときに計算する必要はありません。組み込みのsum関数は、入力配列全体を一時的に2倍に変換することを避け、非固有の和(すなわち、単一または整数入力の倍精度の合計)をより効率的に処理するようになりました。さらに、 `sum 'は簡単な合計ではなく、補正された合計アルゴリズムを使用して余分なオプション引数を受け入れることができます。加算では多くのキャンセルが発生すると精度が大幅に向上します。
組み込み演算子ハンドルが渡される特定のケースでは、組み込み関数 `bsxfun 'が最適化されたコードを使用するようになりました。最適化は、演算子` plus'、 `minus '、` times'、 `ldivide '、` rdivide '、' power '、 `and'、` or '(論理配列の場合)、 `eq'、` ne '、 `lt'、` le '、 `gt'、` ge ' minとmaxを指定します。最適化は、両方のオペランドが同じ組み込みクラスである場合にのみ適用されます。実数/複素数と単精度/複文の混在演算は、まず両方のオペランドを共通の型に変換します。`strfind '関数と` strrep'関数はコンパイルされた実装を持ち、文字列、特により長いパターンでの検索と置換を大幅に効率化しました。 `strcat 'のコードはベクトル化されており、多くの文字列が連結されているときははるかに効率的です。 `strcmpi '関数と` strncmpi'関数は組み込み関数であり、より良い性能を提供します。
チルダ(〜)を使用した入出力関数の引数を無視したMatlab形式がサポートされるようになりました。無視された出力引数は、組み込み関数 `isargout 'を使って関数から検出されます。詳細はマニュアルを参照してください。
セルの導入以来推奨されていないリストデータ型は削除されました。
accumarray関数は最適化されており、特定の重要なケースでははるかに高速になりました。
isreal関数とisnumeric関数の動作は、よりMatlab互換に変更されました。
整数演算&変換の警告(Octave:int-convert-nan、Octave:int-convert-non-int-val、Octave:int-convert-overflow、Octave:int-math-overflow)が削除されました。
remとmodは組み込み関数になりました。また、整数型を効率的に処理します。疎な索引付けと索引付けの割り当ては、ほとんどが書き直されています。 Octaveはスパース行列の圧縮列記憶域を使用するため、列全体を操作する操作に大きな注目が集まっています。このような操作は、他の重要なケースと同様に、大幅に高速になりました。
さらに、疎な行列をあらかじめ割り当てておき、ある条件を満たしていれば、それを代入で満たすことも可能です。詳細は `spalloc '関数を参照してください。これは単なるダミーではありません。したがって、nzmaxとnnzは、もはやOctaveでは常に等しくありません。オクターブは、nnz < nzmax(つまり、非ゼロ要素に割り当てられた領域)を本当に使用しない限り、nnzを一貫して使用する必要があります。
スパース連結も影響を受けます。スパース行列、特に大きなコレクションを連結することは、現在ははるかに効率的です。これは、[]演算子とcat / vertcat / horzcat関数の両方に適用されます。オプションで、コンフィギュレーション擬似変数svd_driverを使用して、デフォルトのxGESVDの代わりにsvd()を使用して特異値分解を計算するためにxGESDD LAPACKドライバを使用することができます。 xGESDDドライバは、特異ベクトルが要求されている場合、最大6倍の速さになることがありますが、病気の悪い行列ではやや頑強であると報告されています。
page_screen_outputやconfirm_recursive_rmdir(または上記のsvd_driver)などの設定擬似変数は、現在の関数が返ったときに元に戻すように要求する2番目の引数として "local"オプションを受け入れるようになりました。function [status、msg] = rm_rf dir)confirm_recursive_rmdir(false、 "local"); [status、msg] = rmdir(dir、 "s"); ... endfunction戻り値として、関数rm_rfの変数またはそれが呼び出す関数の後続の変更があったとしても、confirm_recursive_rmdirは関数の入力時に復元されます。pkgは、自動的にOctave Forgeからパッケージをダウンロードしてインストールするための-forgeオプションを受け入れます。たとえば、pkg install -forge generalは一般パッケージの最新リリースを自動的にダウンロードし、インストールを試みます。依存関係の自動解決は提供されません。さらに、
pkg list -forgeを使用して、使用可能なすべてのパッケージをリストすることができます。
**構造体の内部データ表現は、特定の最適化を実行可能にするために完全に書き直されています。フィールドデータは、等しいキーで構造体間で共有できますが、ディメンションや値が異なるため、フィールドをより速く保存する操作が可能になりました。経済的なストレージはスカラー構造体(他のほとんどのスカラーと同様)に使用されるようになりました。構造体上の特定の配列のような操作(連結、均一セルフン、num2cell)が大幅に高速化しました。さらに、octave_scalar_mapクラスは、C ++ DLD関数内でスカラー構造体を処理するためのより簡単なインタフェースを提供するようになりました。
**数字を表示するための2つの新しいフォーマットがあります:
形式短いeng形式long eng
どちらもエンジニアリング表記の数字、すなわち指数が3の倍数である仮数+指数を表示する。**以下の関数はOctave 3.4で新しく追加されました:
累積erfcx nfields pqpnonneg uigetdirビットマップfileread nth_element quadcc uigetfile bitunpack fminbnd onCleanupランディuiputfile blkmm fskipl pbaspectリピートuimenu cbrt ifelse pie3リセットホワイトbgカールishermitian powerset rsf2csfチョップisindex ppder saveas daspect luupdate ppint strread divergenceマージppjumps textread
** display、xv、およびxloadimageなどの外部プログラムを使用してイメージを表示するためにimage関数を使用することは、もはやサポートされていません。 image_viewer関数も削除されました。
**構造体以外の値への構造体の振る舞いが変更されました。以前は、任意の値を上書きすることができました:a = 1; a.x = 2;
aが空の行列またはセル配列でない限り、これはもはや不可能です。
**空のフィールドにカスタム値を指定できるように、dlmread関数が拡張されました。
** dlmreadおよびdlmwrite関数は、ファイル名に加えてファイルID(fopenによって返される)を受け入れるように変更されました。**オクターブは、関数が特定の値にバインドされたパラメーターのいくつかで別の関数またはハンドルを単に呼び出す場合、無名関数ハンドルのインタープリターオーバーヘッドを最適化できるようになりました。例:f = @(x)sum(x、1);
fが呼び出されると、その呼び出しは定数1が付加された@sumに転送され、anonymous関数呼び出しは呼び出しスタック上では発生しません。
非推奨の関数。
次の関数はOctave 3.2では廃止され、Octave 3.6から削除されます(3.2以降は2番目のメジャーリリースです)。
create_set spcholinv splu dmult spcumprod spmax iscommand spcumsum spmin israwcommand spdet spprod lchol spdiag spqrロードイメージspfind spsum mark_as_command sphcat spsumsq mark_as_rawcommand spinv spvcat spatan2 spkron str2mat spchol splchol unmark_command spchol2inv split unmark_rawcommand
次の関数はOctave 3.4では廃止され、Octave 3.8から削除されます(または3.4以降の2番目のメジャーリリースは何でも)。
autocor cellidx gammai krylovbの値は、オートコープディスパッチglpkmex replotベータ版fstat is_global saveimage
Matlabとの互換性のため、mu2lin(x)はmu2lin(x、0)と同等になりました。ARPACKライブラリはOctaveで配布されるようになり、Octaveをビルドするときに外部依存として利用する必要がなくなりました。
バージョン3.2.3の新機能:
Octave 3.2.3はバグ修正リリースです
バージョン3.0.4の新機能:
Octave 3.0.4はバグを修正したリリースです。バージョン3.0.3のリリース以降に報告されたほとんどのバグは修正されています。 Octave 3.0は、特にグラフィックス、パス処理、および組み込み変数に関して、Octave 2.1.xと大きく異なります。
コメントが見つかりません