码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • matlab用dde23求解带有固定时滞的时滞微分方程


    dde23函数调用方法

    sol = dde23(ddefun,lags,history,tspan,options)

    dde23 跟踪不连续性并使用显式 Runge-Kutta (2,3) 对和插值对 ode23 求积分。它通过迭代来采用超过时滞的步长。

    举例:

    t≤0 的历史解函数是常量 y1(t)=y2(t)=y3(t)=1。

    方程中的时滞仅存在于 y 项中,并且时滞本身是常量,因此各方程构成常时滞方程组。

    要在 MATLAB 中求解此方程组,需要先编写方程组、时滞和历史解的代码,然后再调用时滞微分方程求解器 dde23,该求解器适用于具有常时滞的方程组。可以将所需的函数作为局部函数或者将它们作为单独的命名文件保存在 MATLAB 路径上的目录中。

    编写时滞代码

    首先,创建一个向量来定义方程组中的时滞。此方程组有两种不同时滞:

    • 在第一个分量 y1(t−1) 中时滞为 1。

    • 在第二个分量 y2(t−0.2) 中时滞为 0.2。

    dde23 接受时滞的向量参数,其中每个元素是一个分量的常时滞。

    lags = [1 0.2];

    编写方程代码

    现在,创建一个函数来编写方程的代码。此函数应变换为这种格式:

    dydt = ddefun(t,y,Z)

    其中:

    • t 是时间(自变量)。

    • y 是解(因变量)。

    • Z(:,j) 用于逼近时滞 y(t−τj),其中常时滞 τj 由 lags(j) 给定。

    求解器会自动将这些输入传递给该函数,但是变量名称决定如何编写方程代码。在这种情况下:

    • Z(:,1) →  y1(t−1)

    • Z(:,2) →  y2(t−0.2)

    function dydt = ddefun(t,y,Z) ylag1 = Z(:,1); ylag2 = Z(:,2); dydt = [ylag1(1);   ylag1(1)+ylag2(2);   y(2)];end

    编写历史解代码

    接下来,创建一个函数来定义历史解。历史解是时间 t≤t0 的解。

    ​​​​​​​

    function s = history(t) s = ones(3,1);end

    求解方程

    最后,定义积分区间 [t0  tf] 并使用 dde23 求解器对 DDE 求解。​​​​​​​

    tspan = [0 5]; sol = dde23(@ddefun, lags, @history, tspan);

    对解进行绘图

    求解的结构体 sol 具有字段 sol.x 和 sol.y,这两个字段包含求解器在这些时间点所用的内部时间步和对应的解。绘制三个解分量对时间的图。​​​​​​​

    plot(sol.x,sol.y,'-o')xlabel('Time t');ylabel('Solution y');legend('y_1','y_2','y_3','Location','NorthWest');

  • 相关阅读:
    vue生命周期
    Alien Skin Exposure8免费版PS图片滤镜插件
    【数据结构】轻松掌握二叉树的基本操作及查找技巧
    Compose 类型稳定性注解:@Stable & @Immutable
    【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)
    刷题日常计~JS③
    【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记
    Flutter Doctor:Xcode 安装不完整
    淘宝/天猫获得淘宝商品评论 API 返回值说明
    python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
  • 原文地址:https://blog.csdn.net/qingfengxd1/article/details/126065243
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号