import tkinter as tk
from tkinter import ttk
import matplotlib.pyplot as plt
import numpy as np
# 함수 정의
def f(x):
return np.sin(x) # 예: f(x) = sin(x)
def g(x):
return x**2 # 예: g(x) = x^2
# 합성 함수 h(x) = f(g(x))
def h(x):
return f(g(x))
# 그래프 그리기 함수
def plot_graph():
try:
x_min = float(entry_x_min.get())
x_max = float(entry_x_max.get())
x_values = np.linspace(x_min, x_max, 400)
y_values = h(x_values)
# 기존의 그래프를 초기화
plt.clf()
# 그래프 그리기
plt.plot(x_values, y_values, label="h(x) = f(g(x))")
plt.xlabel("x")
plt.ylabel("h(x)")
plt.title("Graph of h(x) = f(g(x))")
plt.legend()
plt.grid(True)
# 그래프를 창에 보여줌
plt.show()
except ValueError:
result_label.config(text="올바른 숫자를 입력하세요.")
# GUI 설정
root = tk.Tk()
root.title("합성 함수 그래프")
# 입력 필드
frame = ttk.Frame(root, padding="10")
frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
label_x_min = ttk.Label(frame, text="x 최소값:")
label_x_min.grid(row=0, column=0, padx=5, pady=5)
entry_x_min = ttk.Entry(frame, width=10)
entry_x_min.grid(row=0, column=1, padx=5, pady=5)
label_x_max = ttk.Label(frame, text="x 최대값:")
label_x_max.grid(row=1, column=0, padx=5, pady=5)
entry_x_max = ttk.Entry(frame, width=10)
entry_x_max.grid(row=1, column=1, padx=5, pady=5)
# 결과 버튼
button_plot = ttk.Button(frame, text="그래프 그리기", command=plot_graph)
button_plot.grid(row=2, column=0, columnspan=2, pady=10)
# 결과 표시 레이블
result_label = ttk.Label(frame, text="")
result_label.grid(row=3, column=0, columnspan=2)
root.mainloop()