苑汐 2021-06-16 12:07 采纳率: 80%
浏览 354
已采纳

初学者求助:用python解一阶线性微分方程组

目标:由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

  • 写回答

2条回答 默认 最新

  • 盼小辉丶 人工智能领域优质创作者 2021-06-16 16:19
    关注

    这个错误是使用了未定义的变量.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)