Localized V2 rewrite for this language is in progress. Showing English-first content for now.

不確かさ

Sounio が測定の不確かさを表現し、(将来的に)伝播させる方法。

不確かさ

科学計算のコードは測定値だらけで、測定値は決して厳密ではありません。Sounio は不確かさをコメントやスプレッドシートで管理するのではなく、第一級 データとして扱います。

いま動くこと(コンパイラの現状)

コンパイラは Knowledge<T> に対して 「黙って unwrap できない」 ルールを適用します(Knowledge<T> を参照)。これにより、エピステミック情報が意図的に捨てられる境界を明確にできます。

それ以上の自動不確かさ伝播は、どれだけエピステミック stdlib を使うか、どのコンパイラ機能/バックエンドを有効にするかに依存します。

仕様 / 意図された意味論

意図されたモデルは、標準的なメトロロジーの実務(独立入力に対する GUM 風の伝播)に従います:

  • c = a ± b のとき:
    • u(c) = sqrt(u(a)^2 + u(b)^2)
  • c = a * b または c = a / b(相対形式):
    • u_rel(c) = sqrt(u_rel(a)^2 + u_rel(b)^2), ただし u_rel(x) = u(x) / x

言語レベルの目標として、Knowledge<T> 上の演算は:

  • 新しい点推定を計算し
  • 不確かさを伝播し
  • (必要なら)信頼度を更新し
  • 来歴を追記します

実用的な指針

  • できるだけ Knowledge<T> のまま値を保持する。
  • plain なデータへ渡す必要があるときは unwrap(reason) を使い、理由を残す。
  • PK/PD や neuroimaging などのドメインコードでは、不確かさと来歴を明示的にモデル化している stdlib モジュールを優先する。

次へ