You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot无法绘制函数f(x)=(abs(1-(x/0.001))**(-1/2))但Mathematica可行

Gnuplot绘制函数的解决思路

针对你遇到的empty y range错误,按以下步骤排查解决:

  • 优化函数表达式:将原式改写为更清晰的形式,避免运算优先级歧义:

    f(x) = 1/sqrt(abs(1 - 1000*x))
    

    原表达式中x/0.001等价于1000*x,用整数乘法替代除法能减少计算误差,同时1/sqrt(...)比**(-1/2)更直观,降低解析错误概率。

  • 精准设置xrange,避开奇点:函数在x=0.001处分母为0,是奇点,必须避开。若要绘制(0.001,100]区间,设置xrange时给奇点留极小间隔:

    set xrange [0.001001:100]
    

    直接设[0.001:100]会让Gnuplot在奇点处计算出NaN或无穷大,导致自动范围判断失效。

  • 手动指定yrange:该函数在x>0.001时,值域是(0, +∞),但实际在x=100时y≈0.00316。根据你想展示的区域手动设置yrange,比如:

    set yrange [0:100]  # 展示从低到高的变化,可根据需求调整上限
    

    禁止Gnuplot自动判断y范围,避免因采样点分布问题误判为空范围。

  • 提升采样密度:奇点附近函数变化极快,默认采样点可能无法捕捉到有效数值,增加采样点数量:

    set samples 5000
    

    采样点越多,图像越精准,也能降低因采样点过少导致的范围判断错误。

  • 检查Gnuplot版本:旧版本对绝对值、分数指数的处理可能存在bug,升级到最新稳定版可解决这类兼容性问题。

最后执行绘制命令:

plot f(x)

内容的提问来源于stack exchange,提问作者Fernando L. R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:47:35