|
アドオンを使う
アドオンのロード
アドオンで定義された関数を使用するためには,まずMathematica にアドオンパッケージをロードしなければなりません.もし最初にアドオンをロードしなかったら,同じ関数に対して複数の異なる定義を生成することになります(定義の競合をご参照ください).アドオンをロードするときは,そのパッケージの名前と置かれているディレクトリが分かっていなければなりません.Mathematica に付属の標準パッケージはすべて,AddOns/StandardPackagesディレクトリ内のいくつかのサブディレクトリ内にあります.この他のアドオンは,$BaseDirectoryあるいは$UserBaseDirectoryのApplicationsサブディレクトリかAutoloadサブディレクトリに置かなければなりません.インストールの場所についての詳細は新しいアドオンをインストールするでご覧ください.
例えば,アドオンContourPlot3D.mは,StandardPackagesのGraphicsディレクトリ内にあります.ContourPlot3D.mをロードするためには,コマンドNeedsを使います.
In[2]:=
上記のコマンドの2つのバッククォートをシングルクォートと混同しないようにしてください.バッククォートは,JIS配列のキーボードでは「@」と同じキーで,ASCIIキーボードでは「~」と同じキーにあります.
上記のコマンドでは,StandardPackagesディレクトリがMathematica の検索パス上にあるので,そのディレクトリを指定する必要はありませんでした.この検索パス上のディレクトリのリストは,$Pathを評価するといつでも得られます.コンテキストと$Pathについては,Mathematica ブックの1.11.2と2.12.4をご覧ください.
In[1]:=
これでContourPlot3D.mがロードされたので,そのコンテキストが検索パス上に現れ,他のMathematica の組込み関数と同様にContourPlot3D.mを使うことができるようになります.
In[3]:=
コマンドNeedsは,指定されたアドオンがそのセッション中にまだロードされていない場合のみそれをロードします.あるいは,Getコマンド(<<)を使うこともできます.次のコマンドもアドオンContourPlot3D.mをロードします.
In[7]:=
<<コマンドは,指定されたアドオンがそのセッション中にすでにロードされていても,常にそのアドオンをロードします.セッション中に同じアドオンを2度ロードすると,アドオンの使用に問題が発生する可能性があるのでご注意ください.$Packagesを評価すると,どのアドオンをロードしたかが常にチェックできます.
In[8]:=
Out[8]=
定義の競合
アドオンパッケージを最初にロードせずにそのアドオンの関数を使おうとすると,関数の複数の定義が競合して,意図した定義が隠されてしまう可能性があります.例えば,FilledPlotを使って2つの曲線の間の領域を埋めようとしているとします.
In[12]:=
Out[12]=
しかし,FilledPlotは組込み関数ではないので,Mathematica にはそれが認識できません.その代りにGlobal`コンテキスト内にFilledPlotという空のシンボルを生成してしまいます.ここでパッケージFilledPlot.mをロードすると,「FilledPlotはGlobal`コンテキストの定義に隠れてしまう可能性がある」という旨のエラーメッセージが表示されます.これは,Mathematica がGlobal`コンテキストから定義を探し始めて,その定義がGlobal`コンテキストにない場合のみ他のコンテキストに移動するためです.
In[13]:=
この問題を解決するためには,Global`コンテキストから空の定義をクリアするためにコマンドRemoveを使います.
In[14]:=
これでMathematica は正しい定義を見付けるので,FilledPlotが正常に動作するようになります.
In[23]:=

Out[23]=
|