gnuplot函数无法绘图:是否存在运算顺序问题?
gnuplot函数绘图异常原因分析
问题核心在于**运算符优先级与运算顺序的差异:
- gnuplot中,指数运算
**的优先级高于除法/,且除法遵循左结合规则。 - 第一行代码里的
1/2/(pi*d)**0.5会被解析为((1/2) / (pi*d)) ** 0.5,实际运算步骤是:- 计算
1/2得0.5 - 计算
pi*d(pi≈3.1416,d=0.0065,结果≈0.02042) - 用0.5除以0.02042,得到≈24.485
- 对24.485开平方,得到≈4.948
- 计算
- 当x=1时,指数项
exp(-1*(1-x)**2/(4*d))的值为1,此时f(x)=4.948,已经超出了你设定的y轴范围[0:4],整个曲线的所有点都超出y轴上限,因此无法在图中显示。
第二行代码通过括号1/(2*(pi*d)**0.5)明确了正确的运算顺序:
- 先计算
(pi*d)**0.5(≈0.1429) - 乘以2得到≈0.2858
- 用1除以0.2858得到≈3.499
- 这个结果在y轴
[0:4]范围内,因此函数曲线可以正常显示。
你可以去掉y轴范围限制验证:第一行的函数其实能绘制出来,只是之前被y轴范围过滤了。
内容的提问来源于stack exchange,提问作者4gottenMyMaths
相关产品推荐
相关产品推荐

