Tag: algorithms

Interferometria

interferometria.png

Non è proprio così semplice (come qui ci illumina XKCD), ma effettivamente è così affascinante. E’ praticamente un’applicazione del principio di sovrapposizione. Un’onda elettromagnetica risultante dalla combinazione di onde separate ha proprietà che sono legare alle onde originarie.

Ora, se le due onde hanno la stessa frequenza può accadere che l’interferenza sia costruttiva, quando le due onde sono in fase, o distruttiva, quando sono fuori fase.

Operativamente, le onde sono spesso radio o laser e la variazione di intensità dell’onda risultante su un rilevatore da una misura dell’entità e del tipo di interferenza fra le due onde originarie. Il metodo ha un incredibile risoluzione e consente di non dover realizzare telescopi/radiotelescopi/rilevatori in generale con estensioni immani, ma semplicemente due o più sorgenti a metri/chilometri/milioni di chilometri di distanza. Il “telescopio” virtuale risultante ha uno specchi di diametro equivalente alla distanza fra le sorgenti (ed è, quasi, indipendente dalla dimensione della singola sorgente)… wow!

Si, abbiamo scoperto così le onde gravitazioni (e non quelle di gravità). E’ così che osserviamo la Terra nei più piccoli dettagli, che determiniamo il moto di stelle binarie o di pianeti extrasolari. Il contro? Una mole non indifferente di dati da post-processare e combinare via software, di certo molto più economico ed affidabile di uno specchio da centinaia di km.

Se solo funzionasse anche con gli esseri animati. E perché fermarsi ai cani? Due menti “in sintonia” che agiscono come un’unica enorme mente a km di distanza? Troppo panteismo? Un po’ di antiche reminiscenze di Gaia? Olismo esasperato? Di sicuro tutti o anche una combinazione di essi, ma da qualche parte al mondo un’altro fesso che sproloquia come me su queste cose, in questo momento, ci deve pur essere (almeno per tranquillizzare l’omino del mio cervello). Che poi non (s)ragioniamo come un’unica mente è assolutamente ovvio ed assolutamente un bene.

WU

Annunci

Generatore lineare congruenziale

La matematica è per sua natura abbastanza ordinata, abbastanza ripetitiva ed abbastanza prevedibile. Certo, abbastanza.

In un mondo come questo è quindi non proprio banalissimo avere la generazione di numeri che siano veramente, ma veramente casuali. Ci si accontenta spesso di numeri pseudo-casuali (ovvero numeri generati da un algoritmo che pur essendo deterministico produce una sequenza che ha circa le stesse proprietà statistiche di una sequenza casuale) tipicamente perché il vero caso non serve poi a molto ed è computazionalmente difficile da ottenere.

In altre parole esiste un’equazione “semplice” per ottenere una sequenza di numeri che sembra prodotta dal caso. L’algoritmo LCG (Linear Congruential Generator) è uno dei più vecchi, semplici e conosciuti algoritmi che ci danno l’impressione del caso.

L’algoritmo si basa su un modulo (m), un moltiplicatore (A) ed un incremento (C); uno dei valori della successione, il cui periodo è al più m, è quindi definito da:

Xn+1 = (A Xn + C) mod m

Inutile dire che la semplicità dell’equazione (ed il conseguente largo uso anche in algoritmi numerici) si paga in termini di bontà dei risultati; la scelta dei tre coefficienti diventa fondamentale (e potrebbe essere a sua volta il frutto di un generatore di numeri casuali 🙂 ).

Ed ora facciamo qualche prova:

LCG.png

Cose simpatiche:

  • il penultimo caso è l’algoritmo della Borland C/C++
  • se A ed m sono molto maggiori di C, i valori della successione si schiacciano su C
  • nel primo e secondo caso (ed in generale per ogni combinazione di fattori abbastanza semplice e lineare) la successione è tutt’altro che casuale
  • ovviamente più grandi sono (numericamente) i tre fattori e più l’aspetto casuale della faccenda viene fuori.

… pensateci la prossima volta che vi viene chiesto di dire un numero a caso.

WU