Studio delle successioni con il software Abbiamo visto due possibili definizioni per alcune successioni: diretta e per ricorrenza (o ricorsiva). Ricordiamo che la successione delle somme dei primi n numeri naturali si definisce direttamente n( n + 1) a n = e ricorsivamente a0 = 0. Abbiamo anche constatato che la definizione diretta 2 an = an 1 + n permette calcoli più rapidi. Con il foglio elettronico possiamo implementare facilmente entrambe le definizioni. Nel primo caso è sufficiente scrivere nella cella A1 il numero n in corrispondenza del quale vogliamo calcolare il termine a n, ad esempio 99; in un altra cella, ad esempio la B1, scriviamo la formula =A1*(A1+1)/2. Si ottiene immediatamente il risultato. La definizione ricorsiva si può implementare così: scriviamo 0 in entrambe le celle A1 e B1. Clicchiamo sulla cella A1 e trasciniamola, afferrandola nell angolo in basso a destra fino alla cella A100: troviamo nella colonna 1 del foglio elettronico i numeri naturali da 0 a 99. Nella cella B2 scriviamo la legge ricorsiva, cioè la formula =B1+A2. Successioni con il software pag.1
Copiamo anche questa formula in basso fino alla cella B100, con la stessa tecnica utilizzata per la colonna A. Abbiamo ottenuto, nella colonna B, i primi 100 termini della successione: Successioni con il software pag.2
Vediamo invece ora come si possano implementare le due definizioni della successione con il software per il calcolo simbolico Maxima. La sintassi per scrivere la prima definizione è la seguente: Dopo aver selezionato quanto scritto e cliccato sul pulsante Semplifica in basso a sinistra la finestra di Maxima si presenta così: Successioni con il software pag.3
Se ora vogliamo calcolare il 99-mo termine della successione è sufficiente scrivere a(99), selezionare la scritta e cliccare Semplifica. Ecco come troviamo visualizzato il risultato: Ecco come si scrive la definizione ricorsiva: Selezionando la riga e cliccando Semplifica otteniamo Successioni con il software pag.4
Anche in questo caso, per calcolare il 99-mo termine scriviamo a_ric(99), selezioniamo la riga e clicchiamo Semplifica Successioni con il software pag.5
Possiamo osservare che la definizione ricorsiva non consente il calcolo di valori grandi dei termini della successione. Già il calcolo di a_ric(1000) porta ad un messaggio d errore. La computazione del valore che la funzione assume per un dato n viene effettuata ricorrendo al calcolo della medesima funzione per valori di n più piccoli: ad esempio, il calcolo di a_ric(2) richiede il calcolo di a_ric(1), che a sua volta richiede il calcolo di a_ric(0). In attesa del calcolo di a_ric(0), che può essere effettuato immediatamente, a_ric(2) e a_ric(1) vengono tenuti in sospeso in celle di memoria, come in una pila o stack. La tecnica di gestione è la cosiddetta LIFO (Last In, First Out) in cui, relativamente all esempio, in fondo alla pila viene posto il valore a_ric(2) ed in cima il valore a_ric(0): questo verrà calcolato per primo ed eliminato dalla pila. L ultima cella di memoria ad essere liberata sarà quella relativa ad a_ric(2). Per questa ragione le definizioni ricorsive sono dispendiose di occupazione di memoria. Successioni con il software pag.6
a_ric(0) a_ric(1) a_ric(2) Il calcolo di a(1000) viene invece effettuato senza difficoltà. C è anche una definizione di natura algoritmica, che calcola i valori della successione con un procedimento iterativo. Il risultato finale della somma dei primi n naturali nasce come una somma ripetuta, cioè iterata, n volte; si comincia da 0 e si continuano a sommare i successivi naturali, fino ad arrivare al numero n. Scriviamo a_it(n):=(s:0, for i:1 thru n do s:s+i,display(s)) selezioniamo la riga e clicchiamo Semplifica: Ovviamente si scrive a_it(1000) per calcolare la soma dei primi 1000 naturali. Possiamo richiedere il calcolo di alcuni elementi della successione definita in modo sia ricorsivo, sia iterativo, sia direttamente; è utile confrontare il tempo impiegato nei vari modi. Utilizziamo il menu Maxima per mostrare il tempo: Successioni con il software pag.7
Dopo aver rilasciato il pulsante del mouse otteniamo: Si può constatare che il tempo per calcolare gli elementi della successione definiti in modo iterativo è superiore a quello richiesto per calcolarli direttamente. Un altra successione interessante è quella di Fibonacci. Il primo termine è uguale a 0, il secondo ad 1 e i successivi sono ottenuti ognuno dalla somma dei due precedenti: 0, 1, 1, 2, 3, 5, 8, La definizione è dunque ricorsiva e possiamo scrivere fib0 = 0 fib1 = 1 fibn = fibn 1 + fibn 2 In Maxima ecco come si implementa: Dopo aver selezionato la riga e cliccato su Sempifica ci viene mostrato: Possiamo richiedere il calcolo di alcuni valori della successione, ma è interessante osservare il tempo impiegato per eseguire i calcoli. Come descritto per la successione precedente, utilizziamo la visualizzazione del tempo offertaci da Maxima e proviamo a calcolare il decimo termine della successione: Successioni con il software pag.8
È stato necessario un decimo di secondo; proviamo ora con valori più grandi: non solo il tempo aumenta in modo inaspettato ma presto l esecuzione non è più possibile per un messaggio d errore. Si dice che la definizione di questa successione è di complessità esponenziale; si verifica infatti una situazione particolare: ogni elemento della successione, per essere calcolato, richiede il calcolo di altri due valori. fib(n+2) fib(n+1) fib(n) fib(n) fib(n-1) fib(n-1) fib(n 2) Si può notare che alcuni valori della successione (quelli, in figura, con analoga sottolineatura) vengono calcolati più volte; eliminando tali ridondanze si possono definire gli elementi della successione in modi più efficienti, meno complessi computazionalmente. Anche la definizione della successione di Fibonacci può essere implementata facilmente con il foglio elettronico, analogamente a quanto fatto per la prima successione: basterà scrivere 0 e 1 rispettivamente nelle celle A1 e A2 e scrivere nella cella A3 la formula =A1+A2; copiando la formula si otterranno nelle celle sottostanti (A4, A5, ) gli elementi della successione. Successioni con il software pag.9
Successioni con il software pag.10