desktop

Acertijos de lógica y comprensión

Bueno, chclau planteás las funciones no lineales y singulares.

A ver si encuentran algún caso donde también falla en funciones lineales, jeje.
 
Si es lineal y derivable para todo valor no creo que haya problemas. Si tiene cambios bruscos en su derivada y los puntos de decision del redondeo estan en o cerca de esos puntos de cambio brusco de derivada... nuevamente tendremos problemas de asimetria en el redondeo que pretendia ser simetrico.
 
Esto es realmente serio:

¿ Hasta qué punto es simétrico el redondeo simétrico ?

¿ Alguien podría argumentar por qué no es tan simétrico como se supone en la definición ?

Saludos, y espero que este acertijo no les quite el sueño ...

Ayuda: Empezar repasando la definición y ver en qué casos pueden fallar las hipótesis estadísticas.
Espero que no tenga que ver con un ejercicio de la materia algoritmo y calculo numérico que hisiste para un final y no te salió ¬_¬ ...

Despues de eso...
Ni idea, estoy buscando en internet y no encuentro no la definición...:D
 
Redondeo simetrico es aquel que toma la ultima cifra que va a ser la cifra final del numero redondeado y la cambia asi. Si la cifra decimal subsiguiente es entre cero y cuatro, la deja igual. Si esta entre cinco y nueve, le aumenta uno

Ejemplos

Redondeo simetrico a un decimal
45.23 -> 45.2
45.48 -> 45.5

Redondeo simetrico sin decimales
37.1 -> 37
37.6 -> 38

Saludos
 
Redondeo simetrico es aquel que toma la ultima cifra que va a ser la cifra final del numero redondeado y la cambia asi. Si la cifra decimal subsiguiente es entre cero y cuatro, la deja igual. Si esta entre cinco y nueve, le aumenta uno

Ejemplos

Redondeo simetrico a un decimal
45.23 -> 45.2
45.48 -> 45.5

Redondeo simetrico sin decimales
37.1 -> 37
37.6 -> 38

Saludos
ok, entonces lo único que se me ocurre es encontrar un "cero" o una indeterminación o alguna cosa rara de la matemática que todos intentan "salvar".
Pero como el redondeo simétrico no responde a una ecuación, o sea, matemáticamente no puede ser expresada esa "condición", entonces es muy dificil que le encontremos un problema en su definición.

Digo, es como preguntar "¿cuantos números capicuas tenes desde 0 hasta n?.
Lo primero que van a querer hacer todos (creo que es lo lógico) es modelizar la obtención de un número capicua. (capicua, aquel número que se lee igual de atras hacia adelante y viceversa).

Lo importante de esto es que la "ley" para reconocer un "capicua" es interpretativo del humano, lo mismo para el redondeo, si el ultimo está entre 6 o 9, sumale uno a la ultima cifra.

A lo que quiero llegar es ¿Como se dice en forma matemática "ultima cifra"?


El redondeo simétrico solo responde a una condición para un número determinado y perfectamente definido. No hay vuelta...

¿En que condición no es simétrico? cuando el último digito es 5, no sabes para donde disparar, si para arriba o abajo...

Está bien, puede que no sepa algebra y estoy mandando cualquiera, pero a mi se me ocurre encararlo por un modelo matemático... si no solo es especulación o un "vacio legal"..

:confused:
 
Última edición:
El 5 esta bien definido, disparas para arriba

Con respecto al redondeo, en muchos casos " no tiene consecuencias". medi 3.42 metros y decido redondearlo a 3.4 metros... y bueno, lo hago

pero si el numero redondeado es argumento de una funcion, ahi empiezan algunos lios si redondeo, porque yo queria que fuera simetrico pero al ser la funcion no lineal o singular... el resultado del redondeo es cualquier cosa menos simetrico

incluso en funciones seccionslmente lineales el redondeo puede ser muy no simetrico si elegimos mal los puntos alrededor de los cuales redondeamos.
 
