정보통신기술(ICT)

시그모이드 함수

해머슴 2024. 10. 4. 12:42
import numpy as np
import matplotlib.pyplot as plt
from tkinter import Tk, Label, Entry, Button
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

# 시그모이드 함수 정의
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 그래프 그리기 함수
def plot_sigmoid():
    try:
        x_min = float(entry_xmin.get())
        x_max = float(entry_xmax.get())
        x_points = int(entry_xpoints.get())
       
        x = np.linspace(x_min, x_max, x_points)
        y = sigmoid(x)

        # 기존 그래프 삭제
        ax.cla()
        ax.plot(x, y)
        ax.set_title("Sigmoid Function")
        ax.set_xlabel("x")
        ax.set_ylabel("Sigmoid(x)")
       
        # 그래프 업데이트
        canvas.draw()
    except ValueError:
        label_result.config(text="Error: Invalid input!")

# GUI 설정
root = Tk()
root.title("Sigmoid Function Plotter")

# 입력 필드 및 라벨 추가
label_xmin = Label(root, text="x min:")
label_xmin.grid(row=0, column=0)

entry_xmin = Entry(root)
entry_xmin.grid(row=0, column=1)

label_xmax = Label(root, text="x max:")
label_xmax.grid(row=1, column=0)

entry_xmax = Entry(root)
entry_xmax.grid(row=1, column=1)

label_xpoints = Label(root, text="Number of points:")
label_xpoints.grid(row=2, column=0)

entry_xpoints = Entry(root)
entry_xpoints.grid(row=2, column=1)

# 결과 및 그래프 표시 영역
label_result = Label(root, text="")
label_result.grid(row=3, column=0, columnspan=2)

# 버튼 추가
button_plot = Button(root, text="Plot", command=plot_sigmoid)
button_plot.grid(row=4, column=0, columnspan=2)

# Matplotlib figure 및 canvas 설정
fig, ax = plt.subplots()
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(row=5, column=0, columnspan=2)

# 기본값 설정
entry_xmin.insert(0, "-10")
entry_xmax.insert(0, "10")
entry_xpoints.insert(0, "100")

root.mainloop()

 

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

쌍곡 함수  (1) 2024.10.08
델타 함수  (0) 2024.10.07
로그 함수  (0) 2024.10.02
부산의 연간 강수량 예측(1904년 ~ 2023년)  (1) 2024.10.01
날씨 소프트웨어 코딩  (1) 2024.09.30