Az elmélet folytatása

Először: hasznos, nehéz :). Azután: hasznos, nem nehéz.

Programozási stílusok/paradigmák

Procedurális, szabályalapú (mintaillesztő), funkcionális, obejktumorientált, listakezelő stb. stb. Mind megvan, a funkcionális és a szabályalapú a (megtanulásra méltó) újdonság. Mathematica programozás :)

Funkcionális programozás (+listakezelés)

Bevezetés

Hatékony, áttekinthető. Fv az elsődleges, fvek kiértékelése zajlik. Eltűnnek a ciklusok, és ami azokhoz kell (gyűjtőrekesz, index).

array=RandomReal[{-1,1},100000];
(sum=0;Do[sum+=array[[i]],{i,1,Length[array]}];sum)//Timing

FoldList[ff,x0,{a,b}]//TableForm

Fold[Plus,0,array]//Timing

Timing[Total[array]]

Procedurálisnál: végtelen sok segédváltozó, C-ben a compiler optimalizálja, Mmaban nem, ezért se használjuk. A funkcionális program viszont olyan, mint az optimalizált.

Alapelemek

Map,Apply,Nest,Fold

lista={1,{1},{1,2}};

zz/@{1,{1},{1,2}}

zz@@{1,{1},{1,2}}

zz@@@{1,{1},{1,2}}

Apply[zz,{1,{1},{1,2}},{1}](*pontosan az első szinten, rövid alakja: @@@ *)

NestList[zz,{1,{1},{1,2}},3]

NestList[zz,{1,{1},{1,2}},3]//TableForm

Nest[zz,{1,{1},{1,2}},3]

FoldList[zz,0,{1,{1},{1,2}}]//TableForm

Fold[zz,0,{1,{1},{1,2}}]//TableForm

DownValues, UpValues

ClearAll[f];
f[0]:=1;f[1]:=1;f[n_Integer]:=n f[n-1];

f[12]

DownValues[f]

Milyen sorrendben fogja keresni az illesztendő mintázatokat? Átdefiniálható, pl.

DownValues[f]=DownValues[f][[{2,1,3}]]

Beépítetteket szeretnénk újradefiniálni. Így lehet, de nem ajánlott:

Unprotect[Plus,Times];
Plus[quaternion[a1_,b1_,c1_,d1_],quaternion[a2_,b2_,c2_,d2_]]:=quaternion[a1+a2,b1+b2,c1+c2,d1+d2];
Times...
Protect[Plus,Times]

Tartozzék a def. inkább a quaternion-hoz, mint a Plus-hoz:

Plus[quaternion[a1_,b1_,c1_,d1_],quaternion[a2_,b2_,c2_,d2_]]^:=quaternion[a1+a2,b1+b2,c1+c2,d1+d2];

Alternatív, kifejezi, h a quaternion-hoz tartozó UpValue-ról van szó:

quaternion /:Plus[Complex[r_,im_],quaternion[a1_,b1_,c1_,d1_]]:=...

Előnyök: nem bántjuk a beépítetteket, és nem vizsgáltatjuk végig mindig a beépített (gyakori) függvényeket.

Attribútumok

Flat

Listable

HoldFirst,HoldRest,HoldAll

Orderless

OneIdentity

Attributes[Plus]

Attributes/@{Set,SetDelayed}

Attributes[f]={Listable,Protected}

Megjegyzések a funkcionális nyelvekről

Kifejezések kiértékelése (nem utasítások mellékhatással: C, eredményt magától nem ad, tárolni kell), és ez a cél is, nem a mellékhatás

Do[Print[(n^2)],{n,4}]

t={};Do[If[PrimeQ[(2^n)-1],AppendTo[t,n]],{n,100}];t

Tisztán funkcionális nyelv: mellékhatás nélküli (felépítése miatt)

Egyszeri hozzárendelés (single-assignment) hatáskörön (scope) belül. Pl. Haskell, Erlang. Mathematica: általában nem ilyen (pedig átláthatóbb), kivétel:

With[{x=y},Hold[x]]
Hold[y]

With[{y=Sin[1.0]},Sum[(y^i),{i,0,10}]](*többször kell*)

With[{x=y},Hold[x]](*bemászunk a Holdba*)
Hold[y]

Timing[Do[Module[{x=5},Log[x];],{(10^5)}]]

Timing[Do[With[{x=5},Log[x];],{(10^5)}]]

Gyorsabb, mint a Module.

Tiszta függévnyek (λ-kalkulus)

Szigorú (azonnali kiértékelés) — nem szigorú: lazy evaluation (amikor kell). Mathematica : inkább szigorú

Currying, closure

Listák listájára akarunk alkalmazni egy fv-t, úgy, h a listák maguk argumentumok legyenek.

Map[ff,{{1,2,3},{4,5,6,7,8},{9,10,11,12}}]

