Busai Ágota
(R7SRBI)

Tetszőleges függvény aszimptotáinak meghatározása

Külön kezeljük a függőleges és a nem függőleges aszimptotákat.

Segédfüggvények

Függőleges aszimptoták keresése

Az f függvény függőleges aszimptotái az első tengelyt a függvény szinguláris pontjaiban metszik, azaz (1/f) zérushelyeiben, legyenek ezek (Subscript[c, i])-k. Így a függőleges aszimptoták egyenletei a következő alakúak:

x=(Subscript[c, i]).

A vertical függvény visszatérési értéke egy (Subscript[c, i])-ket tartalmazó lista, bemenő paramétere pedig az f függvény.

vertical[fval_]:=Module[{sol,c={}},
sol={ToRules[Reduce[1/fval==0,x,Reals]]};
If[!(sol==={}),c=x/.sol];
c
]

Nem függőleges aszimptoták keresése

Nem függőleges aszimptota esetén a függvény első deriváltjának határértéke ±∞-ben adja az aszimptota meredekségét, jelölje ezt a, ez vízszintes aszimptota esetén zérus, az x↦f(x)-a x  függvény ±∞-beli határértéke pedig az aszimptota metszetét az első tengellyel, jelölje ezt b.
A nem függőleges aszimptoták egyenletei a következő alakúak:

y=a x+b.

A nonvertical függvény visszatérési értéke egy lista az {a,b} párokból, bemenő paramétere pedig az f függvény értéke az x helyen.

nonvertical[fval_]:=Module[
{pairs={},lm,lp},
If[
NumericQ[Limit[fval-(lm=Limit[D[fval,x],x->-∞])x,x->-∞]],
AppendTo[pairs,
{lm,Limit[fval-lm x,x->-∞]}]
];
If[
NumericQ[Limit[fval-(lp=Limit[D[fval,x],x->+∞])x,x->+∞]],
AppendTo[pairs,
{lp,Limit[fval-lp x,x->+∞]}]
];
Union[pairs]
]

Megjelenítés

Az asyPlot függvény ábrázolja az f függvényt és annak aszimptotáit.

