InfoMC 5. labor

Sokváltozós függvények

Bizonyos függvények akárhány változót kaphatnak.

Join[{1,2,3},{a,b,c}]
Join[{1,2,3},{a,b,c}, {4,5,6}]
Join[{1},{2},{3},{4},{5}, {6},{7},{8},{9}, {10}]

De van különbség az akárhány változó és a lista változó között.

Total[{1,2,3}]

Plus[1,2,3]

Egy listát fogadhat változójául egy függvény a @@ szimbólummal:

Plus[{1,2,3}](*nem jó*)
Plus@@{1,2,3}(*Plus[1,2,3]*)

Fűzzük össze listák listáját!

Join[{{1,2,3}, {4,5,6}}](*nem jó*)
Join[{1,2,3}, {4,5,6}](*jó*)
Join@@{{1,2,3}, {4,5,6}}(*ekvivalens az előző sorral*)

A @@ olyan, mintha a kapcsos zárójelet szögletessé változtatná!

Feladat

Készítsünk olyan függvényt, ami két változós és egyik változója egy lista. A függvény adja meg, hogy a második változó hol szerepelt az első listában. Az eredmény indexek egy listája legyen.

Példa
Fuggveny[{1, 2, 3, 3, 3, 2, 1}, 2]
{2, 6}

Segítség

Position
Join
@@

Megoldás

Fuggveny[L_, x_]:=Join@@Position[L, x]

Fuggveny[{1,2,3,2},2]
Fuggveny[{1,2,3,3,3,2,1},3]

Manipulate

Interaktív számításokra, megjelenítésre használatos.

Manipulate[
Expand[(((x+y))^n)]
,{n,1,10,1}]

Bármi lehet a belsejében, ami függ a lokális változóktól.
A lokális változókat módosíthatjuk csúszkával.

Manipulate[ valami , {változó, -tól, -ig, lépésköz}]

Ha nincsen lépésköz, akkor folytonos lesz a csúszka.

Manipulate[(x^n),{n,0,10}]

Feladat

Ábrázoljuk az (x^n) függvényt a [-2,2] intervallumon, ahol n változtatható Manipulate-tel, mondjuk 0-tól 10-ig.

Csináljuk meg folytonos csúszkával is és úgy is, hogy csak egész kitevőt vehessen fel.

Megoldás

Plot[(x^2),{x,-2,2}](*sima plot 2 kitevővel*)

Manipulate[Plot[(x^n),{x,-2,2}],{n,0,10}](*a Manipulate első változója szinte ugyan az, mint az előző cella*)

Manipulate[Plot[(x^n),{x,-2,2}],{n,0,10,1}](*ugyan az, csak diszkrét csúszkával*)

A grafikon értelmezési tartományát változtathatjuk a PlotRange-el, ennek hatására nem fog ugrálni az ábra.

Manipulate[Plot[(x^n),{x,-2,2}, PlotRange->{-2,2}],{n,0,10,1}]

Több csúszka

A Manipulate végén halmozhatjuk az állítható változókat.

Manipulate[Plot[Sin[a x+b],{x,-2Pi,2Pi}],{a,0,10},{b,-5,5}]

Nem muszáj ugyanolyan típusúaknak lenniük.

Manipulate[Plot[((Sin[a x+b])^n),{x,-2Pi,2Pi}, PlotRange->{-1,1}],{a,0,10},{b,-5,5},{n,1,10,1}]

Feladat

Készítsünk olyan ábrát, ahol az (x^2) függvényt ábrázoljuk a [-2,2] intervallumon, és egy Manipulate-tel változtatható a grafikon színe.

Segítség

F1 -> Manipulate -> Scope -> Controls -> ColorSlider

Megoldás

Manipulate[Plot[(x^2),{x,-2,2}, PlotStyle->color],{color,Purple}]