• Nem Talált Eredményt

A függvények növekedése

In document Bevezetés a számításelméletbe (Pldal 89-103)

3.7.1. Példa

Vizsgáljuk meg, hogy a következő függvényekre teljesül-e, hogy f x O(x).

a ) f x = 10 ; b ) f x = 3 xC7 ; c ) f x = x2CxC1 ; d ) f x = 5 ln x ; e ) f x = floor x ; f ) f x = ceil x

2 ( floor x : az x-nél nem nagyobb egészek legnagyobbika; ceil(x): az x-nél nem kisebb egészek legkisebbike.)

Ábrázoljuk a floor és a ceil függvényeket!

restart:

pontok:=seq([i,i],i=-4..3):

pont:=plot([pontok],color=blue,style=point,symbol=circle):

gorbe:=plot(floor(x),x=-4..4,color=blue,thickness=2,discont=

>

>

>

>

>

>

>

>

>

>

>

>

true):

plots[display]({pont,gorbe},title=`x-egész része,floor(x)`);

x

K4 K3 K2 K1 0 1 2 3 4

K4 K3 K2 K1 1 2 3 4

x-egész része,floor(x)

pontok:=seq([i,i],i=-3..4):

pont:=plot([pontok],color=blue,style=point,symbol=circle):

gorbe:=plot(ceil(x),x=-4..4,color=blue,thickness=2,discont=

true):

plots[display]({pont,gorbe},title=`ceil(x)`);

>

>

x

K4 K3 K2 K1 0 1 2 3 4

K4 K3 K2 K1 1 2 3 4 ceil(x)

Megoldás

a ) Igen, mert 10 % x, minden 10!x esetén.

b ) Igen, mert 3 xC7 % 4 x = 4 x minden 7!x esetén.

c ) Nem, ugyanis nem létezik olyan C állandó, amely mellett x2CxC1 %C x teljesülne minden elég nagy x esetén.

d ) Igen. Ez következik abból, hogy ln x !x teljesül minden pozitív x értékre.

e ) Igen, Ez következik abból, hogy floor x %x, s így minden 0!x esetén floor x % x. f ) Igen. Ez következik abból a tényből, hogy ceil x

2 % x

2 C1. Tehát ceil x

2 % x

2 C1 <= x minden 2!x esetén.

3.7.2. Példa

Legyen f x = floor x ceil x . Igazoljuk, hogy f x O x2 . Megoldás

Ábrázoljuk először - a tájékozódás kedvéért- az f függvényt és az x2 függvényt azonos koordinátarendszerben:

plot([x^2,floor(x)*ceil(x)],x=-5..5,discont=true,color=[blue,

>

>

red],thickness=2);

x

K4 K2 0 2 4

5 10 15 20 25

Az ábra alapján igenlő válasz látszik valószínűnek. Valóban mivel ceil x %xC1 és

floor x %x teljesül minden x-re, ezért ha 0!x, akkor floor x ceil x %x xC1 <=2 x2, ha 1

%x 3.7.3. Feladat

Döntse el, hogy a következő függvények közül melyik O x2 : a ) f x = 17 xC11 ; b ) f x = x2C1000 ;

c ) f x = x ln x ; d ) f x = x4 2 ; e ) f x = 2x ; f ) f x = ceil x 2 ;

3.7.4. Példa

Mutassuk meg a definíciót fölhasználva, hogy ha x4C9 x3C4 xC7 O x4 . Megoldás

Az alacsonyabb fokú tagokra felső korlátot kell adnunk:

Ha 9!x, akkor x4C9 x3C4 xC7%x4Cx4Cx4Cx4 = 4 x4. Ezért x4C9 x3C4 xC7

>

>

>

>

(8.1.1) (8.1.1)

>

>

O x4 .C= 4 és k= 9 mellett ui. x4C9 x3C4 xC7%C x4 Szemléltetve:

plot([x^4+9*x^3+4*x+7,4*x^4],x=0..4.5,color=[blue,red]);

x

0 1 2 3 4

0 200 400 600 800 1000 1200 1400 1600

Az ábra alapján úgy látszik, hogy finomíthatjuk a becslést, vagyis csökkenthetjük pl. a k értékét.

Vizsgáljuk a g x = 4 x4K x4C9 x3C4 xC7 = 3 x4K9 x3K4 xK7 függvényt, tehát a két függvény különbségét!

g:=x-> 3*x^4-9*x^3-4*x-7;

g:=x/3 x4K9 x3K4 xK7

Ábrázoljuk a függvényt és deriváltját azonos koordinátarendszerben:

