기본 콘텐츠로 건너뛰기

[ML] 결정트리(Decision Tree) 모델

선형미분방정식

선형미분방정식(Linear Differential Equations)

다음 식 1은 가장 높은 차수가 1차 미분을 포함하는 전형적인 선형 1계 미분방정식입니다. 기본적으로 이 형태의 방정식을 풀기 위해서는 좌항 전체를 적분 가능한 형태로 전환해 줍니다. $$\frac{dy}{dt}+p(t)y=g(t) \tag{1}$$ 식 1의 p(t)와 g(t)는 연속함수입니다. 식 1의 좌항은 특정한 함수를 첨가함으로 식 2와 같은 미분의 곱의 형태와 유사하게 만들 수 있습니다. $$\frac{d}{dx}\left(f(x)\mu(x)\right) = \frac{d[f(x)]}{dx}\mu(x)+f(x)\frac{d[\mu(x)]}{dx} \tag{2}$$ 식 1을 식 2와 같은 형태로 만들기 위해 식 1의 양변에 $\mu(t)$를 곱해줍니다. 이 함수를 적분인자(integrating factor)라고 합니다. $$\mu(t)\frac{dy}{dt}+\mu(t)p(t)y=\mu(t)g(t)\tag{3}$$ 적분인자를 고려한 식 3을 식 2와 비교하면 식 4를 가정할 수 있습니다. $$\begin{align}\tag{4} & \mu(t)p(t)=\mu'(t)\\ & \frac{\mu(t)}{\mu'(t)}=p(t)\end{align}$$ 위의 가정으로 2의 좌항에 미분의 곱법칙을 적용될 수 있습니다. $$\begin{equation}\begin{aligned}&\mu(t)\frac{dy}{dt}+\mu'(t)y=(\mu(t) y)'=\mu(t)g(t)\\ & \therefore \mu(t)g(t)=(\mu(t) y)'\end{aligned}\end{equation}$$ 위 식의 양변을 적분하여 y (또는 y(t))를 다음과 같이 정리할 수 있습니다. $$\begin{aligned}&\begin{aligned}\int\mu(t)g(t)\, dt&=\int (\mu(t) y(t))' \, dt\\&=\mu(t) y(t)+C\end{aligned}\\ &y(t)=\frac{\int\mu(t)g(t)\, dt+C}{\mu(t)}\end{aligned}$$ 다음으로 $\mu(t)$를 결정합니다. $$\begin{aligned}&\mu(t)p(t)=\mu'(t)\\ &p(t)=\frac{\mu'(t)}{\mu(t)}\end{aligned}$$ 위 식의 우항은 로그함수의 미분 결과입니다. $$\begin{aligned}&p(t)=\left(\ln \mu(t)\right)'\\ &\int \left(\ln \mu(t)\right)'\, dt= \int p(t) \,dt\\ &\ln \mu(t)+k=\int p(t) \,dt\\ &\ln \mu(t)=\int p(t) \,dt+k\end{aligned}$$ C와 마찬가지로 k는 상수이며 부호는 그 상수 심벌에 포함되는 것으로 고려합니다. 위 식에서 $\mu(t)$를 추출하기 위해 지수함수화 합니다. $$\begin{aligned} \mu(t)&=\exp\left(\int p(t) \,dt+k \right)\\ &=\exp(k)\exp\left(\int p(t) \,dt \right)\\ &=k\exp\left(\int p(t) \,dt \right) \end{aligned}$$ 위 결과를 y(t)에 대입하면 $$\begin{aligned}y(t)&=\frac{\int\mu(t)g(t)\, dt+C}{\mu(t)}\\ &=\frac{\int \left[ k\exp\left(\int p(t) \,dt \right) g(t)\right]\,dt+C}{k\exp\left(\int p(t) \,dt \right)}\\ &=\frac{\int \left[ \exp\left(\int p(t) \,dt \right) g(t)\right]\,dt+\frac{C}{k}}{\exp\left(\int p(t) \,dt \right)}\\ &=\frac{\int \left[ \exp\left(\int p(t) \,dt \right) g(t)\right]\,dt+C}{\exp\left(\int p(t) \,dt \right)}\end{aligned}$$ 결과적으로 1계 선형미분방정식의 해는 다음과 같이 나타낼 수 있습니다. $$y(t)=\frac{\int\mu(t)g(t)\, dt+C}{\mu(t)}, \quad \mu(t)=\exp\left(\int p(t) \,dt \right)$$

