基于python的微分方程数值解法求解电路模型

系统 1569 0
  1. 首先安装环境包
  2. 电路模型和微分方程
  3. python代码

目录

安装环境包

电路模型和微分方程

模型1

电路模型1

微分方程1

模型2

电路模型2

微分方程2

python代码

模型1

模型2

数值解结果

模型1

模型2结果


安装环境包

安装numpy(用于调节range) 和 matplotlib(用于绘图)
在命令行输入

            
              pip install numpy 
pip install matplotlib
            
          

电路模型和微分方程

模型1

无损害,电容电压为5V,电容为0.01F,电感为0.01H的并联谐振电路

电路模型1

基于python的微分方程数值解法求解电路模型_第1张图片

微分方程1

u=-LC\frac{d^{2}u}{dt^{2 }}

模型2

带电阻损耗的电容电压为5V,电容为0.01F,电感为0.01H的的并联谐振

电路模型2

基于python的微分方程数值解法求解电路模型_第2张图片

微分方程2

u_{c} +RC\frac{du_{c}}{dt}+LC\frac{d^{2}u}{dt^{2}}=0

 

python代码

模型1

            
              import numpy as np
import matplotlib.pyplot as plt

L = 0.01  #电容的值 F
C = 0.01  #电感的值 L
u_0 = 5   #电容的初始电压
u_dot_0 = 0


def equition(u,u_dot):#二阶方程
    u_double_dot = -u/(L*C)
    return u_double_dot

def draw_plot(time_step,time_scale):#时间步长和范围
    u = u_0
    u_dot = u_dot_0  #初始电压和电压的一阶导数
    time_list = [0] #时间lis
    Votage = [u] #电压list
    plt.figure()
    for time in np.arange(0,time_scale,time_step):#使用欧拉数值计算法 一阶近似
        u_double_dot = equition(u,u_dot) #二阶导数
        u_dot = u_dot + u_double_dot*time_step #一阶导数
        u = u + u_dot*time_step #电压
        time_list.append(time) #结果添加
        Votage.append(u) #结果添加
        print(u)
    plt.plot(time_list,Votage,"b--",linewidth=1) #画图
    plt.show()
    plt.savefig("easyplot.png")

if __name__ == '__main__':
    draw_plot(0.0001,1)
            
          

模型2

            
              import numpy as np
import matplotlib.pyplot as plt

L = 0.01  #电容的值 F
C = 0.01  #电感的值 L
R = 0.1   #电阻值
u_0 = 5   #电容的初始电压
u_dot_0 = 0


def equition(u,u_dot):#二阶方程
    u_double_dot =(-R*C*u_dot -u)/(L*C)
    return u_double_dot

def draw_plot(time_step,time_scale):#时间步长和范围
    u = u_0
    u_dot = u_dot_0  #初始电压和电压的一阶导数
    time_list = [0] #时间lis
    Votage = [u] #电压list
    plt.figure()
    for time in np.arange(0,time_scale,time_step):#使用欧拉数值计算法 一阶近似
        u_double_dot = equition(u,u_dot) #二阶导数
        u_dot = u_dot + u_double_dot*time_step #一阶导数
        u = u + u_dot*time_step #电压
        time_list.append(time) #结果添加
        Votage.append(u) #结果添加
        print(u)
    plt.plot(time_list,Votage,"b-",linewidth=1) #画图
    plt.show()
    plt.savefig("result.png")



if __name__ == '__main__':
    draw_plot(0.0001,1)
            
          

数值解结果

模型1

基于python的微分方程数值解法求解电路模型_第3张图片 纵轴为电容两端电压,横轴为时间与公式计算一致​​

模型2结果

基于python的微分方程数值解法求解电路模型_第4张图片 纵轴为电容两端电压,横轴为时间标题

最后我们可以根据调节电阻到达不同的状态

 

基于python的微分方程数值解法求解电路模型_第5张图片 R=0.01,欠阻尼
基于python的微分方程数值解法求解电路模型_第6张图片 R=1.7,临界阻尼
基于python的微分方程数值解法求解电路模型_第7张图片 R=100,过阻尼

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论