我不知道如何设置积分的间隔以获得最佳精确结果。
例如,这是公式的原始定义。
y=integral(@(x) log2((f1(x))./(f2(x))), -inf, inf).
注意:f1(x)->0
和f2(x)->0
时x->-inf
或inf
,速度下降速度不同。
如果我使用[-inf, inf]
,Matlab会给我NaN
。
如果我缩小范围,Matlab会给出一个数字。但是如果我稍微增加一点间距,我会得到另一个数字。所以我想知道如何处理这种积分计算?如何在没有NaN
的情况下尽可能精确地制作它?
非常感谢。
答案 0 :(得分:0)
我认为你的积分并不符合你给出的定义。例如,对于N = 1,被积函数简化为(1/2 - 2 * x)/ log(2),这在无限远处显然是非收敛的。对于较大的N,被积函数转换为-inf为x-> inf和inf为x-> -inf,我认为积分也不会收敛,尽管我目前还没有完整的证据。 / p>
优良作法是在运行数值分析之前分析检查数学函数。如果这是不可能的,那么首先尝试在相关范围内绘制函数本身,以了解其行为。在多个数量级上绘制函数的好方法是使用logspace
函数表示x值。