2010-07-13 26 views
14

我记得解决了很多不确定的积分问题。有一些解决它们的标准方法,但仍然有一些问题需要综合的方法才能达成解决方案。 但是,我们如何以编程方式实现解决方案。如何以编程方式计算不确定积分

例如看看Mathematica的在线集成应用程序。那么我们如何编写这样一个接受函数作为参数的程序,并返回该函数的不确定积分。

wolfram mathematica online integrator

PS。输入函数可以假定为连续的(即,不是例如sin(x)/ x)。

+6

祝你好运...... – Mau 2010-07-13 16:42:18

+0

有趣的问题。这是我一直想知道的事情。鉴于您可以递归应用规则,区分似乎更容易。定积分也可以很好地近似。期待看到这方面的方法。 – IVlad 2010-07-13 16:42:30

+2

您知道,由各种基本功能的产品和成分构成的大多数(“非平凡”)功能都具有抗转换功能*,这些功能仅能用基本功能*表示。因此,这个问题通常是“无法解决的”。 – 2010-07-13 16:48:02

回答

17

你有Risch's algorithm这是微妙的不可判定的(因为你必须决定两个表达式是否相等,类似于无处不在的暂停问题),并且实现时间很长。

如果你遇到了复杂的问题,求解一个常微分方程实际上并不困难(并且计算一个不定积分就相当于求解y'= f(x))。存在一个伽罗瓦微分理论,其模拟伽罗瓦理论的多项式方程(但是具有李群对称性而不是有限群的置换群)。里施的算法是基于它的。

+2

这是一个关于微分伽罗瓦理论的非常有趣的评论。我开始理解通常被掩盖的Risch算法的部分。 – 2010-07-13 17:23:56

1

这些expert systems通常有一个巨大的技术收集,只是一个接一个地尝试。

我不确定WolframMath,但在Maple中有一个命令可以显示所有中间步骤。如果你这样做,你会得到所有经过验证的技术。

编辑:

将输入不应该是真正棘手的部分 - 你需要编写一个parserlexer,即变换文本输入为内部表示。

3

您保存了一组基本形式,您知道(多项式,基本三角函数等)的积分,并将它们用于输入的形式。如果你不需要太多的通用性,这是可行的:例如,编写集成多项式的程序非常简单。

如果你想在最普遍的情况下做到这一点,你将不得不做很多计算机代数系统的工作。对某些人来说这是一生的工作,例如如果你看Risch's "algorithm"张贴在其他答案或symbolic integration,你可以看到有关于该主题的完整多卷书籍(“Manuel Bronstein,Symbolic Integration Volume I:Springer”),并且很少现有的计算机代数系统最大限度地实现它。

如果您确实想自己编写代码,可以查看Sage的源代码或its components中列出的几个项目。当然,使用这些程序更容易,或者,如果您要编写更大的程序,请将其中一个用作库。