import numpy as np import matplotlib.pyplot as plt from decimal import Decimal x_width = 10 y_width = 10 while True: try: a=int(input("a= ")) b=int(input("b= ")) c=int(input("c= ")) s=int(input("s= ")) t=int(input("t= ")) break except ValueError: pass break p=-1*b/(2*a) q=-1*(b**2-4*a*c)/(4*a) fig = plt.figure(figsize=(5,5)) ax = fig.add_subplot(111) title1="y={}x**2{:+}x{:+} ({}<=x<={})" ax.set_title(title1.format(a,b,c,s,t), fontsize = 16) ax.set_xlim(-1*x_width+p,x_width+p) ax.set_ylim(-1*y_width+q,y_width+q) ax.arrow(0,-1*y_width+q,0,2*y_width-0.4,head_width=0.3,head_length=0.3,fc='k',ec='k') ax.arrow(-1*x_width+p,0,2*x_width-0.4,0,head_width=0.3,head_length=0.3,fc='k',ec='k') ax.text(-0.6,y_width-1.6+q,'y',fontsize=13) ax.text(x_width-0.6+p,0.6,'x',fontsize=13) ax.text(-0.6,0.2,'O',fontsize=13) ax.grid(which="major",axis="x",color="blue",alpha=0.8,linestyle="--",linewidth=1) ax.grid(which="major",axis="y",color="blue",alpha=0.8,linestyle="--",linewidth=1) x = np.arange(s, t+0.01, 0.01) y = a*x ** 2+b*x+c solution = "max = {} (x = {}) , min = {} (x = {})" print(solution.format(Decimal(str(max(y))),x[np.argmax(y)],str(Decimal(min(y))),x[np.argmin(y)])) ax.plot(x, y, color = "green") plt.show()