7.4.1 区間の入力、出力

$ [-1,1]$ という区間を変数 x に代入するには
>> x=infsup(-1,1)
あるいは
>> x=midrad(0,1)
とすれば良い。どちらも intval x=[-1.000,1.000] を返す。

区間の下限、上限、中心、半径はそれぞれ inf(), sup(), mid(), rad() で求められる。
やってみよう
>> inf(x)
>> sup(x)
>> mid(x)
>> rad(x)

(既にこの文書の上の方で書いておいたが) INTLAB では、複素数の包み込みには、 区間 $ [z_1,z_2]$ (下限/上限形式) ではなく、 複素平面における閉円盤 $ \langle c,r\rangle$ (中心/半径形式) を用いる。 演算も中心/半径形式のままで行う。 これにより、精度が犠牲になるが (下限/上限形式の場合の $ 1.5$ 倍の overestimate となる)、 高速に実行できる。 intvalint('SharpIVmult') を実行すると、 下限/上限形式で計算するようになり、 シャープであるが、遅くなる。

(infsup($ z_1$,$ z_2$) と入力することは出来るが、 内部では閉円盤に丸められて (当然 overestimation して) 記憶される。)

$ \langle 1+i,1\rangle$ という区間を z に代入するには
>> z=midrad(1+i,1)
(これで intval z=< 1.0000 + 1.0000i, 1.0000> と返す。)
>> inf(z)
>> sup(z)
(円盤に外接する正方形の左下の点 0, 右上の点 $ 2+i$ を返す)
>> mid(z)
>> rad(z)
(それぞれ円盤の中心 $ 1+i$, 半径 $ 1$ を返す)

関数 intval() は、

(i)
引数が浮動小数点数 $ x\in\mathbb{F}$ のとき、点区間 $ [x,x]\in\mathbb{IF}$ を返す。
(ii)
引数が実数 $ x$ を表す文字列のとき、$ x\in[a,b]$ となる $ [a,b]\in\mathbb{IF}$ で、 なるべく幅の短いものを返す。

例えば $ 0.1\not\in\mathbb{F}$ であるから、 $ 0.1$ を含む区間が必要ならば intval('0.1') とする。 intval(0.1) は、$ x$$ 0.1$ に最も近い浮動小数点数としたとき、 点区間 $ [x,x]$ を表す。 $ 0.1\not\in[x,x]$ であることに注意せよ。
» x=intval(0.1)    ( $ 0.1\not\in\texttt{x}$ 多分まちがい)
» x=intval('0.1')    ( $ 0.1\in\texttt{x}$)
rad(x) とすると、 前者の場合は 0 である (すなわち点区間である) が、 後者の場合は 1.3879e-17 を返す。

桂田 祐史
2020-09-03