수학:코흐_곡선

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
수학:코흐_곡선 [2022/01/16 22:15] yong수학:코흐_곡선 [2023/09/05 15:46] (current) – external edit 127.0.0.1
Line 1: Line 1:
-먼저 아래와 같은 모양을 형성하는 선을 고려하자.+====== 정의 ====== 
 +**코흐 곡선**은 여러 프랙탈 도형중의 하나로, 같은 모양이 지속적으로 반복되는 프랙탈이다.  
 +다양한 도형을 생각해볼 수 있으며, 여기서는 아래와 같은 모양을 형성하는 선을 예시로 살펴보자.
  
 {{ :수학:koch1.png?400 |}} {{ :수학:koch1.png?400 |}}
  
-위의 그림을 살펴보면 길이 5인 직선이변환 I를 거침으로 선의 총 길이가 11로 변한것을 알 수 있다. 우측의 수직점선을 그은 것과 같이, +위의 그림에서, 길이 5인 직선이 변환 I를 거침으로선의 총 길이가 11로 변한것을 알 수 있다. 우측의 수직점선을 그은 것과 같이, 
-선의 모양변화를 5구역으로 나누어 생각해볼 수 있다.+선의 모양변화를 5구역으로 나누어 생각해볼 수 있다. 이러한 변환을 만드는 도형은 스케일 팩터가 $b=5$이고, 따라서 프랙탈의 길이 차원 $d_L$은 
 + 
 +\begin{equation} 
 +    5^{d_L} = 11 \, \rightarrow \, d_L = \ln11 / \ln5 
 +\end{equation} 
 + 
 +으로 결정된다. 프랙탈의 차원에 대한 자세한 설명은 [[물리:프랙탈 차원]]을 참고할 수 있다.
  
 이제 여기서 크기를 키우는 작업을 시행하자. 그 변환을 S라고 부르고, 크기는 5배씩 증가시킨다. 과정 S와 I는 도형의 변환에 따라 그 수가 달라지는 데, 이제 여기서 크기를 키우는 작업을 시행하자. 그 변환을 S라고 부르고, 크기는 5배씩 증가시킨다. 과정 S와 I는 도형의 변환에 따라 그 수가 달라지는 데,
-지금의 경우에서는 선 하나에 대해서 5개 구역으로 나뉠 수 있으므로, 변환 1회시 S와 I가 각 5배가 된다. 초기 도형에서 변환 S, I, S를 거치면 아래와 같은 도형이 된다.+지금의 경우에서는 선 하나에 대해서 5개 구역으로 나뉠 수 있으므로, 변환 1회시 S와 I가 각 5배가 된다. 초기 도형에서 변환 I, S, I를 거치면 아래와 같은 도형이 된다.
  
 {{ :수학:koch2.png?600 |}} {{ :수학:koch2.png?600 |}}
  
 (※ 하나의 이미지에 담기 위해 여기서는 변환 S를 2.5배로 두었다.) (※ 하나의 이미지에 담기 위해 여기서는 변환 S를 2.5배로 두었다.)
- 
-이와 비슷한 모양으로 변환을 거치는 프랙탈 도형을 **코흐 곡선**이라고 부른다. 
  
 ====== 이차 코흐곡선 ====== ====== 이차 코흐곡선 ======
 이번에는 하나의 선을 이용하여 형성된 프랙탈을 면으로 구성하여 변환을 거쳐보자. 이러한 프랙탈 도형을 **이차 코흐곡선(Quadratic Koch curve)**, **이차 코흐 섬(Quadratic Koch island)**, 또는 이번에는 하나의 선을 이용하여 형성된 프랙탈을 면으로 구성하여 변환을 거쳐보자. 이러한 프랙탈 도형을 **이차 코흐곡선(Quadratic Koch curve)**, **이차 코흐 섬(Quadratic Koch island)**, 또는
