624
A Maple egy fejlett matematikai problémamegoldó és programozói szoftver.
  • xDJCx
    #624
    Próbáld meg a SurfacePlot parancsot a Statistics csomagból. A súgóban találsz példákat.
  • Kele85
    #623
    Üdv!

    Egy programom végeredményeként kapok 3 mátrixot, x,y,z mátrixot. a mátrixok rendre egy-egy pont x, y és z koordinátáit tartalmazzák. Pl. x[1,1]:=1; y[1,1]:=2, z[1,1]:=3, akkor az adott pont kooridnátája: [1,2,3]. Van valami ötletetek arra, hogy hogyan tudnám az így kapott pontokat felületként megjeleníteni?

    A segítséget előre is köszönöm. :)
  • GImre70
    #622
    Sziasztok!

    A Maple 19-t még nem lehet sehol letölteni? Kerestem egy torrent oldalon, de ott nem hogy a Maple 17 és a többiek, de semmilyen Maple nincs fent.
  • GImre70
    #621
    Igen onnan töltöttem le. Akkor lehet, hogy ez volt a hiba. A 18.01-et viszont minden hiba nélkül elfogadta. Van 18.02 sajnos nem hivatalos?
  • xDJCx
    #620
    A 18.01-et nem kell előtte telepíteni. Jó lenne tudni, milyen hibaüzenetet ír ki. Ha esetleg az alap 18-as nem legális, akkor nem fog működni a hivatalos oldalról letöltött 18.02-es frissítés! Ha pedig legális a 18-as, akkor meg kéne próbálni újra letölteni és telepíteni a 18.02-öt.
  • GImre70
    #619
    Üdv.
    Frissítéssel kapcsolatban szeretnék kérdezni. Kaptam egy másik op. rendszert és feltelepítettem a Maple 18-t frissítettem a 18.02-t de amikor egy példát szerettem volna megoldani, akkor hibaüzenetet írt ki sőt még a menüre való klikkelésnél is. Lehet, hogy nem jó a frissítés, vagy előbb a 18.01-t kell feltelepíteni?
    Lehet, hogy én rontottam el valamit?
    Előre is köszönöm. Imre
  • GImre70
    #618
    Sikerült frissitenem a programot, és újra beírtam a egyenletet, és nekem is ugyan az az eredmény jött ki, mint neked.
  • GImre70
    #617
    Szia. Nekem csak a 18-s verzió van meg és nem merem frissiteni, mert sajnos nem eredeti és akkor a seriál már nem jó hozzá. És akkor lehet, hogy ezért kapok más eredményt.
  • xDJCx
    #616

    Ilyen összefüggésben nem találkoztam a kulcsszóval, és nálam (Maple 18.01) másként jelenik meg az eredmény:

    D2:=-20*x^2 -16*y^2-16*y+16;
    solve(D2);

    # Az eredménye:
    {x = (2/5)*sqrt(-5*y^2-5*y+5), y = y}, {x = -(2/5)*sqrt(-5*y^2-5*y+5), y = y}
  • GImre70
    #615
    itt küldöm jpg-ben a feladatot. Itt látszik az eredmény vége. Nem teljes.
  • GImre70
    #614
    Sziasztok.
    Volt egy feladat, amiben ezt az eredményt kaptam: x = (1/10)*sqrt(-80*y^2-80*y+80, symbolic). Mit jelent a symbolic opció.. Előre is köszönöm. Imre
  • GImre70
    #613
    Sziasztok.
    Újfent szeretnék kérdezni valami. Hogy kell használni az op() és a subs() parancsokat az Apply a Command menüvel? Én akárhogy próbáltam beírni a parancsot mint ahogy azt kell op(2, eqn) és a subs parancs nál is subs(x=r*sin(phi), eqn) így sosem sikerül beírni az Apply a Command menübe. Előre is ksözönöm.
  • xDJCx
    #612

    AZ inline opció nélkül is működik, mert ennek az opciónak a szerepe az eljárás végrehajtásának gyorsítása. Ez csak egyszerű eljárások esetén használható (ha nem tartalmaz az eljárás lokális paramétereket, és csak egyszerű kifejezés(sorozat)ból épül el).
  • GImre70
    #611
    Sziasztok.
    Azt szeretném kérdezni,hogy milyen opció az inline parancs?
    sq := proc (x) option inline; x^2 end proc;
    hypot := proc (a, b) sqrt(a^2+b^2) end proc;
    quad := proc (a, b) (a+b)^2*(a-b)^2 end proc;

    Mert itt van ez a három eljárás, és az első eljárás opciója az inline. De ha én ezt kitörlöm, akkor is működik.
    Végül is miért kell?

    Előre is köszönöm.
  • xDJCx
    #610

    Igen a palettán valóban van olyan szimbólum, de nincs hozzá rendelve a művelet.

    A komplementerhalmaz-képzés az halmazok közti kivonást jelent, ahol általában a legbővebb halmazra vonatkoztatják a kivonás műveletét. Nézd a meg pl. a wikipédián:

    http://hu.wikipedia.org/wiki/Halmaz
  • GImre70
    #609
    Szia.
    Pedig a Mapleban van olyan szimbólum a paletták között van egy olyan, hogy hangsúly és abban van egy ilyen szimbólum ami egy "X" jel felül vonás van. És én azt hittem, hagy ha ezt a jelet alkalmazzuk akkor megjeleníti a komplementer halmazt.
    Amit írtál az nem egy egyszerű különbség?
  • xDJCx
    #608

    Nincs rá külön jelölés és nincs előre definiálva a Maple-ben ez a művelet.

    Lehet definiálni függvényként a komplementer halmaz képzést.
    Ha pl. U-val jelöljük az univerzum, azaz a legbővebb halmazt az adott feladatban, akkor pl. így:

    U:={a,b,c,d,e,f,g,h};
    A:={a,b,c,d};

    Komp:=X->U minus X;

    Komp(A);# A halmaz komplementer.
  • GImre70
    #607
    Még egy kérdés.
    A Mapleben lehet valamivel jelölni a Komplementer halmazt?
  • GImre70
    #606
    Sziasztok.
    Mit jelent a geometriában ha valami konjugált.
    nem találtam a neten számomra érthető magyarázatot.

    Előre is köszönöm.
  • xDJCx
    #605


    ... és működik persze így is az OP függvény:

    OP(osztópont,point(A,3,8),point(B,10, 6),2,1);

    #és ábrázolás:
    draw([A,B,segment(S,[A,B]),osztópont],axes=normal,gridlines=true,color=[blue,blue,blue,red],view=[0..15,-5..10]);
  • xDJCx
    #604


    A megadott képletben hibás volt az y -t számító rész, a + helyett / -kell, és a Return(M) is el volt gépelve, return(M) lenne a helyes, de itt nincs is szükség a return parancsra.

    Az eljárás át lett alakítva úgy, hogy meg kell adni az eljárás hívásakor az eljárás által visszaadandó osztópont (pont-objektum) nevét. Ezzel a névvel lehet azután hivatkozni a létrejött objektumra.

    Új típust a Maple TypeTools csomagja segítségével lehet létrehozni, a csomag AddType parancsával. A súgóban: ?AddType

    restart;
    with(geometry):

    OP:=proc(M,A,B,p,q)
    local x,y;
    x:=(HorizontalCoord(A)*q+HorizontalCoord(B)*p)/(p+q);
    y:=(VerticalCoord(A)*q+VerticalCoord(B)*p)/(p+q);
    point(M,x,y);
    M;
    end proc;


    point(A,3,8);
    point(B,10, 6);

    OP(osztópont,A, B,2,1);

    detail(osztópont);
    coordinates(osztópont);
  • GImre70
    #603
    Sziasztok.
    OP:=proc(A,B,p,q)
    local M, x,y;
    x:=(HorizontalCoord(A)*q+HorizontalCoord(B)*p)/(p+q);
    y:=(VerticalCoord(A)*q+VerticalCoord(B)*p)+(p+q);
    point(M,x,y);
    Return(M);
    end proc;
    Ez az eljárás két pont közti osztópontot számolja ki. Az ismert képlet alapján könnyű megírni.
    Szóval azt szeretném kérdezni, hogy hogyan lehet az A, és a B paramétereknek a "point" típust adni, hogy ne kelljen külön leírni. valahogy így:
    point(A,3,8);
    point(B,10, 6);
    OP(A, B, 2,1);
    Hanem rögtön így:
    OP(point(A, 3,8), point(B,10,6),2,1)
    Az paraméterek a következők:
    A- az első pont kordinátái
    B- a második pont kordinátái
    p, q - osztási arány.
    Egyébként lehet saját típust deklarálni?
    Előre is köszönöm
    Imre
  • xDJCx
    #602

    Az indexes változónevek name típusúak, de nem symbol típusúak:

    type(a[2],name);

    type(a[2],symbol);
  • GImre70
    #601
    Sziasztok.

    Azt szeretném kérdezni, hogy mi a különbség a symbol és a name tipus között.
    egy:=proc(x::symbol) vagy így egy:=proc(x::name) nem ugyan az a kettő?
    Üdv Imre
  • ppmiki
    #600
    Köszönöm működik!
  • xDJCx
    #599

    Pl. ha aposztrófok (ún. left single quotes -amelyik balra dől) közé teszed a változó nevét, akkor speciális karaktert is tartalmazhat.

    `h'`;
  • ppmiki
    #598
    Sziasztok! Olyan problémám lenne, hogy szeretném h'-t kiirattatni a programban, de bármit teszek akkor is deriválni akar. Biztos nagyon triviális a megoldás csak én vagyok béna. Köszönettel:Papp Miklós
  • GImre70
    #597
    Szia. Tényleg igazad van jobb lenne angolul, de igazából az lenne a legjobb, ha lenne tanfolyam MAPLE-böl ahol a tanár elmagyarázza a parancsok "működését", vagy egy magyar nyelvű kézikönyv amiben minden mondom minden parancs, utasítás, stb, stb le van írva.
    Érdekes, hogy más programokról tudnak írni teljes körű felhasználói könyvet. Ezért szoktam itt kérdezni, mert itt mindig kielégítő választ kapok egy olyan hozzáértő embertől mint te. Üdv
  • xDJCx
    #596
    Én sem tudom hirtelen, mivel kéne megnyitni,viszont a teljes súgó anyag elérhető a Maplesoft weboldalán (online help):
    http://www.maplesoft.com/support/help/index.aspx

    A fő probléma viszont az, hogy a Maple teljes súgója nagyon terjedelmes, sok száz vagy ezer oldalnyi is lehet. Hosszútávon mindenképpen jobban jársz, ha megtanulsz legalább olyan szinten angolul, hogy a parancsok magyarázatait értelmezi tudjad.
  • GImre70
    #595
    Szeretnék kérdezni.
    Van a MAPLE könyvtárba több *.hdb (help database)kiterjesztésű fájl. Ezt mivel lehet megnyitni? Ugyanis ebben a fájlban tárolja a Maple a helpeket (leírásokat) *.mw kiterjesztésű fájlok együttese. Az egyik ismerősöm azt mondta, ha sikerül megnyitni és kinyomtatni a fájlokat akkor esetleg lefordítaná nekem és vissza töltve lenne egy magyar helpel rendelkező MAPLE programom. Sajnos a windows nem tudja megnyitni. És így csak a elkell olvasnom a megfelelő segítséget, mert én nem tudok angolul.
  • xDJCx
    #594

    Ha csak egyszerűen a save parancsot használjuk, akkor a read parancssal olvasható be az elmentett eljárás vagy változó:
    Pl.

    save szsor,"eljarasok.m";
    restart;
    read "eljarasok.m";
    szsor(an=30,a1=1,n=12);

    Ennél elegánsabb dolog module-ba betenni az eljárásaidat, és azt elmenteni és betölteni, úgy ahogy a Maple saját csomagjait kezeli. Ez kicsivel bonyolultabb dolog, a súgóban vannak példák.
  • GImre70
    #593
    Nagyon köszönöm így már értem. Fog menni. Ha így mentem el:
    save ``. libname . `/` . szsor . `.m` akkor readlib()-el be tudom tölteni.
  • xDJCx
    #592

    Lehet azt is csinalni, hogy a solve és indets parancsokat használva a Maple maga találja ki, melyik a hiányzó ismeretlen az egyenletben (an=a1+(n-1)*d) , és arra az ismeretlenre oldja meg. Az alábbi eljárás ezt csinálja, a változónevekkel kicsit trükközni kell.

    szsor:=proc({an::numeric:='a__n',a1::anything:='a__1',n::posint:='N',d::anything:='d_'})
    description "an=a1+(n-1)*d keplet tetszoleges ismeretlenjenek szamitasa a masik ketto ismereteben.";
    local eq,valt,nevek;
    nevek:=table(['a__n'="an",a__1="a1",N="n",d_="d"]);
    eq:=an=a1+(n-1)*d;
    valt:=convert(indets(eq,And(name,Not(constant))),list)[];
    if nops([valt])>1 or nops([valt])=0 then return "Egynel tobb parameter erteke nincs megadva, vagy mindegyik erteke meg van adva."; end if;
    return parse(nevek[valt])=solve(eq,valt);
    end proc;


    szsor(a1=1,d=0.5,n=10);# an ismeretlen
    szsor(a1=1,d=0.5,an=5.5);# n ismeretlen
    szsor(a1=1,n=10,an=5.5);# d az ismeretlen
    szsor(d=0.5,n=10,an=5.5);# a1 ismeretlen
    szsor(a1=1,n=10);# tul keves megadott parameter
    szsor(a1=1,n=10,an=5.5,d=0.5);# tul sok megadott parameter

  • xDJCx
    #591

    Használhatsz név szerinti paramétereket is (keyword parameters):
    Tetszőleges a sorrendjük, és elhagyhatsz közülük.
    ...
    szsor:=proc( { a1::numeric:=NULL, n::posint:=NULL, d::numeric:=NULL})

    ...
    szsor(a1=5, n=10, d=3)

    Ha elhagyod valamelyiket az eljárás hívásakor, akkor ezt az eljárásban tudod lekezelni.

    Az online súgóban itt írnak róla:
    http://www.maplesoft.com/support/help/Maple/view.aspx?path=parameter_classes
  • GImre70
    #590
    Szia köszönöm a segítséget ezzel minden rendben van ezt értem, az args a maple 16-ban a _passed utasítás a nargs pedig a_npassed. De én egy valamit nem értek, hogy megértsd mit szeretnék leírom konkrétan:
    Szeretnék egy eljárást ami a matematikai számsorokat számolja ki. Valahogy így.
    a(n)=a(1)+(n-1)*d képlet alapján számolja ki. Na most, ha a tanár azt mondja számoljuk ki a számtani sorozat a(1)-dik tagját, és megadja a többi paraméter, akkor az eljárásba csak az n-t és a d-t tudom beirni.
    Így: szsor(a[1]=NULL,n=17,d=5) és akkor csak ebből a két paraméterből számol, de ha szsor(a[1]=23,n=NULL,d=8) akkor viszont ebből számolja ki. Na ebbe kérném a segítséged. Sajnos a MAPLE-ban nem lehet úgy megadni a paramétereket mint a VISUAL BASIC-ban, hogy ha egy paraméter hiányzik, akkor azt egy vesszővel jelzed pl: szsor(,n=17,d=8) vagy így szsor(a(1)=23,,d=8). Előre is köszi Üdv Imre
  • xDJCx
    #589

    Lehet a nargs változóval ellenőrizni a paraméterek számát. Az args változó pedig az átadott paramétereket listában adja vissza.
    Az alábbi eljárás 3 bemenő szám paraméter esetén azok összegét adja vissza, 2 paraméter esetén azok különbségét, egyébként pedig figyelmeztető szöveget ir ki és NULL-t ad vissza.
    Az andmap(type,...) parancssal egy parancsban lehet az összes bemenő paraméterre a tipusvizsgalatot elvegezni, és ezek logikai eredményeinek és kapcsolatát adja vissza.

    szamok:=proc(A,B,C)
    if nargs=3 and andmap(type,[args],numeric) then
    return A+B+C;
    elif nargs=2 and andmap(type,[args],numeric) then
    return A-B;
    else print("Ervenytelen bemeno adatok!");return NULL;
    end if;
    end proc;

  • GImre70
    #588
    Sziasztok.
    Megint én vagyok. Szeretnék írni egy eseményt aminek 3 bemenő paramétere van pl: A,B,C valami:=proc(A,B,C)... end proc. És azt szeretném, hogyha bármelyik paraméter hiányzik, akkor a másik kettőből számol. Azt nem tudom, hogy milyen típust adjak meg, vagy hogy ellenőrizzem a paraméterek hiányát, mert a maple-ben nem lehet úgy megadni az eseményt, mint a visual basicben, hogy ha a példánknál maradva: valami(,3,5) vagyis vesszővel jelezni a hiányzó paramétert. Próbálkoztam a _params, és a _passed környezeti változóval, de valahogy nem értem el vele sikert. Egyébként a bemenő 3 paraméter számot kér És ezekre nem lehet a NULL értéket adni. Ha pedig az A::anything:=NULL értkéte adom meg alapértéknek és pl így írom be: valami(A,3,5) akkor hibát ír ki mivel az "A"-paraméter alapértékként a NULL van megadva.
    Ebben kérném a segítséget. Remélem érthető volt.
    A lényeg: Az esemény struktúrája, most lényegtelen. 3 szám típusú bemenő paraméter és a 3-ból bármelyik nincs megadva, akkor a másik kettőből számol.
    Várom mielőbbi válaszotokat. Üdv Imre
  • GImre70
    #587
    Sziasztok. Tudna nekem segíteni valaki? Nem indul el a Maple 17 pedig korábban elindult az ikonra való klikkelés után. Nem tudom mennyire segít, de a maplew.exe fájl 411kbyte. Lehet, hogy ez a baj? Pedig újra raktam a progit. Köszönöm.
  • GImre70
    #586
    Sziasztok.
    Tudtok segíteni abban, hogy mi a különbség az alias(), és a macro() parancs között, mert amikor az alias(y1=y[1]) parancsot használtuk ugyan azt kaptuk eredményül mint a macro() parancsnál. Akkor mikor melyiket kell/jó használni?
    Előre is köszönöm.
  • xDJCx
    #585

    Az ExcelTools[Export] paranccsal excel fájlba lehet menteni tömböket, mátrixokat programból is. Lásd a súgóban.

    Olyan parancs nincs, amivel előre meg lehet tudni, meddig fog futni egy program.

    Ha esetleg lassan fut egy eljárás, akkor érdemes lehet a debug-golni, és megvizsgálni, hogy futáskor mely részei mennyi erőforrást, mennyi időt igényelnek futás közben. Erre a showstat parancs alkalmas. A súgóban szintén van példa erre.