Programok, analízis

3. előadás

Tóth János, jtoth@math.bme.hu, math.bme.hu/~jtoth
Nagy Ilona, ilona.nagy@gmail.com
Gyebrószki Gergely, gyebroszkigergely@gmail.com

SetOptions[Plot,AxesStyle->Arrowheads[Automatic]];
SetOptions[ListPlot,AxesStyle->Arrowheads[Automatic]];

Alprogramok (szubrutin, eljárás)

Szekvencia, egysoros, Module, Block, With

Riemann-összegek

RiemannSum[fval_,{x_,a_,b_},n_]:=
Sum[Evaluate[(fval/.x->(a+(b-a)(k/n)))],{k,0,n-1}] ((b-a)/n)

RiemannSum[(x^2),{x,0,2},n]

Limit[%,n->+∞]

Integrate[(x^2),{x,0,2}]

Aszimptoták

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

Plot[f[x],{x,-1,1},Exclusions->Automatic]

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

b=Limit[f[x]-a x,x->+∞]

Plot[{f[x],a x+b},{x,0,20}]

ClearAll[asz];
asz[fval_,var_:x]:=Module[{a,b},a=Limit[(fval/var),var->+∞];b=Limit[fval-a var,var->+∞];Plot[{fval,a var+b},{var,0,6},PlotLabel->TraditionalForm[fval]]]

asz[(((x^2)+3)/(2x+1))]

asz[(((x^2)+3)/(2x+1)),x]

asz[(((gg^2)+3)/(2gg+1)),gg]

Forgatás

MatrixPower[{{1,(θ/n)},{-(θ/n),1}},n]

Limit[%,n->+∞]//FullSimplify

ClearAll[f];Limit[(1/f[x+h]-1/f[x])/h,h->0,Analytic->True]

Limit[((x y)/((x^2)+(y^2))),x->0]

Limit[((x y)/((x^2)+(y^2))),y->0]

((x y)/((x^2)+(y^2)))/.x->y

Limit[((x y)/((x^2)+(y^2)))/.x->y,y->0]

Vigyázat, kétféle nyíl!

Limit[((x y)/((x^2)+(y^2)))/.x->t y,y->0]

Deriválás integrálással

Limit[With[{n=5},(1/2)(((2n+1)!!)/(h^(n+1))) Integrate[LegendreP[n,(t/h)] f[x+t],{t,-h,h}]],h->0,Analytic->True]

n

Module[{xx},xx]

Module[{xx=2},xx]

xx

Sorbafejtés

Series[Exp[x],{x,0,10}]

Normal[%]

Series[Cos[x]/x,{x,0,10}]

1/(1+%)+%^2

Series[1/Sin[x]^10,{x,0,2}](*Laurent*)

Series[Sin[1/x],{x,Infinity,10}]