-**코흐 눈꽃송이(Koch snowflake)** 등으로 불린다. 앞의 과정과 같이 선의 길이는 5이고, 여기서는 기본 도형이 사각형으로 시작한다.+**코흐 눈꽃송이(Koch snowflake)** 등으로 불린다. 앞의 과정과 같이 선의 길이는 5이고, 여기서는 기본 도형이 사각형으로 시작하여 각 선분마다 변환을 시행한다.
  
 {{ :수학:koch3.png?400 |}} {{ :수학:koch3.png?400 |}}
Line 75: Line 81:
 \end{align} \end{align}
  
-$d_{\rm sq}\,, d_{\rm dead}\,, d_{\rm cor}$는 0, $d_{\rm para}$는 1, $d_{\rm line}$는 11, $d_{\rm empty}$는 25의 고윳값을 가지는 것을 확인할 수 있다. +$\lambda_{\rm sq}\,, \lambda_{\rm dead}\,, \lambda_{\rm cor}$는 0, $\lambda_{\rm para}$는 1, $\lambda_{\rm line}$는 11, $\lambda_{\rm empty}$는 25의 고윳값을 가지는 것을 확인할 수 있다. 코흐 곡선의 정의에서 길이 차원을 구한 것과 같이, 적에 대한 차원을 계산해 볼 수 있는데, 
-고유방의 의미를 생각해보면, $d_{\rm sq}\,, d_{\rm dead}\,, d_{\rm cor}$는 irrelevant하며, $d_{\rm para}$는 marginal, $d_{\rm line}$와 $d_{\rm empty}$는 relevant하다는 것을 알 수 있다. + 
-다음으로 정수로 구성되는 고유벡터는, +\begin{align*} 
-\begin{align+ 5^{{d}_{\rm{sq}}}   =& 5^{{d}_{\rm{dead}}} = 5^{{d}_{\rm{cor}}} = 0 \\ 
- \mathbf{d}_{\rm{sq}} =& \left( -1 ~~ 4 ~~ -4 ~~ 0 ~~ 0 ~~ 1 \right) \\ + 5^{{d}_{\rm{para}}} =& 1 \, \rightarrow \, d_{\rm{para}} = \ln 1 / \ln 5 = 0 \\ 
- \mathbf{d}_{\rm{dead}} =& \left( 0 ~~ 1 ~~ -2 ~~ 0 ~~ 1 ~~ 0 \right) \\ + 5^{d}_{\rm{line}}   =& 11 \, \rightarrow \, d_{\rm{para}} = \ln 11 / \ln 5 \\ 
- \mathbf{d}_{\rm{cor}}  =& \left( 1 ~~ -2 ~~ 0 ~~ 1 ~~ 0 ~~ 0 \right) \\ + 5^{d}_{\rm{empty}}  =& 25 \, \rightarrow \, d_{\rm{para}} = \ln 25 / \ln 5 = 2 \\ 
- \mathbf{d}_{\rm{para}} =& \left( 0 ~~ 1 ~~ -1 ~~ 1 ~~ -3 ~~ 2 \right) \\ +\end{align*} 
- \mathbf{d}_{\rm{line}} =& \left( 0 ~~ -98 ~~ -112 ~~ -28 ~~ -196 ~~ 379 \right) \\ + 
- \mathbf{d}_{\rm{empty}} =& \left( 0 ~~ 0 ~~ 0 ~~ 0 ~~ 0 ~~ 1 \right) +따라서 $d_{\rm sq}\,, d_{\rm dead}\,, d_{\rm cor}$는 irrelevant하며, $d_{\rm para}$는 marginal, $d_{\rm line}$와 $d_{\rm empty}$는 relevant하다. 
-\end{align}+ 
 +한편 각 고유값에 대응되는 고유벡터는, 
 +\begin{equation*} 
 +\begin{aligned
 + \mathbf{d}_{\rm{sq}} =& \, \left( -1 ~~ 4 ~~ -4 ~~ 0 ~~ 0 ~~ 1 \right) \\ 
 + \mathbf{d}_{\rm{dead}} =& \, \left( 0 ~~ 1 ~~ -2 ~~ 0 ~~ 1 ~~ 0 \right) \\ 
 + \mathbf{d}_{\rm{cor}}  =& \, \left( 1 ~~ -2 ~~ 0 ~~ 1 ~~ 0 ~~ 0 \right) 
 +\end{aligned} 
 +\qquad 
 +\begin{aligned} 
 + \mathbf{d}_{\rm{para}} =& \, \left( 0 ~~ 1 ~~ -1 ~~ 1 ~~ -3 ~~ 2 \right) \\ 
 + \mathbf{d}_{\rm{line}} =& \, \left( 0 ~~ -98 ~~ -112 ~~ -28 ~~ -196 ~~ 379 \right) \\ 
 + \mathbf{d}_{\rm{empty}} =& \, \left( 0 ~~ 0 ~~ 0 ~~ 0 ~~ 0 ~~ 1 \right) 
 +\end{aligned} 
 +\end{equation*} 
 + 
 +고유벡터로 구성되는 행렬 Q를 $Q = \left( \mathbf{d}_{\rm{sq}}\,, \mathbf{d}_{\rm{dead}}\,, \mathbf{d}_{\rm{cor}}\,, \mathbf{d}_{\rm{para}}\,, \mathbf{d}_{\rm{line}}\,, \mathbf{d}_{\rm{empty}} \right)$ 
 +으로 구성하면, 간단히 대각행렬 D만 계산하여 n번의 변환을 거친 프랙탈 기본 구성 사각형의 총 개수를 얻을 수 있다. 
 +\begin{equation*} 
 + SI^{n} = \left( QDQ^{-1} \right)^{n} = QD^{n}Q^{-1} 
 +\end{equation*} 
 + 
 +위 식의 성질을 이용하여 python의 numpy, matplotlib를 이용한 코드는 아래와 같다. 
 + 
 +{{:수학:kochgraph.png?600 |}} 
 + 
 + 
 +<code Python | fractalstep.py> 
 +import numpy as np 
 +import numpy.linalg as lin 
 +import matplotlib.pyplot as plt 
 + 
 +matrix = np.array( 
 +        [[0,0,0,0,0,0], 
 +        [8,5,3,2,1,0], 
 +        [4,4,3,4,2,0], 
 +        [4,2,1,0,0,0], 
 +        [4,6,5,8,4,0], 
 +        [1,5,11,9,17,25]] 
 +
 + 
 +steps = 10 
 +eigval, eigvec = lin.eig(matrix) 
 +diagmat = np.zeros((6,6)) 
 +np.fill_diagonal(diagmat,eigval) 
 +diagmat0 = diagmat 
 +sum_mat = np.zeros((6,steps)) 
 +for i in range(steps): 
 +        A = eigvec @ diagmat @ lin.inv(eigvec) 
 +        for j in range(6): 
 +                sum_mat[j][i] = np.sum(A[j]) 
 +        diagmat = diagmat0 @ diagmat 
 + 
 +x = np.arange(1,steps+1,1) 
 +label = ['square', 'deadend', 'corner', 'parallel', 'line', 'empty'
 +for i in range(6): 
 +        plt.plot(x, sum_mat[i], label=label[i]) 
 +plt.yscale('log'
 +plt.plot((2,8),(5**5*10,5**17*10),'--',label='2'
 +log_5_11=np.log(11)/np.log(5) 
 +plt.plot((2,8),(5**(log_5_11*2)*10,5**(log_5_11*8)*10),'--',label=r'$\log 11 / \log 5$') 
 +plt.xlabel('steps'
 +plt.ylabel('n (steps)'
 +plt.legend() 
 +plt.savefig('kochgraph.png', dpi=300, transparent=True) 
 +</code> 
 + 
 +====== 함께 보기 ====== 
 +  * [[물리:프랙탈 차원]] 
 +  * [[http://events.kias.re.kr/h/statphys.winterschool/?pageNo=4526|The 19th KIAS-APCTP Winter School on Statistical Physics]] 
 + 
  • 수학/코흐_곡선.1642338955.txt.gz
  • Last modified: 2023/09/05 15:46
  • (external edit)