寻找一种特定的数值积分算法

时间:2015-06-15 23:01:37

标签: algorithm numerical-methods numerical numerical-integration

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

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

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

1 个答案:

答案 0 :(得分:1)

  1. 数值积分总是只返回一个数字

    • 如果你不想要数字而是功能
    • 然后您无法使用数字集成执行此任务直接
  2. 多项式方法

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

    • 这对任何f(x)都无法解决,因为我们不知道如何整合所有内容
    • 因此您需要编制所有集成规则
    • 喜欢单身,替换,Z或L'地点转换
    • 并在字符串/符号范例中编写解算器
    • 大量工作
    • 可能有libs或dll可以做到这一点
    • 来自Derive或Matlab等程序......
  4. [edit1]因为函数f(x)只是一个表格

    • double f[][2]={ x1,f(x1),x2,f(x2),...xn,f(xn) };
    • 您可以间隔g(x)=Integral(f(x))
    • <0,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&#39; Grange或任何其他插值将其转换为多项式...

    • 你也可以使用DFFT和作为sin-wave集合的功能