Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Algoritmi per il calcolo di phi<br />
Di seguito è illustrato un programma in linguaggio Pascal che permette di calcolare un valore<br />
approssimato di φ tramite 3 differenti algoritmi, che derivano da considerazioni sulle caratteristiche<br />
del rapporto aureo appena descritte. Il programma dà un’approssimazione di φ tramite il metodo di<br />
derivazione da funzione continua, il metodo di derivazione da radici nidificate o tramite il calcolo<br />
dei rapporti tra elementi contigui della sequenza di Fibonacci.<br />
program sezione_aurea;<br />
uses crt;<br />
var scelta:char;<br />
i,n:integer;<br />
uscita:string[5];<br />
Dopo aver assegnato un nome al programma viene caricata la libreria necessaria. Sono dichiarate un<br />
totale di 4 variabili: la variabile scelta, necessaria per l’opzione di quale algoritmo utilizzare; le<br />
variabili globali di tipo intero i ed n dichiarate per gli ordinamenti e per i cicli; e infine la variabile<br />
uscita che permette la ripetizione a piacere dell’intero programma.<br />
(*procedure richiamate nel main program*)<br />
(*frazione continua*)<br />
procedure frazione(n:integer);<br />
var phi:real;<br />
begin<br />
phi:=1;<br />
for i:=1 to n do<br />
begin<br />
phi:=1+1/phi;<br />
writeln(phi:0:15);<br />
end;<br />
writeln;<br />
textcolor(12);<br />
writeln('phi~= ',phi:0:15);<br />
end;<br />
Vengono quindi espresse tre procedure, ciascuna contenente un algoritmo per l’approssimazione di<br />
φ, che verranno poi richiamate nel programma principale. <strong>La</strong> prima di queste procedure, frazione, è<br />
quella che calcola il valore del rapporto aureo tramite la funzione continua<br />
1<br />
1+<br />
1<br />
1+<br />
1<br />
1+<br />
1<br />
1+<br />
1+<br />
...<br />
Dichiarata la variabile locale phi, le viene assegnato il valore di innesco 1. Il ciclo for…to…do si<br />
ripeterà n volte (variabile passata per valore) tante quante saranno scelte nel main program (vedi più<br />
avanti); maggiore sarà n migliore sarà l’approssimazione di phi.<br />
(*radici nidificate*)<br />
procedure radici(n:integer);<br />
var phi:real;<br />
begin<br />
phi:=0;<br />
for i:=1 to n do<br />
begin<br />
phi:=sqrt(1+phi);<br />
writeln(phi:0:15);<br />
19