2011-12-20 65 views
0

私はPythonには新しく、問題があります。関数と点を引数としてとり、その関数のjacobianを返す関数(Jacobian)を書きたいと思います。与えられた点。Python:関数内の外部関数を呼び出す

驚くべきことに、Jacobianは、NumPyおよびSciPyに依存する。私は別のスクリプトからJacobianを呼び出すと、私はどちらかを取得:

  1. 私は機能にモジュールをインポートすることはできませんというエラーが表示または
  2. エラー(私はJacobianでnumpyの/ scipyのダウンロードのためのimport文を持っている場合)は私は上記のエラーを回避するためにimport文を省略したときに、様々なnumpyの/ scipyのダウンロード機能(例えばzeros()が)(、定義されていない。

私が間違って何をしているのですか?

また、誰かkの場合Jacobianのインプリメンテーションのnowsも同様に役立ちます。 SciPyには存在しないようです。

+3

問題を引き起こすコードの一部を投稿できますか?あなたが何を記述しているのかは間違いなく可能であるはずなので、おそらくこれを引き起こすコードの細部の詳細です。 –

+0

どのようにインポートするとコードを貼り付けることができますか? – soField

+0

ヤコビアンの計算方法について説明している[1ページ](http://old.nabble.com/calculating-numerical-jacobian-td20506078.html)です。 Numpyは数値的に(象徴的にではなく)動作するため、数値的な微係数は一般的には完全に正確ではないことに注意してください。 –

答えて

2

モジュールレベルでインポートしてから、インポートした名前を関数内から使用することができます。 また、必要な名前を関数内に直接インポートすることもできます。

あなたが関数内importを使用することはできません1つの状況があります:Pythonのコンパイラがどうなるか名前を事前にそれを言うことができない機能でとimport *とローカル変数のすべてを知りたいので、あなたはfrom somemodule import *を行うことを許可されていません輸入される。

解決策は簡単です:決してimport *を使用しないでください。使用する名前は常に正確にインポートしてください。

P.S.問題を引き起こしているコードをコピーして、取得しているという正確なメッセージをとすれば、問題が解決します。ここではこれがあなたの問題だと推測していますが、関連する詳細を入力すれば、より迅速で正確な回答が得られます。

+0

Python 2.xでは 'from ... import *'が許可されているので、OPが3.xを使っていると推測しています。もちろん、実際のエラーは、私たちが推測する必要がないようにするでしょう。 –

関連する問題