// *** kraw.sci *** // Krawczyk operator // by Shin'ichi OISHI // 1999.12.20 // x is an [n,1]-mat-tlist expressing approximate // solution of func(x)=0. // name is a function name, for instance, name = 'func'. // T=||B(0,d1)|| and H=||K(x+T)-x||. // Thus if T > H, then an exact solution exists // in x+B(0,d1). function [T,H]=kraw(x, name) ss=x('dim'); dim=ss(1); e1=0.5*10^{-15}; h=i(-e1,e1); ix=x; for i=1:dim; ix(i+2) = x(i+2) + h; end; s = name + '(ix)'; z = evstr(s); v = x; for i=1:dim, v(i+2)=z(i+2); end; y=init_dif(x); s=name + '(y)'; zz=evstr(s); j=jacobi(zz); vv=val(zz); d=j\vv; rad=2*norm(d,'inf'); R=inv(j); d1=max(10^{-13},abs((rad))); hh=i(-d1,d1); ix=x; for i=1:dim, ix(i+2) = x(i+2) + hh; end; y=init_dif(ix); F = evstr(s); Fc = eye(dim,dim); Fw = eye(dim,dim); fc = ones(dim,1); fw = ones(dim,1); up(); for i=1:dim, fc(i) = (v(i+2)(2)+v(i+2)(3))/2; fw(i) = fc(i)-v(i+2)(2); end; for i=1:dim, for j=1:dim, Fc(i,j)=(F(i+2)(4)(j+2)(2)+F(i+2)(4)(j+2)(3))/2; Fw(i,j)=Fc(i,j)-F(i+2)(4)(j+2)(2); end; end; aR=abs(R); ru = (-R)*fc + aR * fw; Mu = eye(dim,dim) + (-R)*Fc + aR * Fw; down(); rd = (-R)*fc + (-aR)*fw; Md = eye(dim,dim) + (-R)*Fc + (-aR) * Fw; Mm = max(abs(Md),abs(Mu)); up(); q = d1*Mm*ones(dim,1); Hu = ru+q; down(); Hd = rd+(-q); H=max(norm(Hu,'inf'),norm(Hd,'inf')); T=d1; endfunction