본문 바로가기
유도항법제어/최적제어

변분법 (calculus of variation)

by 깊은대학 2021. 1. 11.

최적화는 크게 정적 최적화(static optimization)와 동적 최적화(dynamic optimization)로 분류할 수 있다. 정적 최적화는 파라미터 최적화(parameter optimization)라고도 하며, 동적 최적화는 최적제어(optimal control) 문제라고 한다.

 

 

파라미터 최적화는 정적(static) 파라미터를 변수로 하는 어떤 함수(function)에서 최소값 또는 최대값을 산출하는 파라미터를 구하는 문제다. 반면에 동적 최적화는 '함수를 변수로 하는 함수' (함수의 함수로서 functional이라고 한다)에서 최소값 또는 최대값을 산출하는 함수를 구하는 문제다. 파라미터 최적화에 미분법이 필요하듯이 동적 최적화에는 변분법(calculus of variation)이 필요하다.

미분법이 어떤 함수 값을 최소화하거나 최대화하는 파라미터를 계산하는 방법을 다룬다면, 변분법은 functional의 값을 최소화하거나 최대화하는 함수를 계산하는 방법을 다룬다.

파라미터를 \(n\)-차원 벡터 \( \mathbf{q}= \begin{bmatrix} q_1 & q_2 & \cdots & q_n \end{bmatrix} ^T\)라고 할 때, 스칼라 함수 f(\(\mathbf{q})\)는 벡터 \(\mathbf{q}\)로부터 어떤 실수 값을 연결하는 일대일 대응 관계를 나타낸다. 반면에 \(x\)의 함수인 \(n\)-차원 벡터를 \(\mathbf{y}(x)=\begin{bmatrix} y_1 (x) & y_2 (x) & \cdots & y_n (x) \end{bmatrix} ^T\)라고 할 때, functional \(F(\mathbf{y})\)는 함수 \(\mathbf{y}(x)\)로부터 어떤 실수 값을 연결하는 일대일 대응 관계를 나타낸다.

예를 들면 다음은 2-차원 벡터 \(\mathbf{q}=\begin{bmatrix} q_1 & q_2 \end{bmatrix} ^T\)를 변수로 하는 함수다.

 

\[ f(\mathbf{q}) = q_1^2 + q_2 ^2 -4 \tag{1} \]

 

다음은 구간 \(x_0\)에서 \(x_f\)까지 정의된 함수 \(y(x)\)를 변수로 하는 functional이다.

 

\[ F(y)= \int_{x_0}^{x_f} y^2 (x) \ dx \tag{2} \]

 

파라미터 \(\mathbf{q}\)의 독립적 변화에 의해 유도된 함수 \(f(\mathbf{q})\)의 변화량을 계산해 보자. 파라미터 \(\mathbf{q}\)의 변화량을 \(\Delta \mathbf{q}\)라고 하면, 함수의 증분(increment) \(\Delta f\)는 다음 식으로 주어진다.

 

\[ \Delta f= f(\mathbf{q}+ \Delta \mathbf{q})-f(\mathbf{q}) \]

 

변화량이 매우 작을 때, 즉 극소(infinitesimal) 크기일 때에는 \(d\mathbf{q}\)로 표기하고 함수의 증분도 미분(differential) \(df\)로 표기한다.

 

\[ df=f(\mathbf{q}+d\mathbf{q})-f(\mathbf{q}) \]

 

예를 들어서 식 (1)의 미분은 다음과 같다.

 

\[ \begin{align} df &= (q_1+dq_1 )^2+(q_2+dq_2 )^2-4-[q_1^2+q_2^2-4] \\ \\ &= 2q_1 dq_1+(dq_1 )^2+2q_2 dq_2+(dq_2 )^2 \\ \\ &= 2q_1 dq_1+2q_2 dq_2 \end{align} \]

 

여기서 \((dq_1 )^2\)과 \((dq_2 )^2\)은 극소량의 제곱이기 때문에 각각 \((dq_1 )^2 \to 0\), \((dq_2 )^2 \to 0\)이다. 그래서 미분 \(df\)를 1차(first-order) 증분 또는 선형 증분이라고 한다. 다음 그림은 증분과 1차 선형 증분의 차이를 보여준다.

 

 

한편, 미분 \(df\)와 미분 \(dq_i\)의 비율 \( \frac{df}{dq_i} \)를 도함수(derivative)라고 한다. 도함수(여기서는 partial derivative)를 이용하면 미분 \(df\)는 다음과 같이 간단히 계산할 수 있다.

 

\[ \begin{align} df &= \frac{ \partial f }{ \partial q_1 } dq_1 + \frac{ \partial f }{ \partial q_2 } dq_2 \\ \\ &= 2q_1 dq_1+2q_2 dq_2 \end{align} \]

 

 

 

