Mathematicaパッケージを始めよう

mathematical-packages wolfram-mathematica

誰かがどのようにしてmathematicaパッケージを使い始めるかについて何かアドバイスを提供できますか?

次のファイルを “Foo.m”という名前のファイルに保存できます。 そのファイルで入力セルを実行すると、$ ContextPath変数に影響が反映されているのがわかります。

BeginPackage ["Foo`"]

bar :: usage = "barfunction";

[[`` private` "] bar [w_]:= w;のように始めます。終わり[];

EndPackage [];

しかし、私のノートには以下のものがあります。

#include SetDirectory [ToFileName [{$ HomeDirectory、 "マイドキュメント"、 "mathematica"}]]; Needs ["Foo`"] $ ContextPath

しかし、needsコールは何らかの理由で失敗しており、$ ContextPathは変わりません。

編集

部分的な解決策が今はうまくいっていると思いますが、ファイル内のセルは初期化セルとしてマークされていませんでした。

  3  0


ベストアンサー

保存されたファイル “Foo.m”があなたの $ Path`上にあることを確認してください。これはUnixやWindowsの PATH`環境変数のように、パッケージをロードするときに探すディレクトリをMathematicaに伝えます。

  • EDIT:*実際の BeginPackage`ステートメントがない限り(あるいは Set`や Block`などで直接操作しない限り)、 $ ContextPath`は変更されません。

  • 2回目のEDIT:*確認することが1つあります。

FileNames ["Foo.m"、$ Path]

戻ります。 しかし、あなたが説明していることは少し奇妙に聞こえます。

2


どちらの形式でも動作するはずです。 ファイルが Get(または` << )あるいは Needs`を使ってロードされるとき、 DirectoryStack []`の一番上のディレクトリが最初に検索され、それから `$ Path`が検索されます。 ( `SetDirectory`は $ Path`を変更しないので、 FileNames [" Foo.m "、$ Path]`は `Foo.m`を見つけません。)しかし、デフォルトで FindFile`は Directory []`を検索しますそして `$ Path。 次のようにしてテストできます。

FindFile ["Foo`"] SetDirectory [] FindFile ["Foo`"]

それは戻るべきです

$失敗しました

/foo.m

FindFile`が Foo.m`を見つけることができれば、 Needs`はそれを見つけることができるはずです。 一般的に、私は自分のパッケージを `$ UserBaseDirectory / Applications`に入れます、そして Needs`はそれらをうまく拾います。

1


タイトルとURLをコピーしました