'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。
我尝试过使用正交 quadgk
、quadl
,但没有任何效果。请帮助确定此问题的修复方法。任何帮助表示赞赏。非常感谢!
在 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
中的函数更稳定。
octave
是 matlab
的免费开源版本。它具有等效的 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);
现在可以使用integral
、quad
、quadgk
等进行数值积分
如果我尝试计算以下积分
,我会收到一个众所周知的错误 "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。
我尝试过使用正交 quadgk
、quadl
,但没有任何效果。请帮助确定此问题的修复方法。任何帮助表示赞赏。非常感谢!
在 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
中的函数更稳定。
octave
是 matlab
的免费开源版本。它具有等效的 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);
现在可以使用integral
、quad
、quadgk
等进行数值积分