Функция f
может быть вызвана как в f(x)
, но вы не можете вызвать функцию, которая была вызвана как в f(x)(1)
- вам нужно использовать подпрограммы. Кроме того, Python список не понимает subs
, но вещи внутри списка делают. Таким образом, вы должны либо выполнить итерацию по списку и выполнить подстановку для элементов списка, которые понимают подстановку или , вы можете преобразовать свой список в контейнер SymPy, который понимает подстановку, например,
>>> [x, 1/x].subs(x, 2) # no
>>> L = [x, 1/x]
>>> [i.subs(x, 2) for i in L] # yes
[2, 1/2]
>>> from sympy import Tuple
>>> Tuple(*L).subs(x, 2)
(2, 1/2)
Таким образом, используя эти две идеи и определяя x
, ваш код дает
import sympy
x, j, u, eps, V_0, d = sympy.symbols("x, j, u, eps, V_0, d")
E = sympy.Function("E_x") (x) #set up symbolic solver
Vi = sympy.Derivative(E)
ode = E*Vi+j/(u*eps) #define the differential equation
E_sol = sympy.dsolve(ode) #solve
ics = {E.subs(x,0):0}
C_eq = [i.subs(x,0).subs(ics) for i in E_sol]
C_ = sympy.solve(C_eq)
>>> print(E_sol) #print general solution
[Eq(E_x(x), -sqrt(C1 - 2*j*x/(eps*u))), Eq(E_x(x), sqrt(C1 - 2*j*x/(eps*u)))]
>>> print(C_)
[{C1: 0}]