Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Algoritmo di Ada Lovelace per i numeri di Bernoulli - Teknopedia
Algoritmo di Ada Lovelace per i numeri di Bernoulli - Teknopedia

L'algoritmo di Ada Lovelace (nata Ada Byron) permette di calcolare i numeri di Bernoulli. Questo algoritmo è noto soprattutto per essere stato il primo programma della storia dell'informatica.

Nota G, diagramma di Ada Lovelace: fu il primo algoritmo per computer pubblicato

La formula utilizzata

[modifica | modifica wikitesto]

Come si vede dal diagramma in figura e dal testo relativo disponibile in lingua inglese[1], Ada Lovelace nell'implementare il suo algoritmo si servì della seguente formula:

0 = − 1 2 2 n − 1 2 n + 1 + B 2 2 n 2 + B 4 2 n ( 2 n − 1 ) ( 2 n − 2 ) 4 ! + B 6 2 n ( 2 n − 1 ) . . . ( 2 n − 4 ) 6 ! + . . . + B 2 n {\displaystyle 0=-{1 \over 2}{{2n-1} \over {2n+1}}+B_{2}{{2n} \over 2}+B_{4}{{2n(2n-1)(2n-2)} \over 4!}+B_{6}{{2n(2n-1)...(2n-4)} \over 6!}+...+B_{2n}} {\displaystyle 0=-{1 \over 2}{{2n-1} \over {2n+1}}+B_{2}{{2n} \over 2}+B_{4}{{2n(2n-1)(2n-2)} \over 4!}+B_{6}{{2n(2n-1)...(2n-4)} \over 6!}+...+B_{2n}}

dove abbiamo sostituito gli indici dispari usati da Ada con i pari secondo la moderna notazione dei Numeri di Bernoulli. Utilizzando il fattoriale decrescente possiamo scrivere in forma compatta:

1 2 2 n − 1 2 n + 1 = ∑ k = 1 n ( 2 n ) 2 k − 1 _ ( 2 k ) ! B 2 k {\displaystyle {1 \over 2}{{2n-1} \over {2n+1}}=\sum _{k=1}^{n}{\frac {{(2n)}^{\underline {2k-1}}}{(2k)!}}B_{2k}} {\displaystyle {1 \over 2}{{2n-1} \over {2n+1}}=\sum _{k=1}^{n}{\frac {{(2n)}^{\underline {2k-1}}}{(2k)!}}B_{2k}}

essendo il ( 2 n ) 2 n − 1 _ = ( 2 n ) ! {\displaystyle {(2n)}^{\underline {2n-1}}=(2n)!} {\displaystyle {(2n)}^{\underline {2n-1}}=(2n)!} la precedente equivale a

B 2 n = 1 2 2 n − 1 2 n + 1 − ∑ k = 1 n − 1 ( 2 n ) 2 k − 1 _ ( 2 k ) ! B 2 k       p e r   n > 1               p e r   n = 1       B 2 = 1 2 2 − 1 2 + 1 = 1 6 {\displaystyle B_{2n}={1 \over 2}{{2n-1} \over {2n+1}}-\sum _{k=1}^{n-1}{\frac {{(2n)}^{\underline {2k-1}}}{(2k)!}}B_{2k}~~~per~n>1~~~~~~~per~n=1~~~B_{2}={1 \over 2}{{2-1} \over {2+1}}={1 \over 6}} {\displaystyle B_{2n}={1 \over 2}{{2n-1} \over {2n+1}}-\sum _{k=1}^{n-1}{\frac {{(2n)}^{\underline {2k-1}}}{(2k)!}}B_{2k}~~~per~n>1~~~~~~~per~n=1~~~B_{2}={1 \over 2}{{2-1} \over {2+1}}={1 \over 6}}

Le fonti concordano[2] con Ada stessa[1], sul fatto che questa formula derivi dalla funzione generatrice e anche nel fornire solo un accenno di dimostrazione per giustificarlo:


  
    
      
        
          
            x
            
              
                e
                
                  x
                
              
              −
              1
            
          
        
        =:
        
          ∑
          
            k
            =
            0
          
          
            ∞
          
        
        
          
            
              
                x
              
              
                k
              
            
            
              k
              !
            
          
        
        
          B
          
            k
          
        
      
    
    {\displaystyle {\frac {x}{e^{x}-1}}=:\sum _{k=0}^{\infty }{\frac {{x}^{k}}{k!}}B_{k}}
  
{\displaystyle {\frac {x}{e^{x}-1}}=:\sum _{k=0}^{\infty }{\frac {{x}^{k}}{k!}}B_{k}}

La funzione generatrice può considerarsi una uguaglianza fra serie formali di potenze o fra funzioni analitiche; in questo caso per la convergenza della serie si chiede che x abbia valore assoluto minore di 2π (il raggio di convergenza della serie stessa).

È sicuramente più semplice mostrare invece che la formula usata dalla Byron non è altro che la consueta formula di ricorrenza:[3]

