Grafici di successioni. Il comando plot non e completamente adatto allo scopo, perche con esso Maple si aspetta una funzione definita sui numeri reali. Consideriamo la successione che individua il numero e. > n:= n ; > a:=(1+1/n)^n; n := n a := (1 + 1 n )n Calcoliamo alcuni termini della successione, prima esattamente e poi in forma decimale, per renderli pi comprensibili > n:=10;a; > evalf(a); > n:=100;a;evalf(a); n := 10 25937424601 10000000000 2.593742460 n := 100 27048138294215260932671947108075308336779383827810027768902010491\ 17101514306739279439456014346744590973356513754835642683125\ 19281766832427980496322329650055217977882315938008175933291\ / 885667484249510001 100000000000000000000000000000000000\ 00000000000000000000000000000000000000000000000000000000000\ 00000000000000000000000000000000000000000000000000000000000\ 00000000000000000000000000000000000000000000000 2.704813829
Costruiamo ora i primi 1000 termini della successione, usando l istruzione seq e mettendoli nella variabile a. Terminiamo l istruzione con : per non farci scrivere 1000 numeri sullo schermo: > N:=1000; N := 1000 > a:=seq(evalf((1+1/n)^n),n=1..n): Possiamo vedere i singoli termini della lista scrivendo dopo a fra parentesi quadre il numero del termine che vogliamo conoscere > a[20]; > a[500]; 2.653297705 2.715568521 Per fare il grafico di questi punti, con n sull asse delle ascisse e a[n] sulle ordinate abbiamo bisogno dell istruzione pointplot contenuta nel package plots ; La sintassi di pointplot e pointplot(lista o insieme del piano indicati mediante le coordinate): > with(plots); Warning, the name changecoords has been redefined [animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot] > pointplot([[1,0],[3,4],[12/7,5]]);
5 4 3 2 1 0 1 1.5 2 2.5 3 Ha disegnato un rombo sulle coordinate dei tre punti richiesti: per vederlo meglio aggiungiamo a plointplot l opzione view che dice quali devono essere gli assi e l opzione symbolsize che dice quanto devono essere grandi i rombi: > pointplot([[1,0],[3,4],[12/7,5]],view=[0..3,0..5],symbolsize=30); 5 4 3 2 1 0 0.5 1 1.5 2 2.5 3
Passiamo ora alla nostra successione, costruiamo una successione di copie di coordinate: > a:=[seq([n,evalf((1+1/n)^n)],n=1..n)]: > a[10]; > a[90]; > pointplot(a); [10, 2.593742460] [90, 2.703332461] 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2 0 200 400 600 800 1000 Per vederla meglio cambiamo la scala sull asse delle ascisse: > pointplot(a,view=[0..50,0..3]);
3 2.5 2 1.5 1 0.5 0 10 20 30 40 50 Se aggiungiamo l opzione connect=true Maple traccia una linea fra due punti successivi e non disegna il rombo ma solo un puntino > pointplot(a,connect=true); 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2 0 200 400 600 800 1000 > restart;
Si poteva ottenere questo grafico piu semplicememte, definendo la successione come una funzione > a:=n->(1+1/n)^n; > plot(a,1..1000); a := n (1 + 1 n )n 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2 200 400 600 800 1000 In questo caso bisogna ricordare di dare l intervallo giusto sull asse delle x. Facciamo ora il limite della successione > limit(a(n),n=infinity); e Passiamo ad un altro esempio > restart; > n:= n ; n := n
> a:=(1/(3*n))*ln(2+exp(n)); a := 1 3 ln(2 + e n ) n (Continuare l esercizio come in precedenza) Calcoliamo ora la somma di alcune serie come limite delle somme parziali: > restart; > limit(sum(1/i^2,i=1..n),n=infinity); > evalf(%); 1 6 π2 1.644934068 > limit(sum(1/(3+2^i),i=1..n),n=infinity); n 1 lim n 3 + 2 i > evalf(%); i=1.5452802735 > limit(sum(1/((4*i+1)*(4*i+3)),i=1..n),n=infinity); 1 3 + 1 8 π Costruiamo la successione logistica. Definiamo la funzione f : > restart; > f:=x->piecewise(0<x and x<1, a*x*(1-x)); f := x piecewise(0 < x and x < 1, a x(1 x)) > a:=1.5; a := 1.5 > x[0]:=0.1; > n:=100; x 0 :=.1 n := 100
> for i to n do x[i]:=(f@@i)(x[0]) od: > x[50]; > with(plots);.3333333334 Warning, the name changecoords has been redefined [animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot] > points:=[seq([i,x[i]],i=1..n)]: > pointplot(points); 0.3 0.25 0.2 0.15 0 20 40 60 80 100 In questo caso la successione sembra avere un limite, si puo anzi dimostrare che se 0<a<1 la successione tende a 0 e se a<1<3 la successione ha un limite diverso da 0, che si puo trovare come soluzione non nulla dell equazione f(x)-x=0. Troviamolo dapprima graficamente e poi esattamente > plot([f(x),x],x=0..1);
1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 x > solve(f(x)-x=0,x);.3333333333, 0. In questo caso il limite e naturalmente il primo dei numeri. Proviamo ora con il seguente valore di a > restart; > f:=x->piecewise(0<x and x<1, a*x*(1-x)); f := x piecewise(0 < x and x < 1, a x(1 x)) > a:=3.4; a := 3.4 > x[0]:=0.1; x 0 :=.1 > n:=100; n := 100 > for i to n do x[i]:=(f@@i)(x[0]) od: > x[50];.8421741576
Facciamo ora il grafico > with(plots); Warning, the name changecoords has been redefined [animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot] > points:=[seq([i,x[i]],i=1..n)]: > pointplot(points); 0.8 0.7 0.6 0.5 0.4 0.3 0 20 40 60 80 100 In questo caso la successione sembra oscillare fra due valori. Si puo dimostrare che accade effettivamente questo e tali valori si possono determinare come soluzioni non nulle dell equazione f(f(x))-x=0 che non siano anche soluzioni dell equazione f(x)-x=0. Facciamolo: > f2:=x->f(f(x)); f2 := x f(f(x))
> f2(0.2);.8434176 > plot([f2(x),x],x=0..1); 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 x Ci sono quattro soluzioni, scartiamo subito x=0 e poi cerchiamo di scartare la soluzione di f(x)-x=0. > solve(f2(x)-x=0,x);.7058823529,.8421543994,.4519632476 > solve(f(x)-x=0,x);.7058823529, 0. Quindi i due valori fra cui oscilla la successione logistica sono gli ultimi due. Prendiamo ora un altro valore di a: > restart; > f:=x->piecewise(0<x and x<1, a*x*(1-x)); f := x piecewise(0 < x and x < 1, a x(1 x)) > a:=3.9;
a := 3.9 > x[0]:=0.1; > n:=100; x 0 :=.1 n := 100 Costruiamo la successione e facciamone il grafico. > for i to n do x[i]:=(f@@i)(x[0]) od: > x[40];.09593676166 > points:=[seq([i,x[i]],i=1..n)]: > with(plots): pointplot(points); Warning, the name changecoords has been redefined 0.8 0.6 0.4 0.2 0 20 40 60 80 100 In questo caso l andamento della successione e del tutto casuale, per vederlo ancora meglio aggiungiamo l opzione connect=true, con cui Maple traccia una linea fra due punti successivi e non disegna il rombo ma solo un puntino.
> pointplot(points,connect=true); 0.8 0.6 0.4 0.2 0 20 40 60 80 100 Esercizio: considerare il caso a=0.5. In questo caso si puo dimostrare che la successione e monotona decrescente e il limite e 0.