plot([g(x),D(g)(x)],x=0..5,color=[blue,red],thickness=[3,2]);

(8.1.2) (8.1.2)

>

>

>

>

x

1 2 3 4 5

0 100 200 300 400 500 600 700 800

Az ábra alapján az sejthető, hogy pl. k= 3.5 is megfelel. A különbségfüggvény szélsőértékét is meghatározhatjuk. A derivált komplex gyökei:

gyok:=[solve(D(g)(x),x)];

gyok:= 1

12 1017C72 97 1/3C 27

4 1017C72 97 1/3 C 3

4,K1

24 1017

C72 97 1/3K 27

8 1017C72 97 1/3 C 3

4 C 1

2 I 3 1

12 1017

C72 97 1/3K 27

4 1017C72 97 1/3

,K1

24 1017C72 97 1/3

K 27

8 1017C72 97 1/3 C 3

4 K 1

2 I 3 1

12 1017C72 97 1/3

K 27

4 1017C72 97 1/3 Válasszuk ki a valós gyököket:

valos:=select(type,gyok,realcons);

(8.1.5) (8.1.5) (8.1.3) (8.1.3)

(8.1.4) (8.1.4)

>

>

>

>

>

>

valos:= 1

12 1017C72 97 1/3C 27

4 1017C72 97 1/3 C 3

4

Adjuk meg a gyök közelítő értékét:

zh:=evalf(valos);

zh:= 2.312341166 Rajzoljuk föl a deriváltat pozitív x-ekre:

plot(D(g)(x),x=0..5);

x

1 2 3 4 5

0 100 200 300 400 500 600 700 800

A különbség-függvénynek a zh= 2.312341166 helyen minimuma van.

Keresük meg a különbsé-függvény zérushelyét:

zhg:=fsolve(g(x),x=3..5);

zhg:= 3.201233421 Tehát a k = 3.201233421 is megfelel.

3.7.5. Feladat

A definíciót felhasználva mutassa meg, hogy 2xC17 O 3x .

(8.1.7)

Bontsuk föl a függvényt polinom és valódi tört összegére:

x2C1 Az átalakítást polinomosztással is elvégezhettük volna

tort:=(x^2+1)/(x+1);

Keressük meg azt a legkisebb egészt, amelyre f x O xn az alábbi f függvényekre:

a ) f x = 2 x3Cx2 ln x ; b ) f x = 3 x3Cln x 4; c ) f x = x4Cx2C1

x3C1 ; d ) f x = x4C5 ln x x4C1 .

Megoldás

Mivel ln x !x minden pozitív x értékre

a ) 2 x3Cx2 ln x !2 x3Cx3 = 3 x3, s így f x O x3 , tehát f x O x3 , de ha n!3, akkor már nem teljesül f-re O xn , vagyis n= 3.

b) Az előzőhöz hasonló gondolatmenettel n= 3.

c ) Végezzük el a polinomosztást:

tort:=(x^4+x^2+1)/(x^3+1);

tort:= x4Cx2C1 x3C1

hanyados:=quo(numer(tort),denom(tort),x,'r');

hanyados:=x

>

>

>

>

(8.1.11) (8.1.11) tort=hanyados+r/denom(tort);

x4Cx2C1

x3C1 =xC x2KxC1 x3C1

A második tag, a x2C1Kx

x3C1 kifejezés valódi tört, tehát elég nagy x értékre kisebb x-nél, sőt bármely rögzített pozitív számnál. Szemléltesük is ezt a tényt:

plot([x,(x^2+1-x)/(x^3+1)],x=0..4,color=[blue,red]);

x

0 1 2 3 4

0 1 2 3 4

Tehát f x O x

d ) Bontsuk szét a törtet:

x4C5 ln x

x4C1 = x4C1Cln x K1

x4C1 = 1C ln x K1

x4C1 , ahol ln x K1

x4C1 ! xK1

x4C1 < x4C1

x4C1 = 1, ha 1!x.

Tehát f x O 1 . Másképpen n= 0.

3.7.9. Feladat

Keressük meg azt a legkisebb egészt, amelyre f x O xn az alábbi f függvényekre:

a ) f x = 2 x2Cx3 ln x ; b ) f x = 3 x5Cln x 4; c ) f x = x4Cx2C1

x4C1 ; d ) f x = x3C5 ln x x4C1 .

3.7.10. Példa

Mutassuk meg, hogy x2C4 xC17 O x3 , de x3 nem O x2C4 xC17 . Megoldás

Egyrészt x2C4 xC17%x2Cx2Cx2 = 3 x2%3 x3 minden 17!x esetén,tehát x2C4 xC17 O x3 . Másrészt ha x3 O x2C4 xC17 volna, akkor

