We will initialize t
just like in the previous section. Again, k
=
99
should be sufficient. In order to draw sawtooth and triangle waves, follow these steps:
zero
:t = np.linspace(-np.pi, np.pi, 201) k = np.arange(1, 99) f = np.zeros_like(t)
sin()
and sum()
functions:for i, ti in enumerate(t): f[i] = np.sum(np.sin(2 * np.pi * k * ti)/k) f = (-2 / np.pi) * f
plt.plot(t, f, lw=1.0, label='Sawtooth') plt.plot(t, np.abs(f), '--', lw=2.0, label='Triangle') plt.title('Triangle and sawtooth waves') plt.grid() plt.legend(loc='best') plt.show()
In the following figure, the triangle wave is the one with the dashed line:
We drew a sawtooth wave using the sin()
function. We assembled the input values with the linspace()
function and the k
values with the arange()
function. A triangle wave was derived from the sawtooth wave by taking the absolute value (see sawtooth.py
):
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, ti in enumerate(t): f[i] = np.sum(np.sin(2 * np.pi * k * ti)/k) f = (-2 / np.pi) * f plt.plot(t, f, lw=1.0, label='Sawtooth') plt.plot(t, np.abs(f), '--', lw=2.0, label='Triangle') plt.title('Triangle and sawtooth waves') plt.grid() plt.legend(loc='best') plt.show()