정보통신기술(ICT)

합성 함수

해머슴 2024. 9. 12. 18:53
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()

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

절대값 함수  (0) 2024.09.19
역삼각 함수  (0) 2024.09.13
부분 함수  (0) 2024.09.11
무리 함수  (0) 2024.09.10
탄센트 함수  (0) 2024.09.09