수학:코흐_곡선

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
수학:코흐_곡선 [2022/01/16 17:29] – created yong수학:코흐_곡선 [2022/01/17 16:23] yong
Line 20: Line 20:
  
 {{ :수학:koch3.png?400 |}} {{ :수학:koch3.png?400 |}}
 +
 +마찬가지로 다음 변환을 진행하기 위해, 가로 및 세로의 길이를 5배 늘리고, 변환 I를 진행하여 그림을 그릴 수 있을 것이다. 하지만 앞의 선의 경우와 달리
 +면을 형성하고 있어 다소 복잡하므로, 다음 변환을 생각하기 위해 규칙을 찾아보자. 사각형이 변환 I를 거쳐 모습이 형성되었을 때, 2차원 격자를 그어 살펴보자.
 +
 +{{ :수학:koch4.png?200 |}}
 +
 +외부는 신경쓰지 않고, 내부에서 형성되는 사각형을 살펴보면, 6가지의 공통된 사각형을 가지는 것을 확인할 수 있다.
 +
 +{{ :수학:koch5.png?300 |}}
 +
 +번호순대로 모양별 사각형을 square, dead-end, corner, parallel, line, empty라고 부르자. 오른쪽에 그려진 도형은 각 도형별로 변환 I를 거쳤을 때
 +생각할 수 있는 그림이다.
  
 ===== 선형 분석 ===== ===== 선형 분석 =====
Line 25: Line 37:
  
 \begin{equation} \begin{equation}
-    \vec{d}_{sq} \quad \vec{d}_{dead} \quad \vec{d}_{cor} \quad \vec{d}_{para} \quad \vec{d}_{line} \quad \vec{d}_{empty}+    \mathbf{d} = \left( d_{\rm sq}\,, d_{\rm dead}\,, d_{\rm cor}\,, d_{\rm para}\,, d_{\rm line}\,, d_{\rm empty} \right)
 \end{equation} \end{equation}
 +
 +위 식의 기저를 순서로 하여, 도형 변환 I와 크기 변환 S의 행렬 SI를 아래와 같이 구성할 수 있을 것이다.
 +
 +\begin{align}
 +SI = 
 +\begin{pmatrix}
 + 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 
 +\end{pmatrix}
 +\end{align}
 +
 +따라서 n-1번의 변환을 거친 프랙탈에 대해 아래와 같은 선형 방정식을 세울 수 있다.
 +
 +\begin{equation}
 +    \mathbf{d}_{n} = SI \mathbf{d}_{n-1} = SI^{n-1} \mathbf{d}_1 \qquad (n \geq 2)
 +\end{equation}
 +
 +하지만 이는 편의상 우리가 살펴보는 직교좌표계의 행렬이므로, 고유방정식을 계산하여 실제 프랙탈 구성요소의 직교좌표로 구성된 공간의 모습을 살펴보자.
 +행렬 SI를 대각화하면
 +
 +\begin{align}
 +D=
 + \begin{pmatrix}
 + 0 & 0 & 0 & 0 & 0 & 0  \\
 + 0 & 0 & 0 & 0 & 0 & 0  \\
 + 0 & 0 & 0 & 0 & 0 & 0  \\
 + 0 & 0 & 0 & 1 & 0 & 0  \\
 + 0 & 0 & 0 & 0 & 11 & 0 \\
 + 0 & 0 & 0 & 0 & 0 & 25   
 + \end{pmatrix}
 +\end{align}
 +
 +$d_{\rm sq}\,, d_{\rm dead}\,, d_{\rm cor}$는 0, $d_{\rm para}$는 1, $d_{\rm line}$는 11, $d_{\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{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)$
 +으로 구성하면 대각화의 성질을 이용하여 n번의 변환을 거친 프랙탈 기본 구성 사각형의 총 개수를 얻을 수 있다. 즉,
 +\begin{equation*}
 + SI^{n} = \left( QDQ^{-1} \right)^{n} = QD^{n}Q^{-1}
 +\end{equation*}
 +python을 이용하여 그래프를 그리면 다음을 얻을 수 있다.
 +
 +{{:수학: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]]
 +
 +
  • 수학/코흐_곡선.txt
  • Last modified: 2023/09/05 15:46
  • by 127.0.0.1