예)
다음 미분방정식의 해를 결정합니다. $$\frac{dv}{dt}=9.8-0.196v$$

$$\begin{aligned} &\mu(t)\frac{dv}{dt}+\mu(t)0.196v=\mu(t)9.8\\ &\text{if}\; \mu(t)0.196=\mu'(t) \rightarrow (\mu(t)\cdot v)'=\mu(t)9.8\\ &\int (\mu(t)\cdot v)'\, dt=\int \mu(t)9.8\, dt \rightarrow \mu(t)\cdot v+C=\int \mu(t)9.8\, dt\\ &v=\frac{\int \mu(t)9.8\, dt+C}{\mu(t)} \end{aligned}$$ $$\begin{aligned}&\frac{\mu'(t)}{\mu(t)}=(\ln(\mu(t)))'=0.196\\ &\mu(t)=\exp(0.196t+k)=\exp(0.196t)exp(k) \end{aligned}$$ 위의 v에 $\mu(t)$를 대입하면 다음과 같습니다. $$\begin{aligned}v&=\frac{\int \exp(0.196t)exp(k)9.8\, dt+C}{\exp(0.196t)exp(k)}\\ &=\frac{\int \exp(0.196t)9.8\, dt+C/k}{\exp(0.196t)}\\ &=\frac{\frac{9.8}{0.196}\exp(0.196t)+C}{\exp(0.196t)}\\ &=50+C\cdot \exp(0.196t)\end{aligned}$$
t, C=symbols('t C')
ans=(integrate(exp(0.196*t)*9.8, t)+C)/exp(0.196*t); ans
$\quad\color{navy}{\scriptstyle \left(C + 50.0 e^{0.196 t}\right) e^{- 0.196 t}}$

위 결과는 sympy의 dsolve()함수를 적용한 결과로 확인할 수 있습니다.

v=Function('v')(t)
eq=Eq(v.diff(t), 9.8-0.196*v);eq
$\quad\color{navy}{\scriptstyle \frac{d}{d t} v{\left(t \right)} = 9.8 - 0.196 v{\left(t \right)}}$
sol=dsolve(eq, v); sol
$\quad\color{navy}{\scriptstyle v{\left(t \right)} = C_{1} e^{- 0.196 t} + 50.0}$
위 예의 초기조건 v(0)=8
C1=solve(Eq(ans.subs(t, 0), 8), C); C1
[-42.0000000000000]
dsolve(eq, v, ics={v.subs(t, 0):8})
$\quad\color{navy}{\scriptstyle v{\left(t \right)} = 50.0 - 42.0 e^{- 0.196 t}}$

예)
다음의 미분방정식의 해를 결정합니다. $$\cos(x)y'+\sin(x)y=2\cos^3(x)\sin(x)-1, \quad y\left( \frac{\pi}{4}\right)=3\sqrt{2}$$

