我得到一个众所周知的错误"无法找到明确的积分"如果我尝试评估以下积分
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
,但没有任何效果。请帮助确定此问题的修复程序。任何帮助表示赞赏。非常感谢你!
答案 0 :(得分:1)
使用较新版本的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
等以数字方式完成整数。
答案 1 :(得分:0)
在quad
中使用octave
会在没有警告的情况下提供正确的结果:
octave:1> f = inline ("(cos(x)^(1/3))*cos(x)");
octave:2> quad(f,0,pi/2)
ans = 0.91074
但据说quad
中的octave
函数比matlab
中的函数更稳定。
octave
是matlab
的免费开源变体。它具有相同的shell以及大多数内置命令,但是 - 根据我在 Numerical Integration 中的教授,可以使用更好的算法来执行集成。