Advertisement
Guest User

Untitled

a guest
May 26th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.08 KB | None | 0 0
  1. # -*- coding: utf8 -*-
  2. from math import *
  3. from string import *
  4.  
  5.  
  6. def destroy(event):
  7. root.destroy()
  8.  
  9.  
  10. def menu1(event):
  11. window = Toplevel(bg='#a3a8a5')
  12. window.geometry("200x260+460+100")
  13. window.maxsize(width=200, height=260)
  14. window.minsize(width=200, height=260)
  15. window.title('')
  16. framee = Frame(window, width=200, height=46, bg='#575b59')
  17. framee2 = Frame(window, bg='black')
  18. framee3 = Frame(window, bg='black')
  19. biton = Button(framee2, text='Интегрирование', font='20', width=12, padx=25, pady=20, bg='#e1f4e8',
  20. activebackground='#4df98c', fg='black')
  21. biton2 = Button(framee3, text='Дифференцирование', font='20', width=12, padx=25, pady=20, bg='#e1f4e8',
  22. activebackground='#4df98c', fg='black')
  23.  
  24. framee.pack()
  25. framee2.pack(pady=20)
  26. framee3.pack()
  27. biton.pack(padx=2, pady=2)
  28. biton2.pack(padx=2, pady=2)
  29.  
  30. biton.bind('<Button-1>', first1)
  31. biton2.bind('<Button-1>', first2)
  32.  
  33.  
  34. def menu2(event):
  35. window = Toplevel(bg='#a3a8a5')
  36. window.geometry("300x280+460+100")
  37. window.maxsize(width=300, height=300)
  38. window.minsize(width=300, height=300)
  39. window.title('')
  40. framee = Frame(window, width=300, height=46, bg='#575b59')
  41. framee2 = Frame(window, bg='black')
  42. framee3 = Frame(window, bg='black')
  43. biton = Button(framee2, text='Решение \nнелинейных уравнений', font='Calibri 11', width=18, height=2, padx=25,
  44. pady=20, bg='#dee6f7', activebackground='#548aff', fg='black')
  45. biton2 = Button(framee3, text='Решение дифференциальных \nуравнений', font='Calibri 11', width=18, height=2,
  46. padx=25, pady=20, bg='#dee6f7', activebackground='#548aff', fg='black')
  47.  
  48. framee.pack()
  49. framee2.pack(pady=20)
  50. framee3.pack()
  51. biton.pack(padx=2, pady=2)
  52. biton2.pack(padx=2, pady=2)
  53.  
  54. biton.bind('<Button-1>', second1)
  55. biton2.bind('<Button-1>', second2)
  56.  
  57.  
  58. def first1(event):
  59. def raschet(event):
  60. try:
  61. funciya = ent22.get()
  62. x = float(ent32.get())
  63. b = float(ent34.get())
  64. n = float(ent24.get())
  65. if b <= x:
  66. text51.delete(1.0, END)
  67. text51.insert(1.0, 'Отрезок задан неправильно.')
  68. elif n <= 0 or n % 1 != 0:
  69. text51.delete(1.0, END)
  70. text51.insert(1.0, 'Количество фигур задано неправильно.')
  71. else:
  72. text51.delete(1.0, END)
  73. n = int(ent24.get())
  74. step = (b - x) / n
  75. S = 0
  76. GG = 0
  77. A = x
  78. while GG != n:
  79. x = x + step
  80. S = S + eval(funciya) * step
  81. GG += 1
  82. S = round(S, 12)
  83. text51.insert(1.0, 'Метод левых прямоугольников:' + 16 * ' ' + str(S) + '\n')
  84. x = A
  85. GG = 0
  86. S = 0
  87.  
  88. while GG != n:
  89. S = S + eval(funciya) * step
  90. x = x + step
  91. GG += 1
  92. S = round(S, 12)
  93. text51.insert(1.0, 'Метод правых прямоугольников:' + 14 * ' ' + str(S) + '\n')
  94. x = A
  95. GG = 0
  96. S = 0
  97.  
  98. while GG != n:
  99. x = x + (step / 2)
  100. S = S + eval(funciya) * step
  101. x = x + (step / 2)
  102. GG += 1
  103. S = round(S, 12)
  104. text51.insert(1.0, 'Метод серединных прямоугольников:' + 6 * ' ' + str(S) + '\n')
  105. x = A
  106. GG = 0
  107. S = 0
  108.  
  109. while GG != n:
  110. S = S + (0.5 * step * (eval(funciya)))
  111. x = x + step
  112. S = S + (0.5 * step * (eval(funciya)))
  113. GG += 1
  114. S = round(S, 12)
  115. text51.insert(1.0, 'Метод трапеций: ' + 43 * ' ' + str(S) + '\n')
  116. x = A
  117.  
  118. n = int(ent24.get())
  119. X = list()
  120. Y = list()
  121. step = float(b - x) / (2 * n)
  122. S1 = 0
  123. S2 = 0
  124. for i in range(2 * n + 1):
  125. X.append(x)
  126. Y.append(eval(funciya))
  127. x += step
  128. for i in range(1, n + 1):
  129. S1 += Y[2 * i - 1]
  130. for i in range(1, n):
  131. S2 += Y[2 * i]
  132. answ = (step / 3) * (Y[0] + (4 * S1) + (2 * S2) + Y[2 * n])
  133. text51.insert(1.0, 'Методом парабол: ' + 39 * ' ' + str(round(answ, 12)) + '\n')
  134. except:
  135. text51.delete(1.0, END)
  136. text51.insert(1.0, 'Вы неправильно ввели функцию.')
  137.  
  138. win1 = Toplevel(bg='#a3a8a5')
  139. win1.geometry("700x400+660+100")
  140. win1.minsize(width=600, height=400)
  141. win1.maxsize(width=600, height=800)
  142. win1.title('Интегрирование')
  143.  
  144. frame1 = Frame(win1, bg='#a3a8a5', width=200)
  145. framesverhu = Frame(win1, bg='#575b59', width=700, height=46)
  146. frame2 = Frame(win1, bg='#a3a8a5', width=200)
  147. Lab11 = Label(frame1, text='Введите функцию: ', bg='#a3a8a5', fg='black', font='Calibri 18')
  148. Lab21 = Label(frame2, text='y =', font='Calibri 16', bg='#a3a8a5')
  149. ent22 = Entry(frame2, width=20)
  150. but23 = Button(frame2, text='CALCULATE', bg='#e1f4e8', activebackground='#4df98c', fg='black', bd=3)
  151. frame3 = Frame(win1, bg='#a3a8a5', width=200)
  152. Lab23 = Label(frame3, text='n =', font='Calibri 16', bg='#a3a8a5')
  153. ent24 = Entry(frame3, width=20)
  154. Lab31 = Label(frame3, text='a=', bg='#a3a8a5', font='Calibri 16')
  155. ent32 = Entry(frame3, width=5)
  156. Lab33 = Label(frame3, text='b=', bg='#a3a8a5', font='Calibri 16')
  157. ent34 = Entry(frame3, width=5)
  158. frame4 = Frame(win1, bg='#a3a8a5')
  159. Lab41 = Label(frame4, text='Поле вывода:', bg='#a3a8a5', fg='white', font='Calibri 11')
  160. text51 = Text(frame4, height=7, width=100, font='Arial 12', wrap=WORD, bd=3)
  161.  
  162. ent22.insert(1, '(e**(sin(x)+2))*cos(x)')
  163. ent32.insert(1, '0')
  164. ent34.insert(1, '5')
  165. ent24.insert(1, '100')
  166.  
  167. framesverhu.pack()
  168. frame1.pack()
  169. frame2.pack()
  170. frame3.pack()
  171. frame4.pack()
  172. Lab11.pack(side='left', padx=50)
  173. Lab21.pack(side='left')
  174. ent22.pack(side='left')
  175. but23.pack(side='left', padx=5)
  176. Lab31.pack(side='left')
  177. ent32.pack(side='left')
  178. Lab33.pack(side='left')
  179. ent34.pack(side='left')
  180. Lab23.pack(side='left')
  181. ent24.pack(side='left')
  182. Lab41.pack()
  183. text51.pack(side='left')
  184.  
  185. but23.bind('<Button-1>', raschet)
  186.  
  187.  
  188. def first2(event):
  189. def calculate(event):
  190. try:
  191. Func = ent22.get()
  192. x = ent32.get()
  193. x = eval(x)
  194. dx = 0.00000001
  195.  
  196. pervi = float(eval(Func))
  197. x = x + dx
  198. vtoroi = float(eval(Func))
  199. vivod = round((vtoroi - pervi) / dx, 8)
  200.  
  201. ent51.delete(0, END)
  202. ent51.insert(1, vivod)
  203. except:
  204. ent51.delete(0, END)
  205. ent51.insert(1, 'Функция в данной точке не существует.')
  206.  
  207. win1 = Toplevel(bg='#a3a8a5')
  208. win1.geometry("700x400+660+100")
  209. win1.minsize(width=600, height=400)
  210. win1.maxsize(width=600, height=400)
  211. win1.title('Дифференцирование')
  212.  
  213. framehigh = Frame(win1, bg='#575b59', width=700, height=46)
  214. frame1 = Frame(win1, bg='#a3a8a5', width=200)
  215. frame2 = Frame(win1, bg='#a3a8a5', width=200)
  216. Lab11 = Label(frame1, text='Введите функцию: ', bg='#a3a8a5', fg='black', font='Calibri 18')
  217. Lab21 = Label(frame2, text='y =', font='Calibri 16', bg='#a3a8a5')
  218. ent22 = Entry(frame2, width=20)
  219. but23 = Button(frame2, text='CALCULATE', bg='#e1f4e8', activebackground='#4df98c', bd=3)
  220. frame3 = Frame(win1, bg='#a3a8a5', width=200)
  221. Lab31 = Label(frame3, text='x=', bg='#a3a8a5', font='Calibri 16')
  222. ent32 = Entry(frame3, width=5)
  223. frame4 = Frame(win1, bg='#a3a8a5')
  224. Lab41 = Label(frame4, text='Поле вывода:', bg='#a3a8a5', fg='white', font='Calibri 11')
  225. ent51 = Entry(frame4, width=100, font='Arial 12', bd=2)
  226.  
  227. ent22.insert(1, '(e**x)/cos(x)')
  228. ent32.insert(1, '0')
  229.  
  230. framehigh.pack()
  231. frame1.pack()
  232. frame2.pack()
  233. frame3.pack()
  234. frame4.pack()
  235. Lab11.pack(side='left', padx=50)
  236. Lab21.pack(side='left')
  237. ent22.pack(side='left')
  238. but23.pack(side='left', padx=5)
  239. Lab31.pack(side='left')
  240. ent32.pack(side='left')
  241. Lab41.pack()
  242. ent51.pack(side='left')
  243.  
  244. but23.bind('<Button-1>', calculate)
  245.  
  246.  
  247. def second1(event):
  248. def non_linear_equations(event):
  249. text51.delete('1.0', END)
  250. function21 = ent22.get()
  251. from_a = float(ent32.get())
  252. to_b = float(ent34.get())
  253. num = float(ent35.get())
  254. precision = int(ent36.get())
  255. step21 = ((to_b-from_a)/num)
  256. x = from_a
  257. y = eval(function21)
  258. y_old = y
  259. roots = []
  260. while x < to_b:
  261. try:
  262. y = eval(function21)
  263. except ZeroDivisionError:
  264. y = y
  265. if y_old*y < 0 or y == 0:
  266. roots.append(x)
  267. x += step21
  268. y_old = y
  269. if roots:
  270. text51.insert(END, 'Корней уравнения: ' + str(len(roots)) + '\n')
  271. text51.insert(END, 'Корни: ' + '\n')
  272. for xx in roots:
  273. text51.insert(END, str(round(xx, precision)) + '\n')
  274. else:
  275. text51.insert(1.0, 'Уравнение не имеет корней на данном отрезке')
  276.  
  277. win1 = Toplevel(bg='#a3a8a5')
  278. win1.geometry("700x600+760+100")
  279. win1.minsize(width=700, height=600)
  280. win1.maxsize(width=700, height=600)
  281. win1.title('Решение нелинейных уравнений')
  282.  
  283. canvas = Canvas(win1, width=670, height=380, bg='white')
  284.  
  285. framehigh = Frame(win1, bg='#575b59', width=700, height=46)
  286.  
  287. frame1 = Frame(win1, bg='#a3a8a5', width=200)
  288. frame2 = Frame(win1, bg='#a3a8a5', width=200)
  289.  
  290. Lab11 = Label(frame1, text='Введите функцию: ', bg='#a3a8a5', fg='black', font='Calibri 18')
  291. Lab21 = Label(frame2, text='y =', font='Calibri 16', bg='#a3a8a5')
  292. ent22 = Entry(frame2, width=20)
  293.  
  294. but23 = Button(frame2, text='CALCULATE', bg='#dee6f7', activebackground='#548aff', bd=3)
  295. frame3 = Frame(win1, bg='#a3a8a5', width=200)
  296.  
  297. Lab31 = Label(frame3, text='a=', bg='#a3a8a5', font='Calibri 16')
  298. ent32 = Entry(frame3, width=5)
  299.  
  300. Lab33 = Label(frame3, text='b=', bg='#a3a8a5', font='Calibri 16')
  301. ent34 = Entry(frame3, width=5)
  302.  
  303. Lab34 = Label(frame3, text='n=', bg='#a3a8a5', font='Calibri 16')
  304. ent35 = Entry(frame3, width=7)
  305.  
  306. frame6 = Frame(win1, bg='#a3a8a5', width=200)
  307. Lab35 = Label(frame6, text='Знаков после запятой: ', bg='#a3a8a5', font='Calibri 16')
  308. ent36 = Entry(frame6, width=5)
  309.  
  310. frame4 = Frame(win1, bg='#a3a8a5')
  311. Lab41 = Label(frame4, text='Ответ:', bg='#a3a8a5', fg='white', font='Calibri 11')
  312.  
  313. frame5 = Frame(win1, bg='#a3a8a5')
  314. scroll = Scrollbar(frame5)
  315. scroll.pack(side=RIGHT, fill=Y, pady=10)
  316.  
  317. text51 = Text(frame5, font='Calibri 11', wrap=WORD, bd=3, yscrollcommand=scroll.set)
  318.  
  319. ent22.insert(1, 'cos(x)-sin(1/x)')
  320. ent32.insert(1, '-50')
  321. ent34.insert(1, '50')
  322. ent35.insert(1, '20000')
  323. ent36.insert(1, '8')
  324.  
  325.  
  326. framehigh.pack()
  327. frame1.pack()
  328. frame2.pack()
  329. frame3.pack()
  330. frame6.pack()
  331. frame4.pack()
  332. frame5.pack()
  333.  
  334. canvas.pack(side='top', pady=15)
  335. Lab11.pack(side='left', padx=50)
  336. Lab21.pack(side='left')
  337. ent22.pack(side='left')
  338. but23.pack(side='left', padx=5)
  339. Lab31.pack(side='left')
  340. ent32.pack(side='left')
  341. Lab33.pack(side='left')
  342. ent34.pack(side='left')
  343. Lab34.pack(side='left')
  344. ent35.pack(side='left')
  345. Lab35.pack(side='left')
  346. ent36.pack(side='left')
  347. Lab41.pack(side='top')
  348. text51.pack(side='left', pady=10)
  349. scroll.config(command=text51.yview)
  350.  
  351. but23.bind('<Button-1>', non_linear_equations)
  352.  
  353.  
  354. def second2(event):
  355. def diff_equations(event):
  356. x = 1
  357.  
  358.  
  359. win1 = Toplevel(bg='#a3a8a5')
  360. win1.geometry("700x600+760+100")
  361. win1.minsize(width=700, height=600)
  362. win1.maxsize(width=700, height=600)
  363. win1.title('Решение дифференциальных уравнений')
  364.  
  365. canvas = Canvas(win1, width=670, height=380, bg='white')
  366.  
  367. framehigh = Frame(win1, bg='#575b59', width=700, height=46)
  368. frame1 = Frame(win1, bg='#a3a8a5', width=200)
  369. frame2 = Frame(win1, bg='#a3a8a5', width=200)
  370. Lab11 = Label(frame1, text='Введите функцию: ', bg='#a3a8a5', fg='black', font='Calibri 18')
  371. Lab21 = Label(frame2, text="y'=", font='Calibri 16', bg='#a3a8a5')
  372. ent22 = Entry(frame2, width=20)
  373. but23 = Button(frame2, text='CALCULATE', bg='#dee6f7', activebackground='#548aff', bd=3)
  374. frame3 = Frame(win1, bg='#a3a8a5', width=200)
  375. Lab31 = Label(frame3, text='a=', bg='#a3a8a5', font='Calibri 16')
  376. ent32 = Entry(frame3, width=5)
  377. Lab33 = Label(frame3, text='b=', bg='#a3a8a5', font='Calibri 16')
  378. ent34 = Entry(frame3, width=5)
  379. frame4 = Frame(win1, bg='#a3a8a5')
  380. Lab41 = Label(frame4, text='Ответ:', bg='#a3a8a5', fg='white', font='Calibri 11')
  381. ent51 = Entry(frame4, width=100, font='Arial 12', bd=2)
  382.  
  383. ent22.insert(1, '(y+x)/(y-x)')
  384. ent32.insert(1, '-50')
  385. ent34.insert(1, '50')
  386.  
  387. framehigh.pack()
  388. frame1.pack()
  389. frame2.pack()
  390. frame3.pack()
  391. frame4.pack()
  392. canvas.pack(side='top', pady=15)
  393. Lab11.pack(side='left', padx=50)
  394. Lab21.pack(side='left')
  395. ent22.pack(side='left')
  396. but23.pack(side='left', padx=5)
  397. Lab31.pack(side='left')
  398. ent32.pack(side='left')
  399. Lab33.pack(side='left')
  400. ent34.pack(side='left')
  401. Lab41.pack(side='top')
  402. ent51.pack(side='top')
  403.  
  404. but23.bind('<Button-1>', diff_equations)
  405.  
  406.  
  407. from Tkinter import *
  408.  
  409. root = Tk()
  410. root.geometry("360x564+100+100")
  411. root.minsize(width=360, height=564)
  412. root.maxsize(width=360, height=564)
  413. root.title('Курсовая программа')
  414. fra1 = Frame(root, width=233 * 2, heigh=46, bg="#575b59")
  415. fra2 = Frame(root, heigh=560, bg="#a3a8a5")
  416. fra3 = Frame(root, bg="#494c4a")
  417. fra4 = Frame(fra3, bg="black")
  418. frab1 = Frame(fra2, bg='black')
  419. frab2 = Frame(fra2, bg='black')
  420. frab3 = Frame(fra2, bg='black')
  421. frab4 = Frame(fra2, bg='black', width=500)
  422.  
  423. but1 = Button(frab1, text='Задача 1', font='20', width=12, padx=40, pady=20, bg='#e1f4e8', activebackground='#4df98c',
  424. fg='black')
  425. but2 = Button(frab2, text='Задача 2', font='20', width=12, padx=40, pady=20, bg='#dee6f7', activebackground='#548aff',
  426. fg='black')
  427. but3 = Button(frab3, text='Задача 3', font='20', width=12, padx=40, pady=20, bg='#f1def7', activebackground='#e07fff',
  428. fg='black')
  429. but4 = Button(frab4, text='Задача 4', font='20', width=12, padx=40, pady=20, bg='#f7e9de', activebackground='#ffa763',
  430. fg='black')
  431. but5 = Button(fra4, text='Выход', font='20', width=6, padx=21, pady=0, bg='#c64141', fg='white')
  432.  
  433. but1.bind("<Button-1>", menu1)
  434. but2.bind("<Button-1>", menu2)
  435. but3.bind("<Button-1>", )
  436. but4.bind("<Button-1>", )
  437. but5.bind("<Button-1>", destroy)
  438.  
  439. fra1.pack()
  440. fra2.pack()
  441. fra3.pack()
  442. fra4.pack(pady=15, padx=128)
  443. frab1.pack(pady=20, padx=80)
  444. frab2.pack(pady=20, padx=80)
  445. frab3.pack(pady=20, padx=80)
  446. frab4.pack(pady=20, padx=80)
  447. but1.pack(pady=2, padx=2)
  448. but2.pack(pady=2, padx=2)
  449. but3.pack(pady=2, padx=2)
  450. but4.pack(pady=2, padx=2)
  451. but5.pack(padx=1, pady=1)
  452.  
  453. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement