Loading [MathJax]/extensions/TeX/mathchoice.js

5 votos

Función que envía 1,2,3,4 a 0,1,1,0 respectivamente

Ya me cansé tratando de pensar en una función f:{1,2,3,4}{0,1,1,0} en otras palabras:

f(1)=0f(2)=1f(3)=1f(4)=0

No me sugieras la división en enteros; no me sirve. Hay maneras de implementarlo con módulo, valor absoluto, y así sucesivamente, sin condiciones?

4voto

rguo Puntos 118

Las funciones de Heaviside (utilizando la convención adecuada) también deberían funcionar. Utilice

f(x)=U(x1)U(x2)

donde U es la función escalonada de Heaviside.

2voto

bentsai Puntos 1886

Desde el punto de vista matemático, describir una función de este tipo es trivial: f(x)={0if x{1,4}1if x{2,3}. No es una fórmula especialmente hábil para la función, pero es ciertamente sencilla. Una alternativa es buscar " números mágicos ". Por ejemplo: f(x)=2x^2+3 \mod 5. Para encontrar esta función, simplemente dejé que mi ordenador buscara hasta que los números coincidieran.

Si buscas una implementación eficiente de esta función, en C digamos, cualquiera de estas podría calcular la función:

char f=(x&2)>>1;
char f=(x>>1)%2;  // this is Ross Millikan's suggestion
char f=(x>>1)&1;

Aquí & es a nivel de bits and , >> está desplazado a la derecha por uno, y % es la operación mod.

Si sólo necesita un if(f!=0) { ... } (es decir, "si f(x)\neq 0 "), entonces esto sería suficiente:

if(x&2) { ... }

Una alternativa a lo anterior es simplemente almacenar los valores en la memoria. Por ejemplo, mediante:

char f[5]={0,0,1,1,0};

por lo que, si se quiere calcular f(x) , puedes simplemente recordar f[x] de memoria.

2voto

Leon Katsnelson Puntos 274

¿Algo más complejo tal vez? f(x)=\max(0, \text{Im}\, i^{x-1}-\text{Re}\, i^{x-1})

O algo más sencillo:

f(x) = 1 - \max(0, 2-x, x-3)

Del mismo modo (en la línea del |x-2.5| respuestas):

f(x) = 3-\max(2, |2x-5|)

1voto

Esteban Araya Puntos 12496

Dado cualquier conjunto de n puntos y valores, siempre se puede construir un polinomio de grado menor o igual a n-1 que pasa por todos los puntos. Ver http://en.wikipedia.org/wiki/Polynomial_interpolation .

Utilizando el método de allí, obtenemos

\left[\begin{smallmatrix}1 & 1 & 1 & 1\\8 & 4 & 2 & 1\\27 & 9 & 3 & 1\\64 & 16 & 4 & 1\end{smallmatrix}\right] \left[\begin{smallmatrix}a_{3}\\a_{2}\\a_{1}\\a_{0}\end{smallmatrix}\right] = \left[\begin{smallmatrix}0\\1\\1\\0\end{smallmatrix}\right]

Multiplicando por la matriz inversa de la izquierda en ambos lados se obtiene

\left[\begin{smallmatrix}a_{3}\\a_{2}\\a_{1}\\a_{0}\end{smallmatrix}\right] = \left[\begin{smallmatrix}0\\- \frac{1}{2}\\\frac{5}{2}\\-2\end{smallmatrix}\right]

lo que significa que el polinomio resultante es - \frac{1}{2} x^{2} + \frac{5}{2} x -2 (de hecho, si se calcula esto, se obtiene lo mismo que Jasper Loy). Puedes comprobar fácilmente que este polinomio funciona. Nótese que en este caso, el polinomio tenía un grado menos del que esperábamos.

1voto

Mira el ejemplo de Interpolación de Lagrange entonces es fácil construir cualquier función desde cualquier secuencia a cualquier secuencia.

En este caso:

L(x)=\frac{1}{2}(x-1)(x-3)(x-4) + \frac{-1}{2}(x-1)(x-2)(x-4) que se simplifica a: L(x)=\frac{-1}{2}(x-1)(x-4) que posiblemente podría explicar la respuesta de Jasper, pero ya que el método de derivación no se mencionó no puede decir con seguridad.

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