A Maple egy fejlett matematikai problémamegoldó és programozói szoftver.
  • xDJCx
    #517

    A map(u->simplify(u, %), %%) -ban a % az előző eredményre utal a %%-pedig az azt megelőző számítási eredményre, itt most nem tudjuk mi volt az , de nem is lényeges. A map utasítás az első paraméterében megadott műveletet végzi el a második paraméterében megadott adattípus összes elemén. Ez utóbbi pl. ha egy lista típus, akkor annak minden elemén elvégzi a megadott műveletet, vagy ha ez egy összeg, akkor annak egyes tagjain sorban.
    pl.

    map(sin,[a,b,c]);

    [sin(a), sin(b), sin(c)]


    A művelet megadható operátoros alakban is azaz pl. u - > simplify(u,par2). Itt az u csak egy segédváltozó, gyakorlatilag tetszőleges más szimbólum is szerepelhetne. A map parancs majd az u-helyére behelyettesíti a második paraméterében szereplő adattípus elemeit sorra és elvégzi rajtuk a megadott műveletet.

    map(u->u^2,[a,b,c]);

    [a^2, b^2, c^2]

    map(u->u^2,a+b);# összeg tagjait emeli négyzetre

    a^2+b^2


    Az operátoros alakban szabadabban meg lehet adni a műveletet, azaz pl. több paramétere is lehet a függvénynek.

    Itt a simplify-parancsot alkalmazza a map. Amire érdemes felfigyelni, hogy a két példád közül az egyikben a simplify parancs két paraméteres változata szerepel azaz simplify(par1, par2) formában, a második példában pedig egy paraméteres alakja simplify(valami)
    Ez a fő különbség. A map(simplify, valami) megadásban egy paraméteres simplify használható. Az operátoros formában meg lehet adni több paramaéteres függvényt is. pl.

    map(t->f(t,d,e),[a,b,c]);

    [f(a, d, e), f(b, d, e), f(c, d, e)]


    Érdemes még megjegyezni, hogy lenne más lehetőség is (bár nem minden esetben) az operátoros forma elkerülésére több paraméteres függvény használata esetén, mert a map parancsnak is létezik más megadási formája is: azaz map(függvény, adat, par3,par4...) Itt a függvény 3. 4 stb. paraméterei szerepelhetnek a par3, par4 helyén. Lásd az alábbi példákat:

    map(t->f(t,d,e),[a,b,c]);# több paraméteres függvény f operátoros formában

    [f(a, d, e), f(b, d, e), f(c, d, e)]

    map(f, [a,b,c],d,e);# map másféle megadási módja: több paraméteres f függvény nem operátoros formában

    [f(a, d, e), f(b, d, e), f(c, d, e)]

    Példa több paraméteres simplify parancsra, mappel:

    map(u->simplify(u,symbolic),[sqrt(x^2),sqrt((x-1)^2)]);# operátoros formában

    [x, x-1]