pero es obvio... ya redondeando estamos cometiendo errores, por eso estuve leyendo algo y mencionan que algunos redondos van al par más cercano, o truncan, etc. Gracias a esto me doy cuenta que que el redondeo simétrico no es el único tipo de redondeo, es evidente que depende de la necesidad.
Ahora, ¿Cuando el redondeo simetro deja de ser util y genera error? y va adepender totalmente de tu información y la exigencia de precisión...
Si vamos por definición, "si entre 5 y 9 le sumo al último", psss, dame cualquier numero, con 10 o miles de decimales que yo siempre haré lo mismo, le sumaré 1 al último si cae entre 5 o 9.
Se me da en error no queda más que aumentar la memoria o el tiempo de procesamiento.

Quiero llegar a que no es un problema de definición, es un problema de cálculo numerico...
Volvemos a la misma pregunta ¿Cuando no me conviene usar el Redondeo simetrico y pasar a otro tipo de redondeo?
Eso yo ya no lo sé... u_u
 
Última edición:
El tema no es el error, es obvio que al redondear se produce error. La pregunta es cuando el redondeo que queriamos que fuera simetrico, no lo es en absoluto.

el truncado es mucho mas tosco poque introduce un error de 0 a 1, el redondeo simetrico produce error de -0.5 a 0.5, o sea la mitad en valor absoluto. Es obvio que es mejor que el truncado. pero, es siempre realmente simetrico? Yo ya di muchos ejemplos en que no lo es.
 
Es cierto, en la Wiki no dice nada del redondeo simétrico, ni siquiera en la versión en inglés, lo llama método común.
Yo tengo entendido que si el primer dígito a truncar (no guardar) es 5, se mira si el que sigue es par o impar.

Ej: Algunas cuentas hechas con Matlab:

4444444444444444*5 = 2.222222222222222e+016
4444444444444445*5 = 2.222222222222222e+016
4444444444444446*5 = 2.222222222222223e+016

En la mantisa solo puede guardar 16 dígitos, por eso trunca, pero antes tiene los dígitos del resultado para saber hacia dónde redondear.

En el primer caso termina en "...2200..." y redondea a "...22", La cifra 17 es la primera no guardada y vale 0.

En el segundo caso le da "...2250..." y redondea a "...22", La cifra 17 vale 5, y la 18 es 0, par y por eso NO acarrea 1 en la cifra 16 (última guardada). Si fuera impar, el redondeo simétrico acarrearía 1 y quedaría "...23".

En el tercer caso le da "...2300..." y, obvio, redondea a "...23".

Ven para dónde va el tema propuesto ?
Aclaro que no es un tema de exámen mal resuelto, sino que es algo con lo que me topé implementando algoritmos iterativos para resolver sistemas lineales, como parte de mi trabajo.

La supuesta simetría de este tipo de redondeo se basa que la probabilidad de redondear hacia arriba y hacia abajo es la misma porque hay tantos números del 1 al 4 como del 6 al 9, y tantos pares como impares para decidir cuando la primera cifra truncada es 5.
La cuestión es si como resultado de una cuenta anterior los dígitos están aleatoriamente distribuidos entre los valores probables, para que realmente los errores tiendan a cancelarse por aparecer distribuidos simétricasmente en signo y en amplitud.
Una cosa es la probabilidad y otra la posibilidad según la cuenta que precede.

Así analizé las tablas de multiplicar y de sumar. La resta es también una suma y la división es un algoritmo compuesto por productos y sumas.
Acá las subo más abajo.
En cada tabla se guarda el último dígito (unidades) del producto de los dígitos de 1 a 9 en la columna de la izquierda por los dígitos de 1 a 9 en la fila de arriba.
Los colores son para contar más fácil en cada caso cuántos impares (azul), pares, mayores (verde) y menores.
Algunas líneas señalan las simetrías posicionales de las tablas.

El redondeo es exactamente simétrico para mayores (32 casos) y menores (32 casos).
Pero en el caso del 5, cuando el acarreo lo decide la paridad del segundo dígito descartado, el resultado es altamente asimétrico en el caso del producto, y un poco menos en el caso de la suma.
Cuenten los casos ustedes mismos.

Atención: Todo esto es válido para cualquier secuencia de operaciones "lineales" como sumas y productos.
No se requiere nada no-lineal ni discontínuo como la función signo y cosas así.
El análisis lo seguí hasta donde pude afirmar algo. Dejo de lado que en una multiplicación real hay acarreo en otras cifras más a la izquierda, que luego afectarán la operación siguiente. Por eso las tablas guardan el dígito menos significativo, porque es el que no recibe acarreo de otras cifras redondeadas.
Espero que les sirva, y si encuentran algún enfoque de este tema, o se les ocurre alguna forma más práctica para analizar esto se los encargo.

