[¯|¯] Programmi ricorsivi con Mathematica: il Teorema di Euclide


Nel post precedente abbiamo esaminato la possibilità dell'utilizzo di tecniche di cashing per ridurre il carico computazionale di un programma scritto in ambiente Mathematica.

Applichiamo, ora, tale tecnica al Teorema di Euclide, noto anche come Teorema dell'infinità dei numeri primi. Secondo tale teorema detto pn l'ennesimo numero primo.... Precisamente:

Teorema di Euclide
Hp. p_{n} è l'n-esimo numero primo, \forall n\in\mathbb{N}\diagdown\left\{  0\right\}

Th. 1+{\displaystyle\prod\limits_{k=1}^{n}}p_{k} se non è primo ha un fattore p>p_{n},\,\,\,\forall k\in\left\{  1,...,n-1\right\}

Ciò implica l'esistenza di un numero infinito di numeri primi.

A questo punto ricordiamo che Mathematica ha le seguenti funzioni built-in per il calcolo di numeri primi: Prime[n] restituisce l'n-esimo numero primo; PrimePi[n] restituisce il numero di primi minori o uguali a n.
read more

Tags: , ,


[¯|¯] Programmi ricorsivi con Mathematica


Impariamo ad utilizzare una tecnica di casching nella ricorsione con Mathematica

Quando si scrivono programmi ricorsivi con Mathematica può essere utile utilizzare una tecnica di cahing, ovvero di memorizzazione dei valori calcolati. Prima di illustrare tale tecnica introduciamo il comando Table[] e la funzione built-in Prime[] che restituisce l'n-esimo numero primo. Table[] è un generatore di liste e la sua sintassi è Table[expr, {k,kmin,kmax,kstep}]. In questo costrutto k è un iteratore che prende valori nell'intervallo discreto kmin, kmax, mentre kstep assegna il passo. Per default è kmin=kstep=1. Cioè, se scriviamo Table[expr, {k,kmax}], Mathematica restituisce i valori assunti da expr per kstep variabile da 1 a kmax con passo 1.
Ciò premesso, definiamo la seguente funzione ricorsiva:

mathematica,matematica

Il valore assunto da tale funzione in n=0 sia:

mathematica,matematica

Qui abbiamo fatto uso del terminatore ; che impedisce la visualizzazione dell'output. Utilizziamo il comando Table per determinare i valori assunti da f in un assegnato intervallo discreto. Abbiamo così generato una successione per ricorsione (si pensi ai numeri di Fibonacci read more

Tags: , , ,