from math import * from tkinter import * def II(x): return I1 + int((x - X1)*(I2 - I1)/(X2 - X1)) def JJ(y): return J2 + int((y - Y1)*(J1 - J2)/(Y2 - Y1)) def F(x): if x == 0: f = 1 else: f = sin(x)/x return f X1 = -5 * pi X2 = 5 * pi Y1 = -1.2 Y2 = 1.2 I1 = 0 J1 = 0 I2 = 500 J2 = 500 n = 25 h = (X2 - X1)/n root = Tk() root.title(' F(x) = sin(x)/x, -5*pi<=x<=5*pi') canv = Canvas(root, width = I2, height = J2, bg = 'lightblue') canv.create_line(II(0), JJ(Y1), II(0), JJ(Y2), width = 2) canv.create_line(II(X1), JJ(0), II(X2), JJ(0), width = 2) points = [] x = X1 for i in range(n): y = F(x) P = (II(x), JJ(y)) points.append(P) x = x + h canv.create_line(points, width = 1, fill = 'green', smooth = 1) for i in range(5): canv.create_text(20, 210 - i*40, text = str(int(100*(Y2-Y1))/1000 + int(i * (Y2-Y1))/1000)) canv.create_line(II(int(Y2-Y1)/10), JJ(0), II(0), JJ(int(Y2-Y1)/10), width = 2) for i in range(5): canv.create_text(20, 290 + i*40, text = '-' + str(int(100*(Y2-Y1))/1000 + int(i * (Y2-Y1))/1000)) for i in range(5): canv.create_text(290 + i * 40, 20, text = str(int(100*(X2-X1))/1000 + int(i * (X2-X1))/1000)) for i in range(5): canv.create_text(210 - i * 40, 20, text = '-' + str(int(100*(X2-X1))/1000 + int(i * (X2-X1))/1000)) canv.pack() root.mainloop()