'Explicit integral could not be found',包括伽马函数的集成

'Explicit integral could not be found', integration including gamma function

如果我尝试计算以下积分

,我会收到一个众所周知的错误 "Explicit integral could not be found"
 syms x

 funx = (cos(x)^(1/3))*cos(x);

 I=int(funx,x,0,pi/2);

我收到警告:

Warning: Explicit integral could not be found.

Mathematica 将该积分计算为 0.910744。

我尝试过使用正交 quadgkquadl,但没有任何效果。请帮助确定此问题的修复方法。任何帮助表示赞赏。非常感谢!

octave 中使用 quad 给出了正确的结果而没有警告:

octave:1> f = inline ("(cos(x)^(1/3))*cos(x)");
octave:2> quad(f,0,pi/2)
ans =  0.91074

但据说 octave 中的 quad 函数比 matlab 中的函数更稳定。

octavematlab 的免费开源版本。它具有等效的 shell 以及大多数内置命令,但是 - 根据我在 数值积分 教授的说法,执行积分的算法更好。

使用较新版本的 Matlab (2012b),您的代码给出了 I=pi^(3/2)/(4*gamma(2/3)*gamma(5/6))double(I)=0.910743992957843

要以数字方式执行此操作,您必须使 funx 成为匿名函数,而不是符号表达式。有两种方法可以做到这一点。

只需将 funx 定义为(不执行 syms x

funx = @(x) (cos(x)^(1/3))*cos(x);

或使用matlabFunction,

syms x
funx = (cos(x)^(1/3))*cos(x);
funx = matlabFunction(funx);

现在可以使用integralquadquadgk等进行数值积分