Estremi del codominio
1/ In effetti, come avevo lasciato immaginare, quello dell'estremo (superiore) del codominio non è un problema di facile soluzione. Per trovare gli estremi di una funzione (in una o più variabili) esistono diversi algoritmi, più o meno efficienti e più o meno efficaci, ma tenete conto che si tratta di un problema sofisticato (soluzioni ai "problemi di minimizzazione", come vengono chiamati, sono tuttora oggetto di ricerca specifica), che rappresenta un elemento centrale in moltissimi ambiti della fisica, della matematica e in generale in tutte quelle discipline che fanno uso pesante della computing science. Un metodo di minimizzazione piuttosto semplice è il cosiddetto metodo della sezione aurea: potete trovare alcuni riferimenti sulla wikipedia (sempre sia lodata!) oppure qui. Sono in inglese, ma la cosa non dovrebbe spaventarvi (e comunque molto presto dovrete abituarvi!).
2/ Eugenio nota giustamente il problema che sorgerebbe nel casi di pdf nulle in qualche punto: come si può risolvere il problema, modificando randFunc()?
3/ Rinnovo le domande di un post precedente: davvero l'estremo inferiore del codominio deve essere necessariamente 0 (zero)? L'algoritmo che avevamo proposto, dunque, non funziona? Se ci stiamo impuntando così tanto sulla proprietà di non-negatività della distribuzione di probabilità, che dire allora dell'altra sua proprietà, quella di normalizzazione? Sono legate, le due questioni?
4/ Ottima l'idea di Eugenio di generare numeri nel chiuso e non nel semiaperto per evitare di dover moltiplicare per quasi-uno. Perchè, invece, a lezione, abbiamo sempre generato numeri casuali nel semiaperto? Può sembrare una sottigliezza, ma il punto è che avevamo già in mente proprio la costruzione di istogrammi. Eugenio, ad esempio, correttamente quando conteggia i dati e trascrive il risultato, effettua un controllo asimmetrico nel singolo bin che via via considera, ossia assume i vari bin come intervalli semiaperti. Solo se il dominio è anch'esso semiaperto (nella stessa maniera, cioè chiuso a sinistra e aperto a destra), allora la suddivisione in bin è realmente un'equiripartizione del dominio stesso. Altrimenti l'ultimo bin si ritroverebbe con entrambi gli estremi inclusi. E siccome stiamo lavorando su una macchina discreta (e non nell'astrazione continua dell'infinità non-numerabile di punti reali), questa apparentemente sottile differenza potrebbe manifestarsi concretamente in alterazioni della distribuzione di probabilità così come verrebbe fotografata dall'istogramma. Dunque, a voler essere precisi, nella funzione randFunc io utilizzerei un generatore random con immagine nel chiuso per generare y, mentre continuerei ad usare il "solito" generatore random nel semiaperto per generare x.
Detto tutto questo: avevate dato un'occhiata alla soluzione di Pietro che avevamo pubblicato? (Abbiamo modificato il post, ora non contiene più parti di codice "incomprensibili" perchè già orientato agli oggetti, quindi potete leggerlo benissimo...) Avete capito il trucchetto che usa per conteggiare i risultati, utilizzando la funzione floor? Cosa ne pensate, alla luce di quello che abbiamo detto or ora?
2/ Eugenio nota giustamente il problema che sorgerebbe nel casi di pdf nulle in qualche punto: come si può risolvere il problema, modificando randFunc()?
3/ Rinnovo le domande di un post precedente: davvero l'estremo inferiore del codominio deve essere necessariamente 0 (zero)? L'algoritmo che avevamo proposto, dunque, non funziona? Se ci stiamo impuntando così tanto sulla proprietà di non-negatività della distribuzione di probabilità, che dire allora dell'altra sua proprietà, quella di normalizzazione? Sono legate, le due questioni?
4/ Ottima l'idea di Eugenio di generare numeri nel chiuso e non nel semiaperto per evitare di dover moltiplicare per quasi-uno. Perchè, invece, a lezione, abbiamo sempre generato numeri casuali nel semiaperto? Può sembrare una sottigliezza, ma il punto è che avevamo già in mente proprio la costruzione di istogrammi. Eugenio, ad esempio, correttamente quando conteggia i dati e trascrive il risultato, effettua un controllo asimmetrico nel singolo bin che via via considera, ossia assume i vari bin come intervalli semiaperti. Solo se il dominio è anch'esso semiaperto (nella stessa maniera, cioè chiuso a sinistra e aperto a destra), allora la suddivisione in bin è realmente un'equiripartizione del dominio stesso. Altrimenti l'ultimo bin si ritroverebbe con entrambi gli estremi inclusi. E siccome stiamo lavorando su una macchina discreta (e non nell'astrazione continua dell'infinità non-numerabile di punti reali), questa apparentemente sottile differenza potrebbe manifestarsi concretamente in alterazioni della distribuzione di probabilità così come verrebbe fotografata dall'istogramma. Dunque, a voler essere precisi, nella funzione randFunc io utilizzerei un generatore random con immagine nel chiuso per generare y, mentre continuerei ad usare il "solito" generatore random nel semiaperto per generare x.
Detto tutto questo: avevate dato un'occhiata alla soluzione di Pietro che avevamo pubblicato? (Abbiamo modificato il post, ora non contiene più parti di codice "incomprensibili" perchè già orientato agli oggetti, quindi potete leggerlo benissimo...) Avete capito il trucchetto che usa per conteggiare i risultati, utilizzando la funzione floor? Cosa ne pensate, alla luce di quello che abbiamo detto or ora?
Nessun commento:
Posta un commento