B m = − 1 m + 1 ∑ j = 0 m − 1 ( m + 1 j ) B j         o s s i a :       ∑ j = 0 m ( m + 1 j ) B j = 0             ( c o n   m > 0   e   B 0 = 1 )   {\displaystyle B_{m}=-{1 \over {m+1}}\sum _{j=0}^{m-1}{m+1 \choose {j}}B_{j}~~~~ossia:~~~\sum _{j=0}^{m}{m+1 \choose {j}}B_{j}=0~~~~~~(con~m>0~e~B_{0}=1)~} {\displaystyle B_{m}=-{1 \over {m+1}}\sum _{j=0}^{m-1}{m+1 \choose {j}}B_{j}~~~~ossia:~~~\sum _{j=0}^{m}{m+1 \choose {j}}B_{j}=0~~~~~~(con~m>0~e~B_{0}=1)~}

resa più efficiente per il calcolo automatico. Per questo è sufficiente notare che:

∑ k = 1 n − 1 ( 2 n ) 2 k − 1 _ ( 2 k ) ! B 2 k = 1 2 n + 1 ∑ k = 1 n − 1 ( 2 n + 1 2 k ) B 2 k {\displaystyle \sum _{k=1}^{n-1}{\frac {{(2n)}^{\underline {2k-1}}}{(2k)!}}B_{2k}={\frac {1}{2n+1}}\sum _{k=1}^{n-1}{{2n+1} \choose {2k}}B_{2k}} {\displaystyle \sum _{k=1}^{n-1}{\frac {{(2n)}^{\underline {2k-1}}}{(2k)!}}B_{2k}={\frac {1}{2n+1}}\sum _{k=1}^{n-1}{{2n+1} \choose {2k}}B_{2k}}

e che

1 2 n + 1 ∑ k = 0 1 ( 2 n + 1 k ) B k = 1 2 n + 1 ( ( 2 n + 1 0 ) ( 1 ) + ( 2 n + 1 1 ) ( − 1 2 ) ) = {\displaystyle {\frac {1}{2n+1}}\sum _{k=0}^{1}{{2n+1} \choose {k}}B_{k}={\frac {1}{2n+1}}({{2n+1} \choose {0}}(1)+{{2n+1} \choose {1}}(-{\frac {1}{2}}))=} {\displaystyle {\frac {1}{2n+1}}\sum _{k=0}^{1}{{2n+1} \choose {k}}B_{k}={\frac {1}{2n+1}}({{2n+1} \choose {0}}(1)+{{2n+1} \choose {1}}(-{\frac {1}{2}}))=}
= 1 2 n + 1 ( 1 + ( 2 n + 1 ) ( − 1 2 ) ) = 1 2 n + 1 ( − 1 2 ) ( − 2 + 2 n + 1 ) = − 1 2 2 n − 1 2 n + 1 {\displaystyle ={\frac {1}{2n+1}}(1+(2n+1)(-{\frac {1}{2}}))={\frac {1}{2n+1}}(-{\frac {1}{2}})(-2+2n+1)=-{\frac {1}{2}}{\frac {2n-1}{2n+1}}} {\displaystyle ={\frac {1}{2n+1}}(1+(2n+1)(-{\frac {1}{2}}))={\frac {1}{2n+1}}(-{\frac {1}{2}})(-2+2n+1)=-{\frac {1}{2}}{\frac {2n-1}{2n+1}}}

Come si può controllare nella nota G in figura questa è la funzione utilizzata da Ada dato che ai suoi tempi, come aveva indicato anche Jacob Bernoulli nel suo "Ars Conjectandi" più di un secolo prima i numeri di Bernoulli cominciavano dopo i primi due attuali che quindi vanno sostituiti con i loro valori numerici per ottenere la formula usata. Nella nota Ada scrive B 1 B 3 B 5 . . . {\displaystyle B_{1}B_{3}B_{5}...} {\displaystyle B_{1}B_{3}B_{5}...} che chiaramente corrispondono ai nostri B 2 B 4 B 6 . . . {\displaystyle B_{2}B_{4}B_{6}...} {\displaystyle B_{2}B_{4}B_{6}...} .

Note

[modifica | modifica wikitesto]
  1. 1 2 Lovelace.
  2. ↑ Adity Kar, Ada Lovelace, su people.maths.ox.ac.uk (archiviato dall'url originale il 3 luglio 2017).
  3. ↑ SUPSI.

Bibliografia

[modifica | modifica wikitesto]
  • (EN) Luigi F. Menabrea, Nota G di Ada Lovelace, in Sketch the analytical engine invented by Charles Babbage, Bibliothèque Universelle de Genève, 1842. URL consultato il 19 giugno 2017.
  • Giorgio Pietrocola, Dialogo con una formula d'altri tempi (PDF), su SUPSI. URL consultato il 16 giugno 2023.

Voci correlate

[modifica | modifica wikitesto]
  • Ada Lovelace
  • Numeri di Bernoulli
  Portale Informatica
  Portale Matematica
Estratto da "https://it.wikipedia.org/w/index.php?title=Algoritmo_di_Ada_Lovelace_per_i_numeri_di_Bernoulli&oldid=146049961"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022