from math import from tkinter import def II функция масштабирования по

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from math import *
from tkinter import *
def II(x):
# функция масштабирования по оси OX
return I1 + int((x - X1) * (I2 - I1) / (X2 - X1))
def JJ(y):
# функция масштабирования по оси OY
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
I2 = 500
J1 = 0
J2 = 500
# вычисление шага по оси OX
N = 25
h = (X2 - X1) / N
root = Tk()
root.title('График функции F(x) = sin(x) / x, -5 * pi <= x <= 5 * pi')
canvas = Canvas(root, width=I2, height=J2, bg="white")
# построение осей координат
canvas.create_line(II(0), JJ(Y1), II(0), JJ(Y2), width=2)
canvas.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 += h
canvas.create_line(points, width=6, fill='black', smooth=1)
canvas.create_text(40, 480, text='Xmin = ' + str(int(100 * X1) / 100))
canvas.create_text(460, 480, text='Xmax = ' + str(int(100 * X2) / 100))
canvas.create_text(210, 480, text='Ymin = ' + str(int(100 * Y1) / 100))
canvas.create_text(210, 20, text='Ymax = ' + str(int(100 * Y2) / 100))
canvas.pack()
root.mainloop()