我有一个没有无限积分表达式的积分函数。
具体来说,函数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)
?这不可能吗?
答案 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)
,但需要添加(ArrayValued
,true
)名称 - 值对。
该选项允许您指定向量值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)
很可能不会收敛(我认为我不需要对此进行限定,但我会对冲我的赌注。)