0% found this document useful (0 votes)
20 views3 pages

코딩

Uploaded by

oeing200
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views3 pages

코딩

Uploaded by

oeing200
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

복소수 거듭제곱 시각화 코드 분석 대본

1. 기본 설정 및 복소수 정의

python import matplotlib.pyplot as plt import numpy as np # 복소수 z = 1/2 + √3/2 i a = 1/2 b
= np.sqrt(3)/2 z = complex(a, b)

"이 코드에서는 먼저 시각화를 위한 matplotlib과 수치 계산을 위한 numpy 라이브러리를


불러옵니다. 그리고 복소수 z를 1/2 + √3/2 i로 정의했어요. 이 복소수는 실수부가 1/2이고
허수부가 √3/2인 복소수입니다. 참고로 이 복소수는 단위원 위에 있는 점으로, 극좌표로는
(1, π/3)에 해당해요."

2. 주기 계산 함수

python # 주기 계산 함수 def find_period(z, tol=1e-10): w = 1 for n in range(1, 100):


w *= z if abs(w - 1) < tol: return n return None period = find_period(z)

"이 함수는 복소수 z의 거듭제곱이 1로 돌아오는 주기를 찾는 함수입니다. 복소수 w를 1로


초기화하고, 반복문을 통해 매번 z를 곱해가면서 w가 1에 충분히 가까워지는지 확인합니다.
허용 오차는 10^(-10)으로 설정했고, 최대 100번까지 반복합니다. 주기를 찾으면 그 값을
반환하고, 찾지 못하면 None을 반환합니다. 이 코드에서는 계산된 주기를 period 변수에
저장합니다."

3. 단위원 그리기

python # 단위원 그리기 theta = np.linspace(0, 2 * np.pi, 300) x = np.cos(theta) y =


np.sin(theta)

"단위원을 그리기 위해 0부터 2π까지 300개의 점을 균등하게 나누어 각도 theta를


생성합니다. 그리고 각 각도에 대해 x좌표는 cos(theta), y좌표는 sin(theta)로 계산하여
단위원 위의 점들을 생성합니다."

4. 색상 설정

python # 색상 설정 (각 점마다 다른 색) colors = plt.cm.hsv(np.linspace(0, 1, period))

"각 거듭제곱 점마다 다른 색상을 부여하기 위해 HSV 색상 맵을 사용합니다. 0부터 1까지의


값을 주기 개수만큼 균등하게 나누어 각각 다른 색상을 생성합니다. 이렇게 하면 z, z², z³, ...
등의 점들이 모두 다른 색으로 표시됩니다."

5. 그래프 생성 및 설정

python plt.figure(figsize=(7,7)) plt.plot(x, y, label='Unit Circle', color='lightblue')

"7×7 크기의 그래프를 생성하고, 앞서 계산한 x, y 좌표를 이용해 연한 파란색으로 단위원을


그립니다."

6. 거듭제곱 점과 선분 그리기
python # 각 z^k 점과 선분 그리기 for k in range(1, period + 1): zk = z**k color = colors[k
- 1] # 점 plt.scatter(zk.real, zk.imag, color=color, s=80, zorder=5) # 라벨
plt.text(zk.real * 1.08, zk.imag * 1.08, f'$z^{k}$', fontsize=10, color=color) # 원점에서 선분
연결 plt.plot([0, zk.real], [0, zk.imag], color=color, linewidth=2)

"이 반복문에서는 z의 1제곱부터 period제곱까지 각각의 점을 계산하고 시각화합니다. 각


거듭제곱 zk에 대해:

1. 해당 색상으로 크기 80의 점을 찍습니다(zorder=5는 이 점들이 다른 요소들보다 앞에


표시되게 합니다).

2. 점 옆에 z^k 형태의 수식 라벨을 표시합니다(원래 위치보다 8% 바깥쪽에 표시).

3. 원점(0,0)에서 해당 점까지 선분을 그립니다."

7. 축 및 그래프 세부 설정

python # 축 강조 plt.axhline(0, color='black', linewidth=1.5) plt.axvline(0, color='black',


linewidth=1.5) # 기타 설정 plt.gca().set_aspect('equal') plt.grid(True, linestyle='--',
alpha=0.5) plt.title(f"$z = \\frac{{1}}{{2}} + \\frac{{\\sqrt{{3}}}}{{2}} i$ 의 거듭제곱 (주기 =
{period})", fontsize=13) plt.tight_layout() plt.show()

"x축과 y축을 검은색 선으로 강조하고, 그래프의 가로세로 비율을 1:1로


설정합니다(set_aspect('equal')). 점선 형태의 그리드를 추가하고, 그래프 제목으로 복소수
z의 수식과 계산된 주기를 표시합니다. tight_layout()은 그래프 요소들이 잘 보이도록
여백을 자동으로 조정해주고, show() 함수로 그래프를 화면에 표시합니다."

8. 결과 출력

python print(f"주기는 {period}입니다.")

"마지막으로 계산된 주기를 출력합니다. 이 복소수 z = 1/2 + √3/2 i의 경우, 주기는 6이 나올


것입니다. 즉, z를 6번 곱하면 다시 1이 됩니다."

---

복소평면의 주기 분석 및 시각화 보고서

1. 주제

복소평면의 주기 분석 및 시각화이다.

2. 주제 선정 이유

복소수와 주기라는 개념은 수학에서 매우 중요한 부분이다. 이를 컴퓨터 코딩으로 직접


분석하고 시각화하면 개념 이해가 더 쉽고 재미있을 것이라 생각했다. 또한 코딩 실력을
키우는 데도 큰 도움이 될 것 같아 이 주제를 선택했다.

3. 활용 내용 및 방법
파이썬 프로그래밍 언어를 사용하여 복소평면 위의 함수 값을 계산하였다. 주기성을
찾아내는 알고리즘을 구현하고, matplotlib 라이브러리를 활용해 결과를 그래프로
시각화하였다. 이를 통해 주기가 어떻게 나타나는지 한눈에 확인할 수 있도록 하였다.

4. 주요 내용

첫째, 복소수와 복소평면의 기본 개념을 이해하였다.

둘째, 주기 함수의 의미와 주기 찾기 방법을 학습하였다.

셋째, 파이썬으로 복소평면 함수 값을 계산하는 코드를 작성하였다.

넷째, 주기 분석 알고리즘을 구현하였다.

마지막으로, matplotlib를 이용해 시각화하여 결과를 확인하였다.

5. 기대 효과

복소수와 주기 개념을 코딩으로 직접 다루면서 이해도가 높아졌다.

파이썬 기초 문법과 라이브러리 활용 능력이 향상되었다.

데이터 분석과 시각화 능력도 함께 키울 수 있었다.

앞으로 수학과 컴퓨터 과학 공부에 자신감이 생길 것으로 기대한다.

6. 배운 점

복소수 계산과 관련된 파이썬 문법을 익혔다.

반복문과 조건문을 활용해 주기 찾기 알고리즘을 만들었다.

그래프를 그려 데이터를 시각적으로 표현하는 방법을 배웠다.

기초부터 차근차근 코딩 실력을 다지는 데 큰 도움이 되었다.

You might also like