coding utf-8 from math import from tkinter import def II return I1 int

 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
62
63
64
65
66
67
68
69
70
# -*- coding: utf-8 -*-
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
I1 = 0
J1 = 0
I2 = 500
J2 = 500
n = 25
h = (X2 - X1)/n
INF = float('inf')
XY = [] # список координат пикселей холста [x1, y1, x2, y2, ...]
y = [] # список ординат функции
x = X1
Y1 = INF; Y2 = -INF
for i in range(n):
y.append(F(x))
x += h
# определение максимального и минимального значений F(x)
Y1 = min(y); Y2 = max(y)
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)
print(Y1, Y2)
dy = (Y2 - Y1) / 10
dx = (X2 - X1) / 10
print(dx,dy)
for i in range(11):
canv.create_text(20, Y2 + 10 + i * (J2 - 20) / 10, text = str(int(100*(Y2 - i * dy))/100))
for i in range(11):
canv.create_text(20 + i * (I2 - 50) / 10, 40, text = str(int(100*(X1 + i * dx))/100))
canv.pack()
root.mainloop()