Мой код
У меня есть программа, которая вычисляет решения дифференциального уравнения 2-го порядка, как в приведенном ниже фрагменте кода:
import sympy as sp
print('sympy version:', sp.__version__)
t = sp.symbols('t', real=True, nonnegative=True)
n = sp.symbols('n', integer=True, nonnegative=True)
f = sp.symbols('f', cls=sp.Function)
diff_eq = sp.Eq(f(t).diff(t, 2) + n**2*f(t), 0)
print('general solution:', sp.dsolve(diff_eq, f(t)))
print('solution at n=0 (pre-subs):', sp.dsolve(diff_eq.subs(n, 0), f(t)))
print('solution at n=0 (post-subs):', sp.dsolve(diff_eq, f(t)).subs(n, 0))
Результаты:
sympy version: 1.3
general solution: Eq(f(t), C1*sin(n*t) + C2*cos(n*t))
solution at n=0 (pre-subs): Eq(f(t), C1 + C2*t)
solution at n=0 (post-subs): Eq(f(t), C2)
Моя проблема
Форма решения для общего n
не совсем точно описывает конкретную форму решения для n=0
. В частности, использование dsolve
first и subs(n, 0)
second дает результаты, отличные от использования subs(n, 0)
first и dsolve
second, даже если эти два значения должны быть логически эквивалентны.
Может кто-нибудь объяснить причину расхождения в моих результатах? Я что-то не так делаю, или это ошибка?