目标:由f3,f4求解i(t),e(t)的数值解(给定初值)
想拜托大佬们帮我看看这个思路是否可行,以及为何报错:
from sympy import *
t=symbols('t')
f3=Eq(i(t).diff(t),1/5.1*e(t)-11.45*t**-1.662*i(t))
f4=Eq(e(t).diff(t),-1/5.1*e(t)+4*i(t))
eq=(f3,f4)
# 第一步求解i(t),e(t)的结果:
# i(t)=C1*x0(t) + C2*x0(t)*Integral(0.196078431372549*exp(m)*exp(n)/x0(t)**2, t)
# e(t)=C1*y0(t) + C2*(y0(t)*Integral(0.196078431372549*exp(m)*exp(n)/x0(t)**2, t) + exp(m)*exp(n)/x0(t))
# 其中:
# m=Integral(-0.196078431372549, t)=-0.196078431372549*t
# n=Integral(-11.45*t**(-1.662), t)=17.2960725075529*t**(-0.662)
# 第二步赋初值:C1=4156,C2=25000,将原方程组转换为求解未知函数x0(t),y0(t)的方程组(在下面程序中用x,y分别代替x0,y0):
x,y=symbols('x,y',cls=Function)
f3=Eq(4900.0*Derivative(x(t),t)*Integral(exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2,t) + 4156*Derivative(x(t),t) + 4900.0*exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t),1/5.1*(4156*y(t) + 25000*(y(t)*0.196*integrate(exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2,t) + exp(-0.196*t)*exp(17.296*t**(-0.662))/x(t)))-11.45*t**-1.662*(4156*x(t) + 25000*x(t)*0.196*integrate(exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2,t)))
f4=Eq(-286248.8*t**(-1.662)*exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t) + 4900.0*Derivative(y(t), t)*Integral(exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2, t) + 4156*Derivative(y(t), t) - 4900.0*exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t) + 4900.0*y(t)*exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2 - 25000*exp(17.296*t**(-0.662))*exp(-0.196*t)*Derivative(x(t), t)/x(t)**2,-1/5.1*(4156*y(t) + 25000*(y(t)*0.196*integrate(exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2,t) + exp(-0.196*t)*exp(17.296*t**(-0.662))/x(t)))+4*(4156*x(t) + 25000*x(t)*0.196*integrate(exp(17.296*t**(-0.662))*exp(-0.196*t)/x(t)**2,t)))
eq=(f3,f4)
results=dsolve(eq)
for result in results:
print(result)
报错:
Traceback (most recent call last):
File "c:/Users/lenovo/Desktop/1.py", line 96, in <module>
results=dsolve(eq)
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\sympy\solvers\ode\ode.py",
line 588, in dsolve
match = classify_sysode(eq, func)
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\sympy\solvers\ode\ode.py",
line 1971, in classify_sysode
type_of_equation = check_nonlinear_2eq_order1(eq, funcs, func_coef)
File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36-32\lib\site-packages\sympy\solvers\ode\ode.py",
line 2106, in check_nonlinear_2eq_order1
(r1[f].subs(x(t),u).subs(y(t),v))/
TypeError: 'NoneType' object is not subscriptable