Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from matplotlib import pyplot as plt
- import tkinter as tk
- import math
- import numpy as np
- def f(x):
- return np.cos(x)
- def df(x):
- return np.cos(x)
- def d2f(x):
- return -np.sin(x)
- def graph(): #График
- global a,b
- x1 = np.linspace(a.get(), b.get(), 10 ** 5, dtype = float)
- y1 = [f(el) for el in x1]
- x2, y2 = [], []
- for el in x1:
- if np.fabs(d2f(el)) <= 1e-3:
- x2.append(el)
- y2.append(f(el))
- plt.plot(x1, y1, x1, np.zeros(10 ** 5, dtype = float), 'r', x2, y2, 'gs')
- plt.legend(('f(x)', 'Ось абсцисс', 'Точки перегиба'))
- plt.grid(b = True)
- plt.show()
- def table():#таблица
- global af,hf,bf,ef
- af=a.get()
- bf=b.get()
- hf=h.get()
- ef=e.get()
- korni()
- win=tk.Tk()
- win.title('Результат')
- win.resizable(True,True)
- tk.Label(win,text="№",font=('Colibri',15),fg='red').grid(row=0, column=0,padx=20)
- tk.Label(win,text="Начало интервала",font=('Colibri',15),fg='red').grid(row=0, column=1,padx=20)
- tk.Label(win,text="Конец интервала",font=('Colibri',15),fg='red').grid(row=0, column=2,padx=20)
- tk.Label(win,text="Значение корня",font=('Colibri',15),fg='red').grid(row=0, column=3,padx=20)
- tk.Label(win,text="Значение функции",font=('Colibri',15),fg='red').grid(row=0, column=4,padx=20)
- tk.Label(win,text="Кол-во итераций",font=('Colibri',15),fg='red').grid(row=0, column=5,padx=20)
- for i in range(len(kon)):
- for j in range(len(kon[i])):
- tk.Label(win, text = kon[i][j], font=('Colibri',15)).grid(row=i+1, column=j)
- win.mainloop()
- def korni():
- global af,bf,hf,ef
- i=0;
- while True:
- xmin=af+hf*i
- i+=1
- xmax=af+hf*i
- if xmin>bf:
- break
- if xmax>bf:
- xmax=bf
- fmin=f(xmin)
- fmax=f(xmax)
- if fmin*fmax>0:
- continue
- t=0
- x1=xmin
- x2=xmax
- while abs(x1-x2)>ef:
- x=(x1+x2)/2
- fx=f(x)
- if fx*fmin>0:
- x1=x
- else:
- x2=x
- t+=1
- pred=[i,xmin, xmax, x, fx, t]
- kon.append(pred)
- print(kon)
- kon=[]
- pred=[]
- root=tk.Tk()
- root.title('Уточнение корней')
- root.geometry('360x200')
- root.resizable(False,False)
- a=tk.DoubleVar()
- b=tk.DoubleVar()
- h=tk.DoubleVar()
- e=tk.DoubleVar()
- aentry=tk.Label(root,text="a :",font=('Colibri',15),fg='red').grid(row=1, column=0)
- bentry=tk.Label(root,text="b :",font=('Colibri',15),fg='red').grid(row=2, column=0)
- hentry=tk.Label(root,text="step :",font=('Colibri',15),fg='red').grid(row=3, column=0)
- eentry=tk.Label(root,text="eps :",font=('Colibri',15),fg='red').grid(row=4, column=0)
- a_entry=tk.Entry(root,font=('Colibri',15), textvariable = a)
- a_entry.grid(row=1, column=1, pady=5, padx=5)
- b_entry=tk.Entry(root,font=('Colibri',15), textvariable = b)
- b_entry.grid(row=2, column=1, pady=5, padx=5)
- h_entry=tk.Entry(root,font=('Colibri',15), textvariable = h)
- h_entry.grid(row=3, column=1, pady=5, padx=5)
- e_entry=tk.Entry(root,font=('Colibri',15), textvariable = e)
- e_entry.grid(row=4, column=1, pady=5, padx=5)
- b1_entry=tk.Button(root,command=table,text='Таблица',width=10,height=1,font=('Colibri',15))
- b1_entry.grid(row=7, column=0, pady=5, padx=5)
- b2_entry=tk.Button(root,command=graph,text='График',width=10,height=1,font=('Colibri',15))
- b2_entry.grid(row=7, column=1, pady=5, padx=5)
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement