Zhou's home Zhou's home
首页
说话人识别
算法题库
编程相关
语音识别
关于
  • 分类
  • 标签
  • 归档
  • 常用工具
  • 友情链接

ZhouWJ

吾生也有涯,而知也无涯
首页
说话人识别
算法题库
编程相关
语音识别
关于
  • 分类
  • 标签
  • 归档
  • 常用工具
  • 友情链接
  • Kaldi Toolbox

  • 算法原理梳理

    • 几种PLDA模型探究
    • PRML|高斯分布
    • PRML|概率图模型(贝叶斯网络)
    • 几种PLDA自适应算法
    • 矩阵相关基础知识
    • 深度学习基础知识
    • 微分方程相关基础知识
      • 欧拉法
      • Heun法
      • 中点法
        • 显式中点法
        • 隐式中点法
      • 龙格库塔法
      • 常数变易法
        • 参考资料
      • 谱分析
        • 参考资料
      • 一些工具箱
      • 一些Chat GPT
      • 待解决问题
      • 参考资料
    • 泛函梯度下降
  • 文献记录

  • 我的工作

  • 声纹识别
  • 算法原理梳理
xugaoyi
2023-02-13
目录

微分方程相关基础知识

全局误差比局部残差低1阶。我们通常所说的数值方法的阶数,指的就是采用这个数值方法的全局误差的阶数。

# 欧拉法

  • 属于一阶龙格库塔法
  • 前向欧拉法:$y_{n+1}=y_n+h f\left(y_n, t_n\right)$
  • 后向欧拉法:$y_{n+1}=y_n+h f\left(y_{n+1}, t_{n+1}\right)$
  • Trapezoidal rule(梯形公式):$y_{n+1}=y_n+\frac{h}{2}\left(f\left(y_n, t_n\right)+f\left(y_{n+1}, t_{n+1}\right)\right)$

根据$f$的复杂程度,后两个隐式法会比显式方法的运算复杂度更高,可能需要用到迭代法求得数值解

# Heun法

  • 将梯形公式改进成了显式方法
  • 用Forward Euler方法求出$\tilde{y}{n+1}=y_n+h f\left(y_n, t_n\right)$,然后带入到梯形公式的右边:$y{n+1}=y_n+\frac{h}{2}\left(f\left(y_n, t_n\right)+f\left(\tilde{y}{n+1}, t{n+1}\right)\right)$
  • 属于二阶龙格-库塔法的特例

# 中点法

# 显式中点法

  • $y_{n+1}=y_n+h f\left(t_n+\frac{h}{2}, y_n+\frac{h}{2} f\left(t_n, y_n\right)\right)$

  • 直接用$y_n$处的斜率去估计$y_{n+1}$,误差会比较大,所以用它们的中点去估计。用传统欧拉法得到中点的值与斜率。用中点斜率替代$y_n$处的斜率去估计$y_{n+1}$。

# 隐式中点法

  • $y_{n+1}=y_n+h f\left(t_n+\frac{h}{2}, \frac{1}{2}\left(y_n+y_{n+1}\right)\right)$
  • 用传统欧拉法得到$y_{n+1}$的估计值,与$y_n$相加后除以2得到中点的估计值,用传统欧拉法和估计得到的中点斜率,重新估计$y_{n+1}$
  • ⚠️更正:不可以估计$y_{n+1}$的值,必须代入到最后解方程组

# 龙格库塔法

初值问题:$\frac{d y}{d t}=f(t, y), \quad y\left(t_{0}\right)=y_{0}$,其中要估计出来的$y$是关于时间$t$的未知函数(标量或是向量),现在选择步长$h>0$并定义:

$$\begin{aligned} y_{n+1} &=y_{n}+\frac{1}{6} h\left(k_{1}+2 k_{2}+2 k_{3}+k_{4}\right) \ t_{n+1} &=t_{n}+h \end{aligned}$$

其中,

$$\begin{aligned} k_{1} &=f\left(t_{n}, y_{n}\right) \ k_{2} &=f\left(t_{n}+\frac{h}{2}, y_{n}+h \frac{k_{1}}{2}\right) \ k_{3} &=f\left(t_{n}+\frac{h}{2}, y_{n}+h \frac{k_{2}}{2}\right) \ k_{4} &=f\left(t_{n}+h, y_{n}+h k_{3}\right) \end{aligned}$$

  • 如何用四阶龙格库塔法解2阶的微分方程_百度知道 (baidu.com) (opens new window)

# 常数变易法

# 参考资料

  • 微积分 (alphacalculus.com) (opens new window)
  • 常数变易法_百度百科 (baidu.com) (opens new window)

# 谱分析

# 参考资料

  • IPython Cookbook - 12.1. Plotting the bifurcation diagram of a chaotic dynamical system (ipython-books.github.io) (opens new window)
  • ihkim94/ikeda: Final project for the computational physics class in Fall, 2022 at UT Austin (github.com) (opens new window)

# 一些工具箱

  • Solving delay differential equations using numerical methods in Python (computationalmindset.com) (opens new window)

