import sympy as sp
import matplotlib.pyplot as plt
import numpy as np
def main():
# 사용자로부터 분자와 분모 입력 받기
numerator = input("분자 일차 함수 입력하세요 (예: 2*x + 1): ")
denominator = input("분모 이차 함수 입력하세요 (예: x**2 - 1): ")
# sympy를 사용하여 입력된 문자열을 표현식으로 변환
x = sp.Symbol('x')
P = sp.sympify(numerator)
Q = sp.sympify(denominator)
# 유리 함수 정의
rational_function = P / Q
# 함수 그래프를 그리기 위한 numpy 배열 생성
f_lambdified = sp.lambdify(x, rational_function, modules='numpy')
# x 값의 범위 설정
x_vals = np.linspace(-10, 10, 400)
y_vals = f_lambdified(x_vals)
# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.plot(x_vals, y_vals, label=str(rational_function))
plt.axhline(0, color='black',linewidth=0.5)
plt.axvline(0, color='black',linewidth=0.5)
plt.title("유리 함수 그래프")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.grid(True)
plt.legend()
plt.show()
# 함수 호출
if __name__ == "__main__":
main()