| 159 | |
| 160 | ---- |
| 161 | |
| 162 | == [Implementación] == |
| 163 | |
| 164 | Se propone una implementación del particionamiento {{{P_k(x)}}} a partir de los valores: {{{ (x, xI:=x_k, xS:=x_{k+1}) }}} |
| 165 | |
| 166 | === TOL === |
| 167 | |
| 168 | {{{ |
| 169 | #!java |
| 170 | ////////////////////////////////////////////////////////////////////////////// |
| 171 | Real Piecewise(Real x, Real xI, Real xS) |
| 172 | ////////////////////////////////////////////////////////////////////////////// |
| 173 | { |
| 174 | Case(xI<0 & xS<0, Case(x<xI, xI-xS, x<xS, x-xS, True, 0), |
| 175 | xI<=0 & xS>=0, Case(x<xI, xI, x>xS, xS, True, x), |
| 176 | xI>0 & xS>0, Case(x<xI, 0, x<xS, x-xI, True, xS-xI)) |
| 177 | }; |
| 178 | }}} |
| 179 | |
| 180 | Véase [source:trunk/ExtLib/fun_piecewise.tol]. |
| 181 | |
| 182 | === SQL === |
| 183 | |
| 184 | {{{ |
| 185 | #!sql |
| 186 | CREATE FUNCTION piecewise(x NUMERIC, xI NUMERIC, xS NUMERIC) RETURNS NUMERIC |
| 187 | AS $$ SELECT CASE |
| 188 | WHEN $1 IS NULL THEN NULL |
| 189 | WHEN $2 IS NULL AND $3 IS NULL THEN $1 -- (-inf, inf) |
| 190 | WHEN $2 IS NULL AND $3<0 THEN (CASE WHEN $1<$3 THEN $1-$3 ELSE 0 END) -- (-inf, neg) |
| 191 | WHEN $2 IS NULL AND $3>=0 THEN (CASE WHEN $1>$3 THEN $3 ELSE $1 END) -- (-inf, pos|0) |
| 192 | WHEN $2<=0 AND $3 IS NULL THEN (CASE WHEN $1<$2 THEN $2 ELSE $1 END) -- (neg|0, inf) |
| 193 | WHEN $2>0 AND $3 IS NULL THEN (CASE WHEN $1<$2 THEN 0 ELSE $1-$2 END) -- (pos, inf) |
| 194 | WHEN $2<0 AND $3<0 THEN (CASE WHEN $1<$2 THEN $2-$3 WHEN $1<$3 THEN $1-$3 ELSE 0 END) -- (neg, neg) |
| 195 | WHEN $2<=0 AND $3>=0 THEN (CASE WHEN $1<$2 THEN $2 WHEN $1>$3 THEN $3 ELSE $1 END) -- (neg|0, pos|0) |
| 196 | WHEN $2>0 AND $3>0 THEN (CASE WHEN $1<$2 THEN 0 WHEN $1<$3 THEN $1-$2 ELSE $3-$2 END) -- (pos, pos) |
| 197 | END $$ |
| 198 | LANGUAGE SQL; |
| 199 | }}} |