1.问题:求系统的零状态响应

image.png

2.引入

首先用高数知识求解非齐次常系数微分方程

image.png

再利用信号与系统中冲激响应求解验证

image.png

利用MATLAB求解验证

y=dsolve('D2y+3*Dy+2*y=exp(-t)','y(0)=1','Dy(0)=2','t')

得出结果:

y =

(t - 2 exp(-t) + 3) exp(-t)

根据结果检验,上述手动计算与实际计算机得出结果一致。

t=0:0.1:20;

y = (t - 2 .*exp(-t) + 3) .*exp(-t);

y1=-exp(-t) .*(t - 2 .*exp(-t) + 3) + exp(-t).* (1 + 2.* exp(-t));

plot(t,y,'r-',t,y1,'b-'),legend('y','y’')

用MATLAB模拟图像结果:

image.png

3.利用Python求解该方程

通过上述计算,我们利用Python求解系统的零状态响应:

库函数准备

scipy

sympy

matplotlib

numpy

利用sympy进行符号解法

from sympy import *

init_printing()

#定义符号常量x 与 f(x)

x = Symbol('x')

f = symbols('f', cls=Function)

#用diffeq代表微分方程: f''(x) + 3f'(x) + 2f(x) = exp(-x)

diffeq = Eq(f(x).diff(x, x) + 3*f(x).diff(x) + 2*f(x), exp(-x))

#调用dsolve函数,返回一个Eq对象,hint控制精度

print(dsolve(diffeq, f(x)))

得到符号解,输出如下

Eq(f(x), (C1 + C2*exp(-x) + x)*exp(-x))

在带入初始松弛条件:

C1=-2

C2=3

结果与我们计算结果一致。

利用Numpy和Scipy进行数值解法

import matplotlib.pyplot as plt

from scipy import linspace,exp

from scipy.integrate import odeint, solve_bvp, solve_ivp

import numpy as np

'''

为了兼容solve_ivp的参数形式,微分方程函数定义的参数顺序为(t,y),因此使用odeint函数时需要使参数tfirst=True

二阶甚至高阶微分方程组都可以变量替换成一阶方程组的形式,再调用相关函数进行求解,因此编写函数的时候,不同于一阶微分方程,二阶或者高阶微分方程返回的是低阶到高阶组成的方程组,

'''

def fvdp1(t,y):

'''

要把y看出一个向量,y = [dy0,dy1,dy2,...]分别表示y的n阶导,那么

y[0]就是需要求解的函数,y[1]表示一阶导,y[2]表示二阶导,以此类推

'''

dy1 = y[1] # y[1]=dy/dt,一阶导

dy2 = -3 * y[1] - 2 * y[0] + exp( -1 * t )

# y[0]是最初始,也就是需要求解的函数

# 注意返回的顺序是[一阶导, 二阶导],这就形成了一阶微分方程组

return [dy1,dy2]

# 或者下面写法更加简单

def fvdp2(t,y):

'''

要把y看出一个向量,y = [dy0,dy1,dy2,...]分别表示y的n阶导

对于二阶微分方程,肯定是由0阶和1阶函数组合而成的,所以下面把y看成向量的话,y0表示最初始的函数,也就是我们要求解的函数,y1表示一阶导,对于高阶微分方程也可以以此类推

'''

y0, y1 = y

# y0是需要求解的函数,y1是一阶导

# 返回的顺序是[一阶导, 二阶导],这就形成了一阶微分方程组

dydt = [y1, -3*y1-2*y0+exp(-t)]

return dydt

def solve_second_order_ode():

'''

求解二阶ODE

'''

t2 = linspace(0,20,1000)

tspan = (0, 20.0)

y0 = [1.0, 2.0] # 初值条件

# 初值[2,0]表示y(0)=2,y'(0)=0

# 返回y,其中y[:,0]是y[0]的值,就是最终解,y[:,1]是y'(x)的值

y = odeint(fvdp1, y0, t2, tfirst=True)

y_ = solve_ivp(fvdp2, t_span=tspan, y0=y0, t_eval=t2)

plt.subplot(211)

y1, = plt.plot(t2,y[:,0],label='y')

y1_1, = plt.plot(t2,y[:,1],label='y‘')

plt.legend(handles=[y1,y1_1])

plt.subplot(212)

y2, = plt.plot(y_.t, y_.y[0,:],'g--',label='y(0)')

y2_2, = plt.plot(y_.t, y_.y[1,:],'r-',label='y(1)')

plt.legend(handles=[y2,y2_2])

