Csomagok I.
lineáris algebra (linalg)
A linalg csomag alapvetõ lineáris algebrai feladatok megoldására alkalmas parancsok összessége.
> with(linalg);
Warning, new definition for fibonacci
Warning, new definition for norm
Warning, new definition for trace
vektorok
A Maple-ben a vektorokat és a mátrixokat tömbökként implementálták, ezért az array eljárás hívásával hozhatók létre. Alternatív megoldásként használhatjuk a vector és a matrix rutinokat is.
> x:=array([1,2,3]);
> v:=vector([1,6,3]);
Létrehozhatunk üres vektort is, ezt utána egyesével fel kell tölteni.
>
c:=vector(10);
c[1]:=9;
Mivel a vektor tömb, ezért a print eljárással lehet kiíratni a tartalmát a képernyõre.
> print(x),print(v),print(c);
A vektormûveletek eredményeit az evalm eljárás segítségével lehet kiértékelni illetve megjeleníteni.
> x+v; x-v; 3*v;
> evalm(x+v), evalm(x-v), evalm(3*v);
A skaláris szorzatot vagy beépített paranccsal, vagy mûvelettel lehet kiszámítani.
> dotprod(x,v);
> evalm(x&*v);
Vektoriális szorzat:
> crossprod(x,v);
A vektor normáját/hosszát (
) a
norm
eljárás adja meg.
> norm(v);
Két vektor szögét határozhatjuk meg az angle eljárással.
> angle(x,v);
> evalf(%);
>
mátrixok
Mátrix létrehozása elemei sorfolytonos megadásával a matrix parancs alábbi meghívásával történik:
> A:=matrix([[1,1,1],[2,2,2],[3,3,3]]);
Üres mátrixot is létrehozhatunk, melynek elemeit késõbb egyenként megadhatjuk. Ekkor a mátrix dimenzióját adjuk át a parancsnak:
> M:=matrix(2,3);
> M[1,3]:=2;
A fenti két módszert vegyesen is alkalmazhatjuk. Ekkor olyan mátrixot is megadhatunk, melynek csak néhány elemét határoztuk meg.
> matrix(5,5,[[1,2],[3,4]]);
Mivel a mátrix is tömb, ezért a print vagy az evalm eljárással írathatjuk ki.
> print(A);
> evalm(A);
Mátrixokon végzett algebrai mûveleteket vagy az evalm és az algebrai mûveletek segítségével vagy egyéb beépített parancsokkal végezhetjük el. A matadd eljárás két mátrixot ad össze.
> B:=matrix([[2,5,4],[1,0,-1],[-3,1,2]]);
> evalm(A+B);
> matadd(A,B);
A mátrix szorzása skalárral:
> evalm(2*B);
Lineáris kombináció kiszámolása:
> evalm(2*A-3*B);
Ugyanezt a matadd paranccsal is kiszámíthatjuk:
> matadd(A,B,2,-3);
Mátrixok szorzatának jelölésére a &* szorzásoperátort, vagy a multiply eljárást kell alkalmazni.
> evalm(A&*B);
> multiply(A,B);
A &* operátor mátrixok vektorral való szorzásánál is alkalmazható.
> a:=vector([4,3,2]);
> evalm(a&*A);
A Maple ebben az esetben a -t sorvektorként értelmezi, mert így értelmezhetõ a szorzás.
> evalm(A&*a);
Az
a
-t itt oszlopvektorként értelmezi a Maple.
Mátrixok hatványai a szokásos
^
operátorral számíthatók ki.
> evalm(B^2);
> evalm(A^3);
A map parancsot egy mátrixra alkalmazva a mátrix minden elemére kiértékelhetünk egy függvényt.
> map(exp,A);
Mátrix transzponálását a transpose eljárással végezhetjük el.
>
transpose(A);
transpose(B);
A mátrix inverzének meghatározásásra szolgál az inverse függvény.
> inverse(B);
A mátrix determinánsát a det függvénnyel határozhatjuk meg.
> det(B);
A mátrix rangja, sor-és oszlopvektor-rendszerének bázisa is könnyen kiszámolható:
> rank(A),rank(B);
> rowspace(B),colspace(B);
A B x =a egyenletrendszert a linsolve eljárás segítségével oldhatjuk meg.
> linsolve(B,a);
A mátrix sajátértékeit az eigenvalues , a sajátvektorokat az eigenvectors eljárással számíthatjuk ki.
> F:=matrix([[1,1],[4,1]]);
> eigenvalues(F);
> eigenvectors(F);
Az eigenvectors megadja a sajátértékeket, azt, hogy hányszoros sajátérték és a sajátértékhez tartozó sajátvektort.
>
>
számelmélet (numtheory)
prímtényezõs felbontás:
> ifactor(2345634345);
legnagyobb közös osztó:
> igcd(234,654);
> igcd(234,142,768);
legkisebb közös többszörös:
> ilcm(96,36);
> ilcm(23,12,28);
prímszám ellenõrzés:
> isprime(2567);
következõ prímszám:
> nextprime(2567);
elõzõ prímszám:
> prevprime(2567);
i-edik prímszám:
>
for i from 1 to 10 do
printf("%d. prímszám=%d\n",i,ithprime(i));
od;
1. prímszám=2
2. prímszám=3
3. prímszám=5
4. prímszám=7
5. prímszám=11
6. prímszám=13
7. prímszám=17
8. prímszám=19
9. prímszám=23
10. prímszám=29
> with(numtheory);
Warning, new definition for B
Warning, new definition for F
Warning, new definition for M
Warning, new definition for order
n-edik Fermat szám:
+1
>
for i from 1 to 7 do
i,fermat(i),isprime(fermat(i));
od;
Euler-féle
függvény: az n-hez relatív prím és n-nél kisebb egész számok száma
>
phi(2);
phi(5);
Összes osztók:
> divisors(234);
>
kombinatorika (combinat)
> with(combinat);
Warning, new definition for fibonacci
Kombinációk szemléltetése:
> choose(10,2);
> choose({a,b,c,d},3);
Kombinációk száma:
> numbcomb(10,2);
> choose([a,a,a,b,b,c],2);
> numbcomb([a,a,a,b,b,c],2);
Binomiális együttható ( n alatt a k ):
> binomial(10,2);
Multinomiális együttható (
n
alatt a
,
,...,
), ahol
+
+...+
=
, kiszámítása:
> multinomial(10,2,3,5);
Partíciós feladat:
+...+
egyenlet összes pozitív megoldásai elõállítása
> composition(5,3);
> numbcomp(5,3);
Particionálás - a megadott n természetes számot hányféleképpen állíthatjuk elõ természetes számok összegeként:
> partition(5);
> numbpart(5);
Permutációk - n db elem összes permitációi:
> permute(3);
> permute({a,b,c});
> numbperm(3);
n elem k hosszú ismétlés nélküli variációi
> permute(5,3);
> numbperm(5,3);
n elemû halmaz összes részhalmaza:
> powerset(3);
Véletlen kombináció kiválasztása:
>
randcomb(8,3);
randcomb(8,3);
randcomb(8,3);
Véletlen permutáció:
>
randperm(10);
randperm(10);
Véletlen partíció:
>
randpart(5);
randpart(5);
randpart(5);
>
>