【发布时间】:2018-01-06 08:57:47
【问题描述】:
我正在尝试求解变量 x(从 0 到 Inf)的积分,它是变量 S 的函数。我想求解这个积分并找到依赖于变量 S 的结果向量。integral
然后我想通过 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 数。这对我来说很重要。请帮忙。
【问题讨论】:
-
有没有可能应该是
.* besselj而不是*besselj? -
您是否仔细检查过您在
fun中定义的函数是否真的是您要评估的被积函数?对于较大的 x,该函数似乎正在增长到非常大的数字,因此积分无法收敛。 -
截图中的公式并不是真正的有效表达式。什么是 S(x)?日志的参数是什么(只有 x?)?
-
因此,作为一般提示,每当您想对一个函数进行数值积分并遇到某种麻烦时,请务必将被积函数绘制为 x 的函数,看看它是否符合您的预期......
-
另一条评论:符号 I_0 经常用于修改后的贝塞尔函数,而不是通常的贝塞尔函数,请参阅wikipedia。也许你混淆了贝塞尔函数的种类?