Nekonecne rady s programem Maple
Stejnomerna konvergence posloupnosti funkci
Karel Srot, xsrot@math.muni.cz
> |
vypocet metodou "krok za krokem"
Tato cast ilustruje overeni stejnomerne konvergence posloupnosti funkci metodou hledani lokalnich extremu. Vypocet sleduje postup provadeny pri rucnim vypoctu.
> |
Priklad 1:
Vysetrete, zda posloupnost {
} na intervalu [0,1] stejnomerne konverguje k funkci
y=0
.
> | restart; |
> |
definujeme posloupnost funkci a dale take funkci predstavujici uvazovanou limitu.
> | fn:=(n,x)->x^n-x^(n+1); |
> | lim_fn:=x->0; |
sestrojime animaci funkcni posloupnosti, abychom ziskali predstavu o zpusobu konvergence
> | plots[animate](fn(i,x),x=0..1,i=1..20, frames=20, thickness=2); |
> |
Budeme hledat extremy rozdilu fn(x,n) - lim_fn(x). V krajnich bodech intervalu je evidentne rozdil roven 0.
> | rozdil:=(n,x)->fn(n,x)-lim_fn(x); |
> | diff(rozdil(n,x),x); |
> | solve(%=0,x); |
rozdil tedy nabyva extremu (lokalniho maxima, jak je patrne z animace) v bode
> | ext:=%; |
urcime limitu funkcni hodnoty extremu pro n jdouci k nekonecnu
> | limit(rozdil(n,ext),n=infinity); |
Pri n jdoucim do nekonecna se teda hodnota rozdilu (chyby) blizi k 0. Zadana posloupnost funkci tedy stejnomerne konverguje k funkci y=0 .
> |
Priklad 2:
Vysetrete, zda posloupnost {
} na intervalu [0,1] stejnomerne konverguje k funkci
y=0
.
> | fn:=(n,x)->x^n-x^(2*n); |
> | lim_fn:=x->0; |
> | plots[animate](fn(i,x),x=0..1,i=1..20, frames=20, numpoints=200, thickness=2); |
Budeme postupovat stejne jako v predchozim prikladu.
> | rozdil:=(n,x)->fn(n,x)-lim_fn(x); |
> | diff(rozdil(n,x),x); |
> | solve(%=0,x); |
> | ext:=%; |
> | limit(rozdil(n,ext),n=infinity); |
Hodnota extremu tedy se vzrustajicim n neklesa k 0 a proto konvergence neni stejnomerna.
> |
Priklad 3:
Vysetrete, zda nize definovana posloupnost funkci konverguje stejnomerne na intervalu [0,1].
> | fn:=(n,x)->x*n/(1+n+x); |
spocitame limitu posloupnosti
> | limit(fn(n,x),n=infinity); |
> | lim_fn:=x->x; |
> | rozdil:=(n,x)->fn(n,x)-lim_fn(x); |
> | diff(rozdil(n,x),x); |
> | solve(%=0,x); |
> | ext:=%; |
Nalezli jsme dva body, ve kterych funkce nabyva extremu. Overime, zda tyto body (pri n jdoucim do nekonecna) spadaji do vysetrovaneho intervalu
> | limit(ext[1],n=infinity); |
> | limit(ext[2],n=infinity); |
Ani jedna limita nespada do vysetrovaneho intervalu. Overime tedy pouze krajni body intervalu.
> | limit(rozdil(n,0),n=infinity); |
> | limit(rozdil(n,1),n=infinity); |
Posloupnost konverguje stejnomerne.
> |
vypocet pomoci procedury TestSequenceUniformConvergence
Zapisnik ilustruje pouziti procedury TestSequenceUniformConvergence pro overovani stejnomerne konvergence posloupnosti funkci.
> |
> | restart; |
> | currentdir("c:/devel/maple/phd/export/"): |
> | read "posl_a_rady_fci_proc.mpl": |
> |
> | infolevel[TestSequenceUniformConvergence]:=2: |
> |
Priklad 1:
Overte, zda uvedena funkcni posloupnost konverguje stejnomerne na intervalu [-3,3]
> | fn:=(n,x)->x+x/(1+x^2*n^2); |
> |
> | g:=[seq(plot(fn(i,x),x=-3..3),i=0..9)]: |
> | plots[display](g,insequence=true,scaling=constrained); |
> | TestSequenceUniformConvergence(fn(n,x), n, x=-3..3); |
TestSequenceUniformConvergence: Using the limit function: x
TestSequenceUniformConvergence: Error function: x/(1+x^2*n^2)
TestSequenceUniformConvergence: Extrema points: [-3, 3, -1/n, 1/n]
TestSequenceUniformConvergence: Error value at extrema points: [-3/(1+9*n^2), 3/(1+9*n^2), -1/2/n, 1/2/n]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
Limitou posloupnosti je tedy funkce y=x a posloupnost funkci konverguje stejnomerne.
> |
Priklad 2:
> | aN:=sqrt(x^2+(1/n)); |
> | TestSequenceUniformConvergence(aN, n, x=0..1); |
TestSequenceUniformConvergence: Using the limit function: x
TestSequenceUniformConvergence: Error function: (x^2+1/n)^(1/2)-x
TestSequenceUniformConvergence: Extrema points: [0, 1]
TestSequenceUniformConvergence: Error value at extrema points: [(1/n)^(1/2), (1+1/n)^(1/2)-1]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
Priklad 3:
> | fn:=(n,x)->sin(n*x)/(n+1); |
> | g:=[seq(plot(fn(i,x),x=-5..5),i=1..10)]: |
> | plots[display](g,insequence=true,scaling=constrained); |
> | TestSequenceUniformConvergence(fn(n,x), n, x=-Pi..Pi); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: sin(x*n)/(n+1)
TestSequenceUniformConvergence: Extrema points: [-Pi, Pi, 1/2*Pi/n]
TestSequenceUniformConvergence: Error value at extrema points: [-sin(Pi*n)/(n+1), sin(Pi*n)/(n+1), 1/(n+1)]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
> |
Priklad 4:
> | aN:=x^n; |
> | TestSequenceUniformConvergence(aN, n, x=0..1); |
TestSequenceUniformConvergence: Could not find the limit function
predame procedure uvazovanou limitu posloupnosti a nechame proceduru overit stejnomernou konvergenci
> | TestSequenceUniformConvergence(aN, n, x=0..1, piecewise(x<1,0,1)); |
TestSequenceUniformConvergence: Using the limit function: piecewise(x < 1,0,1)
TestSequenceUniformConvergence: Error function: piecewise(x < 1,x^n,1 <= x,x^n-1)
TestSequenceUniformConvergence: Derivative not defined at points: [0, 1]
TestSequenceUniformConvergence: Extrema points: [0, 1, 0, 1]
TestSequenceUniformConvergence: Error value at extrema points: [0, 0, 0, 0]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
> |
Priklad 5:
> | fn:=(n,x)->exp(n*(x-1)); |
> | g:=[seq(plot(fn(i,x),x=-infinity..1.1),i=1..20)]: |
> | plots[display](g,insequence=true,scaling=constrained); |
> | TestSequenceUniformConvergence(fn(n,x), n, x=-infinity..0.9,0); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: exp(n*(-1+x))
TestSequenceUniformConvergence: Extrema points: [-infinity, .9]
TestSequenceUniformConvergence: Error value at extrema points: [exp(-n*infinity), exp(-.1*n)]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
Test, je-li limitni funkci funkce y=0 i na intervalu [0,1].
> | TestSequenceUniformConvergence(fn(n,x), n, x=0..1, 0); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: exp(n*(-1+x))
TestSequenceUniformConvergence: Extrema points: [0, 1]
TestSequenceUniformConvergence: Error value at extrema points: [exp(-n), 1]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 1
animace zachycujici posloupnost na intervalu [0,1]
> | g2:=plotStripAroundFunction(0,x=0..1,0.1,color=yellow): |
> | g:=[seq(plots[display](plot(fn(i,x),x=0..1),g2),i=1..20)]: |
> | plots[display](g,insequence=true,scaling=constrained); |
> |
Priklad 6:
> |
> | fn:=(n,x)->x^n-x^(n+1); |
> | TestSequenceUniformConvergence(fn(n,x), n, x=0..1, 0); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: x^n-x^(n+1)
TestSequenceUniformConvergence: Extrema points: [0, 1, n/(n+1)]
TestSequenceUniformConvergence: Error value at extrema points: [0, 0, (n/(n+1))^n-(n/(n+1))^(n+1)]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
> |
> | g1:=plotStripAroundFunction(0,x=0..1,1/10,color=yellow): |
> | graf:=n->plots[display](plot(fn(i,x),x=0..1,thickness=2),g1): |
> | plots[display](seq(graf(i),i=1..10),insequence=true,scaling=constrained); |
> |
Priklad 7:
> | aN:=(n*x)/(1+n+x); |
> | TestSequenceUniformConvergence(aN, n, x=0..1); |
TestSequenceUniformConvergence: Using the limit function: x
TestSequenceUniformConvergence: Error function: n*x/(1+n+x)-x
TestSequenceUniformConvergence: Extrema points: [0, 1]
TestSequenceUniformConvergence: Error value at extrema points: [0, n/(2+n)-1]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0
> |
Priklad 8:
> | aN:=exp(n*(x-1)); |
> | TestSequenceUniformConvergence(aN, n, x=-infinity..1,0); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: exp(n*(-1+x))
TestSequenceUniformConvergence: Extrema points: [-infinity, 1]
TestSequenceUniformConvergence: Error value at extrema points: [exp(-n*infinity), 1]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 1
> |
Priklad 9:
> | fn:=(n,x)->ln(n*x)/(n*x); |
> | TestSequenceUniformConvergence(fn(n,x), n, x=0.25..3); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: ln(x*n)/n/x
TestSequenceUniformConvergence: Extrema points: [.25, 3]
TestSequenceUniformConvergence: Error value at extrema points: [4.000000000*ln(.25*n)/n, 1/3*ln(3*n)/n]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 0.
> | g2:=plotStripAroundFunction(0,x=0.25..3,1/4,color=yellow): |
> | g:=[seq(plots[display](plot(fn(i,x),x=0.25..3,y=-1..1),g2),i=1..50)]: |
> | plots[display](g,insequence=true,scaling=constrained); |
> |
Priklad 10:
> | aN:=(n*x)/(1+n^2*x^2); |
> | TestSequenceUniformConvergence(aN, n, x=-1..1); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: n*x/(1+x^2*n^2)
TestSequenceUniformConvergence: Extrema points: [-1, 1, -1/n, 1/n]
TestSequenceUniformConvergence: Error value at extrema points: [-n/(n^2+1), n/(n^2+1), -1/2, 1/2]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 1/2
> |
Priklad 11:
> | aN:=x^n-x^(2*n); |
> | TestSequenceUniformConvergence(aN, n, x=0..1,0); |
TestSequenceUniformConvergence: Using the limit function: 0
TestSequenceUniformConvergence: Error function: x^n-x^(2*n)
TestSequenceUniformConvergence: Extrema points: [0, 1, exp(-ln(2)/n)]
TestSequenceUniformConvergence: Error value at extrema points: [0, 0, exp(-ln(2)/n)^n-exp(-ln(2)/n)^(2*n)]
TestSequenceUniformConvergence: Maximum limit value at extrema points: 1/4
> |
> |
Integrovani a derivovani stejnomerne konvergentni posloupnosti clen po clenu
> | restart; |
> |
> | # kvuli procedure barplot |
> | currentdir("c:/devel/maple/phd/export/"): |
> | read "posl_a_rady_fci_proc.mpl": |
> |
Priklad 1: Integrovani posloupnosti clen po clenu
Uvazme nasledujici posloupnost funkci. Tato posloupnost konverguje na R stejnomerne k funkci f(x)=0 .
> | fn:=(n,x)->piecewise(x<-n,0,x<0,(x+n)/n^2,x<n,(n-x)/n^2,0); |
> | MAXCOLORS:=5: |
> | graf:=n->plot(fn(n,x),x=-6..6,thickness=2,color=COLOR(HUE,min(0.7*(n-1)/MAXCOLORS,0.7))): |
> | plots[display](seq(graf(i),i=1..5)); |
> | limit(fn(n,x),n=infinity); |
V pripade uzavreneho intervalu (zde [-5,5]) muzeme zamenit poradi limity a integrace.
> | seq(evalf(int(fn(i,x),x=-5..5)),i=1..20); |
> |
> | limit(int(fn(n,x),x=-5..5),n=infinity) assuming n::posint; |
> | limit(int(fn(n,x),x=a..b),n=infinity) assuming n::posint, a::realcons, b::realcons; |
> |
> | barplot([seq(evalf(int(fn(i,x),x=-5..5)),i=1..50)], color=blue,thickness=2); |
Naopak pro x z celeho oboru R plati
> | limit(int(fn(n,x),x=-infinity..infinity),n=infinity) assuming n::posint; |
jelikoz pro kazde jednotlive n je hodnota integralu rovna jedne.
> | int(fn(n,x),x=-infinity..infinity) assuming n::posint; |
> |
Priklad 2: derivovani clen po clenu
Tento priklad ilustruje skutecnost, ze stejnomerna konvergence posloupnosti funkci neni zarukou konvergence jednotlivych derivaci funkci teto posloupnosti.
Uvazme nasledujici posloupnost. Tato posloupnost zrejme konverguje stejnomerne na celem R k funkci f(x)=0 .
> |
> | fn:=(n,x)->sin(n^2*x)/n; |
> | plots[animate](fn(i,x), x=-5..5, i=1..10,frames=10,scaling=constrained,numpoints=300); |
> | diff(sin(n^2*x)/n,x); |
> | dfn:=(n,x)->cos(n^2*x)*n; |
Posloupnosti prvnich derivaci nekonverguje v zadnem bode
.
> | plots[animate](dfn(i,x), x=-5..5, i=1..10,frames=10,scaling=constrained,numpoints=300); |
> | limit(dfn(n,x),n=infinity); |
> |
> |
> |
> |
> |