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

这篇具有很好参考价值的文章主要介绍了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 = 1
    k2 = 1
    Rt = 1
    km1 = 0.05
    km2 = 0.05
    dRpdt = (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文章来源地址https://www.toymoban.com/news/detail-789368.html

S_all = np.linspace(0,3,100)
def equation(Rp,S):
    k1 = 1
    k2 = 1
    Rt = 1
    km1 = 0.05
    km2 = 0.05
    return 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 定理分析平面上非线性自主动力系统
参阅一:亚图跨际
参阅二:亚图跨际

到了这里,关于Python和Julia TensorFlow科学计算常微分方程求解器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模】常微分,偏微分方程

    普通边界   已知t0时刻的初值    ode45()  龙格-库塔法 一阶,高阶都一样 如下: s(1) = y , s(2)=y\\\'  s(3) = x , s(4)=x\\\'   分段边界 非匿名函数    手写改进的ode45()函数代码 复杂边界值(即已知初始值,也知道末尾值),用bvp4c()函数 1. pdepe()函数 椭圆-抛物线型 控制方程  左边界

    2024年02月09日
    浏览(44)
  • (矩阵)一阶微分方程和伯努利方程

    伯努利方程的标准形式: 伯努利方程解法: 方程两边同时除以y的n次, 做变量替换y-z: 转换为线性微分方程: 最后换回原来的变量即可得到伯努利方程。 一阶线性微分方程的标准形式: 当Q(x)=0,为齐次方程;当Q(x)≠0,为非齐次方程。 已知如下矩阵,求解一阶线性微分方

    2024年02月05日
    浏览(57)
  • 微分方程应用——笔记整理

    首先,根据正常思路走,化简得到式子:    不难发现,设  后面得出该方程的通解: 这里要注意什么等于这个通解   --- z 又因为该曲线过点  所以可以求出c为3 该题虽然简单,但是要注意几个问题,该定义域在第一象限,还有就是求解中变量的代换

    2024年02月11日
    浏览(40)
  • 一阶常微分方程

    第一次写博客记录自己的学习过程,写的不好希望大家斧正。 讲的更多的是常微分方程的解法的理解,也是我在学习中遇到各种证明的关键点,希望通过记录博客深化对于证明的理解,建立起数学思维,而不是知其然而不知其所以然。因此阅读中需要读者有一定的基础,与实

    2024年02月05日
    浏览(45)
  • 高等数学(微分方程)

    x y ′ ′ ′ + ( y ′ ) 3 + y 4 xy\\\'\\\'\\\'+(y\\\')^3+y^4 x y ′′′ + ( y ′ ) 3 + y 4 quad quad 三阶 y ′ = 2 x y\\\'=2x y ′ = 2 x quad quad quad quad quad quad 一阶 d y = 2 x d x dy=2xdx d y = 2 x d x quad quad quad quad 一阶 ( y ′ ′ ) 5 + 2 y ′ = 3 (y\\\'\\\')^5+2y\\\'=3 ( y ′′ ) 5 + 2 y ′ = 3 quad quad quad 二阶 quad 例1: 已知

    2024年02月10日
    浏览(48)
  • matlab解微分方程

    f=@(变量) 表达式; x1为2 3 4 5;x2为3 4 5 6的情况下求解函数f的值 用“dsolve” step1: 申明自变量和因变量 syms y(x) step2:编程 得到: step1: 申明自变量和因变量 syms y(x) step2:编程 得到 step1.写函数文件 step2.主函数 相当于定义了一个新向量y,然后列 匿名函数 ,方程的 左边都是一阶

    2024年02月13日
    浏览(81)
  • MATLAB-常微分方程求解

    MATLAB中可以用来求解常微分方程(组)的函数有ode23、 ode23s、 ode23t、 ode23tb 、ode45、ode15s和odel13等,见下表。它们的具体调用方法类似,为了方便后面的描述, 在后面的介绍中将使用solver统一代替它们。 函数的具体调用方法如下。 [T,Y] =solver( odefun, tspan,y0) [T,Y] = solver( odefun,

    2024年02月02日
    浏览(50)
  • 【数学建模】常微分方程

    博客园解释 https://www.cnblogs.com/docnan/p/8126460.html https://www.cnblogs.com/hanxi/archive/2011/12/02/2272597.html https://www.cnblogs.com/b0ttle/p/ODEaid.html matlab求解常微分方程 https://www.cnblogs.com/xxfx/p/12460628.html https://www.cnblogs.com/SunChuangYu/p/13415439.html https://www.cnblogs.com/tensory/p/6590783.html 高等数学-常微分

    2024年02月16日
    浏览(44)
  • Fortran 微分方程求解 --ODEPACK

    最近涉及到使用Fortran对微分方程求解,我们知道MATLAB已有内置的函数,比如ode家族,ode15s,对应着不同的求解办法。通过查看odepack的官方文档,我尝试使用了dlsode求解刚性和非刚性常微分方程组。 首先是github网址:https://github.com/jacobwilliams/odepack 具体使用办法: 1.我使用的

    2024年02月11日
    浏览(44)
  • 【scipy 基础】--积分和微分方程

    对于手工计算来说,积分计算是非常困难的,对于一些简单的函数,我们可以直接通过已知的积分公式来求解,但在更多的情况下,原函数并没有简单的表达式,因此确定积分的反函数变得非常困难。 另外,相对于微分运算来说,积分运算则具有更多的多样性,包括不同的积

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包