如何在matlab中获得积分的精度结果?

时间:2014-04-01 18:00:36

标签: matlab nan integral

我不知道如何设置积分的间隔以获得最佳精确结果。

例如,这是公式的原始定义。

y=integral(@(x) log2((f1(x))./(f2(x))), -inf, inf).

注意:f1(x)->0f2(x)->0x->-infinf,速度下降速度不同。

如果我使用[-inf, inf],Matlab会给我NaN

如果我缩小范围,Matlab会给出一个数字。但是如果我稍微增加一点间距,我会得到另一个数字。所以我想知道如何处理这种积分计算?如何在没有NaN的情况下尽可能精确地制作它?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为你的积分并不符合你给出的定义。例如,对于N = 1,被积函数简化为(1/2 - 2 * x)/ log(2),这在无限远处显然是非收敛的。对于较大的N,被积函数转换为-inf为x-> inf和inf为x-> -inf,我认为积分也不会收敛,尽管我目前还没有完整的证据。 / p>

优良作法是在运行数值分析之前分析检查数学函数。如果这是不可能的,那么首先尝试在相关范围内绘制函数本身,以了解其行为。在多个数量级上绘制函数的好方法是使用logspace函数表示x值。