MATLAB复杂集成

MATLAB复杂集成,matlab,integral,Matlab,Integral,我有一个积分函数,它没有不定积分表达式 具体来说,函数是f(y)=h(y)+积分(@(x)exp(-x-1/x),0,y),其中h(y)是一个简单的函数 g(w)=w*integral(1-f(y).^(1/w),0,inf) where w is a real number in [0,1]. Matlab数值计算f(y)很好,但我想计算以下函数 g(w)=w*integral(1-f(y).^(1/w),0,inf) where w is a real number in [0,1].

我有一个积分函数,它没有不定积分表达式

具体来说,函数是
f(y)=h(y)+积分(@(x)exp(-x-1/x),0,y),其中h(y)
是一个简单的函数

g(w)=w*integral(1-f(y).^(1/w),0,inf) where w is a real number in [0,1].
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)
?不可能吗?

包含e^(-1/x)的表达式通常很难在x=0附近计算。事实上,我很惊讶Matlab一开始就能很好地计算f(y)。我建议尝试计算大于零的
g(w)=w*积分(1-f(y)。^(1/w),epsilon,inf)
对于
epsilon
,然后逐渐向0减小
epsilon
,以检查是否可以得到数值收敛。衔接当然不能保证

您可以使用现有函数计算
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)
很可能不收敛(我不认为我需要证明这一点,但我将对冲我的赌注)。

因为对于实x,当x从右边接近0时,exp(-1/x)的极限存在,积分从0收敛到任意实x。当从0开始对复数进行积分时,会出现复杂的情况。@TroyHaskin,很好。积分的收敛性当然是有保证的,但我怀疑
g(w)
的数值收敛性。在我看来,
x
w
当它们都接近0时,可能会以一种不好的方式相互抵消。基尔宾斯基:哦,是的,我完全同意
w
变为0可能也是一个大问题。我只关注f(y)。