위 방정식의 미분항의 계수를 1로 만들기 위해 양변을 cos(x)로 나누고 양변에 적분인수 $mu(x)$를 곱합니다. $$\begin{aligned}&\mu(x)\frac{dy}{dx}+\mu(x)\tan(x)y=\mu(x)2\cos^2(x)\sin(x)-\mu(x)\sec(x)\\ &p(x)=\tan(x)\rightarrow \mu(x)=\exp\left(\int \tan(x)\, dx \right)=\sec(x) \end{aligned}$$
x=symbols('x')
mu=exp(integrate(tan(x), x)); mu
$\quad\color{navy}{\scriptstyle \frac{1}{\cos{\left(x \right)}}}$
위 식을 정리하면 $$\begin{aligned}&\sec(x)\frac{dy}{dx}+\sec(x)\tan(x)y=\sec(x)2\cos^2(x)\sin(x)-\sec^2(x)\\ &(\sec(x)y(x))'=2\cos(x)\sin(x)-\sec^2(x)\\ &\int (\sec(x)y(x))'\,dx=\int\left(2\cos(x)\sin(x)-\sec^2(x)\right)\, dx\end{aligned}$$ 위 식의 우항의 적분은 다음과 같습니다. $$\begin{aligned}&\int 2\cos(x)\sin(x)\,dx=\sin^2(x)+C\\ &\frac{d}{dx}\tan(x)=\frac{d}{dx}\frac{\sin(x)}{\cos(x)}=\frac{\cos(x)\sin(x)+\sin(x)\cos(x)}{\cos^2(x)}=\sec^2(x)\end{aligned}$$
integrate(2*cos(x)*sin(x)-sec(x)**2, x)
$\quad\color{navy}{\scriptstyle \sin^{2}{\left(x \right)} - \frac{\sin{\left(x \right)}}{\cos{\left(x \right)}}}$
그러므로 위 식을 정리하면 $$\begin{aligned}&\sec(x)y(x)=\sin^2(x)-\tan(x)+C\\&y(x)=\frac{\sin^2(x)-\tan(x)+C}{\sec(x)}\end{aligned}$$
x=symbols('x')
y=Function('y')(x)
eq=Eq(y.diff(x)+tan(x)*y, 2*cos(x)**2*sin(x)-sec(x));eq
$\quad\color{navy}{\scriptstyle y{\left(x \right)} \tan{\left(x \right)} + \frac{d}{d x} y{\left(x \right)} = 2 \sin{\left(x \right)} \cos^{2}{\left(x \right)} - \sec{\left(x \right)}}$
genSol=dsolve(eq, y)
simplify(genSol)
$\quad\color{navy}{\scriptstyle y{\left(x \right)} = C_{1} \cos{\left(x \right)} - \sin{\left(x \right)} - \cos^{3}{\left(x \right)}}$
genSol.rhs
$\quad\color{navy}{\scriptstyle C_{1} \cos{\left(x \right)} - \sin{\left(x \right)} - \cos^{3}{\left(x \right)}}$
sol=dsolve(eq, y, ics={y.subs(x, pi/4):3*sqrt(2)}); sol
$\quad\color{navy}{\scriptstyle y{\left(x \right)} = - \sin{\left(x \right)} - \cos^{3}{\left(x \right)} + \frac{15 \cos{\left(x \right)}}{2}}$
sol.subs(x, 0).evalf(4)
y(0)=6.5
sol.rhs.subs(x, 0).evalf(4)
6.5
plt.figure(dpi=100)
a=np.linspace(0, 20, 100)
b=np.array([float(sol.rhs.subs(x, i).evalf(4)) for i in a])
plt.plot(a, b)
plt.show()

예)
$ty'+2y=t^2-t+1$의 해를 결정합니다. 초기조건은 $y(1)=\frac{1}{2}$입니다.

$$\begin{aligned} & y'+\frac{2}{t}y =t-1+\frac{1}{t}\\ &\mu(t)y'+\mu(t)\frac{2}{t}y =\mu(t)\left[t-1+\frac{1}{t}\right]\end{aligned}$$ 위 식으로 부터 $$\begin{aligned}&\mu'(t)=\mu(t)\frac{2}{t} \\ & \frac{\mu'(t)}{\mu(t)}=[\ln(\mu(t))]'=\frac{2}{t} \\&\int[\ln(\mu(t))]' \, dt=\int \frac{2}{t}\, dt \\ &\ln(\mu(t))=2\ln \vert t \vert=t^2 \\ &\mu(t)=e^{\ln t^2} =t^2\end{aligned}$$ 위 결과를 원 방정식에 대입하면 다음과 같이 정리됩니다. $$\begin{aligned}&\left(\mu(t)y(t)\right)' =t^2\left[t-1+\frac{1}{t}\right]\\ &\int \left( t^2 y(t)\right)' \, dt=\int \left(t^3-t^2+t \right)\, dt\\ & t^2 y(t)=\frac{1}{4}t^4-\frac{1}{3}t^3+\frac{1}{2}t^2+C\\ &y(t)=\frac{1}{4}t^2-\frac{1}{3}t+\frac{1}{2}+\frac{C}{t^2}\end{aligned}$$ 위 결과에 초기조건을 대입하면 C를 결정할 수 있습니다. $$\begin{aligned}&y(1)=\frac{1}{4}-\frac{1}{3}+\frac{1}{2}+C=\frac{1}{2}\\&C=\frac{1}{12}\\& y(t)=\frac{1}{4}t^2-\frac{1}{3}t+\frac{1}{2}+\frac{1}{12t^2}\end{aligned}$$
t=symbols('t')
y=Function('y')(t)
eq=Eq(t*y.diff(t)+2*y, t**2-t+1);eq
$\quad\color{navy}{\scriptstyle t \frac{d}{d t} y{\left(t \right)} + 2 y{\left(t \right)} = t^{2} - t + 1}$
dsolve(eq, y, ics={y.subs(t, 1): Rational(1,2)})
$\quad\color{navy}{\scriptstyle y{\left(t \right)} = \frac{t^{2}}{4} - \frac{t}{3} + \frac{1}{2} + \frac{1}{12 t^{2}}}$