De todos modos este análisis es útil de aplicar al método que usa el procesador realmente. Matlab por ejemplo hace un redondeo muy simple, cuando tiene que truncar el 5 lo trata como el 4, y no acarrea nada.
 

Adjuntos

  • Suma.PNG
    Suma.PNG
    31.3 KB · Visitas: 2
  • Producto.PNG
    Producto.PNG
    26 KB · Visitas: 1
Última edición:
La verdad que no entiendo lo que decis, sobre todo el tema de par e impar. No tiene sentido redondear 52 para abajo y 51 para arriba siendo que 52 es mayor que 51. Y tiene mucho menos sentido todavia redondear 58 hacia abajo y 51 hacia arriba.

Ademas, el redondeado expresado en decimal es de 0 a 4 para abajo, de 5 a 9 para arriba, en ambos casos son cinco cifras, y no hay por que tomar el 5 como un caso especial.

Lo que estamos pasando por alto aqui es que la computadora usa binario. En binario el algoritmo es mas simple. Se toman n cifras luego del redondeo. A la ultima cifra significativa se le suma el primer digito que desaparecera por el redondeado. Luego, si este era cero se redondea hacia abajo, si era uno, hacia arriba. Es tambien un algoritmo simetrico en el que necesitamos verificar solo un digito, aquel inmediatamente posterior al digito que conservaremos en el resultado redondeado.
 
Última edición:
No te compliques chclau, que no es para tanto.
El redondeo simétrico que yo he analizado es así:
si el primer dígito a descartar es de 6 a 9 se suma uno al último dígito conservado,
si el primer dígito a descartar es de 1 a 4 se deja como está y no se suma nada,
si el primer dígito a descartar es 0 no necesita redondear, y
si el primer dígito a descartar es 5 se decide por la paridad del dígito siguiente, no por el monto.
Esto último no debería incomodar, ya que primero se adopta una cantidad de dígitos y luego se procede
como si los dígitos sobrantes no estuvieran. Por ejemplo, al 1234,58 no se lo redondea primero a 1234,60 y luego a 1235,00.
La simetría del redondeo tiene que ver con la probabilidad con que se da cada uno de los casos anteriores.
Se supone que como la cifra que viene a la derecha está ahí "por azar" puede ser cualquier valor y entonces
se aplica la probabilidad.
Yo aclaré que lo que analizo NO es lo que hace la computadora, sino las premisas de ESTE redondeo simétrico. Obvio que luego hay que ir acercándose a los casos reales.
El problema es que en casos reales de la computadora no se tiene ninguna forma de analizar cómo se va encadenando una operación con la siguiente, y por eso me puse a ver qué ocurre para unas premisas dadas donde se supone simetría.
El redondeo sobre decimales se aplica cuando se presentan a 2 ó 3 decimales, en física o matemática, resultados de cuentas que uno hizo con la calculadora, trabajando con 11 decimales.
El tema tiene interés porque muchas veces parece que siempre el error es aleatorio y uno tiende a pensar que en promedio se compensa. Si se trata del resultado de una cuenta anterior la cosa puede no responder a una distribución simétrica. De hecho, aunque el promedio se vaya cancelando, no vale lo mismo con la desviación cuadrática, que en el redondeo acumulado va creciendo con el número de cuentas encadenadas. Esto es similar al problema del "camino aleatorio", que en física se aplica al movimiento browniano.
 
Última edición:
para mi todavia no tiene sentido. Es mucho mas simple redondear en el intervalo de [0, 5) para abajo y de [5, 10) para arriba.

Asi como lo planteas NO es simetrico porque el intervalo de redondeo para abajo es mas grande que el intervalo de redondeo para arriba, y quiza por eso tengas errores acumulados.
 
Última edición:
Supongamos el número: nnnnnnnnn0999

Si lo tengo que guardar con 9 decimales, guardo nnnnnnnnnE+4

¿ Por qué considerás eso un "redondeo" si el primer dígito a truncar ya es 0 ?
 
