Почему я получаю сообщение об ошибке NoneType с SymPy DSolve? - PullRequest
1 голос
/ 06 апреля 2020

Я новичок в SymPy, и я попытался решить уравнения для гравитационного движения, показанные ниже (это отображается непосредственно из моего уравнения SymPy).

Gravitational Equations of Motion

import sympy as sym

t, E, L, m, a=sym.symbols('t E L m alpha')
r, th=sym.symbols('r theta', cls=sym.Function)

eq1=sym.Eq(m*(r(t)**2)*th(t).diff(t),L)
eq2=sym.Eq(sym.Rational(1,2)*m*(r(t).diff(t))**2+(L**2)/(2*m*r(t)**2)-a/r(t),E)

sym.dsolve((eq1,eq2))

Я получаю следующую ошибку, которую не могу понять, как отлаживать.

TypeError                                 Traceback (most recent call last)
c:\Users\***\Documents\Python\Mechanics\gravity.py in 
----> 17 sym.dsolve((eq1,eq2))

~\AppData\Local\Programs\Python\Python38\lib\site-packages\sympy\solvers\ode.py in dsolve(eq, func, hint, simplify, ics, xi, eta, x0, n, **kwargs)
    599     """
    600     if iterable(eq):
--> 601         match = classify_sysode(eq, func)
    602         eq = match['eq']
    603         order = match['order']

~\AppData\Local\Programs\Python\Python38\lib\site-packages\sympy\solvers\ode.py in classify_sysode(eq, funcs, **kwargs)
   1996             if matching_hints['no_of_equation'] == 2:
   1997                 if order_eq == 1:
-> 1998                     type_of_equation = check_nonlinear_2eq_order1(eq, funcs, func_coef)
   1999                 else:
   2000                     type_of_equation = None

~\AppData\Local\Programs\Python\Python38\lib\site-packages\sympy\solvers\ode.py in check_nonlinear_2eq_order1(eq, func, func_coef)
   2303     num, den = (
   2304         (r1[f].subs(x(t),u).subs(y(t),v))/
-> 2305         (r2[g].subs(x(t),u).subs(y(t),v))).as_numer_denom()
   2306     R1 = num.match(f1*g1)
   2307     R2 = den.match(f2*g2)

TypeError: 'NoneType' object is not subscriptable

Я знаю, что если SymPy не сможет решить уравнение, NotImplementedError будет быть поднятым. Это синтаксическая ошибка с моей стороны или ошибка в DSolve SymPy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...