数学のブログ

Pythonと便利なライブラリたち Matplotlib、NumPy、関数のベクトル化

Pythonで学ぶフーリエ解析と信号処理 (神永 正博)(著)、コロナ社)の第1章(Pythonと便利なライブラリたち)、章末問題1-7の解答を求めてみる。

コード(Python)

#!/usr/bin/env python3
import numpy as np
import matplotlib.pyplot as plt

print('7.')

print('Pyplotベース')


def x(t: float) -> float:
    if t >= 1:
        return np.exp(-(t - 1)**2)
    if t >= 0:
        return 1
    return np.cos(10 * t)


npstepx = np.vectorize(x)
ts = np.linspace(-1, 1, 1000)
xs = npstepx(ts)

plt.plot(ts, xs)
plt.savefig('sample7_1.png')
plt.show()

print('オブジェクト指向ベース')
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(ts, xs)
ax.set_aspect(1)
fig.savefig('sample7_2.png')
plt.show()

入出力結果

% ./sample7.py      
7.
Pyplotベース
オブジェクト指向ベース
%