Go to the first, previous, next, last section, table of contents.


区間型式

区間(interval) とは、連続する実数の部分集合です。 例えば区間 `[2 .. 4]' は、2から 4までの全ての数(境界含む)を表します。 これに区間 `[0.5 .. 2]' を掛けると `[1 .. 8]' を得ます。 この計算の表すところは、 `[2 .. 4]' の範囲内のある数と、 `[0.5 .. 2]' の範囲内の別のある数を掛けると、 結果は 1 から 8 の範囲内に入るという事です。 このような区間の計算は、入力値の取りうる範囲が与えられているときに、 計算結果が取り得る範囲の最悪ケースを見積るために利用されます。

Calc は、上に挙げた区間の他にも数種類の区間をサポートしていて、 `(2 .. 4)' のような、境界上の 2 と 4 を含まない区間、 片方が丸括弧で反対がカギ括弧の半開区間があります。 数学用語で示すと、

`[2 .. 4]' の意味は 2 <= x <= 4
`[2 .. 4)' の意味は 2 <= x < 4
`(2 .. 4]' の意味は 2 < x <= 4
`(2 .. 4)' の意味は 2 < x < 4

区間の上下限は、実数(または時分秒や日付型式), 実数と見なされる文字式, `-inf', `inf' のいずれかでなければなりません 一般に、下限は上限より小さくなければなりません。 唯一の値しかとらない閉区間 `[3 .. 3]' は、 自動的に普通の数値 3 に変換されます。 (`[3 .. 2]'`[2 .. 2)' のような)まったく値を含まない区間は、 表現こそ可能なものの、計算に使用されたときの挙動は保証されません。 区間 `[3 .. inf)' は 3 以上の全ての実数を表し、 `(-inf .. inf)' は全ての実数を表します。 実際、`[-inf .. inf]' は実数の無限大を含めてすべての実数を表します。

区間の入力は、ここに示すとおりの表記法で、代数的入力あるいは不完全項を使います。 (不完全項 参照 。) 代数式の中では、行中の複数のピリオドは左から右の順でまとめられるので、 `1...1e2'`1 .. 0.1e2' ではなく `1.0 .. 1e2' と解釈されます。 この解釈を避けたい場合はスペースやゼロを補ってください。 下限や上限を省略して入力すると、 それぞれデフォルトの `-inf'`inf' が据えられます。

「無限大モード」も、区間の演算に影響します(無限大 参照 )。 Calc は `1 / (0 .. 2] = [0.5 .. inf)' のように、 開区間境界としての無限大はいつでも導入します。 しかし、閉区間境界としての無限大 `1 / [0 .. 2] = [0.5 .. inf]' は、 無限大モードでのみ使用し、それ以外の場合は評価せずに放置します。 ちなみにこの場合、ゼロに近づく方向は常に「区間の内側から」と見なされるので、 無限大の向きも決定されます。 ゼロを内部に含む区間の場合は、 `1 / (-2 .. 2) = [-inf .. inf]' とせざるを得ません。

区間型式と誤差型式が似たように見えるかも知れませんが、 両者は不確定な数量に関して完全に異なった概念に基づいています。 誤差型式 `x +/- @c{$\sigma$} σ' は、不確定値がランダムで、その値は何でもあり得るが、 おそらく平均 x から @c{$1\cdot\sigma$} 1・σ 以内であることを意味します。 区間 `[a .. b]' は、 値は不明だが、指定された範囲内にあることが保証された不確定値を意味します。 誤差型式は統計的または「平均的」近似であり、 区間計算はその答の「最悪側の限界」を求めることを指向しています。

区間は複素数を含んではなりませんが、 時分秒や日付形式は含むことができます。

区間型式を実数の部分集合とみなして動作するコマンド群については、 Set Operations using Vectors 参照 。

代数関数 `intv(n, a, b)' は、 `a' から `b' までの区間型式をつくります。 `n' は整数で、 0 が `(..)', 1 が `(..]', 2 が `[..)', 3 が `[..]' です。

[注意]: 非常にシビアな区間計算では、下限はマイナス無限大方向に丸められ、 上限はプラス無限大方向に丸められるよう注意が払われるべきです。 Calc の計算は常に四捨五入モードなので、 区間計算に丸め誤差が滲入して、 あるべき姿より少し小さな区間を答としてしまうかもしれません。 例えば、`[1..2]' を入力して Q 2 ^ と打つと、 もとの `[1..2]' に戻るべきところですが、実際は丸め誤差のせいで (少し小さい)区間 `[1..1.9999999]' となってしまいます。


Go to the first, previous, next, last section, table of contents.     利用度数