예)
$ty'-2y=t^5\sin(2t)-t^3+4t^4, \quad y(\pi)=\frac{3}{2}\pi^4$의 해를 결정합니다.

$$\begin{aligned}&y'-\frac{2}{t}y=t^4\sin(2t)-t^2+4t^3\\ &\mu(t)y'-\mu(t)\frac{2}{t}y=\mu(t)\left(t^4\sin(2t)-t^2+4t^3\right)\\\\ &\mu'(t)=-\mu(t)\frac{2}{t} \rightarrow \ln (\mu(t)) = \int -\frac{2}{t}\, dt \\ & \rightarrow \mu(t)=\exp(-2\ln t)\rightarrow t^{-2}\\\\ &\int \left(t^{-2}y(t)\right)'\, dt=\int \left(t^2\sin(2t)-1+4t\right)\, dt\end{aligned}$$ 위 결과에서 $\int t^2\sin(2t)\, dt$는 부분적분으로 계산됩니다. $$\begin{aligned}&\begin{aligned}\int t^2\sin(2t)\, dt&=-t^2\frac{\cos(2t)}{2}+2\int t \frac{\cos(2t)}{2}\,dt \\ &=-t^2\frac{\cos(2t)}{2}+t\frac{\sin(2t)}{2}+\frac{1}{4}\cos(2t)\end{aligned}\\ &\leftarrow \int t\cos(2t)\,dt=t\frac{\sin(2t)}{2} -\frac{1}{2} \int \sin(2t)\,dt=t\frac{\sin(2t)}{2}+\frac{1}{4}\cos(2t)\end{aligned}$$ 그러므로 일반해는 다음과 같습니다. $$y(t)=-t^4\frac{\cos(2t)}{2}+t^3\frac{\sin(2t)}{2}+t^2\frac{1}{4}\cos(2t)-t^3+2t^4+Ct^2$$ 초기조건을 적용하여 C를 결정합니다. $$\begin{aligned}&(\pi)=-\frac{\pi^4}{2}+\frac{\pi^2}{4}-\pi^3+2*\pi^4+C \pi^2=\frac{3}{2}\pi\\ &C=-\pi+\frac{1}{4}\\&-C=C=\pi-\frac{1}{4}\end{aligned}$$ 최종적으로 이 식의 해는 다음과 같습니다. $$y(t)=-t^4\frac{\cos(2t)}{2}+t^3\frac{\sin(2t)}{2}+t^2\frac{1}{4}\cos(2t)-t^3+2t^4+\left(\pi-\frac{1}{4} \right)t^2$$
t=symbols('t')
y=Function('y')(t)
eq=Eq(y.diff(t)-2*y/t, t**4*sin(2*t)-t**2+4*t**3)
dsolve(eq, y, ics={y.subs(t, pi):3*pi**4/2})
$\quad\color{navy}{\scriptstyle y{\left(t \right)} = t^{2} \left(- \frac{t^{2} \cos{\left(2 t \right)}}{2} + 2 t^{2} + \frac{t \sin{\left(2 t \right)}}{2} - t + \frac{\cos{\left(2 t \right)}}{4} - \frac{1}{4} + \pi\right)}$

댓글

이 블로그의 인기 게시물

[Linear Algebra] 유사변환(Similarity transformation)