Última edición:
Lo considero un redondeo porque los digitos subsiguientes pueden no serlo, y en tu caso no lo son. Por ser el primer decimal 0 estoy eliminando los tres nueves que vienen detras, y eso, para mi, ya es redondeo.

Te digo mas, segun las reglas que yo propongo, 0.000 redondeado a un decimal es 0.0 aunque aqui efectivamente no hay redondeo alguno ni perdida de precision, asi como 0.500 redondeado a un decimal es 0.5. Toda la idea del redondeo simetrico es que el error por redondeo esta en el intervalo (-0.5, 0.5], haciendolo asi muy superior al truncado en el que el error maximo se aproxima a 1.

0.000 -> 0.0 error 0
0.449 -> 0.4 error -0.49
0.450 -> 0.5 error +0.5
0.499 -> 0.5 error +0.01

Los errores estan expresados en forma relativa al ultimo digito significativo luego del redondeo, si el numero original era 0.45 lo convierto en 0.5 con maximo error de medio digito menos significativo.

Si no me equivoco y aplicando tus reglas, el error estara en el intervalo (-0.55, 0.45] por lo que no es un redondeo simetrico.
 
Última edición:
Lamento si no se entendió la consigna.
No estamos calculando un error ni siquiera una cota, sólo analizando las implicancias de un criterio.

En cuanto al último ejemplo: es tan erróneo el resultado 0,445 como el 0,4, ya que ambos son expresiones de un resultado perfecto que desconocemos. Cuando uno no conoce el "resultado sin error" tiene que adoptar métodos de estimación o acotación. Para eso se adoptan convenciones.
Atención que no se trata de escudriñar el resultado "verdadero", sino de ver cuántos dígitos tiene sentido conservar en el resultado. Solo eso.
La cantidad de cifras a conservar en un resultado responde a alguna razón. En una medición, por ejemplo, se establece a partir del método de medida (en general la mínima cantidad distinguible por el método). Al redondear uno elige el número menor representable por la mantisa, o la mitad, depende del criterio.
A lo que voy es que si 0,449 lo redondeas a 0,4 es porque la cantidad 0,04 ya la estás considerando despreciable, y mucho más despreciable el 0,009 (aunque sea casi 0,01).
No mires que es un nueve y por lo tanto es "grande", mirá que está una potencia de 10 más abajo que el 4 que ya estás tirando a la basura.
Por eso es que no tiene sentido hacer error del error del error ...

El procedimiento de redondear es solo eso: un procedimiento ... mejor que no tener nada.
Y justamente por sus falencias no alcanza para entender lo que pasa cuando uno tiene que encadenar una cuenta atras de otra, ya que el tema del "encadenado" no se tuvo en cuenta al definir el procedimiento de redondeo.
Por eso es que merece ser considerado como un proceso aparte.

Disculpa la charla (mi propia firma me traiciona ...).

A modo de ilustración del tema les dejo un programita sencillo para que me digan qué resultado esperan obtener:

Código:
d=0.1
suma=0
for n=1, 10*N
   suma=suma+d
end
resultado = 1-suma/N
resultado = ?
 
Última edición:
Yo hable del error solo para mostrarte por que es correcto redondear de 0 a 4 y de 5 a 9, ya que esa es a mi juicio la manera de redondear en forma simetrica. Tampoco se entiende lo que dices ahora del encadenado de redondeos, que no es lo que preguntabas antes, acerca de si el redondeo es simetrico o no.

Se redondea en mediciones como bien dices, porque no tiene sentido expresar mas digitos que los que introduce de por si el error en el metodo de medicion. No tiene sentido expresar cinco decimales si el error es del orden del tercer decimal.

Pero aqui estamos hablando de redondear resultados de operaciones. Se redondea, generalmente, por limitaciones de la plataforma, ya sea en precision base de los registros, en tiempo de computo que estamos dispuestos a invertir, complejidad del algoritmo, etc. Y cuando redondeamos resultados de operaciones conocemos perfectamente cuales eran los operandos originales. En el resultado, por las limitaciones de la plataforma, debemos redondear para permanecer dentro de los limites de la plataforma, y de alli en adelante todos los operandos tendran error y error acumulado. El error acumulado se puede calcular a priori segun teoria de errores y las operaciones encadenadas que realice.

