Matlab无法计算无限积分?

时间:2017-11-10 20:28:54

标签: matlab wolfram-mathematica symbolic-math probability-distribution

大家好。所以我正在研究随机微积分,偶尔我们需要为一些复杂的分布计算积分(从-infinity到+ infinity)。在这种情况下,它是

Dist. being integrated

右边的答案。这是我在Matlab中放入的代码(我有符号数学工具箱),Matlab根本无法处理:

>> syms x t
>> f = exp(1+2*x)*(1/((2*pi*t)^0.5))*exp(-(x^2)/(2*t))
>> int(f,-inf,inf)

ans =

-((2^(1/2)*pi^(1/2)*exp(2*t + 1)*limit(erf((2^(1/2)*((x*1i)/t - 2i))/(2*(-1/t)^(1/2))), x, -Inf)*1i)/(2*(-1/t)^(1/2)) - (2^(1/2)*pi^(1/2)*exp(2*t + 1)*limit(erf((2^(1/2)*((x*1i)/t - 2i))/(2*(-1/t)^(1/2))), x, Inf)*1i)/(2*(-1/t)^(1/2)))/(2*pi*t)^(1/2)

最后这个答案看起来像是无意义,而Wolfram(通过他们的免费工具)给出了上面图片的答案。我是否遗漏了在matlab中进行基本数学工作页面未涵盖的集成的基本原理?有人请帮助我理解我在哪里做错了吗?

2 个答案:

答案 0 :(得分:2)

为了解释正在发生的事情,我们需要一些理论:

Matlab或Mathematica等符号系统通过Risch algorithm象征性地计算积分(是的,有一种机械地计算积分的方法,就像导数一样。)

但是,Risch算法的工作原理不同于使用推导规则。严格来说,它不是算法,而是semi-algorithm。这不是确定性的(就像算法一样)。

此(半)算法对输入表达式(要积分的一个)进行一系列转换,在特定点上,它需要询问转换后的表达式是否等于零,因为如果它等于零,它无法继续(输入不能使用有限的一组术语进行积分)。

问题(以及“半算法”的原因)是(显然简单的)方程:

E = 0

indecidable(也称为the constant problem)。这意味着对于任何表达式E,都不存在形式上的方法来解决常数问题。当然,我们知道可以解决表达式E的特定形式(即多项式)的常数问题,但是解决一般情况下的问题是不可能的。

这也意味着Risch算法不是完美的(能够求解有限积分中的任何积分)。换句话说,Risch算法将具有强大的功能,能够为我们尽可能多地解决形式E的常量问题,但没有解决一般情况的希望。

不同的符号系统具有相似但不同的方法来尝试求解方程式(因此也解决了常数问题),这解释了为什么其中某些符号系统可以“求解”不同的积分集的原因。

并且归纳起来,因为没有符号系统永远无法解决一般情况下的常数问题,所以它也无法解决任何积分(有限项可积分)。

答案 1 :(得分:0)

int()的第二个参数需要是您要整合的变量(在这种情况下看起来像t):

syms x t
f = exp(1+2*x)*(1/((2*pi*t)^0.5))*exp(-(x^2)/(2*t))
int(f,'t',-inf,inf) % <- integrate over t