2009-03-08 9 views
7

modificatiUna buona libreria di aritmetica (intervallo) di incertezza?

Dato che le parole "incerto" e "incertezza" sono abbastanza onnipresente, è difficile da Google "incertezza aritmetica" e ottiene nulla immediatamente disponibile. Così, qualcuno può suggerire un buon libreria di routine, in quasi ogni programmazione/linguaggio di scripting, che implementa la gestione di valori incerti, come da questa descrizione:

Usa incertezza aritmetica a registrare i valori che sono approssimazioni, per i quali non è una tolleranza misurata. Questo è quando non siamo sicuri di un valore, ma conosciamo il limite superiore e inferiore che può avere, espresso come valore ±.

risposta

1

Non è una libreria, ma la tua domanda mi ha ricordato di un esempio in "Expert F #" che descrive i flussi di lavoro probabilistiche:

invece di scrivere espressioni per calcolare, ad esempio, interi, abbiamo invece scrivere espressioni che calcola le distribuzioni di interi. Questo case study è basato su un articolo di Ramsey e Pfeffer del 2002.

È possibile leggere l'estratto on google books.

1

probabilmente sarei andare su questo dichiarando una classe chiamata UncertainValue, con metodi e proprietà, come (psuedocodarlo):

class UncertainValue 
{ 
    private double upperbound; 
    private double lowerbound; 
    private double nominalvalue; 
    private double certainty; 
    ... 
    UncertainValue add(UncertainValue value); 
    UncertainValue multiply(UncertainValue factor); 
} 

Mi rendo conto che questo non risponde alla tua domanda in termini di trovare un pre -made biblioteca, mi dispiace.

3

Dai un'occhiata alla classe Java Error Propagation di Thomas Flanagan. L'approccio che utilizza è il più eccellente per gestire l'incertezza senza eccessivi problemi.

4

Se siete alla ricerca di un modulo error propagation (questo è diverso da interval arithmetic, ma l'errore di propagazione è quello che viene comunemente utilizzato dagli scienziati), vorrei suggerire che si dispone di uno sguardo al mio modulo uncertainties Python. Gestisce la propagazione dell'errore/incertezza in modo trasparente e, contrariamente a molte implementazioni, gestisce correttamente le correlazioni tra le variabili.

3

per riferimento, come è probabilmente troppo tardi per voi, io suggerirei BIAS/Profil: http://www.ti3.tuhh.de/keil/profil/index_e.html

+0

In questo caso, non è mai troppo tardi – bugmagnet

+0

buono allora! le sue caratteristiche nel tuo caso che vedo come utente sarebbe che BIAS è una libreria C, con alcune funzionalità C++ di Profil; rappresenta l'errore numerico del computer; se i tuoi errori sono centrati, l'accesso diretto al valore nominale; vettore di intervalli per analisi multidimensionali; aritmetica completa inclusa (operazioni usuali con lo spin dell'intervallo aritmetico su intervalli, vettori, matrici); finalmente facile iniziare con l'uso delle prime pagine del capitolo 3 della documentazione: alcuni avvisi/informazioni e tabelle di tutte le operazioni per ogni tipo. – luneart