# 다항식 근 시각화 프로그램 만들기 – 2swap 퀸틱 영상에서 영감을 얻다

---

# # 서론: 복잡한 다항식 근을 눈으로 보는 이유

다항식의 근을 구하는 일은 수학·공학·컴퓨터 과학에서 흔히 마주하는 문제입니다. 하지만 복소수 평면에 흩어진 근들을 **텍스트**만으로 이해하기는 쉽지 않죠. 2swap이 만든 *퀸틱(5차) 방정식* 시각화 영상은 복잡한 근들의 움직임을 아름다운 그래픽으로 보여주며 많은 사람들의 관심을 끌었습니다. 이 영상을 보고 **“나도 직접 이런 시각화 프로그램을 만들고 싶다”**는 생각이 들었다면, 이번 포스트가 바로 그 출발점이 될 것입니다.

> **키워드**: 다항식 근, 시각화 프로그램, 퀸틱 방정식

---

# # 1. 다항식 근 시각화가 필요한 이유

## # 1‑1. 직관적인 이해

복소수 평면(아르간 평면)에 근을 점으로 찍으면, 근들의 대칭성·패턴을 한눈에 파악할 수 있습니다. 특히 5차 이상의 **퀸틱 방정식**은 근의 위치가 복잡해지므로 시각화가 큰 도움이 됩니다.

## # 1‑2. 학습 도구로 활용

시각화된 결과를 실시간으로 바꾸어 보면, 계수 변화가 근에 어떤 영향을 미치는지 바로 확인할 수 있습니다. 이는 **초보자**가 다항식 이론을 체득하는 데 매우 효과적입니다.

## # 1‑3. 창의적 프로그래밍 연습

그래픽 라이브러리와 수학 라이브러리를 함께 쓰면서, **시각화 프로그램** 개발 역량을 자연스럽게 높일 수 있습니다.

---

# # 2. 준비 단계 – 필요한 도구와 환경

| 항목 | 설명 | 추천 옵션 |

|------|------|-----------|

| 프로그래밍 언어 | 파이썬은 수학·그래픽 모두 지원 | Python 3.10+ |

| 수학 라이브러리 | 다항식 근을 구하는 함수 제공 | `numpy`, `scipy` |

| 그래픽 라이브러리 | 실시간 인터랙티브 시각화 가능 | `matplotlib`, `pyqtgraph`, `p5.js`(웹) |

| IDE | 디버깅·실행 편리 | VS Code, PyCharm |

> **Tip**: `numpy.polyroots` 함수는 복소수 근을 바로 반환해 주어, 시각화 단계에 바로 활용할 수 있습니다.

---

# # 3. 핵심 구현 – 다항식 근을 화면에 그리기

## # 3‑1. 다항식 정의와 근 계산

```
python

import numpy as np

# 예시: 5차 다항식  x^5 + a4·x^4 + … + a0

coeffs = [1, -2, 0, 3, -1, 5]   # 사용자 입력 가능

roots = np.roots(coeffs)       # 복소수 근 배열

print(roots)

```

## # 3‑2. 복소수 평면에 점 찍기

```
python

import matplotlib.pyplot as plt

def plot_roots(roots):

    plt.figure(figsize=(6,6))

    plt.axhline(0, color='gray', linewidth=0.5)

    plt.axvline(0, color='gray', linewidth=0.5)

    plt.scatter(roots.real, roots.imag, c='red', s=80, edgecolors='k')

    plt.title('다항식 근 시각화')

    plt.xlabel('실수축')

    plt.ylabel('허수축')

    plt.grid(True, linestyle='--', alpha=0.5)

    plt.show()

plot_roots(roots)

```

## # 3‑3. 실시간 인터랙션 구현

`matplotlib`의 `widgets`나 `ipywidgets`를 이용하면 슬라이더로 계수를 바꾸면서 실시간으로 근을 업데이트할 수 있습니다.

```
python

from ipywidgets import interact, FloatSlider

def interactive_plot(a4, a3, a2, a1, a0):

    coeffs = [1, a4, a3, a2, a1, a0]

    roots = np.roots(coeffs)

    plot_roots(roots)

interact(interactive_plot,

         a4=FloatSlider(-5,5,step=0.1, value=-2),

         a3=FloatSlider(-5,5,step=0.1, value=0),

         a2=FloatSlider(-5,5,step=0.1, value=3),

         a1=FloatSlider(-5,5,step=0.1, value=-1),

         a0=FloatSlider(-5,5,step=0.1, value=5));

```

슬라이더를 움직이면 **다항식 근 시각화**가 즉시 바뀌어, 계수와 근 사이의 관계를 눈으로 직접 확인할 수 있습니다.

---

# # 4. 확장 아이디어 – 나만의 멋진 시각화 만들기

1. **색상·크기 변형**

   - 근의 복소수 크기(절대값)에 따라 색을 다르게 지정하면, 근이 원점에 가까운지 멀리 떨어져 있는지 직관적으로 파악할 수 있습니다.

2. **애니메이션**

   - `matplotlib.animation` 혹은 `p5.js`를 이용해 계수를 시간에 따라 변하게 하면, 근이 어떻게 움직이는지 동적인 영상을 만들 수 있습니다.

3. **다중 다항식 비교**

   - 두 개 이상의 다항식을 동시에 그려서, 계수 차이에 따른 근의 변화를 비교 분석할 수 있습니다.

4. **웹 배포**

   - `Flask` + `Bokeh` 혹은 `Streamlit`을 활용하면, 만든 **시각화 프로그램**을 웹 페이지로 배포해 다른 사람들과 공유할 수 있습니다.

---

# # 결론: 직접 구현하고 공유해 보세요!

다항식 근을 눈으로 보는 **시각화 프로그램**은 수학적 직관을 높이고, 코딩 실력을 동시에 향상시켜 줍니다. 이번 포스트에서 소개한 기본 구현을 바탕으로, 2swap이 만든 퀸틱 영상처럼 아름답고 인터랙티브한 그래픽을 직접 만들어 보세요.

**행동 유도**

- 지금 바로 파이썬 환경을 설치하고, 위 코드를 복사해 실행해 보세요.

- 슬라이더를 움직이며 다양한 다항식의 근을 탐험해 보고, 결과를 SNS에 공유해 주세요.

- 더 멋진 기능을 추가하고 싶다면, 댓글로 아이디어를 남겨 주세요!

여러분의 창의적인 **다항식 근 시각화**가 기대됩니다. 🚀
