Gnuplot绘制函数时报all points y value undefined错误如何解决
Gnuplot绘制指定函数报错「all points y value undefined!」解决方案
错误原因
该报错是因为函数在gnuplot默认的x取值区间内全部无定义,核心有两个限制条件:
- 对数真数必须大于0:函数中
log(0.2*x)要求0.2*x > 0,即x > 0,但gnuplot默认x范围是[-10:10],负半轴的点全部无定义 - 分母不能为0:计算常数项
log(log(1/10 + 1))(注意gnuplot默认log()为自然对数,以10为底需用log10()),可得分母为0的奇点位置在x≈0.477,跨奇点采样也可能出现大量无定义点
解决步骤
- 第一步:手动设置x的合法取值范围,避开x≤0的区域,按需选择奇点单侧的区间即可,比如设置
set xrange [1:200] - 第二步:可选设置y范围,避免奇点附近的极端值干扰显示效果
- 第三步:重新执行绘图命令即可
完整可运行示例代码
# 定义目标函数 f(x) = 250*x/(log(0.2*x)-log(log(1/10+1))) # 设置x合法取值范围,可根据展示需求调整 set xrange [1:200] # 可选:限制y范围避免异常值 set yrange [0:8000] # 执行绘图 plot f(x)
如果你需要使用以10为底的对数,将代码中所有
log()替换为log10()即可,无需修改其他逻辑
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

