Matlab 如何避免数值积分中的奇异性
我想用Matlab对以下内容进行数值集成:Matlab 如何避免数值积分中的奇异性,matlab,integral,numerical-integration,Matlab,Integral,Numerical Integration,我想用Matlab对以下内容进行数值集成: fun=@(t)((1-(-1)^n*cos(n*pi*t/R))/t); hn=积分(fun,0,(sqrt(R^2-x^2)); 现在,我只是避免计算0中的积分,它们是否会在这一点上遇到奇点。如果您使用eps而不是0作为积分的下限,我想您也可以得到它 R=101; X=linspace(0,R,1001)'; 对于n=1:10 对于c=1:长度(X) x=x(c); 乐趣=@(t)((1-(-1)n*cos(n*pi*sqrt(t.^2+x.^2
fun=@(t)((1-(-1)^n*cos(n*pi*t/R))/t);
hn=积分(fun,0,(sqrt(R^2-x^2));
现在,我只是避免计算0中的积分,它们是否会在这一点上遇到奇点。如果您使用
eps
而不是0
作为积分的下限,我想您也可以得到它
R=101;
X=linspace(0,R,1001)';
对于n=1:10
对于c=1:长度(X)
x=x(c);
乐趣=@(t)((1-(-1)n*cos(n*pi*sqrt(t.^2+x.^2)/R))/sqrt(t.^2+x.^2));
hn(c,n)=积分(fun,eps,(sqrt(R^2-x^2));
结束
结束
感谢您的快速回答。这无助于解决问题problem@user11822932你能说明处理奇点与不处理奇点的区别吗?否则,仅通过您的描述r=101就不清楚了;X=linspace(0,R,1001)”,对于n=1:10,对于c=1:length(X)X=X(c);乐趣=@(t)((1-(-1)^NCO(npi*sqrt(t.^2+x.^2)/R))。/sqrt(t.^2+x^2));hn(c,n)=积分(fun,0,(sqrt(R^2-x^2));结束结束这是我处理奇点时的代码(在本例中,我有以下警告:已达到使用的最大间隔数限制)一旦我将内部for循环更改为for c=1:lenght(x)-1 x=x(c+1),我将避免奇点,但忽略x=0时积分的计算@用户11822932请查看我的更新解决方案。函数integral
无法规避奇点,因此您需要使用一些技巧手动避免它…它给出了完全相同的结果,我稍微修改了分母,如下1/sqrt(t^2+epqilon^2+x^2)以避免奇点。如果n
为偶数,则函数在0处没有奇点。