Matplotlib Float类型错误:绘制指定函数图像的代码调整求助
如何生成0.1步长的数值序列绘制目标函数图像
你遇到的问题很常见——Python内置的range()函数只接受整数参数,所以没法直接用0.1作为步长。下面给你两种简单的解决方法,都能帮你生成符合要求的x序列:
方法1:用列表推导式手动生成(无需额外库)
不用引入新模块,直接通过整数range结合乘法来生成浮点数序列:
import matplotlib.pyplot as plt import math # 生成0到10,步长0.1的序列(共101个点,包含0和10) x = [t * 0.1 for t in range(101)] y = [5 * math.exp(-t) * math.cos(2 * math.pi * t) for t in x] plt.plot(x, y) plt.show()
这里range(101)生成0到100的整数,每个数乘以0.1就得到了0, 0.1, 0.2,...,10的序列,完美匹配你的步长要求。
方法2:用numpy的linspace函数(更简洁高效)
如果你不介意引入numpy库,linspace()可以直接指定起始值、结束值和点数,自动生成均匀分布的序列:
import matplotlib.pyplot as plt import numpy as np # 从0到10生成101个均匀分布的点(步长为(10-0)/(101-1)=0.1) x = np.linspace(0, 10, 101) # 利用numpy向量化运算,比列表推导式效率更高 y = 5 * np.exp(-x) * np.cos(2 * np.pi * x) plt.plot(x, y) plt.show()
这种方法在处理大量数据时优势更明显,代码也更简洁。
两种方法都能让你得到平滑的指数衰减余弦曲线,替换原来的range(10)后就能看到预期的图像了~
内容的提问来源于stack exchange,提问作者Doc
相关产品推荐
相关产品推荐

