【问题标题】:Looking for a particular algorithm for numerical integration寻找数值积分的特定算法
【发布时间】:2015-06-15 23:01:36
【问题描述】:

考虑以下微分方程
f(x) = g'(x)
我有一个构建代码,它为变量x 吐出函数f(x) 的值,其中x0 变为very large

现在,我正在寻找一种方案来分析f(x) 的这些值以确定g(x)。有人有什么建议吗?主要问题是,如果我要计算g(x) = Integral (f(x) * dx),那么我最终会得到一个数字(即图表下方的区域),但我需要知道g(x) 的实际功能。

我在这里交叉发布了这个问题:https://math.stackexchange.com/questions/1326854/looking-for-a-particular-algorithm-for-numerical-integration

【问题讨论】:

  • 对不起,我习惯用LaTeX写,我会尝试找到正确的编辑。
  • 这个等式让我很困惑(在这两个问题中)所以只是为了澄清对我来说唯一有意义的组合是:p(t)=q'(t) ...q(t) 是由t 派生的, t 是变量(时间),p(t),q(t)t 的函数,q(t) 是未知的。所以 q(t)=Integral(p(t)*dt) 你有什么形式的 p(t) ?它是多项式,方程的文本表示,它是任意函数吗?还有什么限制(t 的范围)和边界条件?请澄清,因为现在这是无法回答的
  • @Spektre 感谢您的建议。我已经编辑了我的问题以使用更传统的符号。但基本上你写的是正确的。函数g(x) 是想要的未知数。但主要的问题是,如果我计算g(x) = Integral (f(x) * dx),那么我最终会得到一个数字(即图表下方的区域),但我需要知道实际的功能。
  • 哦,f(x) 是一个任意函数。
  • f(x) 是什么形式的?它是一个字符串,它是一个表示多项式的数组?它是一棵树? ....这是解决这个问题的关键信息

标签: algorithm numerical-methods numerical numerical-integration


【解决方案1】:
  1. 数值积分总是只返回一个数字

    • 如果您不想要数字而是使用函数
    • 那么你不能直接使用数值积分来完成这个任务
  2. 多项式方法

    • 您可以使用任何近似/插值技术来获得表示f(x) 的多项式
    • 然后作为标准多项式积分(只是改变指数和乘法常数)
    • 这不适用于超越、周期性或复杂形状的函数
    • 最常见的方法是使用 L'Grange 或 Taylor 级数
    • 对于这两种情况,您都需要一个能够为任何给定的x 返回值f(x) 的解析器
  3. 代数积分

    • 这对于任何f(x) 都无法解决,因为我们不知道如何集成所有内容
    • 因此您需要编写所有集成规则
    • 如每部分、替换、Z 或 L'Place 变换
    • 并在字符串/符号范式中编写求解器
    • 这是大量的工作
    • 可能有库或 dll 可以做到这一点
    • 来自 Derive 或 Matlab 等程序...

[edit1] 因为函数f(x) 只是一个表格

  • double f[][2]={ x1,f(x1),x2,f(x2),...xn,f(xn) };
  • 您可以以<0,x> 的间隔为g(x)=Integral(f(x)) 创建同一个表
  • 所以:

    g(x1)=f(x1)*(x1-0)
    g(x2)=f(x1)*(x1-0)+f(x2)*(x2-x1)
    g(x3)=f(x1)*(x1-0)+f(x2)*(x2-x1)+f(x3)*(x3-x2)
    ...
    
  • 这只是一个表格,所以如果您想要实际的函数,您需要通过 L'Grange 或任何其他插值将其转换为多项式...

  • 您还可以使用 DFFT 并将函数用作一组正弦波

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多