close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Changes between Version 7 and Version 8 of Piecewise


Ignore:
Timestamp:
Jun 13, 2014, 2:42:01 PM (11 years ago)
Author:
Pedro Gea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Piecewise

    v7 v8  
    157157}}}
    158158y comprobar que: {{{Sum_k(P_k(x)) == x}}}.
     159
     160----
     161
     162== [Implementación] ==
     163
     164Se 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//////////////////////////////////////////////////////////////////////////////
     171Real 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
     180Véase [source:trunk/ExtLib/fun_piecewise.tol].
     181
     182=== SQL ===
     183
     184{{{
     185#!sql
     186CREATE 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}}}