【发布时间】:2017-06-22 01:00:50
【问题描述】:
我有一个密度函数f_N,定义如下(K_nu(z)是修改后的贝塞尔函数):
我想为N 的每个值计算以下积分:
以下是上述在matlab中的实现。
for N=1:100
syms z
f =@(z) (1/(gamma(N)*sqrt(pi))*(z/2).^(N-0.5).*besselk(0.5-N,z));
g = @(z) f(z).*log(f(z));
val=integral(g,0,Inf);
但是当我运行上面的代码时,它总是为 N 的各种值返回 NaN,并带有以下警告:
Warning: Infinite or Not-a-Number value encountered
有人可以建议一种简单的方法来执行此操作或避免此问题吗?
【问题讨论】:
-
将
^替换为.^并告诉我们会发生什么。 -
我收到此错误:
Error using * Inner matrix dimensions must agree. -
您还需要将
*替换为.*。那个点使得操作是元素方面的 -
@LuisMendo:我这样做了,它评估为
NaN值,显示此警告Warning: Infinite or Not-a-Number value encountered。 -
我建议将您的函数 g 绘制为 N 的几个值,而不进行积分。从图中你应该可以看出它是否是你所期望的,问题是出在 g 的定义上,还是出在它的积分上。
标签: matlab numerical-integration