<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Interaktív függvények és ábrák
Az alábbiakban vizsgáljunk meg egy egyszerű módszert arra, hogy hogyan tehetjük Python-függvényeinket interaktívvá!
Ehhez az ipywidgets csomag lesz segítségünkre!
Step1:  Mostanra már tudjuk, hogy hogyan ábrázoljunk egy matematikai függvényt
Step2:  Írjunk egy függvényt, ami egy megadott frekvenciájú jelet rajzol ki!
Step3:  Most jön a varázslat! Az interact() függvény segítségével interaktívvá tehetjük a fent definiált függvényünket!
Step4:  Nézzük meg egy kicsit közelebbről, hogy is működik ez az interact() konstrukció! Definiáljunk ehhez először egy nagyon egyszerű függvényt!
Step5:  Az interact egy olyan függvény, amely az első paramétereként egy függvényt vár, és kulcsszavakként várja a függvény bemenő paramétereit! Amit visszaad, az egy interaktív widget, ami lehet sokfajta, de alapvetően azt a célt szolgálja, hogy a func függvényt kiszolgálja. Annak ad egy bemenő paramétert, lefuttatja, majd vár, hogy a felhasználó újra megváltoztassa az állapotot.
Ha a kulcsszavas argumentumnak zárójelbe írt egész számokat adunk meg, akkor egy egész számokon végigmenő csúszkát kapunk
Step6:  Ha egy bool értéket adunk meg, akkor egy pipálható dobozt
Step7:  Ha egy általános listát adunk meg, akkor egy legördülő menüt kapunk
Step8:  Ha a sima zárójelbe írt számok nem egészek (legalább az egyik) akkor egy float csúszkát kapunk
Step9:  Ha pontosan specifikálni szeretnénk, hogy milyen interaktivitást akarunk, akkor azt az alábbiak szerint tehetjük meg, 
egész csúszka$\rightarrow$IntSlider()
float csúszka$\rightarrow$FloatSlider()
legördülő menü$\rightarrow$Dropdown()
pipa doboz$\rightarrow$Checkbox()
szövegdoboz$\rightarrow$Text()
Ezt alább néhány példa illusztrálja
Step10:  Ha egy függvényt sokáig tart kiértékelni, akkor interact helyett érdemes interact_manual-t használni. Ez csak akkor futtatja le a függvényt, ha a megjelenő gombot megnyomjuk.
Step11:  A widgetekről bővebben itt található több információ. Végül nézünk meg egy több változós interactot!
<ASSISTANT_TASK:>
Python Code:
%pylab inline
from ipywidgets import *  # az interaktivitásért felelős csomag
Explanation: Interaktív függvények és ábrák
Az alábbiakban vizsgáljunk meg egy egyszerű módszert arra, hogy hogyan tehetjük Python-függvényeinket interaktívvá!
Ehhez az ipywidgets csomag lesz segítségünkre!
End of explanation
t=linspace(0,2*pi,100);
plot(t,sin(t))
Explanation: Mostanra már tudjuk, hogy hogyan ábrázoljunk egy matematikai függvényt:
End of explanation
def freki(omega):    
    plot(t,sin(omega*t))
freki(2.0)
Explanation: Írjunk egy függvényt, ami egy megadott frekvenciájú jelet rajzol ki!
End of explanation
interact(freki,omega=(0,10,0.1));
Explanation: Most jön a varázslat! Az interact() függvény segítségével interaktívvá tehetjük a fent definiált függvényünket!
End of explanation
def func(x):
     print(x)
Explanation: Nézzük meg egy kicsit közelebbről, hogy is működik ez az interact() konstrukció! Definiáljunk ehhez először egy nagyon egyszerű függvényt!
End of explanation
interact(func,x=(0,10)); 
Explanation: Az interact egy olyan függvény, amely az első paramétereként egy függvényt vár, és kulcsszavakként várja a függvény bemenő paramétereit! Amit visszaad, az egy interaktív widget, ami lehet sokfajta, de alapvetően azt a célt szolgálja, hogy a func függvényt kiszolgálja. Annak ad egy bemenő paramétert, lefuttatja, majd vár, hogy a felhasználó újra megváltoztassa az állapotot.
Ha a kulcsszavas argumentumnak zárójelbe írt egész számokat adunk meg, akkor egy egész számokon végigmenő csúszkát kapunk:
End of explanation
interact(func,x=False);
Explanation: Ha egy bool értéket adunk meg, akkor egy pipálható dobozt:
End of explanation
interact(func,x=['hétfő','kedd','szerda']);
Explanation: Ha egy általános listát adunk meg, akkor egy legördülő menüt kapunk:
End of explanation
interact(func,x=(0,10,0.1));
Explanation: Ha a sima zárójelbe írt számok nem egészek (legalább az egyik) akkor egy float csúszkát kapunk:
End of explanation
interact(func,x=IntSlider(min=0,max=10,step=2,value=2,description='egesz szamos csuszka x='));
interact(func,x=FloatSlider(min=0,max=10,step=0.01,value=2,description='float szamos csuszka x='));
interact(func,x=Dropdown(options=['Hétfő','Kedd','Szerda'],description='legörülő x='));
interact(func,x=Checkbox());
interact(func,x=Text());
Explanation: Ha pontosan specifikálni szeretnénk, hogy milyen interaktivitást akarunk, akkor azt az alábbiak szerint tehetjük meg, 
egész csúszka$\rightarrow$IntSlider()
float csúszka$\rightarrow$FloatSlider()
legördülő menü$\rightarrow$Dropdown()
pipa doboz$\rightarrow$Checkbox()
szövegdoboz$\rightarrow$Text()
Ezt alább néhány példa illusztrálja:
End of explanation
interact_manual(func,x=(0,10));
Explanation: Ha egy függvényt sokáig tart kiértékelni, akkor interact helyett érdemes interact_manual-t használni. Ez csak akkor futtatja le a függvényt, ha a megjelenő gombot megnyomjuk.
End of explanation
t=linspace(0,2*pi,100);
def oszci(A,omega,phi,szin):
    plot(t,A*sin(omega*t+phi),color=szin)
    plot(pi,A*sin(omega*pi+phi),'o')
    xlim(0,2*pi)
    ylim(-3,3)
    xlabel('$t$',fontsize=20)
    ylabel(r'$A\,\sin(\omega t+\varphi)$',fontsize=20)
    grid(True)
interact(oszci,
            A    =FloatSlider(min=1,max=2,step=0.1,value=2,description='A'),
            omega=FloatSlider(min=0,max=10,step=0.1,value=2,description=r'$\omega$'), 
            phi  =FloatSlider(min=0,max=2*pi,step=0.1,value=0,description=r'$\varphi$'),
            szin =Dropdown(options=['red','green','blue','darkcyan'],description='szín'));
Explanation: A widgetekről bővebben itt található több információ. Végül nézünk meg egy több változós interactot!
End of explanation
<END_TASK>