Nekonecne rady s programem Maple
Nekonecne rady funci
Karel Srot, xsrot@math.muni.cz
> |
> | currentdir("c:/devel/maple/phd/export/"): |
> |
Obor konvergence - metoda "krok za krokem"
zapisnik resi metodu vypoctu oboru konvergence rady funkci
> | restart: |
> |
Nacteme proceduru csum , jejimz autorem je Robert B. Israel a je soucasti Maple Advisor Database 1.01 pro Maple 6. Slouzi pro test konvergence ciselnych rad.
> | read "csum5.txt": |
> |
Priklad:
Urcete obor konvergence mocnine rady a sestrojte animaci ilustrujici konvergenci teto rady.
> | a:=n->(x^n)/(n*(n+1)); |
Obor konvergence nalezneme pomoci podiloveho kriteria a resime, pro ktera x je splnena podminka konvergence.
> | assume(x::real, n::posint): |
> | abs(a(n+1)/a(n)); |
> | simplify(%); |
> | L:=limit(%, n=infinity); |
> | solve(L<1); |
> | infolevel[csum]:=2: |
pomoci procedury csum resime konvergenci v krajnich bodech intervalu
> | csum(subs(x=1, a(n)), n); |
csum: Checking sum of 1/n/(n+1) over n
csum/limitzero: Checking limit of terms
csum/glimit: "glimit is not available, will use limit"
csum/limitzero: OK, limit is 0
csum/ratiotest: Trying ratio test
csum/ratiotest: Ratio test inconclusive with ratio limit 1
csum/loglogtest: Trying loglog test
csum/loglogtest: Loglog test succeeds
csum: Series 1/n/(n+1) converges absolutely
> | csum(subs(x=1, a(n)), n); |
csum: Checking sum of 1/n/(n+1) over n
csum/limitzero: Checking limit of terms
csum/limitzero: OK, limit is 0
csum/ratiotest: Trying ratio test
csum/ratiotest: Ratio test inconclusive with ratio limit 1
csum/loglogtest: Trying loglog test
csum/loglogtest: Loglog test succeeds
csum: Series 1/n/(n+1) converges absolutely
> |
muzeme se take pokusit nalezt soucet rady
> | s:=sum((x^n)/(n*(n+1)), n=1..infinity); |
animaci znazornujici konvergenci rady
> | g1:=plot(s, x=-1..1, thickness=2, color=green): |
> | g:=seq(plots[display](plot(sum((x^n)/(n*(n+1)), n=1..k), x=-1.5..1.5, y=-2..2, numpoints=200), g1), k=1..30): |
> | plots[display](g, insequence=true); |
> |
Priklad:
Urcete obor konvergence mocnine rady.
> | a:=n->exp(-n^2*x); |
> | assume(x::real, n::posint): |
> | abs(a(n)^(1/n)); |
> | simplify(%); |
> | limit(%, n=infinity); |
> | exp(limit(-n*x, n=infinity)); |
> | solve(%<1, x); |
> | csum(subs(x=0, a(n)), n); |
csum: Checking sum of exp(0) over n
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is exp(0)
csum: Series diverges
> |
> | s:=sum(exp(-n^2*x), n=0..infinity); |
> |
Priklad:
Urcete obor konvergence mocnine rady a vytvorte animaci ilustrujici konvergenci teto rady.
> | a:=n->ln(x)^n; |
> | assume(x::real, n::posint): |
> | simplify(abs(a(n)^(1/n)), symbolic); |
> | solve(%<1, x); |
> | simplify(subs(x=1/exp(1), a(n))); |
> | csum(%, n); |
csum: Checking sum of (-1)^n over n
csum: Alternate terms 1 and -1
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is 1
csum/alternate: Series diverges
> | simplify(subs(x=exp(1), a(n))); |
> | csum(%, n); |
csum: Checking sum of 1 over n
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is 1
csum: Series diverges
> |
> | s:=sum(ln(x)^n, n=0..infinity); |
> | g1:=plot(s, x=exp(-1)..exp(1), thickness=2, color=green): |
> | g:=seq(plots[display](plot(sum(ln(x)^n, n=0..k), x=(exp(-1)-0.05)..2.8, y=-1..50, numpoints=200), g1), k=1..40): |
> | plots[display](g, insequence=true); |
> |
Priklad:
Urcete obor konvergence mocnine rady
> | a:=n->x^n*tan(x/2^n); |
> | assume(x::real, n::posint): |
> | simplify(abs(a(n+1)/a(n))); |
> | limit(%, n=infinity); |
> | solve(%<1, x); |
Warning, solutions may have been lost
> | subs(x=-2, a(n)); |
> | csum(%, n); |
csum: Checking sum of -(-2)^n*tan(2/(2^n)) over n
csum: Alternate terms -4^k*tan(2*4^(-k)) and 2*4^k*tan(4^(-k))
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is -2
csum/alternate: Series diverges
> | subs(x=2, a(n)); |
> | simplify(%); |
> | csum(%, n); |
csum: Checking sum of 2^n*tan(2^(1-n)) over n
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is 2
csum: Series diverges
> |
Priklad:
Urcete obor konvergence mocnine rady
> | a:=(n,x)->n/((n+1)*(3*x^2+4*x+2)^n); |
> | assume(x::real, n::posint): |
> | simplify(abs(a(n+1,x)/a(n,x))); |
> | limit(%, n=infinity); |
> | solve(%<1, x); |
> | csum(a(n,-1), n); |
csum: Checking sum of n/(n+1) over n
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is 1
csum: Series diverges
> | csum(a(n,-1/3), n); |
csum: Checking sum of n/(n+1) over n
csum/limitzero: Checking limit of terms
csum/limitzero: Diverges, limit of terms is 1
csum: Series diverges
> |
> | sum(n/((n+1)*(3*x^2+4*x+2)^n), n=0..infinity); |
> |
Priklad:
Pomoci Weierstrassova kriteria rozhodnete o stejnomerne konvergenci zadane rady.
> | restart: |
> | Sum(sin(n*x)*cos(n*x)/n^2,n=1..infinity); |
Rada
je pro pevne zvolene
K
absolutne konvergentní. Pokud dokazeme, ze je funkce
ohranicena (shora i zdola), bude i nami zkoumana rada stejnomerne konvergentni.
> | expr:=sin(n*x)*cos(n*x); |
Pokusime se najit obor hodnot tohoto vyrazu.
Funkce maximize nevrati pozadovany vysledek.
> | maximize(expr,x=0..2*Pi,n=1..infinity); |
Error, (in maximize) sort: 2nd argument must be a function that always returns true or false
Dalsi moznosti je pouzit proceduru evalr , presto ani tento vysledek neni spravny.
> | evalr(subs(x=INTERVAL(0..2*Pi),expr)); |
presvedcime se o tom upravou vyrazu
> | convert(expr,sin); |
> | evalr(subs(x=INTERVAL(0..2*Pi),%)); |
> |
> |
Obor konvergence - procedura TestSeriesConvergence
> | restart: |
> | read "posl_a_rady_fci_proc.mpl": |
> | infolevel[TestSeriesConvergence]:=2: |
> |
Tato sekce ilustruje na nekolika prikladech pouziti procedury TestSeriesConvergence pro nalezeni oboru konvergence nekonecne rady funci.
Priklad:
Pomoci procedury TestSeriesConvergence se pokuste nalezt obory konvergence nasledujicich funkcnich rad.
> | (x^n)/(n*(n+1)); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: abs(x)
TestSeriesConvergence: Range solved: RealRange(Open(-1),Open(1))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Converges at point x = -1
TestSeriesConvergence: Converges at point x = 1
> |
> | exp(-n^2*x); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: exp(-signum(x)*infinity)
TestSeriesConvergence: Range solved: RealRange(Open(0),infinity)
TestSeriesConvergence: Checking isolated points
> |
> | (x^n)/(n*(n+1)); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: abs(x)
TestSeriesConvergence: Range solved: RealRange(Open(-1),Open(1))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Converges at point x = -1
TestSeriesConvergence: Converges at point x = 1
> |
> | ln(x)^n; |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 1
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: abs(ln(x))
TestSeriesConvergence: Range solved: RealRange(Open(1/exp(1)),Open(exp(1)))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Diverges at point x = exp(1)
TestSeriesConvergence: Test failed at point x = 1/exp(1)
> |
> | x^n*tan(x/2^n); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Ratio test failed: cannot find the limit
TestSeriesConvergence: Trying root test
TestSeriesConvergence: Root test failed: cannot find the limit
> |
> | n/((n+1)*(3*x^2+4*x+2)^n); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: 1/(3*x^2+4*x+2)
TestSeriesConvergence: Range solved: RealRange(-infinity,Open(-1)), RealRange(Open(-1/3),infinity)
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Diverges at point x = -1
TestSeriesConvergence: Diverges at point x = -1/3
> |
> | (x-1)*(x+1)*n; |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = -1, 1
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: 1
TestSeriesConvergence: Cannot resolve
> |
> | (n!)^2/(2*n)!*x^n; |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: 1/4*abs(x)
TestSeriesConvergence: Range solved: RealRange(Open(-4),Open(4))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Diverges at point x = -4
TestSeriesConvergence: Diverges at point x = 4
> |
> | (-1)^(n-1)*x^(2*n)/sqrt(n)/(2*n-1); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: x^2
TestSeriesConvergence: Range solved: RealRange(Open(-1),Open(1))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Converges at point x = 1
TestSeriesConvergence: Converges at point x = -1
> |
> | (-1)^n*(x+2)^n/(n+sqrt(n)); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = -2
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: abs(x+2)
TestSeriesConvergence: Range solved: RealRange(Open(-3),Open(-1))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Diverges at point x = -3
TestSeriesConvergence: Converges at point x = -1
> |
> | x^n/n; |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: abs(x)
TestSeriesConvergence: Range solved: RealRange(Open(-1),Open(1))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Converges at point x = -1
TestSeriesConvergence: Diverges at point x = 1
> |
> | (-1)^n*(x+2)^n/(n+sqrt(n)); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = -2
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: abs(x+2)
TestSeriesConvergence: Range solved: RealRange(Open(-3),Open(-1))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Diverges at point x = -3
TestSeriesConvergence: Converges at point x = -1
> |
> | x/n; |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: 1
TestSeriesConvergence: Cannot resolve
> |
> | sin(n*x)/n^2; |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 0
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Ratio test failed: cannot find the limit
TestSeriesConvergence: Trying root test
TestSeriesConvergence: Root test failed: cannot find the limit
> |
> | (-2)^n*(x-3)^n/(n+1); |
> | TestSeriesConvergence(%,n,x); |
TestSeriesConvergence: Series identical zero when x = 3
TestSeriesConvergence: Trying ration test
TestSeriesConvergence: Limit: 2*abs(x-3)
TestSeriesConvergence: Range solved: RealRange(Open(5/2),Open(7/2))
TestSeriesConvergence: Checking isolated points
TestSeriesConvergence: Diverges at point x = 5/2
TestSeriesConvergence: Converges at point x = 7/2
> |
> |
Obor konvergence - animace
> | restart; |
> | read "posl_a_rady_fci_proc.mpl": |
> |
Pri vytvareni animaci vyuzijeme proceduru plotVerticalStrip, ktera slouzi pro "ohraniceni" oboru konvergence. Jako prvni z parametru proceduru prebira obor konvergence a jako druhy parametr vertikalni rozsah grafu, napr.
> | plotVerticalStrip(RealRange(-1,Open(1)),-5..5); |
> |
> |
Priklad:
Prostrednictvim animace ilustrujte chovani (konvergenci) zadane rady uvnitr a vne oboru konvergence teto rady.
> | fn:=(n,x)->(-1)^n*(x+2)^n/(n+sqrt(n)); |
nalezneme obor konvergence
> | TestSeriesConvergence(fn(n,x),n,x); |
sestrojime animaci jednotlivych clenu rady - nutna podminka konvergence vyzaduje, aby se cleny rady limitne blizily k funkci y=0.
> | strip:=plotVerticalStrip(RealRange(Open(-3),-1),-2..2): |
> | graf:=n->plots[display](strip,plot(fn(n,x),x=-4..0,y=-2..2,thickness=2)): |
> | plots[display](seq(graf(i),i=1..15), insequence=true,scaling=constrained); |
> |
sestrojime animaci castecnych souctu nekonecne rady
> | sn:=(n,x)->sum(fn(k,x),k=1..n); |
> | strip:=plotVerticalStrip(RealRange(Open(-3),-1),-1.5..4): |
> | graf:=n->plots[display](strip,plot(sn(n,x),x=-4..0,y=-1.5..4,thickness=2)): |
> | plots[display](seq(graf(i),i=1..15), insequence=true,scaling=constrained); |
> |
> |