MATLAB - 用bessel函数求解积分

时间:2018-01-06 08:57:48

标签: matlab integral

我试图解决变量x的积分(从0到Inf),这是变量S的函数。我想解决这个积分并找到依赖于变量S的结果向量。{{3 }}

我想通过polyfit(具有函数E(S))近似这个函数

nu=0; int_val=zeros([255,1]); for i=1:10
S=i/100;
%besselj(0,S*2)
fun = @(x)log(abs(x-(pi/2)^2.*(-S.^2/2))).*x.*exp((x.^2+S.^2)/2).*besselj(nu,S.*x);
int_val(i) = integral(fun,0,Inf); end

不幸的是,MATBAL只计算NaN数。这对我来说非常重要..请帮忙。

1 个答案:

答案 0 :(得分:0)

正如我在评论中已经写过的那样,对于大x,你的被积函数正在增长到无穷大。因此,积分不能收敛。

以下代码

nu=0; 
int_val=zeros([255,1]); 
i = 1;
S=i/100;
fun = @(x)log(abs(x-(pi/2)^2.*(-S.^2/2))).*x.*exp((x.^2+S.^2)/2).*besselj(nu,S.*x);
x = 0:0.1:100;
semilogy(x, fun(x))

导致这个情节:

enter image description here

你不能将这样的函数从0整合到无穷大,因为结果不会收敛到有限数。

在上面的回答中,您声明S(x)取决于x。但是,在你的代码中,S是一个常量。也许这就是问题所在 - 如果你用一个x的实际函数替换S,从x到无穷大为零,你可能会得到一个收敛积分。