【问题标题】:How to avoid Singularity in numerical integration如何避免数值积分中的奇异性
【发布时间】:2020-03-22 17:52:45
【问题描述】:

我想用 Matlab 对以下内容进行数值积分:

fun = @(t) (((1 - (-1)^n * cos(n*pi*t/R))) ./ t);
hn = integral(fun, 0, (sqrt(R^2 - x^2)));

目前,我只是避免评估 0 中的积分,他们有没有办法在这一点上遇到奇点。

【问题讨论】:

  • 如果n 是偶数,则函数在0处有奇点。

标签: matlab integral numerical-integration


【解决方案1】:

如果你使用eps而不是0作为integral的下限,我想你也可以做到

R=101; 
X=linspace(0,R,1001)';
for n=1:10 
    for c=1:length(X) 
        x=X(c); 
        fun=@(t) (((1 - (-1)^n*cos(n*pi*sqrt(t.^2+x.^2)/R)))./sqrt(t.^2+x.^2)); 
        hn(c,n) = integral(fun,eps,(sqrt(R^2-x^2))); 
    end
end

【讨论】:

  • 感谢您的快速回答。无助于解决问题
  • @user11822932 你能说明处理奇点或不处理奇点的区别吗?否则仅通过您的描述不清楚
  • R=101; X=linspace(0,R,1001)' 对于 n=1:10 对于 c=1:length(X) x=X(c); fun=@(t) (((1 - (-1)^ncos(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 处积分的评估;
  • @user11822932 请查看我更新的解决方案。函数integral不能规避奇点,所以你需要玩一些技巧来手动避免它......
  • 它给出了完全相同的东西,我稍微修改了分母如下 1/sqrt(t^2+epqilon^2+x^2) 以避免奇点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多