与えられたリストについて1行で微分・積分【Python】
Dec. 6, 2019, 4:36 a.m. edited Dec. 21, 2019, 5:14 a.m.リストに\(f(x)\)の中身が入っているとする。例えば、\(f(x)=x^2\)で\(x\in[-5,5]\cap\mathbb{Z}\)のとき
>>> a = [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25]
となる1。
微分
微分は1つ前の要素との差なので、要素数が1つ減り、
>>> [now - prev for prev, now in zip(a, a[1:])]
[-9, -7, -5, -3, -1, 1, 3, 5, 7, 9]
となる。
積分
積分はひたすら足していけば良いので([25, 25+16, 25+16+9, ...]
)、
>>> import itertools
>>> list(itertools.accumulate(a))
[25, 41, 50, 54, 55, 55, 56, 60, 69, 85, 110]
となる。
なお、\(f'(x)=2x\)や\(\int f(x)dx=\frac{1}{3}x^3+{\rm C}\)(\({\rm C}\)は積分定数)と値がずれているが、これは\(x\)が整数という離散値をとっているためで、リストa
を作るときにもっと値を細かく刻めば一致するようになる。
-
[x ** 2 for x in range(-5, 6)]
で作れる。 ↩
Tags
- #Python (26)
- #量子力学 (23)
- #量子情報 (21)
- #Unity (11)
- #Outer Wilds (11)
- #Mac (9)
- #数学 (8)
- #AoE2 (8)
- #Linux (6)
- #Quantum Zoo (6)
- #意識 (5)
- #シミュレーション (5)
- #NumPy (5)
- #Bash (5)
- #相対論 (4)
- #Docker (4)
- #Android (4)
- #Qiskit (4)
- #Rust (3)
- #PyO3 (3)
- #GitHub (3)
- #Django (2)
- #情報理論 (2)
- #LaTeX (2)
- #AR (2)
- #Git (2)
- #iOS (2)
- #C++ (2)
- #正規表現 (2)
- #電磁気学 (1)
- #Google Drive (1)
- #Overleaf (1)
- #Let's Encrypt (1)
- #ポケモン (1)
- #AdMob (1)
- #Autoya (1)
- #docopt (1)
- #SymPy (1)
- #AWS (1)
- #Twitter (1)
- #URP (1)
- #iMovie (1)
- #論文 (1)
- #PyTorch (1)
- #C# (1)
- #Vim (1)