정보통신기술(ICT)

다항 함수

해머슴 2024. 9. 25. 09:42
import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

# 다항식 그래프 그리기 함수
def draw_graph():
    try:
        coeffs = [float(entry.get()) for entry in entries]
        x = np.linspace(-10, 10, 400)
        y = np.polyval(coeffs, x)

        # 기존 그래프 지우기
        ax.clear()
        ax.plot(x, y)
        ax.set_title("Polynomial Graph")
        ax.set_xlabel("x")
        ax.set_ylabel("f(x)")
        canvas.draw()

    except ValueError:
        result_label.config(text="Invalid input. Please enter valid numbers.")

# GUI 만들기
root = tk.Tk()
root.title("Polynomial Function Plotter")

# 다항식 계수 입력 UI
frame = ttk.Frame(root, padding="10")
frame.grid(row=0, column=0, padx=10, pady=10)

label = ttk.Label(frame, text="Enter polynomial coefficients (from highest degree):")
label.grid(row=0, column=0, columnspan=2)

entries = []
for i in range(5):  # 다항식의 최대 차수를 4차로 설정
    label = ttk.Label(frame, text=f"Coefficient for x^{4 - i}:")
    label.grid(row=i + 1, column=0)
    entry = ttk.Entry(frame)
    entry.grid(row=i + 1, column=1)
    entries.append(entry)

# 그래프 그리기 버튼
button = ttk.Button(frame, text="Plot Graph", command=draw_graph)
button.grid(row=6, column=0, columnspan=2)

# 결과 라벨
result_label = ttk.Label(frame, text="")
result_label.grid(row=7, column=0, columnspan=2)

# 그래프 표시 영역
fig, ax = plt.subplots(figsize=(5, 4))
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(row=1, column=0)

# 메인 루프 실행
root.mainloop()

 

'정보통신기술(ICT)' 카테고리의 다른 글

단위 계단 함수  (0) 2024.09.27
가우시안 델타 함수  (0) 2024.09.26
부등식 함수  (0) 2024.09.24
다차원 방정식 함수  (0) 2024.09.23
역 함수  (0) 2024.09.20