LoginSignup
0
0

More than 3 years have passed since last update.

【数理考古学】ディラックのデルタ関数とヘヴィサイドのステップ関数

Posted at

複数の次元で参照されるので分離しました(2021.3.8)

ディラックのデルタ関数

単位インパルス関数ともいう様です。
デルタ関数とヘヴィサイドの階段関数

ディラックのデルタ関数 (Dirac delta function) はx=0で無限大、その他の区間で
0の値をもち、全区間での積分が1となるように定義された特殊な関数です。

\delta (t) = \left\{
\begin{array}{ll}
0 & (t \neq 0) \\
\infty & (t = 0)
\end{array}
\right.
\int_{-\infty}^{\infty}\delta (t)dx=1

積分するとステップ関数sympy.Heaviside(t)になります。

import sympy as sym

# 記号t,vを定義
sym.var("t,v")

# v = δ(t)
v = sym.DiracDelta(t)

dm = v.subs(t, -1)
d0 = v.subs(t, 0)
dp = v.subs(t, 1)

d_list = [dm, d0, dp]

print("[δ(-1), δ(0), δ(1)] =", d_list)

# デルタ関数の不定積分
i = sympy.integrate(v, t)

print("∫δ(t)dx =", i)

#出力結果
[δ(-1), δ(0), δ(1)] = [0, DiracDelta(0), 0]
δ(t)dx = Heaviside(t)

ヘヴィサイドのステップ関数

単位ステップ関数ともいう様です。

デルタ関数とヘヴィサイドの階段関数

x<0で0,0<xで1となるように定義された不連続関数をヘヴィサイドの階段関数 (Heaviside step Function)、あるいはヘヴィサイド関数 (Heaviside Function) とよびます。

H(t) = \left\{
\begin{array}{ll}
0 & (t < 0) \\
1 & (t < 0)
\end{array}
\right.

ヘヴィサイド関数を微分するとデルタ関数となります。これはヘヴィサイド関数の原点における接線の傾きが∞となることを表しています。このように、デルタ関数を用いると不連続関数の微分を求めることができます。

\frac{dH(t)}{dt}=\delta(t)
import sympy as sym
from sympy.plotting import plot

# 記号t,vを定義
sym.var("t,v")

# v = H(t)
v = sym.Heaviside(t)

# H(-1)
hm = sym.Heaviside(-1)

# H(0)
h0 = sym.Heaviside(0)

# H(1)
hp = sym.Heaviside(1)

h_list = [hm, h0, hp]

print("[H(-1), H(0), H(1)] =", h_list)

# ヘヴィサイド関数をxで微分
dy_dx = sympy.diff(v, t)
print("dH(x)/dx =", dy_dx)

#[-5, 5]の範囲でヘヴィサイドの階段関数をプロット
p = plt(y, (x, -5, 5), xlabel = "t", ylabel = "v")

#出力結果
[H(-1), H(0), H(1)] = [0, Heaviside(0), 1]
dH(x)/dx = DiracDelta(t)

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0