Αβεβαιότητα
Πώς το Sounio αναπαριστά και (τελικά) propagates την αβεβαιότητα μέτρησης.
Αβεβαιότητα
Ο scientific κώδικας είναι γεμάτος μετρήσεις και οι μετρήσεις δεν είναι ποτέ ακριβείς. Το Sounio αντιμετωπίζει την αβεβαιότητα ως δεδομένο πρώτης κλάσης αντί για κάτι που παρακολουθείτε σε σχόλια ή spreadsheets.
Τι Λειτουργεί Σήμερα (Πραγματικότητα του Compiler)
Ο compiler επιβάλλει τον κανόνα “no silent unwrap” για Knowledge<T> (δείτε Knowledge<T>). Αυτό σας δίνει ένα αξιόπιστο boundary όπου η επιστημική πληροφορία απορρίπτεται σκόπιμα.
Πέρα από αυτό, η πλήρης αυτόματη propagation της αβεβαιότητας εξαρτάται από το πόσο χρησιμοποιείτε την επιστημική stdlib και ποια compiler features/backends είναι ενεργά.
Στη Spec / Intended Semantics
Το intended μοντέλο ακολουθεί τυπική πρακτική μετρολογίας (GUM-style propagation για ανεξάρτητες εισόδους):
- Για
c = a ± b:u(c) = sqrt(u(a)^2 + u(b)^2)
- Για
c = a * bήc = a / b(relative form):u_rel(c) = sqrt(u_rel(a)^2 + u_rel(b)^2), όπουu_rel(x) = u(x) / x
Σε επίπεδο γλώσσας, ο στόχος είναι οι πράξεις πάνω σε Knowledge<T> να:
- υπολογίζουν τη νέα point estimate
- propagates την αβεβαιότητα
- ενημερώνουν το confidence (όπου εφαρμόζεται)
- κάνουν append το provenance
Πρακτική Καθοδήγηση
- Κρατήστε τις τιμές ως
Knowledge<T>όσο μπορείτε. - Όταν πρέπει να περάσετε σε “plain data”, χρησιμοποιήστε
unwrap(reason)και καταγράψτε το γιατί. - Για domain code (PK/PD, neuroimaging, κ.λπ.), προτιμήστε stdlib modules που ήδη μοντελοποιούν αβεβαιότητα και provenance ρητά.