Nengo 코드와 맞출 때 (Special thanks to 배용희 님 👑) I ( t ) = I C + I R = C d u d t + u − u r e s t R \begin{align} I(t) &= I_{C} + I_{R} \\&= C {du \over dt} + {u-u_{rest} \over R} \end{align} I ( t ) = I C + I R = C d t d u + R u − u res t R C d u d t = − [ u − u r e s t ] + R I ( t ) RC {du \over dt} = -[u - u_{rest}]+RI(t) RC d t d u = − [ u − u res t ] + R I ( t ) 인데 τ = R C , V = u − u r e s t \tau = RC, V = u - u_{rest} τ = RC , V = u − u res t 로 정리하면 τ d V d t = − V + R I ( t ) … ( 1 ) \tau {dV \over dt} = -V + RI(t) \quad … (1) τ d t d V = − V + R I ( t ) … ( 1 )
퍼실 주: (non)homogeneous 나 ODE에 익숙하지 않다면 📈 1-3-math. Ordinary Differential Equation 를 참고해주세요
여기서
i. homogeneous solution I ( t ) = 0 I(t) = 0 I ( t ) = 0 , homogeneous solution 을 구해보면(1) 식이 τ d V d t = − V \tau {dV \over dt} = -V τ d t d V = − V 가 되어서, V p = A e t τ V_p = Ae^{t \over \tau} V p = A e τ t
ii. nonhomogeneous solution I ( t ) ≠ 0 I(t) \neq 0 I ( t ) = 0 , nonhomogeneous solution 을 구해보면 τ d V d t = − V + R I ( t ) \tau {dV \over dt} = -V + RI(t) τ d t d V = − V + R I ( t ) 에서 τ d V + ( V − R I ( t ) ) d t = 0 \tau dV + (V-RI(t))dt = 0 τ d V + ( V − R I ( t )) d t = 0 로 쓸 수 있는데 exact 하지 않으므로 integrating factor F ( t ) F(t) F ( t ) 를 곱하여 exact 하게 만들어보면
F ( t ) τ d V + F ( t ) ( V − R I ( t ) ) d t = 0 F(t) \tau dV + F(t) (V-RI(t))dt = 0 F ( t ) τ d V + F ( t ) ( V − R I ( t )) d t = 0 퍼실 주: Exact 란? [미분방정식] 3. 완전 미분방정식 - Exact Differential Equation
미적분학 시간에 함수 $u(x,y)$ 가 연속인 편도함수를 가진다면, $u$의 미분은 다음과 같음을 배웠습니다. 이 때, $u(x,y) = const.$라면 $du = 0$ 이므로 다음과 같이 정리할 수 있습니다. 위 식을 치환을 통해 최종적으로 아래와 같이 간단하게 정리할 수 있습니다. 만약 식(*)이 다음과 같은 조건을 만족한다면, (*)은 완전 미분방정식, 혹은 exact differential equation이 됩니다.
https://min-97.tistory.com/13
d u ( x , y ) = ∂ u ∂ x d x + ∂ u ∂ y d y du(x, y) = {\partial u \over \partial x}dx + {\partial u \over \partial y}dy d u ( x , y ) = ∂ x ∂ u d x + ∂ y ∂ u d y 위가 total differential 이고,
M ( x , y ) d x + N ( x , y ) d y = 0 where M ( x , y ) = ∂ u ∂ x , N ( x , y ) = ∂ u ∂ y M(x, y) dx + N(x, y)dy = 0
\\
\text{where} \quad
M(x, y) = {\partial u \over \partial x},
\quad
N(x, y) = {\partial u \over \partial y} M ( x , y ) d x + N ( x , y ) d y = 0 where M ( x , y ) = ∂ x ∂ u , N ( x , y ) = ∂ y ∂ u 이때,
∂ M ( x , y ) ∂ y = ∂ u ∂ y ∂ x , ∂ N ( x , y ) ∂ x = ∂ u ∂ x ∂ y , ∂ M ( x , y ) ∂ y = ∂ N ( x , y ) ∂ x ⋯ ( 1 ) {\partial M(x, y) \over \partial y}= {\partial u \over \partial y\partial x},
\\
{\partial N(x, y) \over \partial x}= {\partial u \over \partial x\partial y},
\\
{\partial M(x, y) \over \partial y}={\partial N(x, y) \over \partial x} \quad \cdots (1) ∂ y ∂ M ( x , y ) = ∂ y ∂ x ∂ u , ∂ x ∂ N ( x , y ) = ∂ x ∂ y ∂ u , ∂ y ∂ M ( x , y ) = ∂ x ∂ N ( x , y ) ⋯ ( 1 ) (1) 이 성립하면 exact differential equation 이라고 판단할 수 있다.
그리고
M ( x , y ) d x + N ( x , y ) d y = d u = u x d x + u y d y M(x, y) dx + N(x, y)dy = du = u_xdx + u_ydy M ( x , y ) d x + N ( x , y ) d y = d u = u x d x + u y d y 를 만족하면 exact 하다고 한다.
이때, 적분을 수행하면 미분 방정식을 풀어낼 수 있다
M ( x , y ) = ∂ u ∂ x = > u = ∫ M d x + k ( y ) M(x,y) = {\partial u \over \partial x}
\\ => u = \int M dx + k(y) M ( x , y ) = ∂ x ∂ u => u = ∫ M d x + k ( y ) e. g. c o s ( x + y ) d x + ( 3 y 2 + 2 y + c o s ( x + y ) ) d y = 0 cos(x+y)dx + (3y^2+2y+cos(x+y))dy=0 cos ( x + y ) d x + ( 3 y 2 + 2 y + cos ( x + y )) d y = 0 의 해를 구하시오
M = c o s ( x + y ) , N = 3 y 2 + 2 y + c o s ( x + y ) ∂ M ∂ y = − s i n ( x + y ) = ∂ N ∂ x = − s i n ( x + y ) ⇒ exact! M = cos(x+y), \quad N = 3y^2+2y+cos(x+y)
\\
{\partial M \over \partial y} = -sin(x+y) = {\partial N \over \partial x} = -sin(x+y) \Rightarrow \text{exact!} M = cos ( x + y ) , N = 3 y 2 + 2 y + cos ( x + y ) ∂ y ∂ M = − s in ( x + y ) = ∂ x ∂ N = − s in ( x + y ) ⇒ exact! u = ∫ M d x + k ( y ) = ∫ c o s ( x + y ) d x + k ( y ) = s i n ( x + y ) + k ( y ) \begin {split}
u
& = \int Mdx + k(y)
\\ & = \int cos(x+y)dx + k(y)
\\ & = sin(x+y) +k(y)
\end {split} u = ∫ M d x + k ( y ) = ∫ cos ( x + y ) d x + k ( y ) = s in ( x + y ) + k ( y ) ∂ u ∂ y = c o s ( x + y ) + k ′ ( y ) = N = 3 y 2 + 2 y + c o s ( x + y ) ⇒ k ′ ( y ) = 3 y 2 + 2 y k ( y ) = y 3 + y 2 + c ⇒ u = s i n ( x + y ) + y 3 + y 2 + c {\partial u \over \partial y} = cos(x+y) +k'(y) = N = 3y^2+2y+cos(x+y)
\\
\Rightarrow k'(y) = 3y^2 + 2y
\\
k(y) = y^3 + y^2 + c
\\
\Rightarrow u = sin(x+y) + y^3 + y^2 + c ∂ y ∂ u = cos ( x + y ) + k ′ ( y ) = N = 3 y 2 + 2 y + cos ( x + y ) ⇒ k ′ ( y ) = 3 y 2 + 2 y k ( y ) = y 3 + y 2 + c ⇒ u = s in ( x + y ) + y 3 + y 2 + c
Exact 한다면
∂ ∂ t ( F ( t ) τ ) = ∂ ∂ V ( F ( t ) ( V − R I ( t ) ) {\partial \over \partial t} ( F(t) \tau) = {\partial \over \partial V} (F(t) (V-RI(t)) ∂ t ∂ ( F ( t ) τ ) = ∂ V ∂ ( F ( t ) ( V − R I ( t )) 이 식을 만족해야하므로 τ F ’ ( t ) = F ( t ) \tau F’(t) = F(t) τ F ’ ( t ) = F ( t ) 을 만족하는 F(t)중에 F ( t ) = e t τ F(t) = e^{t \over \tau} F ( t ) = e τ t 를 고를 수 있다.
다시 (1) 식으로 돌아와서 F ( t ) F(t) F ( t ) 를 곱하면
τ e t τ d V d t + e t τ V = e t τ R I ( t ) d d t ( τ e t τ V ) = e t τ R I ( t ) ⋯ ( a ) ∫ − ∞ t d d t ′ ( τ e t ′ τ V ) d t ′ = ∫ − ∞ t e t ’ τ R I ( t ’ ) d t ’ ⋯ ( b ) τ e t τ V = ∫ − ∞ t e t ’ τ R I ( t ’ ) d t ’ ⋯ ( c ) \tau e^{t \over \tau} {dV \over dt} + e^{t \over \tau} V = e^{t \over \tau} R I(t)
\\
{d \over dt} (\tau e^{t \over \tau} V) = e^{t \over \tau} R I(t) \quad \cdots (a)
\\
\int_{-\infty}^t {d \over dt'} (\tau e^{t' \over \tau} V) dt'= \int_{-\infty}^t e^{{t’ \over \tau}} R I(t’) dt’ \quad \cdots (b)
\\
\tau e^{t \over \tau} V = \int_{-\infty}^t e^{{t’ \over \tau}} R I(t’) dt’ \quad \cdots (c) τ e τ t d t d V + e τ t V = e τ t R I ( t ) d t d ( τ e τ t V ) = e τ t R I ( t ) ⋯ ( a ) ∫ − ∞ t d t ′ d ( τ e τ t ′ V ) d t ′ = ∫ − ∞ t e τ t ’ R I ( t ’ ) d t ’ ⋯ ( b ) τ e τ t V = ∫ − ∞ t e τ t ’ R I ( t ’ ) d t ’ ⋯ ( c ) 위에서 (a) → (c)로 점프가 어떻게 된거지? ⇒ (b) 과정을 추가해서 편집 완료
적분 상수로 생각하라? Conductor 이다 보니 이전 state 도 모두 고려해야 한다? (b) 의 RHS 는 어떻게 보면 e x e^x e x 에 대한 식이다. 얘의 그래프를 생각해보면 어차피 맨 왼쪽에서부터는 0이다.
따라서 nonhomogeneous solution V h V_{h} V h 은
V h = 1 C ∫ − ∞ t e − ( t − t ’ ) τ I ( t ’ ) d t ’ V_{h} = {1 \over C} \int_{-\infty}^t e^{-{(t-t’) \over \tau}} I(t’) dt’ V h = C 1 ∫ − ∞ t e − τ ( t − t ’ ) I ( t ’ ) d t ’ i) ,ii) 에서 구한 solution 합이 식 (1) 의 최종 solution이 되므로
V = V p + V h = A e t τ + 1 C ∫ − ∞ t e − ( t − t ’ ) τ I ( t ’ ) d t ’ … ( 2 ) \begin{align} V &= V_{p} + V_{h} \\ &= Ae^{t \over \tau} + {1 \over C} \int_{-\infty}^t e^{-{(t-t’) \over \tau}} I(t’) dt’ \quad …(2) \end{align} V = V p + V h = A e τ t + C 1 ∫ − ∞ t e − τ ( t − t ’ ) I ( t ’ ) d t ’ … ( 2 ) 이제 I ( t ) I(t) I ( t ) 의 상황을 가정해보자.
I ( t ) = { 0 i f t ≤ 0 I 0 i f t > 0 I(t) = \begin{cases} 0 \quad\quad if\,\, t \le 0 \\ I_{0} \quad\quad if \,\, t>0 \end{cases} I ( t ) = { 0 i f t ≤ 0 I 0 i f t > 0 (2)식에 I ( t ) I(t) I ( t ) 를 대입하면,
V = A e t τ + 1 C ∫ 0 t e − ( t − t ’ ) τ I 0 d t ’ = A e t τ + I 0 C [ τ e − ( t − t ’ ) τ ] t ’ = 0 t ’ = t = A e t τ + I 0 τ C ( 1 − e − t τ ) = A e t τ + I 0 R ( 1 − e − t τ ) \begin{align} V &= Ae^{t \over \tau} + {1 \over C} \int_{0}^t e^{-{(t-t’) \over \tau}} I_{0} dt’ \\ &= Ae^{t \over \tau} + {I_{0} \over C} [ \tau e^{-{(t-t’) \over \tau}} ]^{t’=t}_{t’=0} \\ & = Ae^{t \over \tau} + {I_{0} \tau \over C}(1- e^{-{t \over \tau}}) \\ &= Ae^{t \over \tau} + {I_{0} R}(1- e^{-{t \over \tau}}) \end{align} V = A e τ t + C 1 ∫ 0 t e − τ ( t − t ’ ) I 0 d t ’ = A e τ t + C I 0 [ τ e − τ ( t − t ’ ) ] t ’ = 0 t ’ = t = A e τ t + C I 0 τ ( 1 − e − τ t ) = A e τ t + I 0 R ( 1 − e − τ t ) 여기서 boundary condition 으로 V ( 0 ) = V 0 V(0) = V_{0} V ( 0 ) = V 0 를 넣으면 A = V 0 A = V_{0} A = V 0 이 된다.
최종식은
V = V 0 e t τ + I 0 R ( 1 − e − t τ ) = V 0 + ( I 0 R − V 0 ) ( 1 − e − t τ ) … ( 3 ) \begin{align} V & = V_{0}e^{t \over \tau} + {I_{0} R}(1- e^{-{t \over \tau}}) \\ &= V_{0} + {(I_{0} R- V_{0})}(1- e^{-{t \over \tau}}) \quad …(3) \end{align} V = V 0 e τ t + I 0 R ( 1 − e − τ t ) = V 0 + ( I 0 R − V 0 ) ( 1 − e − τ t ) … ( 3 ) 따라서 최종식 (3) 식과 nengo 코드가 같음을 알 수 있습니다.
# update voltage using discretized lowpass filter
# since v(t) = v(0) + (J - v(0))*(1 - exp(-t/tau)) assuming
# J is constant over the interval [t, t + dt)
voltage -= (J - voltage) * np.expm1(-delta_t / self.tau_rc)
Uploaded by N2T