好大喵 2024-03-08 15:41 采纳率: 0%
浏览 15

怎么用python解带时变参数的微分方程

由于一些原因不用matlab解,但是微分方程中有一个时变的参数需要从excel中读取,这种解微分方程应该怎么写代码呢,按下面这样写会出现K和y0维数不对应的报错,也另外想了一些办法,但按K的每个数据解一遍又会有很多条曲线

from scipy.integrate import odeint
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('XXX.xlsx', sheet_name=0)
K = df['yyy'].values

def dy_dt(y, t):
dy_dt = K*y+np.sin(t)
return dy_dt

y0 = [-1]
t = np.arange(-10, 10, 0.01) #(start,stop,step)
y = odeint(dy_dt, y0, t)

plt.plot(t, y)
plt.title("picture")
plt.show()
  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-08 15:42
    关注

    引自免费微信小程序:皆我百晓生

    在Python中,解决带有时变参数的微分方程可以通过修改微分方程定义函数来实现,使得该函数能够接收并处理随时间变化的参数。针对你提供的代码和问题,你需要确保K值与t数组同步对应。下面是一个改进后的示例:

    import numpy as np
    import pandas as pd
    from scipy.integrate import odeint
    import matplotlib.pyplot as plt
    
    # 读取Excel文件中的时变参数K,并确保它的时间戳与t一致
    df = pd.read_excel('XXX.xlsx', sheet_name=0)
    t_values_in_df = df['time_column'].values  # 替换为实际存储时间戳的列名
    K_values = df['yyy'].values
    
    # 假设你的时间步长与Excel数据的时间戳一致,如果不是,请根据实际情况对t数组进行调整
    t = t_values_in_df
    
    def dy_dt(y, t):
        # 确保当前时间t对应的K值被正确获取
        current_K = K_values[np.searchsorted(t_values_in_df, t)]
        
        dy_dt = current_K * y + np.sin(t)
        return dy_dt
    
    y0 = [-1]  # 初始条件
    
    # 根据实际需求,可能需要对t范围进行裁剪或插值以匹配K值的时间戳范围
    y = odeint(dy_dt, y0, t)
    
    plt.plot(t, y)
    plt.title("Solution to the Time-Varying Parameter Differential Equation")
    plt.xlabel("Time")
    plt.ylabel("Solution y(t)")
    plt.show()
    

    在这个例子中,我们首先从Excel文件中读取了时变参数K以及对应的时间戳,并确保计算过程中使用的是与时间t相对应的K值。请根据你的实际情况调整代码中关于时间戳的部分。

    注意:如果tK的时间戳不完全对应,你可能需要进行插值操作以得到每个t时刻对应的K值。此外,上述代码假设K的变化频率与求解微分方程的时间步长相同,若不同需做相应调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月8日

悬赏问题

  • ¥15 mySQL5.7.34安装遇到的问题
  • ¥15 结构功能耦合指标计算
  • ¥20 visual studio中c语言用ODBC链接SQL SERVER
  • ¥50 AI大模型精调(百度千帆、飞浆)
  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