x3%C x2C4 xC17 <= 3 C x2 teljesülne minden elég nagy x értékre. Ez azt jelentené, hogy x%3 C teljesülne, ami nyílván lehetetlen állandó C-re és elég nagy x-re.

3.7.11. Feladat

Mutassa meg, hogy 3 x4C1 O x5

10 , de x5

10 nem O 3 x4C1 . 3.7.12. Példa

Mutassuk meg, hogy 3 x4C1 O x4

2 és x4

2 O 3 x4C1 . Megoldás

Az első részhez: 3 x4C1%4 x4 = 8 x4

2 ,minden 1!x esetén. A második részhez:

x4

2 %3 x4 <=1(3 x4C1) minden x -re.

3.7.13. Feladat

Mutassa meg, hogy x ln x O x2 , de x2 nem O x ln x .

3.7.14. Példa

Adjuk meg a lehető legjobb nagy O becslést a következő függvényekre:

a ) n2C8 nC1 ; b ) n ln n Cn2 n3C2 ; c ) n!C2n n3Cln n2C1 . Megoldás

a ) A meghatározó tag az n2 n-nel való szorzata, tehát a függvény O n3 .

Részletezve n2C8 nC1 =n3Cn2C8 n + 8%4 n3 , ha 1%n. Tehát nem túl szigorú becslést végezve k= 1 és C= 4 választásigazoltuk a függvényről, hogy O x3 .

b ) Mivel n ln n !n, az első tényező meghatározó tagja az n2, míg a második tényezőé az n3. Így a függvény O n5 . Ez a definíció alapján - mint tudjuk - azt jelenti, hogy

n ln n Cn2 n3C2 !C n5 (0!x) Ez pedig 0!x-ra egyenértékű a

>

>

>

>

(8.1.12) (8.1.12) n ln n Cn2 n3C2

n5 !C

A tört végtelenben vett határértéke:

Limit((n*ln(n)+n^2)*(n^3+2)/(n^5),n=infinity)=limit((n*ln(n)+

n^2)*(n^3+2)/(n^5),n=infinity);

nlim/N

n ln n Cn2 n3C2

n5 = 1

Ez pedig azt jelenti, hogy minden 1!C megfelel. Legyen pl. C= 2.

plot([2,(n*ln(n)+n^2)*(n^3+2)/(n^5)],n=1..10,color=[blue, red],thickness=[2,3]);

n

1 2 3 4 5 6 7 8 9 10

1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0

Láthatóan a hányados "elég hamar " kisebb lesz mint 2.

A példából látható, hogy ha limx

/N

f x

g x =C, ahol C valós szám, akkor f x O g x c ) Az első tényezőt illetően megjegyezzük, hogy

2n!n!,

ha 4%n, ezért az első tényező meghatározó tagja az n!. A második tényező meghatározó tagja az n3. Ezért a függvény O n! n3

(8.1.13)30

(8.1.13)

>

>

>

>

3.7.15. Példa

Adjunk nagy O becslést az alábbi függvények mindegyikére.Az f függvényt O g becslő függvény legyen a lehető legegyszerűbb és a legkisebb rendű!

a ) n ln n2C1 Cn2 ln n ;

b ) n ln n C1 2C ln n C1 n2C1 ; c ) n2nCnn2.

Megoldás:

a ) Mindenekelőtt megjegyezzük, hogy az ln n2C1 és az ln n azonos nagy O osztályba tartoznak, mi mivel ln n2 = 2 ln n (0!n). Ezért itt a második tag gyorsabban növekszik és így

a legegyszerűbb pontos becslés: O n2 ln n Az alábbi ábra alapján úgy tűnik, hogy...

plot([n*ln(n^2+1)+n^2*ln(n),1.5*n^2*ln(n)],n=1..6,color=

[blue,red],thickness=[3,2],title=`f(x)=kék, 1.5*g(x)=piros`);

n

1 2 3 4 5 6

0 10 20 30 40 50 60 70 80 90

f(x)=kék, 1.5*g(x)=piros

... C= 1.5 és k = 4.5 megfelel.

Pontosabban, vegyük az 1.5 g x Kf x különbségfüggvényt. Ennek zérushelye.

gyok:=solve(n*ln(n^2+1)+n^2*ln(n)=1.5*n^2*ln(n));

>

>

>

>

(8.1.15) (8.1.15) (8.1.13) (8.1.13)

(8.1.14) (8.1.14)

>

>

gyok:=K0.08983733895K0.6660442539 I,K0.08983733895C0.6660442539 I, 4.082826035

