SymPy无法求解Matlab所能解决的方程

2024-05-14 22:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方程,它与轨道力学中的太阳同步共振条件有关。我现在正在学习Python,所以我尝试使用以下代码在SymPy中解决它:

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_))

可以为其中五个变量成功地重新排列表达式,但是当在solve命令中使用变量i_时,会产生一个错误:

^{pr2}$

但是,当同一个表达式输入Matlab并调用solve命令时,它将被正确地重新排列。我意识到错误提到了一个未实现的特性,这两个函数无疑会有所不同,但如果能知道是否有更合适的SymPy函数,我还是会很高兴的。任何帮助都将不胜感激。在


Tags: 函数命令re表达式错误sspe方程
1条回答
网友
1楼 · 发布于 2024-05-14 22:24:58
  1. 使用Pi的sympy版本。在
  2. cos(i_)替换为新变量ci_,将{}替换为1-ci_**2,并求解{}。在

这应该做到:

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_))

(编辑,因为我在第一次尝试中只写了一半的解决方案…)

相关问题 更多 >

    热门问题