> restart; # Függvények # # Két mennyiség közötti fv-kapcsolat kezelésére láttuk, hogy a # kifejezések használhatók erre. # Pl. > y:=x/(x^2+1); x y := ------ 2 x + 1 # esetén y deriváltja, integrálja, grafikonja: # > diff(y, x); 2 1 x ------ - 2 --------- 2 2 2 x + 1 (x + 1) > > int(y, x); 2 1/2 ln(x + 1) > plot(y, x=-5..5); # Ebben a szerkezetben, kifejezések használata esetén a fv-be # behelyettesítés kicsit bonyolultabb. # Pl. ha y-ra vagyunk kíváncsiak x=2 esetén, akkor eljárhatunk így: # > x:=2; x := 2 > y; 2/5 # De ekkor x értéke már rögzített, ezért x szerint nem tudunk pl. # deriválni: > diff(y, x); Error, wrong number (or type) of parameters in function diff # ugyanis ez olyan, mintha azt írtuk volna be, hogy > diff(y, 2/5); Error, wrong number (or type) of parameters in function diff # Azért y és x között a kapcsolat megmarad, mert ha x-nek új értéket # adunk, akkor y is vele együtt változik: > x:=3; x := 3 > y; 3/10 # Ha újra "szimbolikusnak" szeretnénk venni az x-y kapcsolatot, akkor # vissza kell alakítani x-et szimbolikussá (a konkrét x:=3 # értékadásból): > x:='x'; x := x # Így már ismét használható pl. a diff: > diff(y, x); 2 1 x ------ - 2 --------- 2 2 2 x + 1 (x + 1) # Használható a subs parancs értékadás helyett: > subs(x=2, y); #subs(mit, hova); 2/5 # Ilyenkor megmarad a "szimbolikus kapcsolat" x és y között, lásd pl.: > int(y, x); 2 1/2 ln(x + 1) # Az értékadással (x:=3; y;), illetve a helyettesítéssel (subs(x=3, y); # ) tehát kiszámolható a helyettesítési érték. Mindig az adott feladat # dönti el, melyiket célszerű használni. # # Azonbanban van még egy lehetőség és sokszor ez a legkényelmesebb: # használjuk a matematika órán a fv-ekre megszokott "zárójeles" # jelölésmódot, azaz pl. f(2) jelenti az f fv. 2-nél felvett # helyettesítési értékét. Ezt megtehetjük a Maple-ben is a nyíl, -> # operátor felhasználásával. # Ezzel a fenti példa így alakul: > f := x -> x/(x^2+1); x f := x -> ------ 2 x + 1 # Ezután a szokásos jelölések alkalmazhatók, pl.: > f(2); 2/5 > 6*f(x)/f(10); x 303/5 ------ 2 x + 1 > f(f(2)); 10 -- 29 # A fv-ek között értelmezve vannak a szokásos fv-műveletek, pl. # összeadás, kivonás, ... ; a kompozíció (összetett fv képzésének jele a # @). # Pl. > g:=x->sin(x); g := sin > h:=x->x^2; 2 h := x -> x > (g-h)(x); 2 sin(x) - x > (g@h)(x); 2 sin(x ) > (h@g)(x); 2 sin(x) # Működik a többi jelölés is: > f(x); x ------ 2 x + 1 > diff(f(x), x); 2 1 x ------ - 2 --------- 2 2 2 x + 1 (x + 1) > int(f(x), x); 2 1/2 ln(x + 1) > plot(f(x), x=-5..5); # Ezek helyett használhatók rövidebb jelölések is: > D(f);# 2 1 x x -> ------ - 2 --------- 2 2 2 x + 1 (x + 1) # Tehát D(f) a derivált fv! > D(f)(3); # f deriváltja a 3-ban -2 -- 25 > int(f, -2..3); 1/2 ln(2) > plot(f, -5..5); # az f fv. grafikonja -5 és 5 között # # Mindez működik többváltozós fv-ekre is. # Pl. > x:='x': y:='y': > z := x*y/(x^2+y^4+1); x y z := ----------- 2 4 x + y + 1 > diff(z, x); 2 y x y ----------- - 2 -------------- 2 4 2 4 2 x + y + 1 (x + y + 1) > simplify(%); 2 4 y (x - y - 1) - --------------- 2 4 2 (x + y + 1) > simplify(diff(z, x, y)); 4 2 4 8 4 x - 12 x y + 3 y + 2 y - 1 - ------------------------------- 2 4 3 (x + y + 1) > subs(y=2, z); x 2 ------- 2 x + 17 > diff( subs(y=2, z), x); 2 1 x 2 ------- - 4 ---------- 2 2 2 x + 17 (x + 17) > int(z, x=-1..3); # itt az intgrálásnál y konstans 4 4 1/2 ln(10 + y ) y - 1/2 ln(2 + y ) y # Fv-ként ugyanez: > h := (x,y) -> x*y/(x^2+y^4+1); x y h := (x, y) -> ----------- 2 4 x + y + 1 > h(x, 2); x 2 ------- 2 x + 17 > diff(h(x,2), x); 2 1 x 2 ------- - 4 ---------- 2 2 2 x + 17 (x + 17) > diff(h(x,y), x,y,y); 3 7 2 3 y y x y -20 -------------- + 32 -------------- + 80 -------------- 2 4 2 2 4 3 2 4 3 (x + y + 1) (x + y + 1) (x + y + 1) 2 7 x y - 192 -------------- 2 4 4 (x + y + 1) # Grafikon kirajzoltatása: ez két, vagy még több változós fv-ek esetében # már nem tartozik bele a Maple legalapvetőbb eljárásai közé; ezeket # először egy csomagból ("package"-ből) be kell tölteni és csak utána # lehet használni. Csomagok betöltésére szolgál a with parancs. A # grafikonrajzolással kapcsolatos kiegészítések a plots csomagban # vannak. > with(plots); [animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot] # A képernyőn láthatjuk a betöltött parancsokat, ha nem akarod látni: # with(plots): . # Ezután: > plot3d(z, x=-3..3, y=-3..3); # Gyakorlásképpen nézzük meg a rajz-menü beállítási lehetősegei közül # néhányat (a rajz-menü aktiválásához kattintsunk rá a bal egér-gombbal # a rajzra és válasszunk az eszközsorból, illetve kattintsunk a rajzra a # jobb gombbal). # # Megjegyezzük, hogy a kiválasztott beállítások (és még több minden más # is) parancssorból is használhatók, pl. > plot3d(z, x=-3..3, y=-3..3, axes=boxed, style=patch, > title='z_grafikonja'); # # Ábrázolhatjuk a fv-grafikon síkmetszeteinek képét, a kontúrvonalakat # közvetlenül is: > contourplot(z, x=-3..3, y=-3..3); # Érdekes a kettőt egyszerre is megnézni: > plot3d(z, x=-3..3, y=-3..3, axes=boxed, style=patchcontour); # # R->R^2, illetve R->R^3 fv-ek ("vektor-skalár fv-ek") grafikonja # síkbeli, illetve térbeli görbe. # Ezek pl. a következő módon kaphatók meg: # Síkban (R->R^2 fv-ek): > plot([cos(t), sin(t), t=0..3/2*Pi]); # Térben (R->R^3 fv-ek): > spacecurve([cos(t), sin(t), t], t=0..6*Pi, axes=normal,numpoints=1000, > title='Csavarvonal'); # Érdekes megnézni ugyanezt "csőrajzzal" is: > tubeplot([cos(t), sin(t), t], t=0..6*Pi, radius=0.1, axes=boxed); # Vektormezők (R^2->R^2 fv-ek) ábrázolása: > fieldplot( [x,y], x=-2..2,y=-2..2, grid=[11,11], axes=boxed); # Több rajzot megjeleníthetünk egy képernyn is a display paranccsal: > p1:=plot(exp(-x)*sin(2*x), x=0..2*Pi, color=red): # az elso rajz > p2:=plot(exp(-x), x=0..2*Pi, color=blue, linestyle=3): # a masodik > rajz > display(p1,p2); > # # Feladatok. # 1. Ábrázold az alábbi fv-eket: # r(t) = (sin(t), sin(4t)), ha 0<=t<=2*Pi. # Változtasd a 4-est és tanulmányozd az ábrákat! # Számítsd ki az ívhosszúságot is! # # 2. Ugyanaz, mint 1.-ben, csak most a síkgörbe a ciklois: # r(t)=(x(t), y(t)), ahol x(t)=a*(t-sin(t)), y(t)=a*(1-cos(t)), # 0<=t<=4 Pi, és a egy pozitív konstans (a gördülő kör sugara). # # 3. Ábrázold és tanulmányozd a következő fv-ek grafikonjait: # f(x,y)=x^2+y^2 # g(x,y)=x^2-y^2 # h(x,y)=-x^2-y^2 # phi(x,y)=ln(sqrt( (x+1)^2+y^2)-ln(sqrt( (x-1)^2+y^2) # # 4. Ábrázold egy grafikonon az f(x)=e^x, a g(x)=1+x+x^2/2, és a # h(x)=1/(1-x+x^2/2) függvények grafikonját a [-3, 1] # intervallumon!