【问题标题】:MATLAB complicated integrationMATLAB复杂积分
【发布时间】:2015-01-27 19:34:58
【问题描述】:

我有一个没有不定积分表达式的积分函数。

具体来说,函数是f(y)=h(y)+integral(@(x) exp(-x-1/x),0,y) where h(y)是一个简单的函数。

Matlab 数值计算f(y) 很好,但我想计算以下函数。

g(w)=w*integral(1-f(y).^(1/w),0,inf) where w is a real number in [0,1].

计算g(w) 的问题在于以数字方式处理f(y).^(1/w)

如何使用 MATLAB 计算 g(w)?不可能吗?

【问题讨论】:

    标签: matlab integral


    【解决方案1】:

    包含 e^(-1/x) 的表达式在 x = 0 附近通常难以计算。实际上,我很惊讶 Matlab 最初计算 f(y) 的效果很好。我建议尝试将g(w)=w*integral(1-f(y).^(1/w),epsilon,inf) 计算为大于零的epsilon,然后逐渐将epsilon 减少到0,以检查是否可以完全获得数值收敛。当然不能保证收敛!

    【讨论】:

    • 因为 x 从右边接近 0 时 exp(-1/x) 的极限对于实数 x 存在,所以积分从 0 收敛到任何实数 x。当从 0 开始对复数进行积分时,就会出现复杂情况。
    • @TroyHaskin,说得好。当然可以保证积分的收敛,但我对g(w)numerical 收敛有疑问。在我看来,xw 在它们都接近零时可能会以一种糟糕的方式相互竞争。
    • Kielpinkski 哦,是的,我绝对同意w 变为 0 也可能是一个大问题。我只关注 f(y)。
    【解决方案2】:

    您可以使用您拥有的函数计算g(w),但您需要添加 (ArrayValued,true) 名称-值对。 该选项允许您指定向量值 w 并且 允许嵌套的 integral 调用接收 y 值的向量,这就是 integral 自然工作的方式。

    f = @(y) h(y)+integral(@(x) exp(-x-1/x),0,y,'ArrayValued',true);
    g = @(w) w .* integral(1-f(y).^(1./w),0,Inf,'ArrayValued',true);
    

    至少,这适用于我的 R2014b 安装。


    注意:虽然h(y) 可能很简单,但如果它在正实线上的积分不收敛,g(w) 很可能不会收敛(我认为我不需要限定它,但我会对冲我的赌注)。

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 2013-01-29
      • 2018-11-12
      • 1970-01-01
      • 2023-03-08
      • 2012-04-25
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多