すべての標準の演算子は区間に対しても利用できる (拡張されている、ということだ)。 オペランドの一つが区間であれば、すべての演算は区間演算される。
>> y=3*midrad(3.14,0.01)^2 |
>> A=midrad(rand(100),1e-4); >> tic; B=rad(A*A); disp(max(B(:))); toc; |
デフォールトでは、行列の演算は中心/半径形式で行われる。 これは効率的であるが、半径が最悪 倍 overestimate される。 intvalinit('sharpivmult') とすると、 シャープな幅を持つ区間を計算する。
>> intvalinit('sharpivmult') >> tic; B=rad(A*A); disp(max(B(:))); toc; |
現在のモードを表示するには、 intvalinit('ivmult') を実行する。
Hargreaves [1] には、 標準関数の評価に関するモード (approximatestdfcts, rigorousstdfcts) の使い方が書いてあるが、 現在の INTLAB (Version 9) にはそういうモードはないようである。 Intlab_V9/intlabsetting.mに
% modified 09/10/07 S.M. Rump approximate std fcts removed |
区間 x, y に対して、 交わり , 区間包 は それぞれ intersect(x,y), hull(x,y) で計算できる。
(Hargreaves [1] には、 “union” (合併) と書いてあるが、 正確には、合併の区間包 (interval hull) というべきであろう。 そのことは交わりが空である2つの区間の hull() を計算してみると分かる。)
>> x=infsup(-1,2); y=infsup(1.5,3); >> intersect(x,y) >> hull(x,y) |
abss() は obsolete (廃語) で、 mag() になったとか。 mag(x) は、 を計算するのかな?
mig() は mignitute というけれど、一体何? こういうのは普通の数学語で書けば良いのに。 mig(x) は を計算するのかな?
|
in(x,y) は が成り立つかどうか。 真のとき , 偽のとき 0 を返す。
in0(x,y) は (x が y の内部に含まれる。 すなわち かつ ) が成り立つかどうか。 真のとき , 偽のとき 0 を返す。
桂田 祐史