Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from numpy import linspace, array
- from scipy import *
- from scipy.integrate import odeint
- import matplotlib
- from mpl_toolkits.mplot3d import axes3d,Axes3D
- import matplotlib.pyplot as plt
- from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
- import tkinter
- def interval(message, default):
- interval1= input(message)
- if interval1:
- return int(interval1)
- elif ValueError or TypeError:
- return default
- else:
- return default
- poc=interval("Upišite početak intervala:", -23)
- kraj=interval("Upišite kraj intervala:", 23)
- brel=interval("Upišite broj koraka:", 1000)
- def dxdt(x,t):
- return array([5*x[0]-(1/3)*(x[0])**3-x[1], (1/5)*x[0]])
- x0=array([1,1]) #matematički bi matrica trebala biti stupac, no kako funkcija odeint prepoznaje i bez transponiranja, izostavio sam transponiranje
- t=linspace(poc, kraj, brel) #stvara array od 1000 elementa s jednakim razmakom između svakog elementa, te uključuje 0 i 1
- x=odeint(dxdt,x0,t)
- print(x)
- x1,x2=x.T #Transponiranje je obavezno. U ovom slučaju svaka od 2 varijable uzima po 1000 elemenata, dok bi bez transponiranja 1000 varijabli uzimalo po 2 elementa
- def izlaz():
- app.destroy() #naredba za gasenje programa
- class trodim(tkinter.Tk):
- def __init__(self,parent):
- tkinter.Tk.__init__(self,parent)
- self.parent = parent
- self.main()
- def main(self):
- self.fig = plt.figure()
- self.fig = plt.figure(figsize=(3,3))
- self.frame = tkinter.Frame(self)
- self.frame.pack(padx=15,pady=15)
- self.canvas = FigureCanvasTkAgg(self.fig, master=self.frame)
- self.canvas.get_tk_widget().pack(side='top', fill='both')
- self.canvas._tkcanvas.pack(side='top', fill='both', expand=1)
- ax = Axes3D(self.fig)
- ax.plot(t, x1, x2, label='diferencijalna jednadžba')
- self.toolbar = NavigationToolbar2TkAgg( self.canvas, self )
- self.toolbar.update()
- self.toolbar.pack()
- self.btn = tkinter.Button(self,text='Izlaz', command = izlaz)
- self.btn.pack(ipadx=125)
- self.btn = tkinter.Button(self,text='button')
- self.btn.pack(ipadx=125)
- if __name__ == "__main__":
- app = trodim(None)
- app.title('Seminar')
- app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment