如何在Python函数绘图中使用浮点型数值作为步长?
问题修复方案
错误原因
你对numpy序列生成函数的参数使用有误:np.linspace(start, stop, num)的第三个参数num代表需要生成的样本点总数量,要求为整数类型,你传入的浮点型步长0.0001不符合参数要求,因此抛出类型错误。
修复方法
有两种方案可以实现指定步长生成序列:
方案1:使用np.arange生成序列(更适合指定步长的场景)
np.arange(start, stop, step)的第三个参数就是步长,支持浮点型输入。需要注意np.arange默认不包含右边界,为了避免浮点精度问题导致遗漏1.044这个点,可以将右边界设置为1.044 + 1e-8。
修正后的代码如下:
import matplotlib.pyplot as plt import numpy as np # 用arange指定步长生成x序列 x = np.arange(0.975, 1.044 + 1e-8, 0.0001) # 注:原多项式是(x-1)**7的二项式展开,可简化写法,同时减少计算误差 y = (x - 1) ** 7 fig, ax = plt.subplots() ax.plot(x, y) plt.show()
方案2:继续使用np.linspace,手动计算总点数
你可以先根据区间长度和步长计算需要生成的总点数,再将整数类型的总点数传入np.linspace:
- 区间总长度:
1.044 - 0.975 = 0.069 - 总点数 = 区间长度 / 步长 + 1 =
0.069 / 0.0001 + 1 = 691
对应x序列生成代码修改为:
x = np.linspace(0.975, 1.044, 691)
内容的提问来源于stack exchange,提问作者user15415514
相关产品推荐
相关产品推荐

