Octave使用fplot绘制abs绝对值函数近0处图像异常的原因及解决方法
问题原因
Octave 内置的fplot函数默认采用自适应采样逻辑,会根据函数值的变化速率调整采样密度:由于abs(x)仅在x=0处存在导数突变,其余区间导数恒定,默认的采样策略很容易错过x=0附近的细密采样点,导致连线时将x=0左右的少量采样点连接为近似水平的线段,最终呈现出「_/」的异常形态。
修复方案
可以通过提升采样密度解决该问题,常见可选方案如下:
- 直接给
fplot指定更高的采样点数,比如设置为2000点:f = @(x)(abs(x)) fplot(f, [-1, 1], 2000) - 手动生成等间距采样点后绘图,可控性更高,完全避免自适应采样的漏采问题:
x = linspace(-1, 1, 2000); y = abs(x); plot(x, y) - 高版本Octave可通过指定
MeshDensity参数调整采样密度:f = @(x)(abs(x)) fplot(f, [-1, 1], 'MeshDensity', 2000)
内容的提问来源于stack exchange,提问作者Carla only proves trivial prop
相关产品推荐
相关产品推荐

