Python和Julia TensorFlow科学计算常微分方程求解器

常微分方程

常微分方程(ODE)可用于描述动态系统。 从某种程度上来说,我们生活在一个动态系统中,窗外的天气从黎明到黄昏都在变化,我们体内发生的新陈代谢也是一个动态系统,因为随着时间的推移,成千上万的反应和分子被合成和降解。

更正式地说,如果我们定义一组变量,比如一天的温度,或者某个时间点X分子的数量,并且它随着自变量的变化而变化(在动态系统中,通常是时间t) 。 ODE 为我们提供了一种以数学方式描述定义变量动态变化的方法。 与之相反的系统称为静态系统,想象一下拍一张外面的照片,这张快照不包含任何动态,换句话说,它是静态的。

求解常微分方程意味着确定变量如何随着时间的推移而变化,解有时称为解曲线(如下图所示),为任何动态系统的默认行为提供信息预测。

方程式

这里我首先介绍一些术语,读者可以从中受益。常微分方程 (ODE) 看起来像这样:
d R d t = k 0 + k 1 S − k 2 R \frac{d R}{d t}=k_0+k_1 S-k_2 R dtdR=k0+k1Sk2R
这是一个涉及导数的方程,但方程本身没有偏导数。 换句话说,我们只考虑一个自变量,即时间 t。 当我们有多个自变量进来时,它就变成偏微分方程(PDE),这不属于本文的讨论范围。
∂ 2 μ ∂ x 2 + ∂ 2 μ ∂ y 2 = 0 \frac{\partial^2 \mu}{\partial x^2}+\frac{\partial^2 \mu}{\partial y^2}=0 x22μ+y22μ=0
在 ODE 中,如果包含因变量的项(在上述情况下为变量 R,包含 R 的项包括 dR/dt 和 k2R)的系数与 R 无关,则该 ODE 被视为线性 ODE。 为了说明这一点,让我向您展示一个非线性 ODE 作为比较:
R d R d t = k 0 + k 1 S − k 2 R R \frac{d R}{d t}=k_0+k_1 S-k_2 R RdtdR=k0+k1Sk2R
可以看到,现在dR/dt的系数为R,这违反了线性ODE的定义,因此变成了非线性ODE。

最后一对术语,如果变量的导数与自变量(这里是时间t)无关,我们称它们为自治ODE,否则,它成为非自治ODE。同样,非自治 ODE 如下所示:
d R d t = k 0 t + k 1 S × t − k 2 R \frac{d R}{d t}=k_0 t+k_1 S \times t-k_2 R dtdR=k0t+k1S×tk2R
现在你可以看到时间 t 位于右侧,因此它是一个非自治 ODE。

求解 S 形信号响应曲线

d R p d t = k 1 S ( R T − R P ) k m 1 + R T − R P − k 2 R P k m 2 + R P \frac{d R_p}{d t}=\frac{k_1 S\left(R_T-R_P\right)}{k_{m 1}+R_T-R_P}-\frac{k_2 R_P}{k_{m 2}+R_P} dtdRp=km1+RTRPk1S(RTRP)km2+RPk2RP

from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
def model(Rp,t,S):k1 = 1k2 = 1Rt = 1km1 = 0.05km2 = 0.05dRpdt = (k1*S*(Rt-Rp)/(km1+Rt-Rp)) - k2*Rp/(km2+Rp)return dRpdt

d R p d t = 0 k 1 S ( R T − R P ) k m 1 + R T − R P − k 2 R P k m 2 + R P = 0 \begin{gathered} \frac{d R_p}{d t}=0 \\ \frac{k_1 S\left(R_T-R_P\right)}{k_{m 1}+R_T-R_P}-\frac{k_2 R_P}{k_{m 2}+R_P}=0 \end{gathered} dtdRp=0km1+RTRPk1S(RTRP)km2+RPk2RP=0

S_all = np.linspace(0,3,100)
def equation(Rp,S):k1 = 1k2 = 1Rt = 1km1 = 0.05km2 = 0.05return k1*S*(Rt-Rp)/(km1+Rt-Rp) - k2*Rp/(km2+Rp)from scipy.optimize import fsolve
store = []
for S in S_all:Rp_ss = fsolve(equation,[1],args=(S,))[0]store.append(Rp_ss)

Python常微分方程求解器

Python符号计算求解常微分方程

Julia常微分方程求解器

TensorFlow神经常微分方程

时滞微分方程

求解时滞微分方程及其系统的两种数值方法

使用 Lambert W 函数求解一阶时滞微分方程方法

项目:

  • 平面常系数线性齐次动力系统分析仪
  • 利用 Hartman-Grobman 定理分析平面上非线性自主动力系统
参阅一:亚图跨际
参阅二:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins容器使用宿主机Docker

构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: sudo chown root:root /var/run/docker.sock sudo chmod orw /var/run/d…

Easypoi word 模板导出问题

按word模板导出报错 源代码: //获取项目的根目录 ClassPathResource classPathResource new ClassPathResource("/word/template.docx"); InputStream inputStream classPathResource.getStream(); MyXWPFDocument xwpfDocument WordExportUtil.expo…

Uibot (RPA设计软件)股票板块行情抓取————课前材料四

微信群发助手机器人的小项目友友们可以参考小北的课前材料二博客~ (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~) 紧接着小北的前两篇博客,友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#x…

Java 并发性和多线程3