# 一些Chat GPT

  • 泰勒级数展开与欧拉法之间的关系?

    泰勒级数展开和欧拉法是两种近似解决微分方程的方法,不同之处在于它们的工作原理。

    泰勒级数展开是一种数学工具,它可以通过将函数近似为一系列项的和来工作。它从单个点的函数值开始,利用函数导数的信息来找到附近点的近似函数值。通过求和系数项,可以得到更大区间内的函数的近似值。

    欧拉法,另一方面,是一种求解常微分方程(ODEs)的数值方法。给定形如 y' = f(t, y) 的 ODE,其中 y 是未知函数,f 是已知函数,欧拉法从给定的 t 时刻的 y 的初始值开始,利用 f 的导数信息来找到下一时间步的 y 的近似值。然后重复该过程,找到逐渐晚些时间的 y 的近似值。

    泰勒级数展开和欧拉法都可以用来近似解决微分方程,但泰勒级数展开提供了函数的分析近似,而欧拉法提供了数值近似。泰勒级数展开适用于光滑和良好表现的函数,提供更精确的近似,但随着导数数量的增加,复杂度也随之增加。欧拉法比较简单,在大多数情况下都可以用,但精度不如泰勒级数展开高。此外,欧拉法的精度随着步长的增加而降低,因此需要合理调整步长以获得更好的结果。

    总的来说,泰勒级数展开和欧拉法是相辅相成的,可以结合使用,也可以根据具体情况使用更适合的方法。

  • 如何用泰勒展开推导隐式中点法?【感觉不对】

    泰勒级数展开可以用来推导隐式中点法。泰勒级数展开可以用来对函数进行近似,而隐式中点法是一种数值积分方法,用来解决常微分方程。

    假设我们要求解的常微分方程是:$dy/dt = f(t, y)$,其中$f(t, y)$是已知的函数。

    我们可以使用泰勒级数展开来对$f(t, y)$进行近似:$f(t + Δt, y + Δy) ≈ f(t, y) + Δt * df/dt + (Δy)^2/2 * d^2f/dt^2 + ...$

    我们假设$Δy$等于在时刻$t + Δt$处的$y$的变化量,即$y(t + Δt) - y(t)$,这样我们就可以把上面的式子写成如下形式:$f(t + Δt, y(t + Δt)) ≈ f(t, y(t)) + Δt * df/dt + (y(t + Δt) - y(t))^2/2 * d^2f/dt^2 + ...$

    我们可以把这个式子写成如下形式:$y(t + Δt) ≈ y(t) + Δt * f(t, y(t)) + (y(t + Δt) - y(t))^2/2 * d^2f/dt^2 + ...$

    然后,我们可以使用这个式子来解决隐式中点法的迭代方程,其中$Δy$是待求解的量。因此,隐式中点法的算法流程如下:

    1. 给定初始条件$y(t)$和步长$Δt$。
    2. 通过迭代方程求解$y(t + Δt)$。
    3. 重复步骤2,直到达到所需的精度为止。

    通过泰勒级数展开和隐式中点法的推导,我们可以证明隐式中点法的稳定性和收敛性,并且具有较高的精度。因此,隐式中点法是一种常用的数值积分方法,用于求解常微分方程。

  • 隐式求解法中的时间对称性?

    时间对称性是指数值方法的性质,在该方法中,时间$t+Δt$处的解的计算基于与时间$t-Δt$处解的计算相同的信息。这意味着以相对于当前时间步长对称的方式更新解决方案,而不是仅考虑来自前一时间步长的信息。 在隐式方法的上下文中,时间对称意味着在时间$t+Δt$时解的计算不仅取决于在时间$t$时的解的值,还取决于在$t+Δt$时解的值。这与显式方法相反,在显式方法中,时间$t+Δt$的解仅基于时间$t$的解的值来计算。 隐式方法的时间对称性很重要,因为与显式方法相比,隐式方法可以产生更好的稳定性和准确性。例如,当求解具有广泛时间尺度的刚性ODE时,隐式方法可以更有效地处理不同的时间尺度,并导致更精确的解。 然而,隐式方法的时间对称性也意味着,与显式方法相比,它通常更昂贵,因为它需要求解非线性方程以在每个时间步长更新解。

    假设你试图在两个不同的时间点$t$和$t+Δt$上找到运动物体的位置。在显式方法中,您将仅使用您所掌握的关于对象在时间t的位置的信息来计算其在时间$t+Δt$的位置。换句话说,你只会及时向前迈出一步。 然而,在隐式方法中,您将使用您在时间$t$和时间$t+Δt$处获得的关于对象位置的信息来计算时间$t+△t$处的对象位置。**这是因为隐式方法不仅考虑了来自前一时间步骤的信息,还考虑了关于未来时间步骤的数据。这就是所谓的“时间对称”。**通过考虑过去和未来的信息,隐式方法可以提供比显式方法更精确的解决方案,尤其是对于具有复杂或快速变化的动力学的问题。然而,这种精度是以计算复杂性为代价的,因为隐式方法需要求解非线性方程以在每个时间步更新解。

# 待解决问题

  • [ ] DDEs为什么是无限维的问题?
  • [ ] DDEs可否用一组有限维【问题如何描述?】
  1. Numerical methods for Delay Differential Equations by Alfredo Bellen and Marino Zennaro
  2. Delay Differential Equations with applications in population dynamics by Yang Kuang

# 参考资料

  • 《Solving Delay Differential Equations with dde23》
  • 龙格库塔方法与它的布彻表.py - 知乎 (zhihu.com) (opens new window)
#微分方程
上次更新: 2024/04/10, 22:12:29
深度学习基础知识
泛函梯度下降

← 深度学习基础知识 泛函梯度下降→

最近更新
01
方言语音识别综述
04-05
02
主流ASR模型概述
03-26
03
一些参考图表及表述
05-28
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式