Anda di halaman 1dari 40

Rvid bevezets a Maple hasznlatba I

sszelltotta: Kovcs Zoltn


2004. szeptember 8.
1. Numerikus szmtsok: a , mint szmolgp
Ebben a segdanyagban a jel a Maple szt rvidti.
A feladatlapokon pldkat, feladatokat s szorgalmi feladatokat tall. A pldknl
a feladatlapon a > jel utn lev o szveget be kell gpelnnk a megnyitott munkalapra.
A begpelt szveg pirossal jelenik meg a kperny on. Az jel azt jelzi, hogy a klavi-
atrn meg kell nyomni az enter gombot. Az enter gomb megnyomsra gy kerl
sor, hogy a kurzor a begpelt sor vgn, vagy brhol a begpelt sorban ll. (Az
jelet nha elhagyom.) A feladatlapon ltalban megadom azt az eredmnyt is, amit a
kiad. A feladatokat nllan kell megoldani, s legks obb a feladatsor befejezsekor be
kell mutatni. A szorgalmi feladatokkal akkor foglalkozzon, ha a teljes munkalappal
kszen van, s az rbl mg van id o. (A szorgalmi feladatok megoldsa j gyakorls a
zrthelyi dolgozatra.)
Jelen fejezetben a -lel numerikus szmtsokat vgznk. Figyeljk meg, hogy
hogyan hasznljuk a -t
egzakt eredmnyek illetve
numerikus kzeltsek kiszmtsra!
Emellett a kezelsre vonatkozan is megtanulunk nhny fontos fogst:
a beptett Help hasznlatt,
a munkalap takartst,
a teljes munkalap behelyettestst s
a rendszermag jraindtst.
1.1. Egzakt aritmetika -lel
A direkt mdon hasznlhat numerikus szmolsokra: egyszer uen gpeljk be a
kifejezst, zrjuk a sort pontosvessz ovel. Az utn a vgrehajtja a szmtst s a ;
kperny o kzepn kkkel kirja az eredmnyt.
1. Plda:
>
2+4;
6
>
12*34567890;
414814680
Vegyk szre, hogy a szorzs jele .
Minden pirossal gpelt input sor l o, azaz brmikor mdosthatjuk azt. Az el obbi
sorban cserljk ki a ngyest nyolcasra, majd . Figyeljk meg, hogy a kk output
sor az utn mr az j eredmnyt adja.
2. Plda: Szmtsuk ki: 134
39
rtkt.
1
>
134^39;
90591434403147370552516385662067771291402350911187037423856474074
097423209059057664
>
length(134^39);
83
Az el obbi eredmny egzakt, s 83 jegyet tartalmaz. length()
3. Plda: Szmols kznsges trtekkel. /
>
3/5 + 5/9 + 7/12;
313
180
4. Plda: A ngyzetgyk hasznlata: sqrt(). (Square root.) sqrt()
>
sqrt(24);
2

6
Augyan egyszer ubb alakra hozta a

24 szmot, de az eredmnyt egzakt alakban


hagyta.
5. Plda: Matematikai konstansok. Ha -t akarjuk hasznlni gpeljnk Pi-t. Pi
>
4*(3+Pi);
12 + 4
A elvgezte a szorzst, de az eredmny egzakt maradt.
6. Plda: A zsebszmolgpekkel ellenttben az albbi pldkban a trigonometrikus
fggvnyek rtke is egzakt marad. sin
>
sin(5*Pi/3);

1
2

3
arcsin
>
arcsin(-1);

1
2

