Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

問題3.17の解答(Matplotlib)

昨夜サボってたグラフの表示。sympy の関数を numpy に持ち込むのに sympy.lambdify を使った。

import sympy as sym
from sympy.abc import x
import pylab
import numpy as np

def graph(f, range, nums=100):
    vf = np.vectorize(f)
    t = np.linspace(range[0], range[1], nums)
    s = vf(t)
    pylab.plot(t, s)
    pylab.show()

print "[3.17 (1)]"
f3 = sym.sin(x) - 3 * sym.sin(2 * x) + 2 * sym.cos(3 * x)
graph(sym.lambdify(x, f3), (0., 2. * np.pi))

print "[3.17 (2)]"
f4 = 3 * sym.exp(- x ** 2) \
     - 2 * sym.exp(- 2 * (x - 1) ** 2) - 2 * sym.exp(- 2 * (x + 1) ** 2) \
     + sym.exp(- 3 * (x - 2) ** 2) + sym.exp(- 3 * (x + 2) ** 2)
graph(sym.lambdify(x, f4), (-3., 3.))