MATLAB复杂的集成

时间:2015-01-27 10:26:00

标签: matlab integral

我有一个没有无限积分表达式的积分函数。

具体来说,函数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)?这不可能吗?

2 个答案:

答案 0 :(得分:0)

包含e ^( - 1 / x)的表达式通常很难在x = 0附近计算。实际上,我很惊讶Matlab首先计算了f(y)。我建议尝试计算g(w)=w*integral(1-f(y).^(1/w),epsilon,inf) epsilon大于零,然后逐渐将epsilon递减到0,以检查是否可以获得数值收敛。收敛肯定无法保证!

答案 1 :(得分:0)

您可以使用自己的函数计算g(w),但需要添加(ArrayValuedtrue)名称 - 值对。 该选项允许您指定向量值w 允许嵌套integral调用接收y值的向量,这是{{1自然有效。

integral

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


注意:虽然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); 可能很简单,但如果它在正实线上的积分不会收敛,h(y)很可能不会收敛(我认为我不需要对此进行限定,但我会对冲我的赌注。)