plt.show()

solve_second_order_ode()

结果:

image.png

python求函数一二阶导_python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)...相关推荐

  1. Python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)

    1.问题:求系统的零状态响应 2.引入 首先用高数知识求解非齐次常系数微分方程 再利用信号与系统中冲激响应求解验证 利用MATLAB求解验证 y=dsolve('D2y+3*Dy+2*y=exp(-t ...

  2. python单词词频字典_python利用多种方式来统计词频(单词个数)

    python的思维就是让我们用尽可能少的代码来解决问题.对于词频的统计,就代码层面而言,实现的方式也是有很多种的.之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类 ...

  3. matlab求系统状态时间响应,MATLAB求解系统零状态响应可以调用( )函数。

    双语教育目标的实现,求解主要依靠( ). 系统已知桩号K1+000的填方断面积为40m,K1+020的挖方断面积为60m,如果所有挖方材料可以用作路基填料,则本桩可利用方为.( ) 零状已知桩号K1+ ...

  4. Python 求函数极小值、极大值点

    目录 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 2.含参数的函数 二.求极大值 Python 求函数极小值.极大值点 一.求极小值 1.不含参数的函数 例:求f(x)=s ...

  5. 卷积法求解系统的零状态响应_利用卷积可以求解系统的零状态响应..ppt

    利用卷积可以求解系统的零状态响应..ppt 注意 ? 用微积分性质 直接 例2-7-2 图(a)系统由三个子系统构成,已知各子系统的冲激响应 如图(b)所示.求复合系统的冲激响应 ,并画出它的波形. ...

  6. MATLAB——求系统的零状态响应

    题目: 已知系统的微分方程为: d 2 y ( t ) d t 2 + 2 d y ( t ) d t + 100 y ( t ) = f ( t ) \dfrac{d^2y(t)}{dt^2}+2\ ...

  7. 给定激励,求零输入响应、零状态响应,全响应

    %z_filter_imp.m %Z域表示的数字滤波器的响应举例 %H(Z)={Z^2 + 2Z + 1}/{Z^3 -0.5Z^2 -0.005Z^-1 +0.3} %初始状态 y(-1)= 1, ...

  8. 二阶电路的零状态响应

    二阶电路零状态响应公式推导 下图所示电路在 时电容和电感上储能都为零,即 , , t=0 时开关闭合,电压源 Us 开始对电路供电.现讨论 时响应的变化规律. 电路的 KVL 方程为换路后电路的初始状 ...

  9. python求函数极值_python 遗传算法求函数极值的实现代码

    废话不多说,大家直接看代码吧! """遗传算法实现求函数极大值-Zjh""" import numpy as np import rando ...

最新文章

  1. 运行返回签名不正确_不正确运行废气治理RTO设备容易引起爆炸,注意事项有哪些?...
  2. 是‘登陆’还是‘登录’
  3. sqlite中的命令
  4. 全国计算机等级考试题库二级C操作题100套(第22套)
  5. 路由代码WebApi设置namespace路由参数
  6. idea一键加密部署springboot到docker容器
  7. matplotlib 柱状图 分组_Python数据分析与可视化之matplotlib可视化(三)
  8. MySQl Window Function Concepts
  9. 详解超网技术(路由聚合技术)
  10. 个人 易混淆 高频 高级单词
  11. ichariot测试路由器有线转发性能
  12. C++中rapidxml用法及例子
  13. 2020软考软件设计师--基础知识实战培训视频-任铄-专题视频课程
  14. 百度网盘直链原理解析
  15. 网站降权后应该如何去处理
  16. win10控制面板快捷键_你没玩过的全新版本:Win10这些操作你知多少
  17. shp文件转3dtitle
  18. 一元交友源码对接码支付免费送
  19. 开关电源主滤波电解电容器屡爆原因及预防
  20. 拓嘉启远电商:拼多多长尾词位于哪里会比较好

热门文章

  1. Apache Kafka 迎来了“后浪”
  2. 微盟耗时 145 个小时弥补删库,血亏 1.5 亿元!
  3. 彭荣新:喜马拉雅自研网关架构演进过程
  4. Linux 给新用户授予、设置Tomcat目录的使用权限
  5. Java并发编程(01):线程的创建方式,状态周期管理
  6. springcloud 系列教程一:微服务与网站架构演变过程
  7. 实现props的双向绑定
  8. 对Url Schemes的简单了解
  9. QQ音乐:React v16 新特性实践
  10. “3遍读书法” 我是这样自学编程的