Functional \(F(\mathbf{y})\)에서도 함수 \(\mathbf{y}(x)\)의 독립적 변화에 의해 유도된 변화량을 계산할 필요가 있다. \(F(\mathbf{y})\)의 증분은 함수 \(\mathbf{y}(x)\)의 미분 \(d\mathbf{y}\)와 변수의 미분 \(dx\)에 따라 달라지는데 이 둘은 서로 독립이 아니다. 그러므로 \(dx\)와는 독립적인 \(\mathbf{y}(x)\)의 변화량을 정의할 필요가 있다.

\(x\)를 고정시킨 상테에서 함수 \(\mathbf{y}(x)\)를 극소 크기만큼 변화시킨 양을 변분(variation)이라고 하고 \(\delta \mathbf{y}(x)\)로 표기한다. 그러면 functional의 변분 \(\delta F\)는 다음 식으로 주어진다.

 

\[ \delta F = F( \mathbf{y} + \delta \mathbf{y})-F(\mathbf{y}) \]

 

예를 들어서 식 (2)에서 적분 구간 \(x_0\)와 \(x_f\)가 고정되어 있을 때, \(F(\mathbf{y})\)의 변분은 다음과 같다.

 

\[ \begin{align} \delta F(y) &= \int_{x_0}^{x_f} \left( y(x)+\delta y(x) \right)^2 \ dx - \int_{x_0}^{x_f } y^2 (x) \ dx \\ \\ &= \int_{x_0}^{x_f} \left[ y^2 (x)+ 2y(x) \delta y(x) + (\delta y(x))^2-y^2 (x) \right] \ dx \\ \\ &= \int_{x_0}^{x_f} 2y(x) \delta y(x) \ dx \end{align} \]

 

여기서 \((\delta y(x))^2\)은 극소량의 제곱이기 때문에 \( \int_{x_0}^{x_f} (\delta y(x))^2 \ dx \to 0\)이다. 그래서 변분 \(\delta F\)를 1차 증분이라고 한다.

여기서 중요한 것은 함수 \(\mathbf{y}(x)\)에서 미분 \(d\mathbf{y}\)와 변분 \(\delta \mathbf{y}\)는 다르다는 것이다. 미분 \(d\mathbf{y}\)는 미분 \(dx\)에 종속된다. 반면 변분 \(\delta \mathbf{y}\)는 \(dx\)와는 독립이다. \(x\)를 고정시키고 극소 크기만큼 변화시켰기 때문이다.

 

 

도함수를 이용하면 변분 \(\delta F\)를 다음과 같이 간단히 계산할 수 있다.

 

\[ \begin{align} \delta F(y) &= \int_{x_0}^{x_f} \frac{\partial y^2 (x) }{ \partial y} \delta y(x) \ dx \\ \\ &= \int_{x_0}^{x_f} 2y(x) \delta y(x) \ dx \end{align} \]

 

함수를 극소 크기만큼 변화시켰다는 의미는 무엇일까. 함수의 크기는 어떻게 정할 수 있을까.

정적 파라미터의 크기를 놈(norm)으로 정하듯이, 함수의 '크기'도 함수의 놈(norm)으로 정할 수 있다. 이에 대해서는 다음에 ...

만약 함수에 부과된 제약조건이 없을 경우에는 함수 \(f(\mathbf{q})\)가 (로컬) 최소값 또는 최대값을 갖기 위한 필요조건은 다음과 같다.

 

\[ df(\mathbf{q}^\star )=0 \]

 

위 조건을 만족하는 파라미터 \(\mathbf{q}^\star\)를 정류점(stationary point)이라고 한다. 정류점에서는 함수의 미분이 \(0\)이 된다. 어떤 함수가 어떤 파라미터 값에서 (로컬) 최소값 또는 최대값을 갖는다면 그 값이 바로 정류점이고 그 때 함수의 미분은 \(0\)이다. 이것이 미분법의 정리다.

 

 

마찬가지로 functional \(F(\mathbf{y})\)가 (로컬) 최소값 또는 최대값을 갖기 위한 필요조건은 다음과 같다.

 

\[ \delta F(\mathbf{y}^\star )=0 \]

 

위 조건을 만족하는 함수 \(\mathbf{y}^\star\)를 정류함수라고 한다. 정류 함수에서는 functional의 변분이 \(0\)이 된다. 어떤 functional이 어떤 함수에서 (로컬) 최소값 또는 최대값을 갖는다면 그 함수가 바로 정류 함수이고 그 때 functional의 변분은 \(0\)이다. 이것이 변분법의 정리다.

변분법은 함수의 최소값 또는 최대값에서 미분이 \(0\)이라는 미분법의 정리를 functional로 확장한 것이다.

 

 

 

댓글