63 votos

¿Hay una expresión matemática equivalente al operador ternario condicional?

¿Hay un equivalente matemático del operador condicional ternario que se usa en la programación?

 a = b + (c > 0 ? 1 : 2)
 

Lo anterior significa que si $c$ es mayor que $0$ entonces $a = b + 1$ , de lo contrario $a = b + 2$ .

87voto

John 9631 Puntos 1

De la física, que estoy acostumbrado a ver el delta de Kronecker,$$ {\delta}_{ij} \equiv \left\{ \begin{array}{lll} 1 &\text{if} & i=j \\ 0 &\text{else} \end{array} \right. _{,} $$and I think people who work with it find the slightly generalized notation$$ {\delta}_{\left[\text{condición}\right]} \equiv \left\{ \begin{array}{lll} 1 &\text{if} & \left[\text{condition}\right] \\ 0 &\text{else} \end{array} \right. $$to be pretty natural to them.

So, I tend to use $\delta_{\left[\text{condición}\right]}$ for a lot of things. Just seems so simple and well-understood.

Transforms:

  1. Basic Kronecker delta:
    To write the basic Kronecker delta in terms of the generalized Kronecker delta, it's just$$ \delta_{ij} \Rightarrow \delta_{i=j} \,.$$Es casi la misma notación, y creo que la mayoría de la gente puede averiguar con bastante facilidad sin necesidad explicó.

  2. Operador condicional:
    El "operador condicional" o "operador ternario" por el simple caso de ?1:0:$$ \begin{array}{ccccc} \boxed{ \begin{array}{l} \texttt{if}~\left(\texttt{condition}\right) \\ \{ \\ ~~~~\texttt{return 1;} \\ \} \\ \texttt{else} \\ \{ \\ ~~~~\texttt{return 0;} \\ \} \end{array} ~} & \Rightarrow & \boxed{~ \texttt{condición ? 1 : 0} ~} & \Rightarrow & \delta_{i=j} \end{array} _{.} $$Then if you want a non-zero value for the false-case, you'd just add another Kronecker delta, $\delta_{\operatorname{NO}\left(\left[\text{condición}\right]\right)} ,$ e.g. $\delta_{i \neq j} .$

  3. Indicador de la función:
    @SiongThyeGoh la respuesta recomienda el uso de indicador de la notación de la función. Me gustaría reescribir su ejemplo como$$ \begin{array}{ccccc} \underbrace{a=b+1+\mathbb{1}_{(-\infty, 0]}(c)} _{\text{their example}} & \Rightarrow & \underbrace{a=b+1+ \delta_{c \in \left(-\infty, 0\right]}} _{\text{direct translation}} & \Rightarrow & \underbrace{a=b+1+ \delta_{c \, {\small{\leq}} \, 0}} _{\text{cleaner form}} \end{array} \,. $$

  4. Iverson soporte:
    Iverson notación de corchetes, como se sugiere en @FredH la respuesta, al parecer es la misma cosa; de acuerdo a Wikipedia, es una generalización de la delta de Kronecker, con la excepción de que la gota de la $\delta$ totalmente, solo poniendo la condición en la plaza de soportes. En un contexto en lectores esperan, Iverson soporte de la notación puede ser preferible si los condicionales se usan mucho.


Nota: "operador Condicional" en lugar de "operador ternario".

El operador condicional, condition ? trueValue : falseValue, tiene 3 argumentos, lo que es un ejemplo de un operador ternario. Por el contrario, la mayoría de los otros operadores en la programación tienden a ser operadores unarios (que tiene 1 argumento) o los operadores binarios (que tiene 2 argumentos).

Desde el operador condicional es bastante única en ser un operador ternario, es a menudo ha sido llamado "el operador ternario", que lleva a muchos a creer que ese es su nombre. Sin embargo, "operador condicional" es más específico y generalmente debe ser preferido.

65voto

Shabaz Puntos 403

La expresión b + (c > 0 ? 1 : 2) no es un operador ternario; Es una función de dos variables. Hay una operación que resulta en $a$ . Ciertamente, puede definir una función $$ f (b, c) = \begin {cases} b+1&c \gt 0\\ b+2 & c \le 0 \end {casos}$$

You can also define functions with any number of inputs you want, so you can define $ f (a, b, c) = a (b + c ^ 2) $ , por ejemplo. Esta es una función ternaria.

52voto

FredH Puntos 166

En Concrete Mathematics de Graham, Knuth y Patashnik, los autores usan la notación "Iverson bracket": los corchetes alrededor de una declaración representan $1$ si la declaración es verdadera y $0$ de lo contrario. Usando esta notación, podrías escribir $$ a = b + 2 - [c \ gt 0]. $$

29voto

SiongthyeGoh Puntos 61

Usando la notación de la función de indicador: $$a=b+1+\mathbb{1}_{(-\infty, 0]}(c)$ $

17voto

Paul Childs Puntos 126

En matemáticas, las ecuaciones se escriben en forma por partes al tener una llave que contiene varias líneas; cada uno con una condición excepto la última que tiene "lo contrario".

Hay algunos operadores personalizados que también ocasionalmente hacen una aparición. Por ejemplo, la función Heavyside mencionada por Alex, la función Dirac y el operador cíclico $\delta_{ijk}$ , todos los cuales se pueden usar para emular el comportamiento condicional.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X