Pero ahora no entiendo el sentido de la pregunta original. Se trata de como hacer redondeo simetrico, o de como escoger los parametros de redondeo en operaciones encadenadas?
 
chclau
El tema de la consigna era sobre la simetría o no de un criterio de redondeo.
Esa inquietud surgió de otro tema, por eso mencioné el encadenamiento de cuentas.
No fue mi intención cambiar de foco.
Tampoco damos premio por contestar rápido.
 
Última edición:
:)

Bueno, contesto rapido porque el tema me interesa, aunque confieso que tambien esperaba un premio... otra vez sera.

Corri el programita en Matlab y no deja de ser interesante lo que se ve.
Si es por la simetria en el redondeo, bueno, pues como te dije, creo que lo que hay que hacer es poner el limite en 5... lo que hace que el algoritmo sea simetrico... y tambien bastante facil de implementar.

Saludos
 
La idea con ese código es comparar el resultado (que analíticamente debería dar cero)
con lo que hace la máquina para valores de N = 10, 100, 1000, etc.
Al código que sigue lo acomodé un poco para barrer en N, pero en esencia hace lo mismo que el anterior:
Código:
d=0.1
for K=1:8
    suma = 0;
    for n=1:10^K
        suma = suma+d;
    end
    g = suma - 10^K/10
    y(K) = abs(g);
    x(K) = K;
end
figure(1)
plot(x,log10(y),'.b');hold on
plot(x,log10(y),'-b');
axis([1 8 -16 0]), xlabel('log_1_0(N)')
ylabel('log_1_0(abs(g))')
Luego al graficar en logarítmica se ve algo así
grafica.jpg

Lo corté antes que termine con K= 8 porque tardaba mucho.
 
Última edición:
Espero que no tenga que ver con un ejercicio de la materia algoritmo y calculo numérico que hisiste para un final y no te salió ¬_¬ ...


Quiero llegar a que no es un problema de definición, es un problema de cálculo numerico...
Volvemos a la misma pregunta ¿Cuando no me conviene usar el Redondeo simetrico y pasar a otro tipo de redondeo?
Eso yo ya no lo sé... u_u

Ven para dónde va el tema propuesto ?
Aclaro que no es un tema de exámen mal resuelto, sino que es algo con lo que me topé implementando algoritmos iterativos para resolver sistemas lineales, como parte de mi trabajo.

De todos modos este análisis es útil de aplicar al método que usa el procesador realmente. Matlab por ejemplo hace un redondeo muy simple, cuando tiene que truncar el 5 lo trata como el 4, y no acarrea nada.


Pero como el redondeo simétrico no responde a una ecuación, o sea, matemáticamente no puede ser expresada esa "condición", entonces es muy dificil que le encontremos un problema en su definición.

¿En que condición no es simétrico? cuando el último digito es 5, no sabes para donde disparar, si para arriba o abajo...

El tema no es el error, es obvio que al redondear se produce error. La pregunta es cuando el redondeo que queriamos que fuera simetrico, no lo es en absoluto.

No te compliques chclau, que no es para tanto.
El redondeo simétrico que yo he analizado es así:
si el primer dígito a descartar es de 6 a 9 se suma uno al último dígito conservado,
si el primer dígito a descartar es de 1 a 4 se deja como está y no se suma nada,
si el primer dígito a descartar es 0 no necesita redondear, y
si el primer dígito a descartar es 5 se decide por la paridad del dígito siguiente, no por el monto.

Se trata de como hacer redondeo simetrico, o de como escoger los parametros de redondeo en operaciones encadenadas?

chclau
El tema de la consigna era sobre la simetría o no de un criterio de redondeo.

Ok, realmente no se tanta metemática como ustedes, igual lo que dicen veo que tiene sustento. Gracias a Chclau me dejó bien claro el concepto de error simétrico.

Pero...

Yo tenía razón!!!!!! >_<
La duda surgió por un trabajo, tenía que ver con el calculo numérico y nadie estaba aplicando la misma regla!!!
¬_¬

Todo bien, tenía que decirlo, está bien que no me hisieron perder el sueño, pero los seguí, me hisieron leer y despues resulta ser una simple discución técnica...
Es como preguntar "¿Cuando deja de ser eficiente un motor?" ¬_¬...
 
Atrás
Arriba