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

初学者求助:用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 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据