我记得解决了很多不确定的集成问题。有一定的标准方法来解决它们,但是仍然有一些问题需要结合多种方法来获得解决方案。但是我们如何以编程方式实现解决方案。
例如,看看 Mathematica 的在线集成器应用程序。那么我们如何编写这样一个程序,它接受一个函数作为参数并返回该函数的不定积分。
PS.输入函数可以被假定为是连续的 (即不是例如 sin (x) / x)。
你有Risch's algorithm这是微妙的不确定的(因为你必须决定两个表达式是否相等,类似于无处不在的暂停问题),并且真正实现。
如果您喜欢复杂的东西,那么求解常微分方程实际上并不难(并且计算不定积分等效于求解 y '= f(x))。存在一个伽罗瓦微分理论,该理论模仿多项式方程的伽罗瓦理论(但是具有解的对称性的李组,而不是根的置换的有限组)。Risch 的算法基于此。
您正在寻找的算法是 Risch '算法:
http://en..org/wiki/Risch_algorithm我相信使用起来有点棘手。这本书:
http://www.amazon.com/Algorithms-Computer-Algebra-Keith-Geddes/dp/0792392590有它的描述。100 页的描述。
你保留一组你知道的基本形式(多项式,基本三角函数等)的积分,并在输入的形式上使用它们。如果你不需要太多的一般性,这是可行的:例如,编写一个集成多项式的程序非常容易。
如果您想在最一般的情况下进行操作,则必须完成计算机代数系统所做的许多工作。对于某些人来说,这是一生的工作,例如,如果您查看其他答案中发布的Risch's "algorithm"或symbolic integration,则可以看到有完整的多卷书籍(“Manugenerel Bronstein,在现有的代数中实现了符号集成卷 I
如果您真的想自己编写代码,可以查看Sage的源代码或its components中列出的几个项目。当然,使用其中一个程序更容易,或者,如果您正在编写更大的程序,请使用其中一个作为库。
这些expert systems通常有一个巨大的技术集合,只是一个接一个地尝试。
我不确定 WolframMath,但在 Maple 中有一个命令可以显示所有中间步骤。如果你这样做,你会得到所有尝试过的技术作为输出。
编辑:
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(28条)