【问题标题】:Numerical integration of an unknown function [closed]未知函数的数值积分[关闭]
【发布时间】:2022-11-18 22:48:49
【问题描述】:

对于学校项目,我必须确定时间函数 u(t)。我导出了以下形式的表达式:

(https://i.stack.imgur.com/vNrYb.png)

具有 a、b、c、d 常量(不一定是整数)。我发现这个问题只能通过初始条件 u(0)=u_0 的数值积分来解决,但我不知道如何解决这个特定问题。

我已经查看了到目前为止我学到的所有数值积分方法,但它们似乎都适用于多项式或您知道特定点的函数评估的函数。

【问题讨论】:

    标签: math numerical-integration


    【解决方案1】:

    除非你有所有这些常量的值,否则你不能对任何东西进行数值积分。

    我不知道您查看了哪些数值积分方案,但我认为 Euler 的方法或 Runga-Kutta 都值得尝试。

    你没有说你想使用哪种语言。 Python 将是一个不错的选择。 Java 也一样。有很多图书馆可以提供帮助。

    Wolfram Alpha 有一个封闭形式的解决方案here。它是一个可分离的非线性 ODE。您需要了解超几何函数才能进行评估。

    【讨论】:

      【解决方案2】:

      有很多方法可以计算 u(t) 的近似值,一些简单但需要大量迭代,而更复杂的需要较少的迭代。假设 a,b,c,d 是实数,并且 u_0 = u(0) 那么对于 t > 0,可以将 0 和 t 之间的区间分成 N 个子区间并计算

      u_(i+1) = u_i + (du/dt)(t_i)*t/N

      其中 t_i = i*t/N

      然后,

      u_N = u(t)。

      如果 N 不够大,结果将不准确。获得令人满意的 N 与其说是科学,不如说是一门艺术。只需打印增加 N 的结果就可以让您了解 N 需要多大才能获得所需的准确度水平。添加高阶项(d^2u/dt^2 等)有时可以提高速度和准确性。

      【讨论】:

      • 你是说 du/dt 乘以 u_i 还是 du_i/dt?
      • (du/dt)(u_i) 表示在 u_i 处计算的导数 du/dt。
      • 对不起,我弄错了。它是 (du/dt)(t_i),意思是在 t_i 处计算出的导数 du/dt。
      猜你喜欢
      • 2020-02-28
      • 2021-12-13
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2013-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多