七、线程安全及不可变性 当多个线程同时访问同一个资源,并且其中的一个或者多个线程对这个资源进行了写操作,才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。 我们可以通过创建不可变的共享对象来保证对象在线程间共享时不会被修改&…

AI绘画风格化实战

在社交软件和短视频平台上,我们时常能看到各种特色鲜明的视觉效果,比如卡通化的图片和中国风的视频剪辑。这些有趣的风格化效果其实都是图像风格化技术的应用成果。 风格化效果举例 MidLibrary 这个网站提供了不同的图像风格,每一种都带有鲜…

Neo4j知识图谱(2)创建与删除

Neo4j - CQL简介_w3cschoolhttps://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html一、创建节点 create(n:Person{name:何仙鸟,age:21}) create就是创建,无论是点还是边都是用create来创建 n相当于一个别名,比如创建一个Person,而Pe…

嵌入式软件面试之程序在存储器中的分布

Hi, 大家好,今天阿目分享的是一个嵌入式软件面试的常见问题,内存分布或者说程序在内存中的布局,我们写的程序是按照怎么的准则放在内存中的? 一般有操作系统的嵌入式设备,都会有一个Bootloader, 它负责在上电后初始化…

reids优化系列(五)

后面更新的这些文章是将所学的redis知识进行巩固并且分享,也希望这些知识不仅仅是用于复习面试,更能在实际的应用中起到优化的作用。 有时候我们会存储一些查询多,修改少,业务逻辑较弱的数据,并且还能高效查询&#x…

漏洞修复整理

一、Geoserver Apache HTTP/2拒绝服务漏洞(CVE-2023-44487)、Eclipse Jetty 资源管理错误漏洞(CVE-2023-26048)、Eclipse Jetty 信息泄露漏洞(CVE-2023-26049) 受影响版本:9.4.53以下版本 处理方式:原地升级 ( jdk版本…

【记录】求职经历

目标岗位:嵌入式开发 1. 线上笔试 常用算法,比如动态规划、递归等标准模板库(STL)C 11新特性LeetCode刷题牛客刷题 2. 技术一面 3. 技术二面 4. 主管面 5. HR面

学习redis有效期和数据类型

1、安装redis和连接redis 参考:ubuntu安装单个redis服务_ubuntu redis单机版安装-CSDN博客 连接redis:redis-cli.exe -h localhost -p 6379 -a 123456 2、Redis数据类型 以下操作我们在图形化界面演示。 2.1、五种常用数据类型介绍 Redis存储的是key…

BCPL语言 :这可是B语言啊,汤姆森大佬趁老婆回老家用来开发第一个unix操作系统的语言(大佬基于BCPL开发的bon语言,C语言前身)

BCPL(“基本组合编程语言”)是一种过程式、命令式和结构化的编程语言。BCPL最初旨在为其他语言编写编译器,现在已不再常用。然而,它的影响仍然存在,因为BCPL的一个剥离和语法改变的版本,称为B,是C编程语言的基础。BCPL…

Linux文件创建教程:简单易懂的操作指南和示例代码详解

在Linux系统中,文件的创建是日常使用中经常遇到的操作之一。本篇教程将向你介绍如何在Linux系统中创建文件,并提供详细的示例代码,让你能够轻松上手。 1. 使用touch命令创建文件 touch命令是最简单、最常用的创建文件的方法之一。它可以用来…

jenkins-cl参数化构建

pipeline片段(对应jenkins-cli -p参数的BRANCHdevelop) parameters {string(name: BRANCH, defaultValue: master, description: Enter the branch name)}stages {stage(Get Code) {steps {script {def branch params.BRANCHcheckout scmGit(branches: …

算法通关村第十五关—继续研究超大规模数据场景的问题(黄金)

继续研究超大规模数据场景的问题 一、对20GB文件进行排序 题目要求:假设你有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序?  分析:这里给出大小是20GB,其实面试官就在暗示你不要将所有的文件都装入到…

单片机学习记录(四)

第8章 1.在异步串行通信中,接收方是如何知道发送方开始发送数据的? 答:当接收方检测到RXD引脚上有负跳变时,即可知道发送方开始发送数据; 2.AT89S51单片机的串行口有几种工作方式?有几种帧格式&#xff…

世邦通信 SPON IP网络对讲广播系统addscenedata.php任意文件上传漏洞

产品介绍 世邦通信SPON IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 漏洞描述 spon IP网络对讲广播系统存在任意文件上传漏洞,攻击者可以通过构造特殊请求包上传恶意后门文件&#xff…

Sentinel微服务保护

文章目录 Sentinel微服务保护1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.解决方案1.1.3.总结 1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制2.1.簇点链路2.1.快速入门2.2.流控模式2.2.1.…

华纳云:cdn主服务器连通性异常怎么办

当 CDN 主服务器连通性异常时,可能会影响到内容分发网络(CDN)的正常运行。在面对这种情况时,可以采取以下步骤来处理: 检查网络连接: 首先确保本地网络连接正常。尝试通过其他网络或设备访问 CDN 主服务器,以确定问题是…

redis.conf配置文件常用配置项详解

redis.conf 是 Redis 的配置文件,用于配置 Redis 服务器的各种参数和行为。这个配置文件包含了丰富的选项,允许用户调整 Redis 的行为以满足特定需求。以下是一些 redis.conf 中常见配置项的详解: daemonize: 默认值: …