유사변환(Similarity transformation) n×n 차원의 정방 행렬 A, B 그리고 가역 행렬 P 사이에 식 1의 관계가 성립하면 행렬 A와 B는 유사행렬(similarity matrix)이 되며 행렬 A를 가역행렬 P와 B로 분해하는 것을 유사 변환(similarity transformation) 이라고 합니다. $$\tag{1} A = PBP^{-1} \Leftrightarrow P^{-1}AP = B $$ 식 2는 식 1의 양변에 B의 고유값을 고려한 것입니다. \begin{align}\tag{식 2} B - \lambda I &= P^{-1}AP – \lambda P^{-1}P\\ &= P^{-1}(AP – \lambda P)\\ &= P^{-1}(A - \lambda I)P \end{align} 식 2의 행렬식은 식 3과 같이 정리됩니다. \begin{align} &\begin{aligned}\textsf{det}(B - \lambda I ) & = \textsf{det}(P^{-1}(AP – \lambda P))\\ &= \textsf{det}(P^{-1}) \textsf{det}((A – \lambda I)) \textsf{det}(P)\\ &= \textsf{det}(P^{-1}) \textsf{det}(P) \textsf{det}((A – \lambda I))\\ &= \textsf{det}(A – \lambda I)\end{aligned}\\ &\begin{aligned}\because \; \textsf{det}(P^{-1}) \textsf{det}(P) &= \textsf{det}(P^{-1}P)\\ &= \textsf{det}(I)\end{aligned}\end{align} 유사행렬의 특성 유사행렬인 두 정방행렬 A와 B는 'A ~ B' 와 같

[matplotlib] 히스토그램(Histogram)

히스토그램(Histogram) 히스토그램은 확률분포의 그래픽적인 표현이며 막대그래프의 종류입니다. 이 그래프가 확률분포와 관계가 있으므로 통계적 요소를 나타내기 위해 많이 사용됩니다. plt.hist(X, bins=10)함수를 사용합니다. x=np.random.randn(1000) plt.hist(x, 10) plt.show() 위 그래프의 y축은 각 구간에 해당하는 갯수이다. 빈도수 대신 확률밀도를 나타내기 위해서는 위 함수의 매개변수 normed=True로 조정하여 나타낼 수 있다. 또한 매개변수 bins의 인수를 숫자로 전달할 수 있지만 리스트 객체로 지정할 수 있다. 막대그래프의 경우와 마찬가지로 각 막대의 폭은 매개변수 width에 의해 조정된다. y=np.linspace(min(x)-1, max(x)+1, 10) y array([-4.48810153, -3.54351935, -2.59893717, -1.65435499, -0.70977282, 0.23480936, 1.17939154, 2.12397372, 3.0685559 , 4.01313807]) plt.hist(x, y, normed=True) plt.show()

R 미분과 적분

내용 expression 미분 2차 미분 mosaic를 사용한 미분 적분 미분과 적분 R에서의 미분과 적분 함수는 expression()함수에 의해 생성된 표현식을 대상으로 합니다. expression expression(문자, 또는 식) 이 표현식의 평가는 eval() 함수에 의해 실행됩니다. > ex1<-expression(1+0:9) > ex1 expression(1 + 0:9) > eval(ex1) [1] 1 2 3 4 5 6 7 8 9 10 > ex2<-expression(u, 2, u+0:9) > ex2 expression(u, 2, u + 0:9) > ex2[1] expression(u) > ex2[2] expression(2) > ex2[3] expression(u + 0:9) > u<-0.9 > eval(ex2[3]) [1] 0.9 1.9 2.9 3.9 4.9 5.9 6.9 7.9 8.9 9.9 미분 D(표현식, 미분 변수) 함수로 미분을 실행합니다. 이 함수의 표현식은 expression() 함수로 생성된 객체이며 미분 변수는 다음 식의 분모의 변수를 의미합니다. $$\frac{d}{d \text{변수}}\text{표현식}$$ 이 함수는 어떤 함수의 미분의 결과를 표현식으로 반환합니다. > D(expression(2*x^3), "x") 2 * (3 * x^2) > eq<-expression(log(x)) > eq expression(log(x)) > D(eq, "x") 1/x > eq2<-expression(a/(1+b*exp(-d*x))); eq2 expression(a/(1 + b * exp(-d * x))) > D(eq2, "x") a * (b * (exp(-d * x) * d))/(1 + b