f:=n->1.5*n^2*ln(n)-n*ln(n^2+1)-n^2*ln(n);

f:=n/1.5 n2 ln n Kn ln n2C1 Kn2 ln n A különbségfüggvény lehetséges szélsőértékhelye:

solve(D(f)(n));

2.604287102

plot([f(n),D(f)(n)],n=0..10,color=[blue,red],thickness=[2,2], title=`Az f-1.5*g és deriváltja`);

n

2 4 6 8 10

0 10 20 30 40 50 60

Az f-1.5*g és deriváltja

A függvény és deriváltja viselkedése alapján a becslés jó volt, sőt C= 1.5 mellett k= 4.1 is jó.

b ) Az első tag n2 ln n 2-tel egy osztályba tartozik nagy O, míg a második tag némileg kisebb osztályba, vagyis az O n2 ln n osztályba. (Minden esetben elhagyhatjuk az alacsonyabb rendű tagokat, mert ezeket "felülbírálják" a megtartott tagok- éppen ez a nagy O becslés lényege ).

Ennélfogva a válasz O n2 ln n 2

c ) Itt az egyetlen kérdés, hogy a 2n vagy az n2 kifejezés nő-e gyorsabban. Természetesen az első,

így a legjobb nagy O becslés: O n2n . 3.7.16. Feladat

Adjon nagy O becslést az alábbi függvények mindegyikére.Az f függvényt O g becslő függvény legyen a lehető legegyszerűbb és a legkisebb rendű!

a ) n3Cn2 ln n ln n C1 C 17 ln n C19 n3C2 ; b ) 2nCn2 n3C3n ;

c ) nnCn 2nC5n n!C5n .

Algoritmusok

3.7.17. Feladat

Írjon rekurzív eljárást az alábbi rekurzív módon megadott sorozatokra, majd oldja meg a rekurziókat, azaz adjon explicit képletet a sorozat általános tagjára:

a ) an= an

K1C6 an

K2, ha 2%n, a0= 3, a1= 6;, b ) an= 7 an

K1K10 an

K2, ha 2%n, a0= 2, a1= 1.

3.7.18. Feladat

Írjon rekurzív eljárást a rekurzív módon megadott Lucas-sorozatra, majd oldja meg a rekurziót, azaz adjon explicit képletet a sorozat általános tagjára:

A Lucas-sorozatot a következő rekurzió definiálja:

a0= 2, a1= 1, an= an

K1Can

K2, ha 2%n 3.7. 19. Feladat

Írjon rekurzív és iteratív eljárást az alábbi rekurzív módon megadott sorozat n-edik elemének meghatározására:

a0= 1, a1= 3, a2= 3, an= an

K1$an

K2

2 $an3K3 , ha 3%n

Ellenőrző kérdések

1. Értelmeze a nagy O-szimbólumot!

2. Mit értünk a primitív művelet fogalma alatt?

3. Definiálja az algoritmus fogalmát.

4. Mi a pszeudokód?

5. Milyen módon írhatjuk le az algoritmusokat?

6. Milyen feladatot oldanak meg a keresési algoritmusok?

7. Mit értünk egy algoritmus idő-komplexitása alatt?

8. Definiálja a rekurzív algoritmus fogalmát!

9. Írja le az iteratív algoritmus működését!

10. Mit mondhatunk a lineáris keresés idő-komplexitásáról?

11. Mit mondhatunk a bináris keresés idő-komplexitásáról?

1.

1.

>

>

2.

2.

>

>

4. Kombinatorika

A kombinatorika a matematika azon területe, amely egy véges halmaz elemeinek valamilyen szabály alapján történő csoportosításával, kiválasztásával, sorrendbe rakásával foglalkozik. Pontosabban, a kombinatorika problémái két fő kérdéskör köré csoportosíthatók:

az elemek különböző sorrendben történő elhelyezése;

az elemek kiválasztása.

Az első kérdés vezet a permutációk, a második a kombinációk, a kettő egyik pedig a variációk

fogalmához. Ha az adott elemek között egynlők is vannak, akkor ismétléses permutációkról, ha pedig a kiválasztásnál megengedjük egy elem ismételt szerepeltetését, akkor ismétléses kombinációkról, illetve ismétléses variációkról beszélünk.

Ebben a fejezetben ezeken kívül megfogalmazzuk a binomiális tételt, s partíciós problémákkal is foglalkozunk. Bevezetjük a generátorfüggvény fogalmát, s megmutatjuk, hogyan lehet azt partíciós problémák megoldásánál alkalmazni.

In document Bevezetés a számításelméletbe (Pldal 89-103)