ClearAll[a];
Series[Root[#^5+a #+1&,1],{a,0,10}]

Integrate[Sin[a Sin[x]],{x,0,a}]

Series[Integrate[Sin[a Sin[x]],{x,0,a}],{a,0,15}]

CoefficientList[Series[1/(1-t-t^2),{t,0,15}],t]

CoefficientList[Series[1/Sqrt[1-2 t x +t^2],{t,0,5}],t](*Legendre*)

Hányféleképpen lehet fölváltani 1 USD-t

gf[z_]:=1/Apply[Times,1-z^{1,5,10,25,50,100}]

SeriesCoefficient[Series[gf[z],{z,0,100}],100]

Needs["Combinatorica`"]

Partitions[12,3]// Length

With (*lokális állandók*)

ClearAll[f,x,y];f[x_]:=With[{y=x+1},1+y+y^2]

{x,y,f[a],f[y]}

{x,y,f[a],f[y]}

newton[f_,x0_]:=
With[{fp=f'},FixedPoint[#-f[#]/fp[#]&,x0]]

newton[Cos,1`20]

newton[Cos[#]-#&,1`20]

Sum[Fibonacci[n](t^n),{n,0,+∞}]//FullSimplify

Block(*ideiglenes változócsere*)

Block[{$RecursionLimit=20},x=x+1]

$RecursionLimit

Block[{$MaxPrecision=24,$MinPrecision=24},Sin[1`20]]

$MaxPrecision

$MinPrecision

ClearAll[x];Block[{x=5},Expand[(1+x)^5]]

x

cl[1]=1;
cl[n_Integer?EvenQ]:=cl[n/2]+1
cl[n_Integer?OddQ]:=cl[((3n+1)/2)]+1

cccl[n_Integer]:=cl[n/2]+1/;EvenQ[n]

Block[{$RecursionLimit=Infinity},cl[27988635]]

cl[27988635]

Block[{fval=Sin[x+I y]},ParametricPlot[Evaluate[{Re[fval],Im[fval]}],{x,-π,π},{y,-2,2}]]

fval

x=7;
Block[{x},Print[x]]

Module[{x},Print[x]]

Mindig újat csinál. Block: mint az iterátorok:

i=5;
Table[i,{i,1,i}]

Egyváltozós függvények szélsőértékhelyeiről

ClearAll[f];
f[x_]:=16-36 x+28 (x^2)-9 (x^3)+(x^4)

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

f'[x]

f2[x_]=D[f[x],{x,2}]

f3[x_]=Derivative[3][f][x]

Needs["PlotLegends`"]

Plot[{f[x],f'[x]},{x,0.5,4.5},Filling->{1->{2}},PlotLegend->{fun,der},LegendPosition->{1.1,-0.4}]

sol=Solve[f'[x]==0,x]

f''[x]/.sol

f''[x]/.sol//Simplify

N[%]

Az első hely maximumhely, a második minimumhely. Szedjük össze.

ClearAll[elemzo1];elemzo1[fval_,var_:x]:=Module[{},sol=Solve[D[fval,var]==0,x];D[fval,{var,2}]/.sol]

elemzo1[f[x]]

ClearAll[elemzo2];elemzo2[fval_,var_:x]:=Module[{},sol=Solve[D[fval,var]==0,x];D[fval,{var,2}]/.sol,]

f::boole="The value `1` is not True or False.";

f[b_]:=Switch[b,True,1,False,0,_,Message[f::boole,b];0]

s[x_]:=Switch[f''[x],Positive,ToString[x]<>"is minimum",Negative,ToString[x]<>"maximum",_,"tovább"]

(s[x]/.#)&/@sol

g[x_]:=(x^3)(E^(-x))

Mintázatok

Függvények definíciójánál

f1[x_Real]:=Sin[x]

f1/@{2,I,2.}

f2[x__]:=Times[x]

{f2[],f2[5],f2[3,4]}

f3[x___]:=Times[x]

{f3[],f3[5],f3[3,4]}

f2[{5+3I,1-4I}]

f[I]

g[list_]:=Part[list,1]^Part[list,2]

h[{x_,y_}]:=x^y

h[a|b]:=p

{h[a],h[b],h[c],h[d]}

Kiválasztásnál

Select[{1,2,4,7,6,2},#>2&]

ClearAll[x];Count[{3,4,x,x^2,x^3},x^_]

DeleteCases[{3,4,x,2+x,3+x},_Integer,Infinity]

Cases[{{1,2,3},a,{4,5}},t:{__Integer}:>(t^2)]

Cases[{1,1,f[a],2,3,y,f[8],9,f[10]},Except[_Integer]]

ClearAll[f,a,y,x,g];Cases[{1,1,f[a],2,3,y,g[8],9,f[10]},h_[x_]->x]

Lokális értékadásnál

ff[a]+ff[b]+gg[a]/.ff[x_]->(x^2)

f[{a,b}]+f[c]/.f[{x_,y_}]->p[x+y]

{1,x,x^2,x^3}/.x^n_->r[n]

{1,x,x^2,x^3}/.x^n_.->r[n]

ClearAll[a,b,d,n];{a/b,1/b^2,2/b^2}/.b^n_->d[n]

FullForm[{a/b,1/b^2,2/b^2}]

{a,b,c,d}/.(a|b)->p

Helyzetmeghatározásnál

Position[{f[a],g[b],f[c]},f[x_]]

Egy kis analízis

Integrate[((E^x)/((x^3)-1)),x]

D[%,x]

Simplify[%]

Limit[((Sin[x])/x),x->0]

Limit[Sin[x],x->+∞]

Limit[(((1+(x/n)))^n),n->+∞]

Limit[((Sqrt[y-x])/(Sqrt[1+x])),x->+∞]

Limit[Floor[(x^2)]x,x->4,Direction->1]

Limit[Floor[(x^2)]x,x->4,Direction->-1]

Plot[Floor[(x^2)]x,{x,3,5}]

Limit[((Gamma[x+(1/2)])/((Sqrt[x])Gamma[x])),x->+∞]

Limit[Fibonacci[k+1]/Fibonacci[k],k->+∞]

FullSimplify[%-GoldenRatio]

Limit[(x^a),x->+∞,Assumptions->a<0]

Limit[(x^a),x->+∞,Assumptions->a==0]

Limit[(x^a),x->+∞,Assumptions->a>0]

Pólus

Limit[Tan[x],x->(π/2),Direction->#]&/@{-1,1}

Limit[Tan[x],x->(π/2),Direction->-1]

Házi feladatok

Ha találnak kész megoldást az is jó, de akkor írják meg elemibb módon. 
Ha megírták elemi módon, keressenek beépített megoldást.

Határozza meg az alábbi függvény szélsőértékhelyeit: ℝ∋(x,y)↦f(x,y):=(x^3)(y^2)(4-x-y)

A megoldó programot általánosítsa úgy, hogy működjön tetszőleges polinomra.

Írjon programot, amely ellenőrzi, hogy egy adott kétváltozós függvénynek van-e harmonikus társa, és ha van megkeresi azt. Alkalmazzuk a programot legalább 3 függvényre.

Találjon ki ábrázolási módokat komplex függvények megjelenítésére, és alkalmazza azokat a következő függvényekre: ln,cos,exp,z↦((3z+1)/(z-1)).