Map[Apply[ff,#]&,{{1,2,3},{4,5,6,7,8},{9,10,11,12}}]

Map[Apply[Plus,#]&,{{1,2,3},{4,5,6,7,8},{9,10,11,12}}]

Plus@@#&/@{{1,2,3},{4,5,6,7,8},{9,10,11,12}}

Egyszerűbben is megy:

Plus@@@{{1,2,3},{4,5,6,7,8},{9,10,11,12}}

Total/@{{1,2,3},{4,5,6,7,8},{9,10,11,12}}

Bonyolultabb feladatok:

Plus[1,##]&@@@{{1,2,3},{4,5,6,7,8},{9,10,11,12}}

Plus[#2,##]&@@@{{1,2,3},{4,5,6,7,8},{9,10,11,12}}

TotCost[qty_,price_]:=qty price;

Map[Apply[TotCost,Rest[#]]&,{order[vevo1,10,4.98],order[vevo2,1,17.99],order[vevo1,12,0.25]}]

TotCost@@@(Rest/@{order[vevo1,10,4.98],order[vevo2,1,17.99],order[vevo1,12,0.25]})

DiscTotCost[qty_,price_,disc_]:=qty price(1-(disc/100.));

DiscTotCost[#3,#4,#2]&@@@{order[vevo1,5,10,4.98],order[vevo2,0,1,17.99],order[vevo1,15,12,0.25]}

Listára alkalmazható függvény készítése

SetAttributes[fff,Listable];
fff[x_]:=x+1;
fff[{1,2,3,4}]

Érdemes használni:

First[Timing[Log/@RandomReal[{1,1000},1000000]]]

Timing[Log[RandomReal[{1,1000},1000000]];]

Több függvény listára

{#,((#)^2),((#)^3)}&/@{1,7,3,8,5,9,6,4,2}//TableForm

Thread[{#,((#)^2),((#)^3)}&[{1,7,3,8,5,9,6,4,2}]]//TableForm

Tóth, J.; Ván, P. : Applying a list of functions to an argument : a dual of Map, Mathematica in Education and Research 9 (3/4) (2000), 58–63.

Egysoros

Grid[Partition[If[PrimeQ[#],Framed[#],#]&/@Range[100],10]]

A listaelem sorszámától is függjön a függvényérték

MapIndexed[gg,{a,b,c,d,e}]

MapIndexed[gg[#1,First[#2]]&,{a,b,c,d,e}]

Polinomot gyártunk együtthatókból:

Plus@@MapIndexed[#1(x^(First[#2]))&,{a,b,c,d}]

Block[{poly=0,list={a,b,c,d}},Do[poly=poly+list[[i]] (x^i),{i,1,Length[list]}];poly]

Block[{poly=0,list={a,b,c,d}},Do[poly+=list[[i]] (x^i),{i,Length[list]}];poly]

De így is:

{a,b,c,d}.(x^(Range[4]))

Mozgó részlistára alkalmazzunk függvényt

SeedRandom[99];
array=RandomReal[{0,10},20];
Table[Mean@@{array[[i;;i+4]]},{i,1,16}]

SeedRandom[99];
array=RandomReal[{0,10},20];
Table[Mean@@{Take[array,{i,i+4}]},{i,1,16}]

Egymás utáni párok

Table[List@@array[[i;;i+1]],{i,1,19}]

Prefix és posztfix: olvashatóság :)

Adott alakú prímek:

somePrimes1[nmax_]:=Select[Union[Flatten[Table[{(2^n)-1,(2^n)+1},{n,0,nmax}]]],PrimeQ];
somePrimes1[5]

Flatten: kiszedi a zárójeleket

somePrimes2[nmax_]:=Select[Union@Flatten@Table[{(2^n)-1,(2^n)+1},{n,0,nmax}],PrimeQ];
somePrimes2[5]

Hangsúly

somePrimes3[nmax_]:=Select[#,PrimeQ]&@Union@Flatten@Table[{(2^n)-1,(2^n)+1},{n,0,nmax}];
somePrimes3[5]

Ez is megy

somePrimes4@nmax_:=Select[#,PrimeQ]&@Union@Flatten@Table[{(2^n)-1,(2^n)+1},{n,0,nmax}];
somePrimes4[5]

Select the primes of the union of the flattening of the table of pairs {(2^n)-1,(2^n)+1} with n rangig from 0 to nmax.

A funkcionális purista így írja:

somePrimes5:=Select[#,PrimeQ]&@Union@Flatten@Table[{(2^n)-1,(2^n)+1},{n,0,#}]&;
somePrimes5[5]

Tanuljuk meg ezt is elolvasni:)

Lényetelen, afterthought (a lépcsőházból): posztfix. Időmérés, formázás

Last@somePrimes5[500]//Timing

(Melyik a leggyorsabb?)

10.00+12.77-36.00-42.01//AccountingForm

Precedencia

a@b@c//f@d//e

Fvek indexszel

f[1][x_,y_]:=0.5(x+y);
f[2][x_,y_]:=0.5(x-y);
f[3][x_,y_]:=0.5(-x+y);

Table[f[RandomInteger[{1,3}]][3,2],{i,6}]

(Subscript[f, 1])[x_,y_]:=0.5(x+y);
(Subscript[f, 2])[x_,y_]:=0.5(x-y);
(Subscript[f, 3])[x_,y_]:=0.5(-x+y);

(Subscript[f, RandomInteger[{1,3}]])[3,2]

Stan Wagontól, iterált fvrendszerek

f[1][{x_,y_}]:=(({{0.85, 0.04}, {-0.04, 0.85}})).{x,y}+{0,1.6};
f[2][{x_,y_}]:=(({{-0.15, 0.28}, {0.26, 0.24}})).{x,y}+{0,0.44};
f[3][{x_,y_}]:=(({{0.20, -0.26}, {0.23, 0.22}})).{x,y}+{0,1.6};
f[4][{x_,y_}]:=(({{0., 0.}, {0., 0.16}})).{x,y};
ff[p_]:=f[RandomChoice[{85,7,7,1}->{1,2,3,4}]][p];
fern[n_]:=Graphics[{AbsolutePointSize[0.5],Point/@NestList[ff,{0,0},n]},PlotRange->{{-3,3},{-1,11}},AspectRatio->0.83,ImageSize->Small];

fern[10000]

Másféle indexek:

g[{1,1}][x_,y_]:=x+2y;
g[elvadult][x_,y_]:=Exp[Sin[x]Tan[y]];
g[1+2I][x_,y_]:=x+2y I;
Table[g[j][3,4],{j,{{1,1},elvadult,1+2I}}]

Fold és rekurzió

FoldList[ff,x0,{a,b}]//TableForm

ClearAll[mySum1];
mySum1[{}]:=0;
mySum1[l_]:=First[l]+mySum[Rest[l]];

mySum1[{1,2,3,4,5}]

ClearAll[mySum2];
mySum2[l_]:=Fold[#1+#2&,0,l];

mySum2[{1,2,3,4,5}]

Absztrakt rekurzióból nemrekurzívat

ClearAll[g];
g[{}]=x;
g[l_]=f[First[l],g[Rest[l]]]

Ha f asszociatív:

g[l_]=Fold[f[#1,#2]&,x,l]

Példa

myMap1[_,{}]:={};
myMap1[f_,l_]:=Prepend[myMap1[f,Rest[l]],f[First[l]]]

myMap1[ffgg,{ss,dd,ffff,gg}]

ClearAll[myMap2];
myMap2[f_,l_]:=Fold[Prepend[#1,f[#2]]&,{},Reverse[l]];

myMap2[ffgg,{ss,dd,ffff,gg}]

myMap2[ffgg,{}]

Más tanulságok

ClearAll[myMap0];myMap0[f_,l_List]:=myMap0[f,{},l];
myMap0[f_,{x___},{y_,z___}]:=myMap0[f,{x,f[y]},{z}];
myMap0[_,l_,{}]:=l;
myMap0[ffgg,{ss,dd,ffff,gg}]

Példák

Írjon progamot, amely a FactorInteger függvény eredményéből előállítja a bemenetet, azaz az argumentumot!

15!
szam=FactorInteger[15!]

1. megoldás

megoldas=1;
Timing[For[i=1,i≤Length[szam],i++,megoldas=megoldas ((szam[[i,1]])^(szam[[i,2]]))];megoldas]

2. megoldás

megoldas=1;
Timing[i=1;While[i≤Length[szam],megoldas=megoldas*((szam[[i,1]])^(szam[[i,2]]));i++];megoldas]

3. megoldás

hatvany[a_,b_]:=(a^b);Timing[
(∏_(i=1)^(Length[szam]))hatvany[szam[[i,1]],szam[[i,2]]]]

Nincs gyűjtőrekesz.

4. megoldás

hatvany[a_,b_]:=(a^b);
Timing[
megoldas=1;
For[i=1, i≤Length[szam],i++,megoldas =megoldas*hatvany[szam[[i,1]],szam[[i,2]]]];megoldas]

5. megoldás

Egy nem túl hatékony megoldás - matematikai tudással...

Timing[
l=szam;
i=1;
k=1;
(∏_(i=1)^(Length[l]))Det[DiagonalMatrix[Table[l[[i,1]],{j,1,l[[i,2]]}]]]]

MemoryInUse[]

6. megoldás

l=szam;
i=1;
megoldas=1;
Timing[
Do[megoldas=megoldas* ((l[[i,1]])^(l[[i,2]])),{i,1,Length[l],1}];megoldas]

7. megoldás

Elemenként építsük fel az alábbi programot.

szam

Timing[Times@@(Power@@#&/@szam)]

Timing[Times@@(Power@@@szam)]

ClearAll[ff];
ff[x_]:=Timing[Times@@(Power@@#&/@x)]

Próbáljuk ki nagyobb számra is a programokat, és nézzük a futásidőket, memóriahasználatot.

A megoldások kinyerése

Milyen módon lehet előállítani a (q^2) egész számot pontosan k egész szám négyzeteinek összegeként?

q=5;
Reduce[{(a^2)+(b^2)+(c^2)==(q^2)},{a,b,c},Integers]

Készítsünk egy listát, ami a megfelelő számhármasokat tartalmazza!

ClearAll[a,b,c]

Apply[List,Reduce[{(a^2)+(b^2)+(c^2)==(q^2)},{a,b,c},Integers],1]

Apply[List,Reduce[{(a^2)+(b^2)+(c^2)==(q^2)},{a,b,c},Integers],1]/.{Equal->Rule}

Apply[List,Apply[List,Reduce[{(a^2)+(b^2)+(c^2)==(q^2)},{a,b,c},Integers],1]/.{Equal->Rule}]

Sols={a,b,c}/.%

Hogy állítjuk elő a már meglévő Sols halmazból a monoton megoldásokat?

Join[Select[Sols,#[[1]]≤#[[2]]≤#[[3]]&],Select[Sols,#[[3]]≤#[[2]]≤#[[1]]&]]

Hasonló, csak mintaillesztéssel.

Cases[Sols,{_?Positive,0,_?Negative}]⋃Cases[Sols,{_?Negative,0,_?Positive}]

A hivatalos megoldás...

Hyperlink["SOS", "http://mathworld.wolfram.com/SumofSquaresFunction.html"]

...mint mindenre, erre is (majdnem) van beépített parancs.

SumOfSquaresRepresentations[d_,n_]:=Module[{x,a},
(a=Array[x,d]) /. {ToRules[Reduce[a.a==n,a,Integers]]}
]

ClearAll[d,n,x,a,SumOfSquaresRepresentations];
SumOfSquaresRepresentations[d_,n_]:=Module[{x,a},(a=Array[x,d])/.{ToRules[Reduce[a.a==n,a,Integers]]}]

(SumOfSquaresRepresentations[3,#]&/@Range[10,20])

SumOfSquaresRepresentations[3,7]

(SumOfSquaresRepresentations[3,#]&/@Range[10,20])[[6]]

{{x$110[1],x$110[2],x$110[3]},x$1020[2],x$1020[3]}

{{x$110[1],x$110[2],x$110[3]},x$1020[2],x$1020[3]}

Keressék meg a helyes utasítást, EZ NEM JÓ!

FullForm[x$110[1]]

ToCharacterCode["x$110[1]"]

sos=(SumOfSquaresRepresentations[3,#]&/@Range[10,20])

Map[Head[First[#]]&,sos]

tot={{x$1612[1],x$1612[2],x$1612[3]},{{-4,0,0},{0,-4,0},{0,0,-4},{0,0,4},{0,4,0},{4,0,0}}};

Map[Head[First[#]]&,tot]

Select[tot,Except[Head[First[#]]== List]&]

Select[tot,Except[Head[First[#]]≠ List]&](*Miért nem megy?*)

Cases[tot,Except[Head[First[#]]== List]&](*Miért nem megy?*)

Select[tot,(Head[First[#]]==  List&)]

Complement[(SumOfSquaresRepresentations[3,#]&/@Range[200]),Select[(SumOfSquaresRepresentations[3,#]&/@Range[200]),(Head[First[#]]== List)&]]

Length[%]

Select[(SumOfSquaresRepresentations[3,#]&/@Range[10,20]),TrueQ[(Head[First[#]]≠  List&)]]

Head[First[#]]&

SumOfSquaresRepresentations[3,61]

Házi feladat: Gyűjtsünk olyan parancs-párokat, amelyek ugyanazt csinálják, csak rendre függvénymegadás-, illetve mintaillesztéses technikával.

Házi feladatok

1. Írjunk programot véletlen számok generálására Neumann János módszere alapján.

2. Készítsünk táblázatot az első 12 szabályos sokszögről, írjuk a belsejükbe az oldalak számát és a szomszédos oldalak bezárta szöget.

3. Mozgó átlagot és egymás utáni párokat készítsünk másképpen, többféleképpen. (MovingAverage, MovingMedian, ListConvolve, ListCorrelate; Partition, LeftRotate, Inner)

4. Írjunk fordított Fold-ot (Haskell: foldr) és FoldList-et. Mikor ad azonos eredményt Fold és FoldR?

Számok

Kerekítés

Round

Ceiling

Floor

IntegerPart[x]+FractionalPart[x]==x//FullSimplify

Számrendszerek

{2^^101,16^^FFFF,BaseForm[2^^10101010,16]}

16^^A0+16^^AF

16^^A0+16^^AF//BaseForm[#,16]&

FullForm[2^^3]

Hash["Hello, world!"]//BaseForm[#,16]&

Hash["Hello, world!" ,"MD2"]//BaseForm[#,16]&

Számjegyek

IntegerDigits

A Cantor - halmaz konstrukciója

IntegerDigits[7,3]

IntegerDigits[27,3]

Ugyanis

BaseForm[{7,27},3]

Table[FreeQ[IntegerDigits[n-1,3],1],{n,27}]

Table[If[FreeQ[IntegerDigits[n-1,3],1],1,0],{n,27}]

Table[Boole[FreeQ[IntegerDigits[n-1,3],1]],{n,27}]

Készítsünk rajzsorozatot!

RealDigits

RealDigits[Sin[(Sqrt[2])],10,12]

Tally[First[%]]

Histogram[First[RealDigits[Sin[(Sqrt[2])],10,120000]]]

Table[RealDigits[Sin[x(Sqrt[2])],10,12][[1,1]],{x,0,(π/(Sqrt[2])),(10^(-2))}]

Histogram[%]

t[n_]:=Histogram[Table[RealDigits[Sin[x(Sqrt[2])],10,12][[1,1]],{x,0,(π/(Sqrt[2])),(10^(-n))}]]

Timing[t[5]]

r[n_]:=Rest[Tally[Table[RealDigits[Sin[x(Sqrt[2])],10,12][[1,1]],{x,0,(π/(Sqrt[2])),(10^(-n))}]]]

Timing[ListPlot[r[5],PlotStyle->Directive[{PointSize[Large],Red}],AxesOrigin->{0,0},PlotLabel->"A kezdő számjegyek eloszlása\n nem egyenletes"]]

Picit ez a gyorsabb.

Hyperlink["Benford-eloszlás, tapasztalati adatokra","http://en.wikipedia.org/wiki/Benford%27s_law"]

Valós és egész számok: különböző számrendszerekben is.

Rómaiak

IntegerString[2010,"Roman"]

FromDigits["MMX","Roman"]-22

Régi feladat: írjunk átváltó függvényt ide, oda.

Intervallumok

error1=0.01;error2=0.005;
mass=Interval[{1.10-error1,1.10+error1}];
velocity=Interval[{7.50-error2,7.50+error2}];
kinerg=(1/2)mass (velocity^2)

error3=Subtract@@kinerg[[1]]

Interval[{4,3},{2,1}]

Interval[{1,2}]Interval[{3,4}]

(Sqrt[Interval[{1,2}]])

Limit[Sin[x]+(1/2)Cos[x],x->+∞]

Maximize[Sin[x]+(1/2)Cos[x],x]//N

Minimize[Sin[x]+(1/2)Cos[x],x]//N

Túl óvatos. És itt?

Limit[2Sin[1/x]+(1/2)Cos[x],x->0]

Minimize[2Sin[1/x]+(1/2)Cos[x],x]

Maximize[2Sin[1/x]+(1/2)Cos[x],x]

Minimize[Boole[-1<x<1](2Sin[1/x]+(1/2)Cos[x]),x]

Maximize[Boole[-1<x<1](2Sin[1/x]+(1/2)Cos[x]),x]

Minimize[(E^(-(x^2)))(2Sin[1/x]+(1/2)Cos[x]),x]

Maximize[(E^(-(x^2)))(2Sin[1/x]+(1/2)Cos[x]),x]

NMinimize[2Sin[1/x]+(1/2)Cos[x],x]

Ez a megoldás - még ha közelítő is.

NMinimize[2Sin[1/x]+(1/2)Cos[x],x]

Vizsg'ljuk meg numerikusan, hogy az ötletek mennyire voltak pontosak a függvényértéket és az argumentumot illetően.

Plot[2Sin[1/x]+(1/2)Cos[x],{x,-2,2},Exclusions->{0}]

Plot[2Sin[1/x]+(1/2)Cos[x],{x,-0.02,0.02},Exclusions->{0},PlotRange->All]

Plot[2Sin[1/x]+(1/2)Cos[x],{x,-0.0002,0.0002},Exclusions->{0},PlotRange->All]

Ki tud jobb becslést adni?

Az itervallumaritmetika fontos numerikus módszereknél, egzakt számítógépes bizonyításoknál.

Átalakítások

Rationalize[3.14159]

Rationalize[π,0.1]

Rationalize[π,0.002]

Ugye, milyen jó a (22/7) érték?

Rationalize[π,0.00005]

N[(Sqrt[69]),8]

Zseniális kókler:

RootApproximant[N[(Sqrt[69]),8],2]

Vigyázat :

Table[RootApproximant[N[(Sqrt[69]),n],2],{n,8}]

(((5+(Sqrt[11])))^2)//Expand//N

Formák

?A*Form

?Ba*Form

?En*Form

?Sc*Form

Egyszerre? (füzérek)

2. házi feladat

1. feladat

Határozza meg az ℝ\{-2,3}∋x↦((2(x^3)-x+1)/((x+2)(x-3))) függvény összes aszimptotáját! (2 pont) Készítsen ábrákat, használjon minél többet az opciók közül!

Bartha Zsolt

f[x_]:=((2 (x^3)-x+1)/((x+2)(x-3)))

Plot[f[x],{x,-10,10},Exclusions->{x==3,x==-2},PlotStyle->Green]

Limit[f'[x],x->+Infinity]

Limit[f[x]-2 x,x->+Infinity]

Limit[f'[x],x->-Infinity]

Limit[f[x]-2 x,x->-Infinity]

Ezek alapján a függvény aszimptotája a +∞-ben és a -∞-ben is az y=2x+2 egyenes.

Plot[{f[x],2x+2},{x,-10,10}, Exclusions->{x==3,x==-2},PlotStyle->{Green,Blue}]

Limit[f'[x],x->-2]

Limit[f'[x],x->3]

Ezek szerint pedig a függvény aszimptotája még az x=-2 és az x=3 egyenes.

ParametricPlot[{{x,f[x]},{-2,Sinh[x]},{3,Sinh[x]}},{x,-10,10},Exclusions->{x==-2,x==3},AspectRatio->1,PlotStyle->{Green,Blue,Blue}]

Dér Ervin

Plot[(2 x^3-x+1)/((x+2) (x-3)),{x,-10,10},PlotStyle->{Blue,Thickness[0.01]}]

Limit[(2 x^3-x+1)/((x+2) (x-3)), x -> -2]

Limit[(2 x^3-x+1)/((x+2) (x-3)), x -> 3]

Fekete Balázs Samu

Limit[(2x^3-x+1)/((x+2)*(x-3)),x->3]
Limit[(2x^3-x+1)/((x+2)*(x-3)),x->-2]

(*Amiből látszik (meg az ábrán alább), hogy az x=-2, és x=3 aszimptoták*)

Plot[(2x^3-x+1)/((x+2)(x-3)),{x,-8,8}]

Limit[(2x^3-x+1)/(x*(x+2)*(x-3)),x->Infinity]
Limit[(2x^3-x+1)/(x*(x+2)*(x-3)),x->-Infinity]

Nagy O!

(*Az látszott, hogy mivel a számláló o(x^3), a nevező o(x^2), ezért a végtelenben o(x) aszimptotához tart, ezért a limesben a nevezőt x-el szorozva a limes konstans lesz.
Ebből látszik, hogy f(x) aszimptotikusan tart 2x-hez. (Mint azt a lenti ábrán is látni).*)

Plot[(2x^3-x+1)/((x+2)(x-3)),{x,-1000,1000}]

Forberger Klaudia

Plot[ ((2x^3-x+1)/((x+2)(x-3))),{x,-5,5}]

Plot[ ((2x^3-x+1)/((x+2)(x-3))),{x,-100,100},PlotStyle->{Orange,Thick}]

Limit[((2x^3-x+1)/((x+2)(x-3))),x->Infinity]

Limit[((2x^3-x+1)/((x+2)(x-3))),x->-Infinity]

bal és jobb oldali határértékek:

Limit[((2x^3-x+1)/((x+2)(x-3))),x->-2,Direction->1]

Limit[((2x^3-x+1)/((x+2)(x-3))),x->-2,Direction->-1]

Limit[((2x^3-x+1)/((x+2)(x-3))),x->3,Direction->1]

Limit[((2x^3-x+1)/((x+2)(x-3))),x->3,Direction->-1]

aszimptoták: x = -2, x = 3

Plot[((2 (x^3)-x+1)/((x+2) (x-3))),{x,-5,5},Exclusions->{{x==3},{x==-2}},AxesLabel->Automatic,ExclusionsStyle->{Dashed}]

Geszler Döme

f[x_]:=((2 (x^3)-x+1)/((x+2) (x-3)))

A nevezőből látható, hogy az x = -2 és x = 3 egyenesek triviálisan aszimptoták.

Plot[f[x],{x,-10,10}]

Jó!

Solve[Limit[((f[x])/(a x)),x->+∞]==1,a]

Innen az y = 2x aszimptota adódik.

Plot[{f[x],2 x},{x,0,25}]

Solve[Limit[((f[x])/(b x)),x->-∞]==1,b]

Innen szintén az y = 2x aszimptota adódik.

Plot[{f[x],2 x},{x,-25,0}]

Homoki Tibor

Függvény-ábrázolás:

Plot[{(2*(x^3)-x+1)/((x+2)*(x-3)),2*x+2},{x,-10,10},ImageSize ->{1000,500}, PlotStyle->{{Red,Thick},{Blue,Thick}}]

Asszimptoták:  az x=-2  és az x=3 egyenesek asszimptoták. A végtelenben vett asszimptoták a függvény deriváltjának segítségével határozhatjuk meg:

Nem kétes :)!!!

D[(2*(x^3)-x+1)/((x+2)*(x-3)),x]

Limit[((-1+6 (x^2))/((-3+x) (2+x)))-((1-x+2 (x^3))/((-3+x) (((2+x))^2)))-((1-x+2 (x^3))/((((-3+x))^2) (2+x))),x->∞]

Limit[(2*(x^3)-x+1)/((x+2)*(x-3))-2*x,x->∞]

Így a +∞-ben vett asszimptota az y=2*x+2 egyenes. Hasonlóan hatázozható meg a -∞-ben vett asszimptota:

Limit[((-1+6 (x^2))/((-3+x) (2+x)))-((1-x+2 (x^3))/((-3+x) (((2+x))^2)))-((1-x+2 (x^3))/((((-3+x))^2) (2+x))),x->-∞]

Limit[(2*(x^3)-x+1)/((x+2)*(x-3))-2*x,x->-∞]

Tehát az y=2*x+2 egyenes  a -∞-ben vett asszimptota is.

Mutassunk példát arra, hogy aszimptota létezik, de a fv deriváltja a végteleneben nem!

Holubecz Judit

Plot[(2*x^3-x+1)/((x+2)*(x-3)),{x,-15,15},ColorFunction->Function[{x,y},Hue[y]]]

Limit[(2*x^3-x+1)/((x+2)*(x-3)),x->-2]
Limit[(2*x^3-x+1)/((x+2)*(x-3)),x ->3]
Limit[f[x],x ->  Infinity]
Limit[f[x], x -> -Infinity]

x=-2 asszimptotája és x=3 asszimptotái a függvénynek.
Vízszintes asszimptotái nincsenek a függvénynek.

Clear[x]
a=Limit[((2*x^3-x+1)/((x+2)*(x-3)))/x, x -> Infinity]
b=Limit[(2*x^3-x+1)/((x+2)*(x-3))-a*x, x-> Infinity]
as[x_]:=a*x+b

Így az y=2x+2 egyenes az is aszimptotája a függvénynek.

Plot[{(2*k^3-k+1)/((k+2)*(k-3)),as[k]},{k,-10,10}]

A vízszentest nem kell külön tárgyalni

Indruck Balázs

Plot[((2 (x^3)-x+1)/((x+2) (x-3))),{x, -4, 5}]

Kiss Ágnes

Plot[((2 (x^3)-x+1)/((x+2) (x-3))),{x,-15,15},PlotStyle->{Blue,Thickness[0.005]},AxesLabel->Automatic]

A függvény aszimptotái : x = -2 - ben és x = 3 - ban.

Bal oldali határértékek:

Limit[((2 (x^3)-x+1)/((x+2) (x-3))),x->-2, Direction->1]

Limit[((2 (x^3)-x+1)/((x+2) (x-3))),x->3, Direction->1]

Jobb oldali határértékek:

Limit[((2 (x^3)-x+1)/((x+2) (x-3))),x->-2, Direction->-1]

Limit[((2 (x^3)-x+1)/((x+2) (x-3))),x->3, Direction->-1]

További ábrák

Plot[((2 (x^3)-x+1)/((x+2) (x-3))),{x,-30,30},PlotStyle->{Blue,Thickness[0.005]},Exclusions->{{x==3},{x==-2}},AxesLabel->Automatic]

Plot[((2 (x^3)-x+1)/((x+2) (x-3))),{x,-10,10},PlotStyle->{Green,Thickness[0.005]},Exclusions->{{x==3},{x==-2}},AxesLabel->Automatic,
ExclusionsStyle->{Dashed}]

Plot[((2 (x^3)-x+1)/((x+2) (x-3))),{x,-40,40},PlotStyle->{Purple,Thickness[0.007]},Exclusions->{{x==3},{x==-2}},AxesLabel->Automatic,
ExclusionsStyle->{Dashed}]

?Exclusions

Kovács Luca Zsuzsanna

f[x_]:=(2x^3-x+1)/((x+2)(x-3))
f=(2x^3-x+1)/((x+2)(x-3))

Plot[(2x^3-x+1)/((x+2)(x-3)),{x,-5,5}]

Plot[(2x^3-x+1)/((x+2)(x-3)),{x,-10,10},ColorFunction->Function[{x,y},If[y>0,Red,Black]],ColorFunctionScaling->False,PlotStyle->Thick]

Plot[(2x^3-x+1)/((x+2)(x-3)),{x,-15,20},PlotRange->20]

Limit[f, x-> ∞]
Limit [(2x^3-x+1)/((x+2)(x-3)), x-> - ∞]
Limit[(2x^3-x+1)/((x+2)(x-3)), x-> ∞]
Limit[(2x^3-x+1)/((x+2)(x-3)), x-> -2]
Limit[(2x^3-x+1)/((x+2)(x-3)), x-> 3]

Reduce[1/((1-x+2 x^3)/((x+2) (x-3)))==0,x,Reals]

PolynomialQuotient[Numerator[Together[(1-x+2 x^3)/((x+2) (x-3))]],Denominator[Together[(1-x+2 x^3)/((x+2) (x-3))]],x]

a függvénynek három aszimptotája van:

x = -2 függvény, mely függőleges

x = 3 függvény, mely szintén függőleges

x = 2+2x függvény, mely ferde

Lelkes Ádám

Plot[((2(x^3)-x+1)/((x+2)(x-3))),{x,-10,10},ColorFunction->Function[{x,y},Hue[y]],Exclusions->{x==3,x==-2}]

Limit [D[((2(x^3)-x+1)/((x+2)(x-3))),x],x->Infinity]

Limit[((2(x^3)-x+1)/((x+2)(x-3)))-2x,x->Infinity]

Limit [D[((2(x^3)-x+1)/((x+2)(x-3))),x],x->-Infinity]

Limit[((2(x^3)-x+1)/((x+2)(x-3)))-2x,x->-Infinity]

Plot[{((2(x^3)-x+1)/((x+2)(x-3))),2+2x},{x,-10,10}]

Látható tehát, hogy ∞-ben 2+2x-hez, -∞-ben szintén 2+2x-hez tart a függvény aszimptotikusan, továbbá a két szakadási helyén, (-2)-ben és 3-ban ±∞-hez tart.

Nagy László

Nagy László
BFX9KU
1. feladat

Plot[((2(x^3)-x+1)/((x+2)(x-3))),{x,-10,10} , PlotStyle->Red,Mesh-> All, Filling -> Axis]

Assimptoták a x = 3, és az x = -2.

Palej Gréta

Plot[(2*x^3-x+1)/((x+2)*(x-3)),{x,-15,15},ColorFunction->Function[{x,y},Hue[y]]]

Limit[(2*x^3-x+1)/((x+2)*(x-3)),x->-2]
Limit[(2*x^3-x+1)/((x+2)*(x-3)),x ->3]
Limit[f[x],x ->  Infinity]
Limit[f[x], x -> -Infinity]

Tanulságos huba :)!

x=-2 asszimptotája és x=3 asszimptotái a függvénynek.
Vízszintes asszimptotái nincsenek a függvénynek.

Clear[x]
a=Limit[((2*x^3-x+1)/((x+2)*(x-3)))/x, x -> Infinity]
b=Limit[(2*x^3-x+1)/((x+2)*(x-3))-a*x, x-> Infinity]
as[x_]:=a*x+b

Így az y=2x+2 egyenes az is aszimptotája a függvénynek.

Plot[{(2*k^3-k+1)/((k+2)*(k-3)),as[k]},{k,-10,10}]

Papp Artúr

ClearAll[f,g];
f[x_]:=((2 (x^3)-x+1)/((x+2) (x-3)));
Plot[f[x],{x,-15,20},Background->White,AxesStyle->{Directive[Red],White},PlotStyle->{Orange}]
Reduce[1/((1-x+2 x^3)/((-3+x) (2+x)))==0,x,Reals]
PolynomialQuotient[Numerator[Together[(1-x+2 x^3)/((-3+x) (2+x))]],Denominator[Together[(1-x+2 x^3)/((-3+x) (2+x))]],x]

g[x_]:=2 x+2;
Plot[{f[x],g[x]}, {x, -10, 10},PlotStyle->{Yellow,Dashed},Filling->{1->{2}},FillingStyle->Orange,AxesStyle->{Directive[White],Orange},Background->LightBlue]

Szééép!

Pap Máté

Plot[(2*x^3-x+1)/((x+2)*(x-3)),{x,-10,10},Frame->True,FrameLabel->{x,y},PlotLabel->((2(x^3)-x+1)/((x+2)(x-3))),LabelStyle->Orange]

Ez is szép!

Limit[(2*x^3-x+1)/((x+2)*(x-3)),x->-2]
Limit[(2*x^3-x+1)/((x+2)*(x-3)),x ->3]
Limit[f[x],x ->  Infinity]
Limit[f[x], x -> -Infinity]

x = -2; x = 3 aszimptoták 
Vízszintes asszimptota nincs.

Clear[x]
m=Limit[((2*x^3-x+1)/((x+2)*(x-3)))/x, x -> Infinity]
b=Limit[(2*x^3-x+1)/((x+2)*(x-3))-m*x, x-> Infinity]
ms[x_]:=m*x+b

y=2x+2 egyenes is aszimptota

Plot[{(2*k^3-k+1)/((k+2)*(k-3)),ms[k]},{k,-10,10}]

Podonyi Anikó

ClearAll[f,g];
f[x_]:=((2 (x^3)-x+1)/((x+2) (x-3)));
Plot[f[x],{x,-15,20},Background->Black,AxesStyle->{Directive[White],White},PlotStyle->{Orange}]
Reduce[1/((1-x+2 x^3)/((-3+x) (2+x)))==0,x,Reals]
PolynomialQuotient[Numerator[Together[(1-x+2 x^3)/((-3+x) (2+x))]],Denominator[Together[(1-x+2 x^3)/((-3+x) (2+x))]],x]

A függvény asszimptotája tehát a 2x+2 függvény a ferde aszimptotája, x = 3 és x=-2 a függvény függőleges aszimptotái.

g[x_]:=2 x+2;
Plot[{f[x],g[x]}, {x, -10, 10},PlotStyle->{Black,Dashed},Filling->{1->{2}},FillingStyle->Orange,AxesStyle->{Directive[Black],Orange},Background->LightBlue]

Szép Enikő

Plot[((2(x^3)-x+1)/((x+2)(x-3))),{x,-10,10}, ColorFunction->"DarkRainbow", PlotStyle->Thick]

Limit[D[((2(x^3)-x+1)/((x+2)(x-3))),x] ,x ->Infinity]

Limit[((2(x^3)-x+1)/((x+2)(x-3)))-2x,x ->Infinity]

Limit[D[((2(x^3)-x+1)/((x+2)(x-3))),x] ,x ->-Infinity]

Limit[((2(x^3)-x+1)/((x+2)(x-3)))-2x,x ->-Infinity]

Plot[{((2(x^3)-x+1)/((x+2)(x-3))), 2x+2},{x,-15,15}, ColorFunction->"DarkRainbow"]

Varga Gábor

Clear[x]
f[x_]:=(2*x^3-x+1)/((x+2)*(x-3))

Plot[f[x],{x,-10,10},Filling->Bottom]

Limit[f[x],x->-2]

Tehát az x=-2 függvény függőleges aszimptotája f-nek.

Limit[f[x],x ->3]

Tehát az x=3 függvény is függőleges aszimptotája f-nek.

Limit[f[x],x ->  Infinity]
Limit[f[x], x -> -Infinity]

Így a függvénynek nem létezik vízszintes aszimptotája.

a1:=Limit[f[x]/x, x -> Infinity]
b1:=Limit[f[x]-a1*x, x-> Infinity]
Clear[x]
e[x_]:=a1*x+b1
Print[a1]
Print[b1]
a2:=Limit[f[x]/x, x -> Infinity]
b2:=Limit[f[x]-a2*x, x-> Infinity]
Print[a2]
Print[b2]

Tehát f-nek az y=2x+2 egyenes az egyetlen ferde aszimptotája.

Plot[{f[z],e[z]},{z,-10,10},Filling->{1->{2}}]

2. feladat

Hányadik Legendre-polinom áll 18 tagból?  Milyen tételeket talál ebből a témakörből? (3 pont)

Bartha Zsolt

n=0;
While[Length[CoefficientRules[LegendreP[n,x],x]]≠18,n++]
Print[n]

Table[Length[CoefficientRules[LegendreP[n,x],x]],{n,34,40}]

Tehát a 34. és a 35. Legendre-polinom áll 18 tagból.

Fekete Samu

Jelölje P(n,x) az n-edik Legendre-polinomot.

Ekkor a rodrigues-formula alapján:

P(n,x)=1/(2^2*n!)*d^n/d(x^n)*[(x^2-1)^n]

Ld még: http://hu.wikipedia.org/wiki/Legendre-polinomok

Ebből kijön, hogy minden Legendre polinom Floor[n/2]+1 taggal rendelkezik. Tehát leghamarabb a 34edik polinomnak lesz 18 tagja.

Szép! De akkor ugye a következőnek is ennyi tagja van!

Forberger Klaudia

Az n-edik Legendre-polinom racionális együtthatós n-edfokú polinom. A Legendre-polinomok többféleképpen is számíthatók, és rekurzívan is előállíthatók.
Minden gyökük valós, és az I = [ - 1,1] intervallumban van. (Subscript[P, n])(x) két gyöke között van egy gyöke (Subscript[P, n+1])(x)-nek.

(formázás)

Expand[LegendreP[4,x]]

n=1
While[Length[Apply[List,Expand[LegendreP[n,x]]]]< 18, n++]
Print[n]

A 34-dik Legendre-polinom áll 18 tagból.

Geszler Döme

n=0;
While[Length[Select[CoefficientList[LegendreP[n,x],x],#≠0&]]≠18,n++]
Print[n]
LegendreP[n,x]

Hyperlink["Legendre-polinomok a wikipedian","http://en.wikipedia.org/wiki/Legendre_polynomials"]

Hyperlink["Legendre-polinomok a MathWorld-ön","http://mathworld.wolfram.com/LegendrePolynomial.html"]

Hyperlink["Legendre-polinomok a Functions honlapon","http://functions.wolfram.com/Polynomials/LegendreP/23/ShowAll.html"]

Holubecz Judit

i:=0
While[Length[MonomialList[ Expand[LegendreP[i,x]]]]<18,i++]
Print[i]

Nem kell Expand

i:=0
While[Length[MonomialList[LegendreP[i,x]]]<18,i++]
Print[i]

Homoki Tibor

A 18 tagú Legendre-polinom meghatározása:

(Subscript[x, 0])=1

(Subscript[x, 1])=x

For[i=1,i<100,i++,(Subscript[x, i+1])=((2*i+1)*x*(Subscript[x, i])-i*(Subscript[x, i-1]))/(i+1)]

(Subscript[x, 2])

For[i=1,i<40,i++,If[Length[Cases[CoefficientList[(Subscript[x, i]),x],Except[0]]]==18 ,Throw[i]]]

Tehát a 34. Legendre-polinom áll 18 tagból.
Tételek a témakörből:      - A Legendre polinomok a Legendre-differenciálegyenlet partikuláris megoldásai, ortogonális függvényrendszert alkotnak.
			     - Legendre differenciálegyenlet: (1 - (x^2)) f "-2xf+n(n+1)f =0 ahol n ϵ ℕ.

(1-(x^2))f''(x)-2x f'(x)+n(n+1)f(x)=0

(1-(id^2))f''-2id f'+n(n+1)f=0

Indruck Balázs

LegendreP[34,x]

Az n-dik Legendre-polinom ⌊(n/2)⌋+1 tagból áll.

Kiss Ágnes

n=1;While[Length[Apply[List,Expand[LegendreP[n,x]]]]<18,n++]

Print[n]

Plot[LegendreP[n,x],{x,-1,1}]

Animate[Plot[LegendreP[n,x],{x,-1,1}],{n,0,10,1}]

Animate[Plot[LegendreP[n,x],{x,-1,1}],{n,10,1000,100}]

Tétel: A Legendre-polinomokra teljesülnek az alábbi rekurziók: 
(n+1) (Subscript[P, n+1])(x)=(2 n+1) x (Subscript[P, n])(x)-n (Subscript[P, n-1])(x)

n=23

Expand[(n+1)LegendreP[n+1,x]]==Expand[(2 n+1) x LegendreP[n,x]-n LegendreP[n-1,x]]

Tetszőleges n értékre valóban igaz a tétel.

Kovács Luca Zsuzsanna

P[n_]:= 1/(n!*2^n)*D[(x^2-1)^n,{x,n}]
n=34
Expand[P[n]]

Az n-edik Legendre-polinom racionális együtthatós n-edfokú polinom.

Minden gyökük valós, és az I = [ − 1,1] intervallumban van.

Pn(x) két gyöke között van egy gyöke Pn+1(x)-nek.

i=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[i,z]],z],x_/;x≠0]]≠18,i++]
j=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[j,z]],z],x_/;x≠0]]≠19,j++]
While[i ≤ j-1, Print[i]; i++]

Lelkes Ádám

For[n=0,Count[CoefficientList[LegendreP[n,x],x],Except[0]]!=18,n++]

Print[n]

LegendreP[34,x]

Mint látható, a 34. Legendre-polinom pontosan 18 tagból áll.

Nagy László

LegendreP[34,y]

Palej Gréta

i:=0
While[Length[MonomialList[ Expand[LegendreP[i,x]]]]<18,i++]
Print[i]

Pap Máté

i:=0
While[Length[MonomialList[ Expand[LegendreP[i,x]]]]<18,i++]
Print[i]

Papp Artúr

i=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[i,z]],z],x_/;x≠0]]≠18,i++]
j=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[j,z]],z],x_/;x≠0]]≠19,j++]
While[i ≤ j-1, Print[i]; i++]

Tételek:

(Subscript[P, m])(y)=(1/π) (∫_0^π)(((y±Cos[t (Sqrt[(y^2)-1])]))^n)dt=(1/π)

(m+1) (Subscript[P, m+1])(y)=(2 m+1) x (Subscript[P, m])(y)-m (Subscript[P, m-1])(y)

(∫_(-1)^1)(Subscript[P, m])(y) (Subscript[P, k])(y)dy=0

ha  k≠m ⟹ (∫_(-1)^1)(([(Subscript[P, m])(y)])^2)dy=(1/(2 m+1));

Podonyi Anikó

i=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[i,z]],z],x_/;x≠0]]≠18,i++]
j=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[j,z]],z],x_/;x≠0]]≠19,j++]
While[i ≤ j-1, Print[i]; i++]

Tételek ebből a témakörből

(Subscript[P, m])(y)=(1/π) (∫_0^π)(((y±Cos[t (Sqrt[(y^2)-1])]))^n)dt=(1/π)

(m+1) (Subscript[P, m+1])(y)=(2 m+1) x (Subscript[P, m])(y)-m (Subscript[P, m-1])(y)

(∫_(-1)^1)(Subscript[P, m])(y) (Subscript[P, k])(y)dy=0

ha  k≠m ⟹ (∫_(-1)^1)(([(Subscript[P, m])(y)])^2)dy=(1/(2 m+1));

Szép Enikő

i=1;
While[Length[Cases[CoefficientList[Expand[LegendreP[i,z]],z],x_/;x≠0]]≠18,i++]
Print["A "<>ToString[i]<>"-edik Legendre-polinom áll 18 tagból."]

Tétel: A Legendre-polinomok teljes ortogonális rendszert alkotnak az ⟨f,g⟩:=(∫_(-1)^1)f(x)g(x)dx skalárszorzattal ellátott V:=(L^2)([-1,1],ℝ) Hilbert-téren.

n=1;While[Count[CoefficientList[LegendreP[n,x],x],Except[0]]<18,n++]

n

LegendreP[34,x]

Plot[LegendreP[34,x],{x,-1,1}, ColorFunction->Function[{x,y},If[y>0,Red,Black]],ColorFunctionScaling->False,PlotStyle->Thick]

http://nptel.iitm.ac.in/courses/Webcourse-contents/IIT-KANPUR/mathematics-2/node86.html
Itt található jónéhány tétel a témában.

Varga Gábor

i:=0
While[Length[MonomialList[ Expand[LegendreP[i,x]]]]<18,i++]
Print[i]

Tehát a 34. a legkisebb Legendre-polinom, amelynek tagjainak száma legalább 18.

Funkcionálisan

Select[Range[50],Length@MonomialList@LegendreP[#,x]==18&]

Nincs futóindex és Print. Itt most kell becslés.

NestWhile

3. feladat

Írjunk programot szimbolikus integrálásra! (3 pont)

Bartha Zsolt

ClearAll[int1,int,c];
int1[x_+y_]:=int1[x]+int1[y]/;FreeQ[x,y];
int1[const_ x_]:=const int1[x]/;FreeQ[const,x];
int1[const_]:=const x/;FreeQ[const,x];
int1[((x_)^(n_))]:=((x^(n+1))/(n+1))/;FreeQ[n,x] && n≠-1;
int1[((x_)^(-1))]:=Log[Abs[x]];
int[x_]:=int1[x]+c;

int[(x^(-4))+2 (x^(-2))-3(x^(-1))+5+4(x^3)-9(x^9)]

Dér Ervin

ClearAll[f,x];
Integrate[f'[x] /f[x],x]

Fekete Samu

ClearAll[i];
i[x_+y_]:=i[x]+i[y]
i[c_ x_]:=c i[x]/;FreeQ[c,x]
i[c_]:=c x/;FreeQ[c,x]
i[((x_)^(n_))]:= (x^(n+1))/(n+1)/;FreeQ[n,x]

i[2+x^3+4*x^2]

Tehát polinomot tudunk integrálni.

i[2+aa (x^3)+bb (x^2)]

Forberger Klaudia

ClearAll[int];
int[x_+y_]:=int[x]+int[y]

int[c_ x_]:=c int[x]/;FreeQ[c,x]

int[c_]:=c*x/;FreeQ[c,x]

int[c_/;FreeQ[c,x]]:= c*x

int[((x_)^(n_))]:=(( (x^(n+1)))/(n+1))/;FreeQ[n,x]

int[((x_)^(n_.))]:=(( (x^(n+1)))/(n+1))/;FreeQ[n,x]

?int

poly=Plus@@((Range[4]+2)(x^(Range[4]-1)))-5

int[poly]

Geszler Döme

poly=Plus@@((Range[4]+2) x^(Range[4]-1))-5

Azonos cellába!

ClearAll[S];
S[x_+y_]:=S[x]+S[y]

S[poly]

S[c_ x_]:=c S[x]/;FreeQ[c,x]

S[poly]

S[c_]:=c x/;FreeQ[c,x]

S[c_/;FreeQ[c,x]]:=c x

S[poly]

S[((x_)^(n_))]:=(1/(n+1)) (x^(n+1))/;FreeQ[n,x]

S[poly]

S[((x_)^(n_.))]:=(1/(n+1)) (x^(n+1))/;FreeQ[n,x]

S[poly]

?S

Homoki Tibor

Szimbolikus integrálás:

i[x_+y_]:=i[x]+i[y]

i[c_ x_]:=c i[x]  /;FreeQ[c,x]

i[c_/;FreeQ[c,x]]:=c x

i[((x_)^(n_))]:=(x^(n+1))/(n+1)/;FreeQ[n,x]

i[((x_)^(n_.))]:=(x^(n+1))/(n+1)/;FreeQ[n,x]

poly=3+2*x+4*(x^2)+7*(x^4)

i[poly]

Holubecz Judit

P[x_]=6*x^6+4*5x+6
Unprotect[M]
M=MonomialList[P[x]]
Unprotect[E]
E=CoefficientList[P[x],x]
For[k=Length[M],1 ≤k,k=k-1,E[[ Exponent[ M[[k]],x] +1]]=E[[ Exponent[ M[[k]],x] +1]] * x^(Exponent[ M[[k]],x]+1)/(Exponent[ M[[k]],x]+1) ]
S=0
For [k=1,k<=Length[E],k++,S=S+E[[k]] ]
S=S+c
Print[S]

Polinomok integrálását tudja elvégezni a fenti program.

Kiss Ágnes

poly=Plus@@((Range[4]+2)(x^(Range[4]-1)))-5

ClearAll[int]; int[x_+y_]:=int[x]+int[y]

int[poly]

int[c_ x_]:=c int[x]/;FreeQ[c,x]

int[poly]

int[c_]:=c x/;FreeQ[c,x]

int[poly]

int[((x_)^(n_.))]:=((x^(n+1))/(n+1))/;FreeQ[n,x]

int[poly]

?int

Kovács Luca Zsuzsanna

polinom =Plus@@((Range[4]+2)(x^(Range[4]-1)))-5

ClearAll[d];
d[x_+y_]:=d[x]+d[y]
d[polinom]
d[c_ x_]:=c d[x]/;FreeQ[c,x]
d[polinom]
d[c_/;FreeQ[c,x]]:=0
d[polinom]
d[((x_)^(n_))]:=n (x^(n-1))/;FreeQ[n,x]
d[polinom]

ClearAll[i];
i[x_+y_]:=i[x]+i[y]
i[polinom]
i[c_ x_]:=c i[x]/;FreeQ[c,x]
i[polinom]
i[c_]:=c x /;FreeQ[c,x]
i[polinom]
i[x_^(n_)]:= x^(n+1)/(n+1) /;FreeQ[n,x]
i[polinom]

Palej Gréta

P[x_]=6*x^6+4*5x+6
Unprotect[M]
M=MonomialList[P[x]]
Unprotect[E]
E=CoefficientList[P[x],x]
For[k=Length[M],1 ≤k,k=k-1,E[[ Exponent[ M[[k]],x] +1]]=E[[ Exponent[ M[[k]],x] +1]] * x^(Exponent[ M[[k]],x]+1)/(Exponent[ M[[k]],x]+1) ]
S=0
For [k=1,k<=Length[E],k++,S=S+E[[k]] ]
S=S+c
Print[S]

Polinomok integrálását tudja elvégezni a fenti program.

Pap Máté

Q[x_]=3*x^2+6*x+9
Unprotect[L]
L=MonomialList[Q[x]]
Unprotect[E]
E=CoefficientList[Q[x],x]
For[i=Length[L],1 ≤i,i=i-1,E[[ Exponent[ L[[i]],x] +1]]=E[[ Exponent[ L[[i]],x] +1]] * x^(Exponent[ L[[i]],x]+1)/(Exponent[ L[[i]],x]+1) ]
Z=0
For [i=1,i<=Length[E],i++,Z=Z+E[[i]] ]
Z=Z+C
Print[Z]

Polinomok integrálása.

Papp Artúr

ClearAll[i];
ClearAll[f,g];
i[x_+y_]:=i[x]+i[y];
i[x_-y_]:=i[y]-i[y];
i[x_]:=((x^2)/2);
i[c_ x_]:=c i[x]/;FreeQ[c,x];
i[c_]:=c x/;FreeQ[c,x];
i[((x_)^(n_))]:=((x^(n+1))/(n+1))/;FreeQ[n,x];
i[(1/(x_))]:=Log[x];
i[(E^(x_))]:=(E^x);
i[Sin[x_]]:=-Cos[x];
i[Cos[x_]]:=Sin[x];
?i

poly=Plus@@((Range[5]+3)(x^(Range[5]-1)))-6;
Range[5]+2;
(x^(Range[5]));
(Range[5]+2)(x^(Range[5]-1));
(Range[5]+2).(x^(Range[5]-1))

i[poly]

i[Cos[3x]-x]

i[Cos[x]-x]

Integrate[poly,x]

Papp János

integ[x_+y_]:=integ[x]+integ[y];
integ[x_-y_]:=integ[y]-integ[y];
integ[c_ x_]:=c integ[x]/;FreeQ[c,x];
integ[c_]:=c x/;FreeQ[c,x];
integ[(1/(x_))]:=Log[x];
integ[((x_)^(n_))]:=((x^(n+1))/(n+1))/;FreeQ[n,x];
integ[(e^(x_))]:=(e^x);
integ[Cos[x_]]:=Sin[x];
integ[Sin[x_]]:=-Cos[x];

Ki fogja kipróbálni?

Podonyi Anikó

ClearAll[i];
ClearAll[f,g];
i[x_+y_]:=i[x]+i[y];
i[x_-y_]:=i[y]-i[y];
i[x_]:=((x^2)/2);
i[c_ x_]:=c i[x]/;FreeQ[c,x];
i[c_]:=c x/;FreeQ[c,x];
i[((x_)^(n_))]:=((x^(n+1))/(n+1))/;FreeQ[n,x];
i[(1/(x_))]:=Log[x];
i[(E^(x_))]:=(E^x);
i[Sin[x_]]:=-Cos[x];
i[Cos[x_]]:=Sin[x];
?i

poly=Plus@@((Range[5]+3)(x^(Range[5]-1)))-6;
Range[5]+2;
(x^(Range[5]));
(Range[5]+2)(x^(Range[5]-1));
(Range[5]+2).(x^(Range[5]-1))

i[poly]

Integrate[poly,x]

Varga Gábor

ClearAll[x,c,M]
P[x_]:=x^2+6*x+5
Unprotect[M]
M=MonomialList[P[x]]
For[k=1,k≤Length[M],k++,M[[k]]=M[[k]]*x/(Exponent[M[[k]],x]+1) ]
Print[Sum[k,{k,M}]+c]

A fenti program polinomokat tud integrálni. P(x)-hez beírva az integrálandó polinomot, kiírja annak primitív függvényét.

Hiszem, ha látom.

4. feladat*  (Nem kötelező)

Fekete Samu

n=1;a=1;While[(n<4000 && a<2),If[ Mod[Pi*10^n,10000]-Mod[Pi*10^n,1 ]==2010,a=n];n++];Print[a-3]

N[Mod[Pi*10^1012,10000],10]

(*Tehát a 1009edik tizedesjegytől kezdve szerepel először a 2010.*)

Kiss Ágnes

Hol fordul elő először π számjegyei között a 2010 szám?

i=1;While[Mod[Floor[Expand[N[Pi,i]*(10^i)]]-2010,10000]!=0,i++]

Print[i+1]

Az 1013. helyen fordul elő először.

N[Pi,1013]

Kerekítés miatt 2011-nek látszik, de:

Floor[Expand[N[Pi,1013]*(10^1012)]]

Valójában 2010.

?Mod

?Floor

Kovács Luca Zsuzsanna

a program lépései:

1.lépés: π számjegyeit kiíratom sorban úgy, hogy a számjegyeket egy listába tegye, és egy elem legyen egy számjegy (RealDigits paranccsal)

while-lal csinálom

2.lépés: fusson i végig az elemeken egyesével

3.lépés: ha 2-est talál, akkor nézze meg az utána levő elemet, ha ez 0-ás, akkor vizsgálja meg a 0 utáni elemet, ha ez 1-es, akkor az utána levő elemet nézze, ha ez 0-ás, akkor írja ki a 2-es indexét, azaz, hogy hanyadik helyen van a listában

4.lépés: ha a 2-es után nem 0 van, akkor i menjen tovább, és keresse a következő 2-est; ha a 2-es után 0 áll, de a 0 után nem 1-es következik, akkor i "keresse" a következő 2-est; ha a 2-es után 0 áll, a 0 után 1, de az 1-es után nem 0 jön, akkor is i "keresse" a következő 2-est

pilista=RealDigits[N[Pi,n]]

i=1;

For[i,If[pilista[[i]]==2&&pilista[[i+1]]==0&&pilista[[i+2]]==1&&pilista[[i+3]]==0,Print[i]],i++]

Lelkes Ádám

For[n=1,Mod[Floor[Pi*10^(n+3)],10000]≠2010,n++]

Print[n]

Print[Mod[Floor[Pi*10^(n+3)],10000]]

Azaz a tizedesvessző utáni 1009. tizedesjegytől jelenik meg a ℼ számjegyei között a 2010 számjegysorozat.

Nagy László

Szorgalmi
S:=Characters[ToString[N[Pi,2000]]]
i:=1
While[ Not[S[[i]] =="2" && S[[i+1]] == "0" && S[[i+2]] == "1" && S[[i+3]]=="0"], i++]
Print[i-1]

Varga Gábor

n:=1020
S:=Characters[ToString[N[π,n]]]
Delete[S,2]
i:=1
While[i<=n-4 && Not[S[[i]]=="2" && S[[i+1]]=="0" && S[[i+2]]=="1" && S[[i+3]]=="0"],i++]
Print[i]

Tehát az 1011. számjegytől szerepel először a 2010 szám.

5. feladat*  (Nem kötelező)

Írjunk Until függvényt, írjunk ,,fordított'' Fold-ot.

Varga Gábor

Until[test,body]:=Function[{test,body},body;
While[Not[test],body]]