asyPlot[fval_]:=Module[
{
n=4 Max[Abs[asymptote[fval]]],
vert=Apply[{#,x}&,Partition[vertical[fval],1],{1}],
nonvert=Flatten[Apply[{x,#1 x+#2}&,nonvertical[fval],{1}]]
},
ParametricPlot[{{x,fval},nonvert,vert},
{x,-n,n},
Exclusions->vertical[fval],
PlotRange->n,AspectRatio->Automatic,
PlotStyle->{Green,Cyan,Yellow},
AxesLabel->{Style["x",Italic],Style["f(x)",Italic]}
]
]

Az aszimptoták meghatározása

Az asymptote függvény

Az asymptote függvény egy olyan kétdimenziós listát ad vissza, melyben az egyelemű listák felelnek meg a függőleges aszimptotákat meghatározó (Subscript[c, i])-knek, a kételemű listák pedig a nem függőleges aszimptotákat karakterizáló {a,b} pároknak.

asymptote[fval_]:=Module[{asy={}},
If[
Dimensions[vertical[fval]][[1]]≠0,
AppendTo[asy,Partition[vertical[fval],1]]
];
If[
Dimensions[nonvertical[fval]][[1]]≠0,
AppendTo[asy,nonvertical[fval]]
];
Union[Flatten[asy,1]]
]

A konkrét feladat

Az alábbi függvény aszimptotáinak meghatározása:

ℝ\{-5,1}∋x↦((2 (x^2)-3 x+5)/((x-1)(x+5))).

asymptote[((2(x^2)-3x+5)/((x-1)(x+5)))]

asyPlot[((2(x^2)-3x+5)/((x-1)(x+5)))]

Állítsuk elő minél többféle módon a Hilbert-mátrixokat!

HilbertMatrix

HilbertMatrix[3]//MatrixForm

HilbertMatrix[{3,3}]//MatrixForm

A Hilbert-mártix (i,j) eleme a következőképpen számolható:

(Subscript[H, ij])=(1/(i+j-1))=((∫_0)^1)(x^(i+j-2))dx

Table

tableH[n_,m_]:=Table[1/(i+j-1),{i,1,n},{j,1,m}]

tableH[3,3]//MatrixForm

tableHint[n_,m_]:=Table[Integrate[x^(i+j-2),{x,0,1}],{i,1,n},{j,1,m}]

tableHint[3,3]//MatrixForm

Array

arrayH[n_,m_]:=Array[1/(#1+#2-1)&,{n,m}]

arrayH[3,3]//MatrixForm

arrayHint[n_,m_]:=Array[Integrate[x^(#1+#2-2),{x,0,1}]&,{n,m}]

Toeplitz-mátrixszal

tpH[n_,m_]:=Reverse[ToeplitzMatrix[1/Range[n+m-1,1,-1]]][[Range[n],Range[m]]]

tpH[3,3]//MatrixForm

Vizsgáljuk meg a Hilbert-mátrixok többi sajátértékének a mérettől való függését!

Gersgorin-tétel és a sajátértékek

Gersgorin-tétel

gersgorin[n_]:=Module[
{i,j},
Graphics[
Table[
{
{
Circle[
{HilbertMatrix[n][[i,i]],0},
Sum[HilbertMatrix[n][[i,j]],{j,1,n}]
]
},
{PointSize[Large],RGBColor[0,1-i/n,i/n],
Point[{N[Eigenvalues[HilbertMatrix[n]][[i]]],0}]
}
},
{i,1,n}],
Axes->True]
]

Manipulate[gersgorin[n],{n,1,10,1}]

Írjunk olyan függvényt, amely egy lineáris egyenletrendszernek meghatározza együtthatómátrixát és jobb oldalát!

A blist segédfüggvény

A blist függvény állítja elő az egyenletrendszer jobb oldalából álló vektort.

blist[system_]:=Module[
{eq=StringCount[ToString[system],"=="]},
Table[
ToExpression[
StringReplace[ToString[Partition[system,1],InputForm],"=="->"},{"]
][[i]],
{i,2,2 eq,2}
]
]

blist[{(Subscript[a, 11])(Subscript[x, 1])+(Subscript[a, 12])(Subscript[x, 2])==(Subscript[b, 1]),(Subscript[a, 21])(Subscript[x, 1])+(Subscript[a, 22])(Subscript[x, 2])==(Subscript[b, 2]),(Subscript[a, 31])(Subscript[x, 1])+(Subscript[a, 32])(Subscript[x, 2])==(Subscript[b, 3])}]

bmasik[system_]:=List/@system[[All,2]];

bmasik[{(Subscript[a, 11])(Subscript[x, 1])+(Subscript[a, 12])(Subscript[x, 2])==(Subscript[b, 1]),(Subscript[a, 21])(Subscript[x, 1])+(Subscript[a, 22])(Subscript[x, 2])==(Subscript[b, 2]),(Subscript[a, 31])(Subscript[x, 1])+(Subscript[a, 32])(Subscript[x, 2])==(Subscript[b, 3])}]

A toMatrix függvény

toMatrix[system_]:=Module[
{eq=StringCount[ToString[system],"=="],
var},
var=StringCount[ToString[system],"+"]/eq+1;
{
Partition[
Table[
ToExpression[
StringReplace[
ToString[
Flatten[
Complement[
ToExpression[StringReplace[ToString[Partition[system,1],InputForm],"=="->"},{"]],blist[system]]
],
InputForm],
RegularExpression["[\\*]|\\+"]->","]
][[i]],
{i,1,2 eq var,2}
],var],
Flatten[blist[system]]
}
]

A mintabemenetre

toMatrix[{(Subscript[a, 11])(Subscript[x, 1])+(Subscript[a, 12])(Subscript[x, 2])==(Subscript[b, 1]),(Subscript[a, 21])(Subscript[x, 1])+(Subscript[a, 22])(Subscript[x, 2])==(Subscript[b, 2])}]

Egy másik megoldás (miért elemezni! is?Tessék)

toMasik[system_,var_]:={Plus@@@CoefficientList[system[[All,1]],var],system[[All,2]]};
toMasik[{(Subscript[a, 11])(Subscript[x, 1])+(Subscript[a, 12])(Subscript[x, 2])==(Subscript[b, 1]),(Subscript[a, 21])(Subscript[x, 1])+(Subscript[a, 22])(Subscript[x, 2])==(Subscript[b, 2])},{(Subscript[x, 1]),(Subscript[x, 2])}]

toMasik[{(Subscript[a, 11])(Subscript[x, 1])+(Subscript[a, 12])(Subscript[x, 2])==(Subscript[b, 1]),(Subscript[a, 21])(Subscript[x, 1])+(Subscript[a, 22])(Subscript[x, 2])==(Subscript[b, 2]),(Subscript[a, 31])(Subscript[x, 1])+(Subscript[a, 32])(Subscript[x, 2])==(Subscript[b, 3]),(Subscript[a, 41])(Subscript[x, 1])+(Subscript[a, 42])(Subscript[x, 2])==(Subscript[b, 4])},{(Subscript[x, 1]),(Subscript[x, 2])}]