9

軌道力学における太陽同期共鳴条件に関連する方程式があります。私は現在Pythonを学んでいるので、次のコードを使用してSymPyでPythonを解決しようとしました。

from sympy import symbols,solve

[n_,Re_,p_,i_,J2_,Pe_] = symbols(['n_','Re_','p_','i_','J2_','Pe_'])

del_ss = -((3*n_*(Re_**2)*J2_/(4*(p_**2)))*(4-5*(sin(i_)**2)))-((3*n_*(Re_**2)*J2_/(2*(p_**2)))*cos(i_))-((2*pi)/Pe_)

pprint(solve(del_ss,i_))

式は5つの変数に対して正常に再配置できますが、変数i_がコマンドで使用されるとsolve(上記のように)、エラーが生成されます。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 479, in runfile
    execfile(filename, namespace)
  File "C:\Users\Nathan\Python\sympy_test_1.py", line 22, in <module>
    pprint(solve(del_ss,i_))
  File "C:\Python27\lib\site-packages\sympy\solvers\solvers.py", line 484, in solve
    solution = _solve(f, *symbols, **flags)
  File "C:\Python27\lib\site-packages\sympy\solvers\solvers.py", line 700, in _solve
    soln = tsolve(f_num, symbol)
  File "C:\Python27\lib\site-packages\sympy\solvers\solvers.py", line 1143, in tsolve
    "(tsolve: at least one Function expected at this point")
NotImplementedError: Unable to solve the equation(tsolve: at least one Function expected at this point

ただし、同じ式をMatlabに入力してsolveコマンドを呼び出すと、正しく再配置されます。エラーは実装されていない機能に言及しており、2つの関数は間違いなく異なることを認識していますが、使用できるより適切なSymPy関数があるかどうかを知っておくと便利です。どんな助けでも大歓迎です。

4

1 に答える 1

9
  1. sympyバージョンのPiを使用してください。
  2. cos(i_)新しい変数ci_で置換し、で置換sin(i_)**21-ci_**2、を解きci_ます。

これはそれを行う必要があります:

from sympy import symbols,solve,sin,cos,pi

[n_,Re_,p_,ci_,J2_,Pe_] = symbols(['n_','Re_','p_','ci_','J2_','Pe_'])

del_ss = -((3*n_*(Re_**2)*J2_/(4*(p_**2)))*(4-5*(1-ci_**2)))-((3*n_*(Re_**2)*J2_/(2*(p_**2)))*ci_)-((2*pi)/Pe_)

pprint(solve(del_ss,ci_))

(最初の試行でソリューションの半分しか記述しなかったため、編集しました...)

于 2012-11-13T12:54:31.783 に答える