Python+NumPy绘制常见曲线的方法详解
本文详细介绍利用Python和NumPy库绘制多种常见数学曲线与波形的方法。内容涵盖利萨茹曲线的参数方程实现、基于黄金比例与矩阵运算的斐波那契数列计算、通过傅里叶级数叠加生成的方波,以及锯齿波与三角波的绘制技巧。文中提供具体代码示例与参数设置建议,帮助开发者掌握NumPy在科学计算与可视化中的应用。
在NumPy库中,所有标准三角函数如sin、cos、tan等均已封装为对应的通用函数,便于直接调用。
一、利萨茹曲线
利萨茹曲线(Lissajous curve)是一种利用三角函数生成的有趣图形,常见于示波器显示。该曲线由特定的参数方程定义。
x = A sin(at + n/2)
y = B sin(bt)
利萨茹曲线的关键参数包括A、B、a和b。为简化演示,此处设定A和B均为1,并设置参数a=9,b=8进行绘制。
import numpy as np
import matplotlib.pyplot as plt
A=B=1
a=9
b=8
t = np.linspace(-np.pi, np.pi, 201) #使用linspace函数初始化变量t
x = np.sin(a * t + np.pi/2) # sin 函数和NumPy常量 pi 计算变量 x
y = np.sin(b * t) # sin函数计算变量y
plt.plot(x, y)
plt.show()运行结果:

二、计算斐波那契数列
斐波那契数列的递推关系可通过矩阵形式表示,其计算过程等价于矩阵的连乘操作。本文介绍两种计算斐波那契数列的方法。
1)黄金比例计算方法:利用rint函数对浮点数结果进行取整,但保持其浮点数类型不变。
数列序列为:1,1,2,3,5,8,13,21,34,55,89,……
# 斐波那契数,用黄金分割公式或通常所说的比奈公式,加上取整函数
n = np.arange(1, 9)
sqrt5 = np.sqrt(5)
phi = (1 + sqrt5)/2 #利用根号5计算黄金比例,或者直接用phi=1+0.618
print("比例:",phi)
print('\n')
fibonacci = np.rint((phi**n - (-1/phi)**n)/sqrt5) #用rint()函数对浮点数取整但不改变浮点数类型
print("Fibonacci", fibonacci)2)利用矩阵进行计算:通过matrix函数构建相应的变换矩阵。
# 斐波那契数,用矩阵来表示斐波那契数列的递推关系
F = np.matrix([[1, 1], [1, 0]])
print ("8th Fibonacci:", (F ** 10)[0, 0])运行结果:
比例: 1.618033988749895 Fibonacci [ 1. 1. 2. 3. 5. 8. 13. 21.] 8th Fibonacci: 89
三、方波
方波可以近似表示为多个正弦波的叠加。根据傅里叶分析,任意方波信号均可用无穷傅里叶级数精确表示。
为了获得足够的精度,需要累加多项级数,项数越多结果越精确。此处取k=99(也可尝试9、50、1000等值以观察不同效果)。绘制方波的具体步骤如下。
1) 初始化变量t和k,并将函数值数组初始化为零。
m = np.linspace(-np.pi, np.pi, 201) #从 -pi 到 pi 上均匀分布的 201 个点
k = np.arange(1,99) # k=99 以保证足够的精度,如图中的9 20 99显示的波形
k = 2 * k - 1
f = np.zeros_like(m)2)使用sin()计算正弦函数,并通过sum()函数计算各项级数的和。
for i in range(len(m)): #使用 sin 和 sum 函数进行计算
f[i] = np.sum(np.sin(k * m[i])/k)
f = (4 / np.pi) * f3)绘制生成的波形图。
plt.plot(t, f)
plt.show()
四、锯齿波和三角波
锯齿波和三角波是常见的波形类型。与方波类似,它们也可以表示为无穷傅里叶级数。对锯齿波取绝对值即可得到三角波。锯齿波的无穷级数表达式如下。
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-np.pi, np.pi, 201)
k = np.arange(1, 99)
f = np.zeros_like(t)
for i in range(len(t)):
f[i] = np.sum(np.sin(2 * np.pi * k * t[i])/k)
f = (-2 / np.pi) * f
plt.plot(t, f, lw=1.0)
plt.plot(t, np.abs(f), lw=2.0)
plt.show()运行结果:

以上就是Python+NumPy绘制常见曲线的方法详解的详细内容,更多关于Python NumPy绘制曲线的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