Ha nem denilt rtket prblunk kiszmtani, akkor a hibazenetet ad: tan
>
tan(Pi/2);
Error, (in tan) numeric exception: division by zero
1. Feladat. Keressnk r a Helpben a trigonometric szra, s nyissuk meg a trigono-
metrikus fggvnyek lapjt. Tanulmnyozzuk a trigonometrikus fggvnyek bevitelt.
Nyissunk j munkalapot, prbljuk meg kiszmtani sin(/8) pontos rtkt. A Help
alapjn knyszertsk ki, hogy a ezt ngyzetgykjelekkel felrja. (A margn segts-
get is tall.) Most prblkozzunk sin(/9)-el. (A sikertelensg okt majd csak algebrai convert
2
tanulmnyaink sorn rtjk meg.)
7. Plda: Atermszetes alap exponencilis fggvny hasznlata. e
x
gpelse: exp(x). exp
>
exp(x);
e
x
Az e szmot kiss bonyolultan kell meghvni: exp(1)
>
exp(1);
e
8. Plda: Az abszolt rtk: [x[ gpelse: abs(x). abs
>
abs(-3);
3
9. Plda: A sok szmelmleti parancsot ismer. Az ifactor() parancs megadja ifactor()
egy egsz szm prmtnyez os szorzatra bontst. A kvetkez o plda behelyettestse
utn kedvnk szerint vltoztassuk meg a faktorizlni kvnt egsz szmot.
>
ifactor(31722722304);
(2)
10
(3) (7)
2
(13)
2
(29) (43)
2. Feladat. Keressk ki a Helpben az ifactor parancs lerst. Nyissunk egy j
munkalapot s a pldkat msoljuk oda. (A Help lapon Edit menpont Copy Examples,
a megnyitott j lapon Edit, Paste). Trljk ki az sszes outputot (Edit, Remove
Output), majd helyettestsk be a teljes munkalapot! (Edit, Execute, Worksheet).
10. Plda: Tbb parancsot is bevihetnk egy sorban, csak arra kell vigyznunk, hogy
mindegyik parancsot pontosvessz ovel zrjuk.
>
sin(Pi/3); cos(Pi/3); tan(Pi/3);
11. Plda: Egy szmsorozat kiszmtsra a seq () parancsot hasznlhatjuk. Az seq()
albbiakban az els o 100 termszetes szm ngyzett szmoljuk ki. (Az eredmny sort
most nem gpeltem r a feladatsorra.)
>
seq(k^2,k=1..100);
3. Feladat. rassuk ki sin
_
k

8
_
rtkeit gykjelekkel k = 0-tl 8-ig, a seq() pa-
rancsot hasznlva!
1.2. Numerikus kzeltsek az evalf( ) parancs hasznlatval
Vessnk egy pillantst az el oz o szakaszban a 3. pldra, majd hasonltsuk ssze az
albbiakkal: evalf()
3
12. Plda:
>
evalf(3/5+5/9+7/12);
1.738888889
4. Feladat. Keressk ki a helben az evalf() parancs lerst, s rassuk ki

rtkt 500 rtkes jegyre. Olvassuk el a Digits parancs helpjt is. Nyissunk j Digits
munkalapot, msoljuk t a Digits helpjnek utols pldjt, s vltoztassuk meg az
rtkes jegyek szmt. > restart; kiadsval indtsuk jra a rendszermagot. restart;
13. Plda: Ha egy eredmnyhez egy nevet rendelnk, akkor a ks obbi hasznlatban ez
megknnyti az el obbi eredmny hasznlatt. Az rtkads jele: :=. gyeljnk arra, :=
hogy a klnbsget tesz kis bet u s nagy bet u kztt!
>
k:=3/5+5/9+7/12;
k :=
313
180
>
evalf(k);
1.738888889
>
k;
313
180
>
K;
K
Vltoznvknt szavakat is hasznlhatunk:
>
joe:=2^5;
joe := 32
>
sqrt(joe);
4

2
14. Plda:
Ha a szmokat tizedes ponttal visszk be, akkor a automatikusan tizedes trtben
adja az eredmnyt (numerikus kzeltssel).
>
sqrt(34);

34
>
sqrt(34.0);
5.830951895
15. Plda: Az evalf() parancsot szmsorozatra is alkalmazhatjuk.
>
result:=seq(sqrt(k),k=1..10);
result := 1,

2,

3, 2,

5,

6,

7, 2

2, 3,

10
>
evalf(result);
4
1., 1.414213562, 1.732050808, 2., 2.236067978, 2.449489743, 2.645751311,
2.828427124, 3., 3.162277660
1.3. A vltozk tiszttsa
Ha ltrehoztunk egy vltozt, akkor annak rtkt a a teljes munkafolyamat sorn
megjegyzi. Ha ugyanannak a vltoznak j rtket akarunk adni, akkor egyszer uen
hasznljuk jra az rtkads := parancst.
16. Plda:
>
restart;
>
h;
h
>
h:=56;
h := 56
>
h;
56
>
h:=sqrt(Pi);
h :=

>
h;

17. Plda: Szksg lehet egy vltoz tiszttsra, ami azt jelenti, hogy jra szeretnnk
a szban forg bet ut (szt) hasznlni, de korbbi rtke nlkl. Az albbiakban el oszr
az x vltoznak rtket adunk.
>
x:=65;
x := 65
Szeretnnk ltrehozni egy w-vel jellt algebrai kifejezst:
>
w:=x^2-4*x+7;
w := 3972
Az x nem ltalnos vltozknt szerepel! Ahhoz, hogy ltalnos vltozknt hasz-
nljuk, meg kell tiszttani.
>
x:=x;
x := x
>
w:=x^2-4*x+7;
w := x
2
4 x + 7
A restart parancs minden addig hasznlt vltozt megtisztt. (gy m ukdik,
mintha egy teljesen j munkalapot indtottunk volna.)
1. Szorgalmi feladat. A Help alapjn ismerjnk meg nhny tovbbi szmelmlettel
kapcsolatos parancsot: igcd, ilcm, iquo, irem.
5
2. Szorgalmi feladat. Keressnk megoldst -lel az albbi krdsre! Hny nullra
vgz odik 1000!? (A faktorilis kiszmtsa egyszer uen a felkiltjel gpelsvel trt-
nik.) !
3. Szorgalmi feladat. Hogyan hasznlhatjuk a convert() parancsot egy tizedes
trt kznsges trtt val talaktsra? Vgezzen nhny prbt. Nyisson egy j
munkalapot, s vgezze el az albbiakat!
>
restart;
>
convert(0.333333333,fraction);
>
convert(0.3333333333,fraction);
Magyarzza meg a klnbsget! A rvid magyarzatot szvegknt rja be a mun-
kalapba! (A szveg begpelse el ott kattintson a T ikonra a mensorban.)
6
2. Algebrai kifejezsek (formulakezels)
Ebben a fejezetben megtanulja, hogyan lehet algebrai kifejezseket bevinni, helyette-
stsi rtkket kiszmtani, tovbb azt, hogyan lehet azokat manipullni: felbontani
a zrjeleket, faktorizlni, egyszer usteni.
2.1. A subs() parancs
1. Plda: Vigyk be a 3x
2
+ 8 algebrai kifejezst, s jelljk el W-vel:
>
W:=3*x^2+8:
Vegyk szre, hogy a sort most kett osponttal zrtuk. Ilyenkor a vgrehajtja a sort, :
de az eredmnyt nem rja ki a kperny ore. (Zrhattuk volna a sort pontosvessz ovel is.)
Ki akarjuk szmtani az el oz o kifejezs rtkt az x = 4 helyen. Erre tbb lehet o-
sg is van:
>
subs(x=4,3*x^2+8);
>
subs(x=4,W);
(subs, mint substitute.) Figyeljnk az egyenl osgjel (=) s az rtkads (:=) k- subs()
ztti klnbsgre!
Asubs() parancs kifejezsekkel is m ukdik: Helyettestsnk be x helyre 5+2u-
t, s az eredmnyt jelljk M-el:
>
M:=subs(x=5+2*u,W);
M := 3 (5 + 2 u)
2
+ 8
Az expand paranccsal felbonthatjuk a zrjeleket: expand()
>
expand(M);
83 + 60 u + 12 u
2
2. Plda: A subs parancsot tbb vltoz behelyettestsre is hasznlhatjuk:
>
U:=(2/5)*x^2+3*y;
U :=
2
5
x
2
+ 3 y
>
subs(x=7,y=12,U);
278
5
3. Plda: A subs paranccsal egyenletekbe is behelyettesthetnk szmokat. Dnt-
sk el behelyettestssel, hogy x = 3, illetve x = 4 gyke-e az x
3
5x
2
+7x12 =
0 egyenletnek.
>
eqn:=x^3-5*x^2+7*x-12=0;
eqn := x
3
5 x
2
+ 7 x 12 = 0
Magt az egyenletet jelltk el eqn-el. Figyeljnk arra, hogy az egyenlet megad-
snl ismt a szimpla egyenl osgjelet (=) hasznltuk.
>
subs(x=3,eqn);
7
9 = 0
>
subs(x=4,eqn);
0 = 0
1. Feladat. Helyettestsk be 100-tl 100-ig az egsz szmokat az x
3
5x
2
+7x12
algebrai kifejezsbe!
4. Plda: A subs() parancs szintaktikai helyettestst vgez: egy kifejezs-
ben a helyettesteni kvnt karakterek pontos egyezst keresi. Ezrt a kvetkez o
helyettests nem vezet eredmnyre:
>
prod:=a^3*b^2;
prod := a
3
b
2
>
subs(a*b=1,prod);
a
3
b
2
Eredmnyt ilyenkor algebrai helyettestssel rhetnk el az algsubs() parancs algsubs()
segtsgvel:
>
algsubs(a*b=1,prod);
a
A ks obbiekben lert simplify() parancs is clravezet o.
2.2. Az expand( ) parancs
Zrjelek felbontsra az expand parancsot hasznlhatjuk. Algebrai, trigonometikus
s egszen ltalnos kifejezsek felbontsra is hasznlhat.
5. Plda: Vgezzk el a szorzsokat a (x + 2)
2
(3 x 3) (x + 5) kifejezsben.
>
k:=(x+2)^2*(3*x-3)*(x+5);
k := (x + 2)
2
(3 x 3) (x + 5)
>
expand(k);
3 x
4
+ 24 x
3
+ 45 x
2
12 x 60
6. Plda: A jl ismert trigonometrikus azonossgok: sin(2 x) s cos(2 x) .
>
expand(sin(2*x));
2 sin(x) cos(x)
>
expand(cos(2*x));
2 cos(x)
2
1
2. Feladat. Vgezzk el a beszorzst a kvetkez o kifejezsben: x
(
1
2
)
(x
(
3
2
)
+x
(
1
2
)
)
(Akkor dolgozott helyesen, ha az eredmnye x
2
+ 1.)
8
3. Feladat. Hatrozzuk meg az a
32
+ b
32
kifejezs minimumt, ha a + b = 1. (tmu-
tats: helyettestsnk a helybe (1/2 u)-t, b helybe (1/2 +u)-t, majd vgezzk el a
hatvnyozst.)
2.3. A factor( ) parancs
7. Plda: Alaktsuk szorzatt (azaz bontsuk els ofok tnyez ok szorzatra) a kvetkez o
kifejezst: 3 x
2
10 x 8 factor
>
w:=3*x^2-10*x-8;
w := 3 x
2
10 x 8
>
factor(w);
(3 x + 2) (x 4)
8. Plda: A factor parancsot tbbvltozs algebrai kifejezsekre s trigonometrikus
kifejezsekre is alkalmazhatjuk.
Alaktsuk szorzatt a x
2
y + 2 xy +y kifejezst!
>
h:=x^2*y+2*x*y+y;
h := x
2
y + 2 xy +y
>
factor(h);
y (1 +x)
2
9. Plda: Alaktsuk szorzatt: sin
2
x cos
2
x .
>
factor((sin(x))^2-(cos(x)^2));
(sin(x) cos(x)) (sin(x) + cos(x))
10. Plda: A polinomok alacsonyabb fok tnyez okre bontsnl fontos krds, hogy
a tnyez ok egytthati mely szmtestben vannak. Alaprtelmezsben ez a racionlis
szmtest, gy a kvetkez o polinonomot a alaprtelmezsben nem tudja szorzatt
alaktani, br a polinomnak vannak vals gykei.
>
poly1:=x^2-2;
poly1 := x
2
2
>
factor(poly1);
x
2
2
Opcionlis argumentumknt megadhatjuk, hogy a hasznlt szmtest a vals szmok
teste legyen. Ekkor a a faktorizcit numerikus kzeltssel hajtja vgre:
>
factor(poly1,real);
(x + 1.414213562) (x 1.414213562)

1
Ha pontosan megadjuk, hogy a faktorizlsnl hasznlt test Q(

2) Q

2-vel val b ovtse legyen, akkor egzakt eredmnyt kapunk.


>
factor(poly1,sqrt(2));
1
arra gyelmeztet, hogy olyan elmleti hivatkozs trtnik, amely mg az els oves hallgat szmra
nem biztos, hogy vilgos.
9
(x

2) (x +

2)
11. Plda: Ha a factor parancsot trtkifejezsre alkalmazzuk, akkor a szmll s a
nevez o szorzatt alaktsa utn a mg a lehetsges egyszer ustseket is elvgzi:
>
A:=(x^3-7*x^2+15*x-9)/(x^2+4*x+4);
A :=
x
3
7 x
2
+ 15 x 9
x
2
+ 4 x + 4
>
factor(A);
(x 1) (x 3)
2
(x + 2)
2
>
B:=(x^3-7*x^2+15*x-9)/(x^2-4*x+3);
B :=
x
3
7 x
2
+ 15 x 9
x
2
4 x + 3
>
factor(B);
x 3
12. Plda: Ha nem akarjuk az egyszer ustst elvgezni, akkor a szmllt (numer()) numer()
s a nevez ot (denom()) kln kell szorzatt alaktanunk: denom()
>
B:=(x^3-7*x^2+15*x-9)/(x^2-4*x+3);
B :=
x
3
7 x
2
+ 15 x 9
x
2
4 x + 3
>
factor(numer(B)); factor(denom(B));
(x 1) (x 3)
2
(x 1) (x 3)
2.4. A simplify( ) parancs
13. Plda: A simplify() parancsval nagyon rugalmasan tudunk kifejezseket simplify()
egyszer ubb alakra hozni. Figyeljk meg a sin(3t) sin(7t) trigonometrikus kife-
jezs kvetkez o kt talaktst! A msodik esetben megadtuk az alkalmazni kvnt
egyszer ustsi szablyt is.
>
simplify(sin(3*t)-sin(7*t));
20 sin(t) cos(t)
2
64 sin(t) cos(t)
6
+ 80 sin(t) cos(t)
4
>
simplify(sin(3*t)-sin(7*t),{cos(t)^2=1-sin(t)^2});
64 sin(t)
7
112 sin(t)
5
+ 52 sin(t)
3
4 sin(t)
4. Feladat. Feltve, hogy ab = 1, rjuk fel a s b hatvnyainak sszegeknt az (a+b)
10
kifejezst! Magyarzzuk meg az eredmnyben a 252 szmot.
10
3. Oldjuk meg!
Ebben a fejezetben megtanuljuk, hogy hogyan lehet a -lel egyenletek egzakt s kze-
lt o megoldsait megkeresni, valamint egyenleteket grakusan megoldani.
>
restart:
>
with(plots):
Warning, the name changecoords has been redefined
A with(plots): paranccsal a alkalmazhat parancsait b ovtettk egy cso- with()
maggal, nevezetesen a plots csomaggal. Ha a sort nem kett osponttal, hanem pon-
tosvessz ovel zrjuk le, akkor a kperny on megkapjuk az j parancsok listjt. Erre a
csomagra csak a grakus megoldsnl lesz szksgnk.
3.1. Az egyenletek bevitele, az lhs() s rhs() parancsok
1. Plda: Egyenlet bevitelre mr lttunk pdt a subs() parancs megismersekor.
A kvetkez oekben bevisszk az x
3
5 x
2
+ 23 = 2 x
2
+ 4 x 8 egyenletet, s en-
nek az eqn1 nevet adjuk:
>
eqn1:=x^3-5*x^2+23=2*x^2+4*x-8;
Az lhs() s az rhs() parancsokkal klnvlaszthatjuk az egyenlet oldalait (right lhs()
rhs() hand side, left hand side).
>
lhs(eqn1);
>
rhs(eqn1);
Az el obbi parancsokkal az egyenletet egy oldalra rendezhetjk:
>
eqn2:=lhs(eqn1)-rhs(eqn1)=0;
eqn2 := x
3
7 x
2
+ 31 4 x = 0
3.2. Egzakt megolds keresse: a solve( ) parancs
Legfeljebb negyedfok algebrai egyenletek megoldsra van ltalnos megoldkp-
let, melyet a ismer. Ez a beptett algoritmus a solve() paranccsal hvhat meg.
2. Plda: Keressk meg a kvetkez o algebrai egyenlet megoldsait:
3x
3
4x
2
43x + 84 = 0.
A solve() parancs msodik argumentuma mondja meg, hogy mely ismeretlenre
kell az egyenletet megoldani.
>
solve(3*x^3-4*x^2-43*x+84=0,x);
3, 4,
7
3
3. Plda: Szksg lehet arra, hogy a megoldsok listjbl valamelyik szmot kiv-
lasszuk egy esetleges ks obbi hasznlatra. El oszr elnevezzk a megolds-listt, majd
ennek egy tagjra az albbiak szerint hivatkozunk:
11
>
N:=solve(x^2-5*x+3=0,x);
N :=
5
2
+
1
2

13,
5
2

1
2

13
>
N[1];
5
2
+
1
2

13
4. Plda: El ofordulhat, hogy az egzakt megoldsok nehezen olvashatk:
>
eqn1:=x^3-34*x^2+4=0;
>
H:=solve(eqn1,x);
A megoldsban olvashat I szm a kpzetes egysg ((I)
2
= 1). Kirathatjuk a
megoldsok kzelt o rtkt is:
>
evalf(H);
A solve() parancs nha nem algebrai egyenleteknl is m ukdik, de nem mindig
adja meg a teljes megoldshalmazt.
1. Feladat. Oldjuk meg az x
3
11x
2
+ 7x + 147 = 0 egyenletet, magyarzzuk meg
az eredmnylistt a bal oldal szorzatt alaktsval.
2. Feladat. rassuk ki az ax
2
+bx +c = 0 egyenlet gykeit!
3. Feladat. Oldja meg az albbi egyenletrendszert: x + 2y = 3, y + 1/x = 1.
Az el obbi egyenletrendszert nevezze el eqns-nek, megoldsait soln-nak. rassa ki
kln-kln a megoldsokat, majd elln oriztesse azokat.
3.3. Kzelt o megolds keresse, az fsolve() parancs
Az fsolve() paranccsal az algebrai egyenletek kzelt o megoldsait egy lpsben fsolve()
megkaphatjuk, illetve kereshetjk ms egyenletek kzelt o megoldsait is. Olvassuk
el a parancs helpjt, tanulmnyozzuk az opcionlis argumentumokat! gyeljnk arra,
hogy az fsolve() parancs sikere a kivlasztott intervallumtl nagymrtkben fgg.
4. Feladat. Keressk meg az fsolve paranccsal az x
3
+ 1 exp(x) = 0 egyenlet
sszes megoldst a [3, 5] intervallumban!
Az fsolve() paranccsal kzvetlenl csak a 0. szmot kapjuk meg, mg ha az inter-
vallumot meg is adjuk. (Hajtsuk vgre!)
brzoljuk a bal oldalt:
>
plot(x^3+1-exp(x),x=-3..5,y=-5..15);
12
4
2
2
4
6
8
10
12
14
y
3 2 1 1 2 3 4 5
x
A grakon szerint 4 zrushely is van. Az fsolve() parancs opcionlis ar-
gumentumban megadhat, hogy mely vals intervallumban keresse a a gykt.
>
fsolve(x^3+1-exp(x)=0,x=-1..-.2);
.8251554697
Keressk meg a tbbi megoldst is! A plot() parancs helpje alapjn ksztsnk
olyan brt is, amelyen egyszerre lthat az x x
3
+1 s az x exp(x) fggvnyek
grakonja.
5. Feladat. Kattintsunk az el obbi grakonra bal egrgombbal! Figyeljk meg a me-
nsor vltozst, prbljuk ki az j ikonokat! Figyeljk meg, hogy ha ismt a gra-
kon terletre kattintunk az egrrel, akkor a kattintsi pont koordinti megjelennek a
mensorban. Most kattintsunk a grakonra jobb egrgombbal! Tanulmnyozzzuk s
prbljuk ki a legrdl o men pontjait.
6. Feladat. Keressk meg a kvetkez o egyenlet kzelt o megoldsait:
x
2
/20 10x = 15 cos(x + 15).
(Ksztsnk brt, mely tartalmazza a jobb oldal s bal oldal grakonjt is, illetve
olyan brt is, mely az egy oldalra rendezett fggvny grakonjt tartalmazza az
sszer u intervallumot hatrozzuk meg.)
13
4. Adattpusok
Ez a fejezet a legfontosabb Maple adattpusokkal foglalkozik: a kifejezssorozatokkal,
listkkal s halmazokkal
4.1. Kifejezssorozatok
1. Plda: Rviden sorozatok. A sorozat vessz ovel elvlasztott Maple kifejezsek egy-
msutnja:
> 2,1,x,sin(Pi/2);
2, 1, x, 1
A kifejezssorozatokat sszef uzhetjk:
> X:=a,b:Y:=1,2:X,Y;
a, b, 1, 2
1. Feladat. Ksztsnk kifejezssorozatot az els o 100 prmszmbl! (Segtsg a mar-
gn.) A kifejezssorozatot nevezzk el primes-nak. ithprime()
4.2. Listk
2. Plda: Ha a kifejezssorozatot szgletes zrjelbe tesszk, akkor listt kapunk: []
> S:= [1,2,2,4];
S := [1, 2, 2, 4]
A lista elemeire az elem sorszmval hivatkozhatunk: S[3] az el obbi lista harmadik
eleme.
3. Plda: A lista elemeit az add() paranccsal adhatjuk ssze. add()
> add(i,i=S);
9
A nops() parancs megadja a lista elemszmt. nops()
2. Feladat. Az el obbi feladatban szerepl o primes kifejezssorozatbl ksztsnk lis-
tt, majd hatrozzuk meg az els o 100 prm szmtani kzept.
4. Plda: Az op() parancs a listt kifejezssorozatt konvertlja: op()
> op(S);
1, 2, 2, 4
3. Feladat. Legyenek az X lista elemei a ngyzetszmok 1-t ol 100-ig, az Y lista elemei
pedig a kbszmok 1-t ol 100-ig. Ha az X s Y listkat ssze akarjuk f uzni egyetlen
listv, akkor X,Y nem ad megfelel o eredmnyt. (Prbljuk ki!) Hogyan jrjunk el?
4. Feladat. Ksztsen olyan listt, amelyben a 2k + 1-edik elem a k, a 2k-adik elem
pedig a k-adik prmszm, k = 1 . . . 100.
14
4.3. Halmazok
5. Plda: A Maple a halmazokat matematikai rtelemben kezeli:
> data_set:={1,2,-1,a,1,a};
data_set := 1, 1, 2, a
6. Plda: A Maple tbb halmazm uveletet is tmogat, belertve az unit s a metszetet.
Pldul: intersect
union
> {a,b,c} intersect {a,x,y};
a
> {a,b,c} union {a,x,y};
a, x, y, b, c
7. Plda: A nops() parancs megadja a halmaz elemszmt: nops()
> nops(data_set);
4
8. Plda: Az op() parancs kifejezssorozatt konvertlja a halmazt: op
> op(data_set);
1, 1, 2, a
9. Plda: A map() parancs egy fggvnybe a halmaz vagy lista minden elemt behe- map()
lyettesti:
> numbers:={0,Pi/2,Pi,3*Pi/2,2*Pi};
numbers := 0, ,
1
2
,
3
2
, 2
> map(sin,numbers);
1, 0, 1
Figyeljk meg, hogy az eredmny halmaz lesz! Ha a map parancsot listra alkalmaz-
zuk, akkor az eredmny lista lesz:
> numbers:=[0,Pi/2,Pi,3*Pi/2,2*Pi]:
> map(sin,numbers);
[0, 1, 0, 1, 0]
5. Feladat. Tanulmnyozzuk a Helpben a select() s remove() parancsot. Az
els o 100 prmszm listjbl vlasszuk ki a 100-nl nagyobb elemeket, s hozzunk ltre
ebb ol j listt! (tmutats. Szksge lehet az albbi fggvnyre: large:=x-> is(x>100);
Mit csinl ez a fggvny? Az is() parancs helpjt is nzze meg! ) is()
6. Feladat. 1. Keresse ki a helpben a rand() parancsot. Hozzon ltre egy X
s egy Y listt, mely 150150 vletlen szmbl ll, s a szmok 1 s 50 kztt
vannak.
15
2. A listk egyestsre lehet osg a zip() parancs. Ezt hasznlva hozzunk ltre zip()
listt, amely szmprokbl ll, az i-edik szmpr pedig [X[i], Y [i]].
3. Az el obb egy pontsorozat koordintaprjait kaptunk. brzoljuk a pontsorozatot.
(Szksge lehet a plots csomagra.)
4. Szorgalmi feladat. Keressk meg a Helpben s tanulmnyozzuk az sszef uzs (con-
catenation) opertor hasznlatt.
16
5. Fggvnyek
Ebben a fejezetben megtanulja, hogyan denilunk fggvnyeket a -ben, hogyan
lehet fggvnyrtket kiszmolni, illetve a fggvny grfjt brzolni.
>
restart;
5.1. A fggvny dencija
1. Plda: A klnbsget tesz a fggvny s az algebrai kifejezs kztt. Pldul az
f: R R, x f(x) = cos( x) + 3
fggvnyt a kvetkez okppen visszk be
2
.
>
f:=x->cos(Pi*x)+3;
f := x cos( x) + 3
A nyilat a mnusz jel s a nagyobb jel egyms utn val gpelsvel hoztuk
ltre. A nyl a fggvny dencijakor ktelez o. ->
A fggvny dencijt a az egsz munkalap sorn meg orzi:
>
f(x);
cos( x) + 3
Ha azt szeretnnk, hogy a felejtse el az f el obbi dencijt, akkor a vltozk
tiszttsnl megismert mdon jrunk el:
>
f:=f;
f := f
5.2. Behelyettests fggvnybe
2. Plda: Deniljuk a kvetkez o fggvnyt:
>
f:=x->3*x+x^2;
f := x 3 x +x
2
Keressk meg a kvetkez o fggvnyrtkeket:
>
f(-1);
2
>
f(2+sqrt(5));
6 + 3

5 + (2 +

5)
2
>
evalf(f(2+sqrt(5)));
30.65247584
>
f(x+4);
2
A tovbbiakban a fggvny rtelmezsi tartomnyt nem rom ki, az mindig a vals szmok lehet o
legb ovebb rszhalmazt jelenti.
17
3 x + 12 + (x + 4)
2
>
simplify(%);
11 x + 28 +x
2
>
(f(x+h)-f(x))/h;
3 h + (x +h)
2
x
2
h
>
simplify(%);
3 + 2 x +h
Figyeljk meg, hogy a fggvnyrtkek kiszmtsnl nincs szksgnk a subs
parancsra.
3. Plda: Fggvnyek kompozcija:
>
g:=x->cos(x)+1;
g := x cos(x) + 1
>
f(g(Pi/3));
27
4
>
j:=x->g(f(x));
j := x g(f(x))
>
j(x);
cos(3 x +x
2
) + 1
1. Feladat. Deniljuk az
s := t s(t) =
3 +t
2

3t + 1
fggvnyt. Szmtsuk ki a kvetkez o rtkeket: s(2), s(t 3), s(t) s(3). Egyszer u-
stsnk is!
5.3. Fggvnyek grfja
4. Plda: A mr megismer plot parancsot fggvnyekre is hasznlhatjuk:
>
h:=h; y:=y; x:=x;
h := h
y := y
x := x
>
h:=x->x*exp(-x);
h := x xe
(x)
>
plot(h(x),x=-1..4,y=-2..1);
18
2
1.5
1
0.5
0.5
1
y
1 1 2 3 4
x
2. Feladat. Tekintsk az
f(x) =
4
x
2
+ 1
fggvnyt! brzoljuk kzs koordintarendszerben:
g(x) = f(x + 1), h(x) = f(x 1), j(x) = f(x) + 1.
(Azonostsuk be a fggvnyeket!)
3. Feladat. Deniljuk az
f(x) = 2x [x
2
5[
fggvnyt!
1. Hozzuk egyszer ubb alakra az f(z 4) kifejezst!
2. Rajzoljuk ki f grfjt!
3. Oldjuk meg az f(x) = 0 egyenletet! (Kzelt o megolds.)
19
6. Eljrsok szervezse
A eljrs lnyegben parancsok olyan csoportja, melyet egytt hajtunk vgre.
Egy eljrs alapelemei
1. Plda: Figyeljk meg hogyan szervezzk meg az eljrst: proc()
>half := proc(x)
> evalf(x/2);
>end proc;
half := proc (x) evalf(1/2*x) end proc
Ez az egyszer u program egyetlen Maple parancsot hajt vgre: evalf(x/2), azaz
x szm felnek kzelt o rtkt adja meg.
Az eljrs neve half.
Az eljrs dencija a proc() utastssal kezd odik. A zrjelbe kerl, hogy
milyen input adatot vr az eljrs. Ha tbb input adat van, akkor azokat vessz ovel
vlasztjuk el.
; vlasztja el az eljrsba szervezett parancsok sorozatt.
end proc; zrja az eljrst.
Ha egyszer deniltunk egy eljrst, akkor a tovbbiakban Maple parancsknt hasz-
nlhatjuk:
> half(2/3);
.3333333333
Lekrdezhetjk az egyszer mr denilt eljrs dencijt:
showstat(half);
1. Feladat. rjunk eljrst, mely kiszmtja az input szm ngyzett!
2. Feladat. rjunk eljrst, mely kirja az (a, b) vektor eukildszi s taxis normjt.
(|(a, b)|
E
=

a
2
+b
2
, |(a, b)|
T
= [a[ +[b[) rjunk olyan eljrst, amely kiszmtja
egy tetsz oleges szmlista euklidszi normjt, azaz az elemek ngyzetsszegb ol vont
ngyzetgykt.
20
Loklis s globlis vltozk
Az interaktv szinten hasznlt vltozk a globlis vltozk, az eljrsokban hasznlt
vltozk a loklis vltozk.
2. Plda: Tekintsk az albbi eljrst:
> sqrs:=proc(n)
> seq(n^i,i=1..4)
> end;
Warning, i in call to seq is not local
sqrs := proc(n) seq(n^i, i = 1 .. 4) end
Itt az i loklis vltoz, s a hibazenet gyelmeztet, hogy ezt deklarlni kell: local
> sqrs:=proc(n)
> local i;
> seq(n^i,i=1..4)
> end;
3. Feladat. rjunk eljrst, mely ugyanabban a koordintarendszerben 1-t ol n-ig ki-
rajzolja az x sin(n x) fggvnyeket! (n N.) Valami ilyesmit fog kapni:
1
0.5
0
0.5
1
0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2
x
A vltoz tpusa
3. Plda: A kvetkez o eljrs kirja az n els o m hatvnyt:
> sqrs:=proc(n,m)
> local i;
21
> seq(n^i,i=1..m)
> end;
Prbljuk ki input adatknt a (2, 4.78) szmprt is.. . .
A seq parancsban i helyn nyilvn egsz szmnak kell szerepelnie: ::
> sqrs:=proc(n,m::integer)
4. Feladat. Nzzk meg a Help-ben a type/integer cmszt, tanulmnyozzuk a
vltozk tovbbi lehetsges tpusait!
5. Feladat. rjunk eljrst, mely n-t ol m-ig prmhatvnyok szorzatra bontja az egsz
szmokat. (Az n s m vltozk tpust deklarljuk!)
Ciklusok
A ms programozsi nyelvekhez hasonlan biztostja a ciklusok szervezst, azaz
bizonyos utastsok ismtelt vgrehajtsnak lehet osgt.
4. Plda: Tanulmnyozzuk a for utastssal szervezett ciklus jellemz oit: for
>
for i from 1 to 10 do i*i; od;
i a ciklusvltoz.
A ciklus elejn ll a ciklus lellsi felttele; jelen esetben a ciklus lell, ha a
ciklusvltoz elrte a 10-et. (10-re mg vgrehajtdik a ciklus.)
do s od kztt van a ciklus magja, ezeket az utastsokat hajtja vgre a a
ciklusvltoz minden rtkre. (Az od helyett lehetsges az end do is.)
5. Plda: A kvetkez o pldban egy msik lellsi felttelt tanulmnyozhatunk. A
while felttel hasznlata esetn a felttel minden ciklus el ott kirtkel o- while
dik, s ha a felttel igaz, akkor a vgrehajtja a ciklusmag utastsait:
>
for i from 1 to 10 while i*i<50 do i*i; od;
6. Feladat. Tanulmnyozzuk a Help-ben a for ciklust! (Hajtsuk vgre s magyarz-
zuk meg a pldkat!)
Most lssunk egy nem tl sszetett pldt eljrs szervezsre.
6. Plda: rjunk olyan eljrst, mely felsorolja az n jegy u pratlan szmokat.
A feladatra tbb megolds is adhat, egy lehetsges a kvetkez o. El oszr a fela-
datot interaktvan oldom meg n egy konkrt rtkre, mondjuk 2-re. A szmokat egy
lista elnevezs u kifejezssorozatba rendezem. A lista kezdetben res, s cikliku-
san b ovtem gy, hogy mindig hozzveszem a kvetkez o, a feltteleknek eleget tev o
pratlan szmot, el oszr a 11-t.
>
restart;
>
lista:=op({});
lista :=
22
>
for i from 11 by 2 while i<100 do
>
lista:=lista,i od:
>
lista;
A programozsban jratlanok gyelmt felhvom a lista:=lista,i utastsra,
amely azt jelenti, hogy a lista vltoz j rtkt gy kapom, hogy a rgi lista mell mg
odarom i-t. (rtkads.)
Miutn az interaktv megolds sikeres volt, megszervezem az eljrst. Bemeneti
adat a szmjegyek szma, mely egy pozitv egsz.
>
ptlanok:=proc(n::posint)
>
local lista,i;
>
lista:=op({});
>
for i from 10^(n-1)+1 by 2 while i<10^n do
>
lista:=lista,i od:
>
lista;
>
end proc;
Nzzk eljrsunkat n = 2-re:
>
ptlanok(2);
Az eljrs megszervezsekor nem voltunk elg krltekint oek, n = 1-re nem azt
adja, amit krnk:
>
ptlanok(1);
2, 4, 6, 8
A javts:
>
ptlanok:=proc(n::posint)
>
local lista,i;
>
lista:=op({});
>
if n=1 then lista:=1,3,5,7,9: else
>
for i from 10^(n-1)+1 by 2 while i<10^n do
>
lista:=lista,i od:fi:
>
lista;
>
end proc;
>
ptlanok(1);
1, 3, 5, 7, 9
7. Feladat. rassuk ki a hromjegy u ikerprm prokat! rjunk olyan eljrst, mely ki-
ratja az n-jegy u ikerprmeket! rjunk olyan eljrst, mely meghatrozza az n-jegy u
ikerprmek szmt/szmtani kzept.
8. Feladat. rjunk olyan eljrst a for ciklus segtsgvel, mely kiszmtja az els o n
termszetes szm ngyzetsszegt.
9. Feladat. rjunk eljrst a while lellsi felttel segtsgvel, mely egy egsz sz-
mot addig oszt kett ovel, ameddig csak egsz szm a hnyados, s kirja az elvgzett
osztsok szmt.
23
Felttelvizsglat
10. Feladat. Tanulmnyozzuk a Help-ben az if then else felttelvizsglatot.
11. Feladat. rjunk olyan eljrst, mely az x abszolt rtkt adja meg, ha x vala-
milyen szm ellenkez o estben kirja hogy ABS(x). (M ukdik-e az eljrsa komplex
szmokra?)
12. Feladat. rjunk eljrst a kvetkez o vals fggvny rtknek kiszmtsra: f(x) =
0, ha x 0; f(x) = 1 ha x > 0.
Rekurzi
Olyan eljrst is rhatunk mely nmagra hivatkozik. (Ezt nevezzk rekurzinak.)
7. Plda: Gpeljk be az albbi eljrst, mely az n. Fibonacci szmot rja ki:
> Fibonacci:=proc(n::nonnegint)
> if n<2 then
> n;
> else
> Fibonacci(n-1)+Fibonacci(n-2);
> fi;
> end;
A voltakppeni rekurzi a program tdik sora, ahol az n-edik Fibonacci szmot
visszavezettk az (n 1)-edik s az (n 2)-edik sszegre.
Nzzk meg, mennyi id o alatt szmol ki az eljrs egy Fibonacci szmot:
> time(Fibonacci(25));
A viszonylag hossz szmols oka, hogy az eljrs jra s jra el olr ol kezdi a sz-
molst, egy rtket tbbszr is kiszmol. Az eljrsban elhelyezett remember opci
utast arra, hogy az egyszer mr kiszmolt rtkeket a program raktrozza. Az eljrs
msodik sorba illesszk be az albbi utastst:
> option remember;
Prbljuk ki a futst a mdostott eljrssal. (Az id oadatot nyugodtan lekrdezhetjk
akr a 2000. Fibonacci szmra is.)
13. Feladat. rjunk rekurzv eljrst a binomilis egytthatk kiszmtsra.
Tovbbi feladatok
14. Feladat. rjunk eljrst, mely kt pozitv egszre kirja az euklidszi algoritmus
maradkait.
15. Feladat. rjunk eljrst kt pozitv egsz legnagyobb kzs osztjnak meghatro-
zsra. (tmutats: az euklidszi algoritmus utols nulltl klnbz o maradkrl
van sz.)
24
16. Feladat. rjunk eljrst, mely egy elemr ol eldnti, hogy hanyadik elem egy list-
ban.
17. Feladat. rjunk eljrst, mely egy szmlistbl kivlasztja (select) az n-nl na-
gyobb elemeket.
tmutats. Szksge lehet az albbi fggvnyre: large:=x-> is(x>n);
18. Feladat. rjon eljrst, mely kiszmtja egy polinom euklidszi normjt.
5. Szorgalmi feladat. A Fibonacci szmok kielgtik az albbi relcit: F(2n) =
2F(n 1)F(n) + F(n)
2
(n > 1) s F(2n + 1) = F(n + 1)
2
+ F(n)
2
(n > 1).
rjunk rekurzv eljrst a Fibonacci szmok kiszmtsra ezekkel a relcikkal.
6. Szorgalmi feladat. rjunk ciklus verzit az n. Fibonacci szm kiszmtsra. Ha-
sonltsuk ssze a rekurzv verzi s a ciklus verzi futsidejt!
7. Szorgalmi feladat. rjunk eljrst, mely egy polinom komplex gykeit brzolja a
komplex szmskon.
25
7. Mtrixok, mtrix aritmetika
>
restart;
>
with(linalg):
7.1. Mtrixok megadsa
Egy mtrix megadsra tbb lehet osg is knlkozik:
1. Plda: A tpus megadsa (sor, oszlop sorrendben), majd az elemek soronknti felso-
rolsa egyetlen listban. matrix
>
A:=matrix(2,2,[1,-2,0,3]);
A :=
_
1 2
0 3
_
Hivatkozs a mtrix egy elemre:
>
d:=A[1,2];
d := 2
Megadhatjuk a mtrixot a sorvektorok listjval:
>
A:=matrix([[1,-2],[0,3]]);
A :=
_
1 2
0 3
_
Vagy a sorvektorok listjt el obb kln megadva egy kett os listban:
>
ll:=[[1,-2],[0,3]];
ll := [[1, 2], [0, 3]]
Majd mtrixsz konvertlva:
>
convert(ll,matrix);
convert
_
1 2
0 3
_
Megadhatjuk, hogy az i-edik sor j-edik elemt mely fggvny szerint kpezzk:
>
matrix(3,3,(i,j)->i-j);
_
_
0 1 2
1 0 1
2 1 0
_
_
1. Feladat. Adjuk meg mindegyik tanult mdon a 4 4-tpus egysgmtrixot!
2. Feladat. Tanulmnyozzuk a diag parancs helpjt! Ennek alapjn is adjuk meg a diag
4 4 tpus egysgmtrixot, majd rjunk eljrst, mely bemeneti adata az n N
termszetes szm s kimenete az n n-tpus egysgmtrix.
3. Feladat. lltsuk el o R
2
orig krli szg u elforgatsnak mtrixt! A bep-
tett teszttel ellen orizzk, hogy ortogonlis mtrixot kaptunk-e. (Segtsg a margn.) Mi orthog
a geometriai jelentse annak a mtrixnak, amelyet gy kapunk, hogy az el oz o mtrix
msodik oszlopt 1-el megszorozzuk?
26
4. Feladat. Legyen n = 4. Adjuk meg a kvetkez o 4 4-tpus (a
ij
) mtrixot:
a
ij
=
_
1, ha j i + 1 (mod n)
0, egybknt
Segt a mod parancs. mod
8. Szorgalmi feladat. rjunk eljrst, mely az el oz o feladat denciival n n tpus
mtrixot generl. (Teht n az input adat.)
2. Plda: Legyen az Amtrix ugyanaz, mint a fejezet els o pldjban. (Egy restart
is jl jhet.) A elemeit soroljuk fel egyetlen kifejezssorozatban!
El oszr meghatrozzuk a sorvektorok listjt:
>
ll:=convert(A,listlist);
listlist
ll := [[1, 2], [0, 3]]
Megllaptjuk a sorvektorok szmt, majd generljuk a mtrixelemek kifejezsso-
rozatt.
>
n:=nops(ll);
n := 2
>
l:=seq(op(ll[i]),i=1..n);
l := 1, 2, 0, 3
llaptsuk meg a mtrix legnagyobb, illetve legnagyobb abszolt rtk u elemt:
>
max(l);
3
>
absl:=map(abs,[l]);
absl := [1, 2, 0, 3]
>
max(op(absl));
3
5. Feladat. rjunk eljrst, mely megadja egy tetsz oleges mtrix legnagyobb abszolt
rtk u elemt!
9. Szorgalmi feladat. Az A = (a
ij
) m n tpus mtrix normjt rtelmezzk a k-
vetkez okppen:
|A| =
m

i=1
n

j=1
[a
ij
[.
(Azaz az sszes mtrixelem abszolt rkeinek sszege. Ms mtrixnormk is hasz-
nlatosak, a norm helpjben megtalljuk a beptett mtrixnormk listjt.) rjunk
eljrst, mely tetsz oleges mtrixra kiszmtja az el obb rtelmezett mtrixnormt.
10. Szorgalmi feladat. rjunk olyan eljrst, mely megllaptja egy mtrix tpust!
27
11. Szorgalmi feladat. rjunk olyan eljrst, mely egy mtrixot a sorvektorok list-
jv, egy kett os listt pedig mtrixsz konvertl. Ha a bemenet nem mtrix s nem
kett os lista, akkor a bemenetet vltoztats nlkl adjuk vissza. Kett os lista esetn ellen-
orizzk, hogy a konverzi lehetsges-e, s ha nem, akkor a bemenetet szintn vltoztats
nlkl adjuk vissza.
12. Szorgalmi feladat. rjunk eljrst, mely egy listt minden lehetsges mdon mt-
rixsz konvertl. Ezen feladat megoldsrt jutalom(pont) jr.
7.2. Mtrix aritmetika
3. Plda: Az A mtrix ismt legyen az, ami az els o pldban, a B mtrix pedig a
kvetkez o:
>
B:=matrix([[-3,4],[2,1]]);
B :=
_
3 4
2 1
_
Prbljuk meg A-t s B-t sszeadni:
>
A+B;
A+B
Ehelyett az evalm(A+B); parancsot kell alkalmazni. evalm
>
evalm(A+B);
_
2 2
2 4
_
A skalrral val szorzs:
>
evalm(2*B);
_
6 8
4 2
_
Mtrixegyenlet megoldsa:
>
evalm(solve(3*X+A=B,X));
_

_
4
3
2
2
3
2
3
_

_
Mtrixok szorzsa:
>
evalm(A&*B);
_
7 2
6 3
_
Transzponlt:
28
>
transpose(A);
transpose
_
1 0
2 3
_
Rang:
>
rank(A);
rank
2
Inverz:
>
inverse(A);
inverse
_

_
1
2
3
0
1
3
_

_
Determinns:
det
>
det(A);
3
Oszlopvektor megadsa:
>
s:=vector(2,[1,2]);
vector
s := [1, 2]
Az A mtrixot kib ovtjk az s oszloppal:
>
augment(A,s);
augment
_
1 2 1
0 3 2
_
Tanulmnyozzuk a Help-ben az augment parancsot!
6. Feladat. Mennyi az albbi polinomban x
3
egytthatja?

3x 5 7 1
2x
2
5x 6 2
1 x 0 3
2 1 4 7

7. Feladat. Az nn-es D determinns i-edik sornak j-edik eleme 2


ij
. 2-nek hanya-
dik hatvnyval oszthat D. Oldjuk meg a feladatot -lel n = 8-ra. (Meg tudnnk-e
ltalnosan is oldani a feladatot?)
29
8. Feladat. Legyen A n n tpus ngyzetes mtrix. Az
L
A
: R
n
R
n
, X A X (mtrix szorzs)
lekpezs lineris transzformci. Legyen
A =
_
_
2 1 2
3 4 2
1 5 2
_
_
.
Hatrozzuk meg az
x 1
2
=
y + 2
4
=
z
3
egyenletrendszer u egyenes; illetve az
x + 2y 4z + 7 = 0
egyenlet u sk kpt az L
A
transzformcinl.
9. Feladat. Generljunk nem tlsgosan trivilis, 1 rang, V -vel jellt 4 4
tpus mtrixot. Prbljuk ki, hogy V
2
mindig a V skalrszorosa. (Be tudnnk ltni
ltalnosan is?) randmatrix
10. Feladat. Dngljk fldbe a -t! Szmtsuk ki a mr korbban felrt szg-
hz tartoz forgatsi mtrix nyolcadik hatvnyt -lel! Elgedettek vagyunk az ered-
mnnyel? Most csak a sajt fejnket hasznlva szmtsuk ki a forgatsi mtrix n-edik
hatvnyt! s mi a helyzet a tkrzsi mtrixszal?
13. Szorgalmi feladat. Knyrljnk meg a -n! rjunk olyan eljrst, mely a mt-
rixelemekben elvgzi az addcis kpletek alapjn lehetsges trigonometrikus sszevo-
nsokat. Segtsg a margn. Teszteljk eljrsunkat az el oz o feladaton, valamint kt combine
forgatsi mtrix szorzatn is. (Persze tetsz oleges n-re azrt ne vrjunk eredmnyt!)
14. Szorgalmi feladat. Vegynk fel kt linerisan fggetlen vektort R
2
-ben. Kpezzk
500 vletlenszer u lineris kombincijukat, ahol a skalrok a [1, 1] intervallumba es-
nek. (ld. a rand parancsot). Az gy kapott listt brzoljuk! (pointplot parancs).
30
7.3. A Gauss kikszbls
A Gauss kikszbls (Gauss eliminci) mdszere a lineris algebra legfontosabb
gyakorlati techniki kz tartozik. A f o llts az, hogy minden mtrix sorekvivalens
egy lpcs os mtrixszal. Aa Gauss-Jordan alak mtrixnak az olyan lpcs os mtrixot
nevezi, amelyben minden sor vezet o eleme 1, s a sorok vezet o elemei fltt zr elemek
llanak.
El oszr az elemi sortalaktsokat kzzel hajtjuk vgre, azaz ugyangy fogunk a
-lel dolgozni, mint a paprral ceruzval, csak az elemi sortalaktsok vgrehajtst
bzzuk a -re. Az elemi sortalaktsok parancsai:
Az M mtrix r
1
-edik sornak szorost hozzadjuk az r
2
-edik sorhoz (r1 ,= r2): addrow
addrow(M,r1,r2,lambda.
Az M mtrix r
1
-edik sort szorozzuk a nemzr skalrral: mulrow
mulrow(M,r1,lambda).
Az r
1
-edik s az r
2
-edik sor cserje: swaprow
swaprow(M,r1,r2).
1. Plda: Elemi sortalaktsokkal hozzuk lpcs os alakra az
_
_
1 1 2 1
3 4 1 1
4 3 3 2
_
_
mt-
rixot!
Elindtjuk a linalg csomagot s bevisszk a mtrixot:
>
with(linalg):
>
M:=matrix(3,4,[1,1,2,1,3,-4,1,1,4,-3,3,2]);
M :=
_
_
1 1 2 1
3 4 1 1
4 3 3 2
_
_
(A kiindulsnl sorcserre nincs szksg, mert az els o sor vezet o eleme az els o
elem.) Az els o sor 3-szorost hozzadjuk a msodik sorhoz:
>
M1:=addrow(M,1,2,-3);
M1 :=
_
_
1 1 2 1
0 7 5 2
4 3 3 2
_
_
Az els o sor 4-szerest hozzadjuk a harmadik sorhoz:
>
M2:=addrow(M1,1,3,-4);
M2 :=
_
_
1 1 2 1
0 7 5 2
0 7 5 2
_
_
A msodik sor 1-szerest hozzadjuk a harmadik sorhoz:
>
M3:=addrow(M2,2,3,-1);
31
M3 :=
_
_
1 1 2 1
0 7 5 2
0 0 0 0
_
_
Ez a kvnt lpcs os alak. Ezt az alakot egyetlen paranccsal is megkaphat-
juk:
>
gausselim(M);
A Gauss-Jordan alak elrshez mg szksg van kt lpsre. A msodik sort
szorozzuk 1/7-del:
>
M4:=mulrow(M3,2,-1/7);
M4 :=
_

_
1 1 2 1
0 1
5
7
2
7
0 0 0 0
_

_
Vgl a msodik sor 1-szerest hozzadjuk az els o sorhoz.
>
m5:=addrow(M4,2,1,-1);
m5 :=
_

_
1 0
9
7
5
7
0 1
5
7
2
7
0 0 0 0
_

_
Az Gauss-Jordan alak szintn elrhet o egyetlen paranccsal is:
>
gaussjord(M);
A kapott alakbl termszetesen azonnal leolvashatjuk, hogy az M mtrix rangja 2.
1. Feladat. Elemi sortalaktsokkal hozzuk lpcs os alakra az albbi M mtrixot,
majd keressk meg a Gauss-Jordan alakjt is. Eredmnynket ellen orizzk direkt
parancs segtsgvel is.
_
_
_
_
0 0 2 4 1
3 1 2 6 0
1 1 1 1 1
0 1 2 1 1
_
_
_
_
2. Feladat. Hatrozzuk meg az albbi Amtrix inverzt szimultn Gauss-elimincival!
Eredmnynket ellen orizzk direkt paranccsal s a szorzs elvgzsvel is! A =
_
_
2 3 4
2 1 1
1 1 2
_
_
tmutats: A mtrix bevitele utn el oszr generljunk az E 3 3-as egysgmtrixot,
az augment paranccsal hozzuk ltre az AE mtrixot, ezt elemi sortalaktsokkal
hozzuk EB alakra ha lehet, azaz, ha a mtrix rangja 3, ami az eljrs sorn kiderl.
Ekkor B = A
1
.
32
7.4. Lineris egyenletrendszerek megoldsa
A lineris egyenletrendszer bevitelre kt, egymssal egyenrtk u mdszer van: az
egyenleteket bevihetjk soronknt, illetve bevihetjk az alapmtrixot s a konstansokat
kln.
2. Plda: A lineris egyenletrendszer alapmtrixnak, b ovtett alapmtrixnak megha-
trozsa. Tekinsk a kvetkez o lineris egyenletrendszert:
x + y + 2z + w = 1
3x 4y + z + w = 2
4x 3y + 3z + 2w = 3
El oszr bevisszk az egyenleteket soronknt.
>
restart;
>
with(linalg):
>
eq1:=x+y+2*z+w=1:
>
eq2:=3*x-4*y+z+w=2:
>
eq3:=4*x-3*y+3*z+2*w=3:
Az egyenletek listja:
>
eqs:=[eq1,eq2,eq3]:
Az ismeretlenek listja:
>
vars:=[x,y,z,w]:
Az egyenletrendszer alapmtrixa: genmatrix
>
M1:=genmatrix(eqs,vars);
M1 :=
_
_
1 1 2 1
3 4 1 1
4 3 3 2
_
_
Az egyenletrendszer b ovtett alapmtrixa:
>
M2:=genmatrix(eqs,vars,flag);
M2 :=
_
_
1 1 2 1 1
3 4 1 1 2
4 3 3 2 3
_
_
A konstansok oszlopvektort trlve ismt az alapmtrixot kapjuk:
>
M2a:=delcols(M2,5..5);
M2a :=
_
_
1 1 2 1
3 4 1 1
4 3 3 2
_
_
A konstansok vektora:
>
M2b:=col(M2,5);
M2b := [1, 2, 3]
Az M
1
alapmtrixbl kpezett homogn lineris egyenletrendszer:
>
homsys:=geneqns(M1,[x1,x2,x3,x4]);
33
Az M
1
alapmtrixszal rendelkez o inhomogn lineris egyenletrendszer, ahol a
jobb oldali konstansok az M
2
b elemei:
>
nonhomsys:=geneqns(M1,[x1,x2,x3,x4],M2b);
Megoldhatjuk az egyenletrendszert a mr tanult solve parancs segtsgvel,
ekkor az argumentumban maguk az egyenletek vannak:
>
solve(homsys);
x2 =
5
9
x1 +
1
9
x4, x4 = x4, x1 = x1, x3 =
7
9
x1
5
9
x4
>
solve(nonhomsys);
x2 =
5
9
x1
1
3
+
1
9
x4, x4 = x4, x1 = x1, x3 =
7
9
x1 +
2
3

5
9
x4
Megoldhatjuk az egyenletrendszert a linsolve parancs segtsgvel, ekkor linsolve
az argumentumban az egyenletrendszer alapmtrixa, s a jobb oldali konstansok
vektora szerepel.
>
solution_of_homsys:=linsolve(M1,[0,0,0]);
solution_of _homsys := [_t
1
, _t
2
, 2 _t
1
5 _t
2
, 5 _t
1
+ 9 _t
2
]
Azaz
x
1
= t
1
x
2
= t
2
x
3
= 2t
1
5t
2
x
4
= 5t
1
+ 9t
2
>
solution_of_nonhomsys:=linsolve(M1,M2b);
solution_of _nonhomsys := [_t
1
, _t
2
, 2 _t
1
5 _t
2
1, 5 _t
1
+ 9 _t
2
+ 3]
(A megolds kiolvassa remlem nem jelent gondot, az el oz oekt ol x
3
s x
4
ese-
tben egy-egy konstanssal tr el.) A megoldsban szerepl o szabad paramtereket a
_t
1
-el s _t
2
-vel jelli, amire _t[1]-el s _t[2]-vel hivatkozhatunk. (Lsd ks obb!)
Az inhomogn rendszer megoldshalmaza lineris sokasg. Keressk meg irnyte-
rt (illetve annak bzist) s eltolvektort! (Mskppen fogalmazva: keressk meg a
megolds szerkezett!) Az eltolvektort gy kapjuk meg, hogy a szabad paramterek
mindegyiknek zr rtket adunk.
>
tvec:=subs(_t[1]=0,_t[2]=0, op(solution_of_nonhomsys));
tvec := [0, 0, 1, 3]
A tovbbiakban bzist keresnk az irnytrben. Ehhez a szabad paramterek egyi-
knek 1, a tbbinek pedig 0 rtket adunk, majd a kapott vektorbl az eltolvektort
kivonjuk.
>
bvec1:=evalm(subs(_t[1]=1,_t[2]=0,
>
op(solution_of_nonhomsys))-tvec);
bvec1 := [1, 0, 2, 5]
>
bvec2:=evalm(subs(_t[1]=0,_t[2]=1,
>
op(solution_of_nonhomsys))-tvec);
34
bvec2 := [0, 1, 5, 9]
3. Feladat. Tekintsk a kvetkez o lineris egyenletrendszert:
x y + 2z 2w = 1
2x + y + 3w = 4
2x + 3y + 2z = 6
1. Vigyk be az egyenleteket, rassuk ki az alapmtrixt (genmatrix, b ovtett
alapmtrixt, a jobb oldali konstansokat.
2. Hasonltsuk ssze az alapmtrix s a kib ovtett alapmtrix rangjt! Mit tudunk
ez alapjn lltani a megoldhatsgrl s a megolds szerkezetr ol? Hny sza-
bad paramtert vrunk a megoldsban?
3. A linsolve parancs segtsgvel oldjuk meg az egyenletrendszert. Adjuk meg
a megolds szerkezett!
4. Feladat. Az x, y, z, w ismeretlenekre felrt lineris egyenletrendszer kib ovtett alap-
mtrixa:
_
_
_
_
0 0 2 4 1
3 1 2 6 0
1 1 1 1 1
0 1 2 1 1
_
_
_
_
1. Vigyk be a mtrixot, rjuk fel az egyenletrendszert (geneqns)!
2. Vizsgljuk a rendszer megoldhatsgt a Kronecker Capelli ttellel! Hny sza-
bad paramtert vrunk?
3. Oldjuk meg az egyenletrendszert!
4. Mi lenne az ugyanilyen alapmtrix, homogn lineris egyenletrendszer megol-
dsa? (El oszr a nlkl vlaszoljunk a krdsre.)
5. Feladat. Legyen: A =
_
_
_
_
1 0 1 0
0 1 0 1
1 0 0 1
0 1 1 0
_
_
_
_
B =
_
_
_
_
1 1 1 1
1 2 3 4
1 3 5 7
2 3 4 5
_
_
_
_
Hatroz-
zuk meg az sszes olyan X, Y 44-tpus mtrixot, amelyre AX = 0, illetve Y B = 0
teljesl. A szorzs elvgzsvel ellen orizzk, hogy az ltalunk megadott mtrixokra az
llts teljesl.
7.5. Grakus megolds
Az albbiakban a kt illetve hrom vltozs lineris egyenletrendszerek megoldsnak
vizualizcijra ltunk nhny pldt.
>
restart;
35
>
with(linalg):with(plots):with(plottools):
3. Plda: Oldjuk meg grakusan az eq1, eq2 egyenletekb ol ll lineris egyenlet-
rendszert:
>
eq1:=3*x-4*y=3:
>
eq2:=x+y=1:
A megolds:
>
solve({eq1,eq2});
y = 0, x = 1
A grakus megolds (szemlltets) lnyege, hogy az egyenletekb ol y-t kifejez-
zk:
>
plot({solve(eq1,y),solve(eq2,y)},x=-5..5,y=-5..5);
6. Feladat. B ovtsk az egyenletrendszert a kt egyenlet lineris kombinciival (leg-
albb mg kett ovel), s szemlltessk a rendszert grakusan! V.. sugrsor egyenlete!
4. Plda: Hrom vltozra az eljrs hasonlan egyszer u:
>
eq3 := 2*x + 3*y + z = 2:eq4 := 2*x + 4*y + 7*z =6:
>
eq5 := 3*x + 10*y + 5*z = 7:
>
solve({eq3,eq4,eq5});
z =
36
59
, y =
20
59
, x =
11
59

>
plot3d({solve(eq3,z), solve(eq4,z),solve(eq5,z)},
>
x=-5..5, y=-5..5, view=-5..5, axes=boxed);
A sznezst kicsit megvltoztatjuk:
>
graf1:=plot3d(solve(eq3,z),
>
x=-5..5, y=-5..5, view=-5..5, axes=boxed, color=red):
>
graf2:=plot3d(solve(eq4,z),
>
x=-5..5, y=-5..5, view=-5..5, axes=boxed, color=green):
>
graf3:=plot3d(solve(eq5,z),
>
x=-5..5, y=-5..5, view=-5..5, axes=boxed, color=yellow):
>
display(graf1,graf2,graf3);
7. Feladat. B ovtsk a rendszert az egyenletek egy lineris kombincijval, vgezzk
el a szemlltetst (valamely j sznt hasznlva.)
8. Feladat. Oldjuk meg s szemlltessk az albbi lineris egynletrendszereket:
>
eq1 := x - 3*z = -3;
>
eq2 := 2*x + 2*y - z = -2;
>
eq3 := x + 2*y + 2*z = 1;
>
eq1 := x - 3*z = -3;
>
eq2 := 2*x - 5*y - z = -2;
>
eq3 := x + 2*y - 5*z = 1;
36
8. Sajtrtk, sajtvektor
>
restart:with(plots):with(linalg):
1. Plda: Deniljuk az A mtrixot, s az azonos tpus egysgmtrixot.
>
A := matrix(3,3,[[-1,0,5],[0,4,0],[5,0,-1]]);
>
I3 := evalm(array(identity,1..3,1..3));
Deniljuk a karakterisztikus polinomot:
>
chpol := det(A - x*I3);
Megoldjuk a karakterisztikus egyenletet:
>
AEvals := solve(chpol = 0,x);
>
AEvals[1];AEvals[2];AEvals[3];
Megkeressk az els o sajtrtkhez tartoz invarins alteret (sajtalteret).
>
AEspace1 := linsolve(A-AEvals[1]*I3,[0,0,0]);
Bzis az invarins altrben:
>
AEbasis1 := [subs(_t[1]=1, op(AEspace1))];
A msodik sajtrtkhez tartoz invarins altr:
>
AEspace2 := linsolve(A-AEvals[2]*I3,[0,0,0]);
Bzis az invarins altrben (most 2 szabad paramter van, a geometriai dimenzi 2):
>
AEbasis2 := [subs(_t[1]=1,_t[2]=0, op(AEspace2)),
>
subs(_t[1]=0,_t[2]=1, op(AEspace2))];
Ellen orizzk, hogy az el obbi bzisvektorok valban sajtvektorok:
>
evalm(A &* AEbasis1[1]);
>
evalm(A &* AEbasis2[1]);
>
evalm(A &* AEbasis2[2]);
Megjegyezzk, hogy az A mtrix diagonalizlhat (a vals szmok teste fltt), mert
3 vals sajtrtke van, s mindegyik sajtrtk geometriai s algebrai multiplicitsa
megegyezik.
Keressk meg azt az S mtrixot, melyre S
(1)
AS diagonlis:
>
S := augment(AEbasis1[1],AEbasis2[1],AEbasis2[2]);
Valban:
>
B:=evalm(inverse(S)&*A&*S);
1. Feladat. Mit tudunk az albbi mtrixok diagonalizlhatsgrl lltani?
>
C := matrix(3,3,[[0,1,1],[0,2,0],[-2,1,3]]);
>
E := matrix(3,3,[[4,-3,1],[4,-1,0],[1,7,-4]]);
37
2. Plda: AMaple sajt beptett paranccsal rendelkezik a sajtrtkek s sajtvektorok
kiszmtsra:
>
eigenvectors(A);
Az el obbi eredmny a kvetkez ot jelenti: az A els o sajtrtke -6, egyszeres algeb-
rai multiplicitssal, a hozz tartoz sajtaltrben bzis a {[-1,0,1]} vektorrendszer. Az
A msodik sajtrtke 4, ktszeres algebrai multiplicitssal, s a kirt kt vektor alkot
bzist a hozz tartoz sajtaltrben.
Helyezzk el az el obbi hrmasokat egyetlen sorozatban:
>
evA := [eigenvectors(A)];
A sajtrtkek:
>
evA[1][1]; evA[2][1];
A sajtvektorok:
>
evA[1][3][1]; evA[1][3][2]; evA[2][3][1];
Ha itt hibt tallt, akkor ez azrt van mert a Maple ms sorrendben listzta a saj-
trtkeket, mint amikor a munkalapot rtam. Ez esetben szerkessze t a parancssort.
2. Feladat. Szmtsuk ki az A
25
X vektort, ahol X = [2, 3, 1]
t
. (Az 1. plda jell-
seivel.)
Megolds: A
25
= S B
25
S
(1)
(mirt?), ahol B
25
knnyen szmthat, mert B
diagonlis mtrix.
>
X := vector(3,[2,3,-1]);
>
evalm(S&*B^(25)&*inverse(S)&*X);
A Maple persze direkt ndon is kiszmtja az eredmnyt:.
>
evalm(A^25 &* X);
3. Plda: Generljunk 3 3 tpus diagonalizlhat mtrixot!
>
restart:with(linalg):
>
randomize():
El oszr generlunk egy vletlen 3 3 tpus diagonlis mtrixot:
>
DIAG:=
>
matrix(3,3,[[rand(-3..3)(),0,0],[0,rand(-3..3)(),0],
>
[0,0,rand(-3..3)()]]);
Most generlunk egy 3 3 tpus nem elfajul mtrixot:
>
S1 := randvector(3,entries=rand(-3..3));
>
S2 := randvector(3,entries=rand(-3..3));
>
S3 := randvector(3,entries=rand(-3..3));
>
S := augment(S1,S2,S3);
>
rank(S);
Ha S rangja nem 3, akkor azt jra kell generlni.
38
>
A := evalm(S&* DIAG &* inverse(S));
Ellen orzs:
>
eigenvectors(A);
3. Feladat. Generljunk olyan egszekb ol ll diagonalizlhat mtrixot, melynek sa-
jtrtkei ltalunk vlasztott szmok!
4. Feladat. rjunk eljrst, mely el ollt egy egszekb ol ll nn tpus nem elfajul
vletlen mtrixot!
39