Python区间绘图函数

2024-06-17 14:59:08 发布

您现在位置:Python中文网/ 问答频道 /正文

from pylab import *
def x(t) :
 if 0 <= t < 8 :
  return(2*t)
elif 8 <= t < 20 :
  return(t**3)

t = arange(5.0, 20, 0.3)
print([i for i in t])

输出为 [5.0, 5.3, 5.6, 5.8999999999999995, 6.199999999999999, 6.499999999999999, 6.799999999999999, 7.099999999999999, 7.399999999999999, 7.699999999999998, 7.999999999999998, 8.299999999999997, 8.599999999999998, 8.899999999999999, 9.199999999999998, 9.499999999999996, 9.799999999999997, 10.099999999999998, 10.399999999999997, 10.699999999999996, 10.999999999999996, 11.299999999999997, 11.599999999999996, 11.899999999999995, 12.199999999999996, 12.499999999999996, 12.799999999999995, 13.099999999999994, 13.399999999999995, 13.699999999999996, 13.999999999999995, 14.299999999999994, 14.599999999999994, 14.899999999999995, 15.199999999999994, 15.499999999999993, 15.799999999999994, 16.099999999999994,16.3999999999999,16.69999999999999992,16.999999999999999993,17.299999999999999994,17.5999999999999999999,17.8999999999999999,18.999999999999992,18.49999999999999993,18.7999999999999999999,19.0999999999999999999,19.39999999999999999999,19.69999999999992,19.999999999993]

我想要的是 [5.0、5.3、5.6、5.9、6.2、6.5、6.8、7.1、7.4、7.7、8.0等等]

说到8.0,我的输出是7.999999998<;8. 所以答案是错误的。 我想要8.0。 这样我就可以画函数了

plot(t, array([x(i) for i in t]))

Tags: 函数答案infromimportltforreturn
1条回答
网友
1楼 · 发布于 2024-06-17 14:59:08

我想你只需要简单的四舍五入

将最后一行更改为:

print([round(i,1) for i in t])

输出:

[5.0, 5.3, 5.6, 5.9, 6.2, 6.5, 6.8, 7.1, 7.4, 7.7, 8.0, 8.3, 8.6, 8.9, 9.2, 9.5, 9.8, 10.1, 10.4, 10.7, 11.0, 11.3, 11.6, 11.9, 12.2, 12.5, 12.8, 13.1, 13.4, 13.7, 14.0, 14.3, 14.6, 14.9, 15.2, 15.5, 15.8, 16.1, 16.4, 16.7, 17.0, 17.3, 17.6, 17.9, 18.2, 18.5, 18.8, 19.1, 19.4, 19.7]

因此,在您的情况下,代码变成如下所示:

from pylab import *
def x(t) :
    if 0 <= t < 8 :
        return(2*t)
    elif 8 <= t < 20 :
        return(t**3)

t = arange(5.0, 20, 0.3)
t = [round(i,1) for i in t]
print(t)

现在您可以使用此t并获得以下绘图:

enter image description here

相关问题 更多 >