[semi OT] Problema matematico

28/07/2009 - 17:31 por MEVB | Informe spam
Tengo un problema matemático que creo está relacionado con inecuaciones,
conjuntos e intervalos, pero no logro resolver con mis limitados
conocimientos de la materia.

El enunciado que me atrevo a formular es algo así:

Se tiene una lista total de valores conocida llamada "f", y que siempre
inicia en 1 (i=1).
Se tiene un bloque o intervalo de valores "b" y la posición dentro de ese
bloque llamada "bp".
Se desean conocer los extremos del bloque, "bi" y "bf".

i es un valor constante.
b, f y bp son variables.

Ejemplos de los bloques:
b. 10. 15
-
1. 1 - 10.. 1 - 15
2. 11 - 20.. 16 - 30
3. 21 - 30.. 31 - 45
4. 31 - 40.. 46 - 60

Si bp = 17,
cuando b entonces bi y bf (ubicado en el intervalo 2)
y cuando b entonces bi y bf0 (ubicado en el intervalo 2)

Si f = 41, el último bloque será...
para b entonces biA y bfA (ubicado en el intervalo 5)
y para b entonces bi1 y bfA (ubicado en el intervalo 3)

Sin embargo, bi y bf son desconocidos y deben calcularse teniendo los
valores de: b, f, bp, i=1.
Conociendo el intervalo "n" se puede saber el valor de "bf", siendo que bf =
b * n

Otra forma de ver el enunciado es como si fuera una recta en el plano.
i=1...f
||
..\-- b -/
.bi-bf
bp

Alguien sabe como calcular los valores de bi, bf???

Saludos
MV

Preguntas similare

Leer las respuestas

#1 langosta
28/07/2009 - 17:51 | Informe spam
Todo bien.
"MEVB" <m.a.n.u.e.l.[AT].a.p.u.r.o.s...c.o.m> escribió en el mensaje de
noticias:
Tengo un problema matemático que creo está relacionado con
inecuaciones, conjuntos e intervalos, pero no logro resolver con mis
limitados conocimientos de la materia.

El enunciado que me atrevo a formular es algo así:

Se tiene una lista total de valores conocida llamada "f", y que
siempre inicia en 1 (i=1).
Se tiene un bloque o intervalo de valores "b" y la posición dentro de
ese bloque llamada "bp".
Se desean conocer los extremos del bloque, "bi" y "bf".

i es un valor constante.
b, f y bp son variables.

Ejemplos de los bloques:
b. 10. 15
-
1. 1 - 10.. 1 - 15
2. 11 - 20.. 16 - 30
3. 21 - 30.. 31 - 45
4. 31 - 40.. 46 - 60

Si bp = 17,
cuando b entonces bi y bf (ubicado en el intervalo 2)
y cuando b entonces bi y bf0 (ubicado en el intervalo 2)

Si f = 41, el último bloque será...
para b entonces biA y bfA (ubicado en el intervalo 5)
y para b entonces bi1 y bfA (ubicado en el intervalo 3)

Sin embargo, bi y bf son desconocidos y deben calcularse teniendo los
valores de: b, f, bp, i=1.
Conociendo el intervalo "n" se puede saber el valor de "bf", siendo
que bf = b * n

Otra forma de ver el enunciado es como si fuera una recta en el plano.
i=1...f
||
..\-- b -/
.bi-bf
bp

Alguien sabe como calcular los valores de bi, bf???

Saludos
MV




bi = bp\b * b + 1
bf = bp\b * b + b

¿no?
Respuesta Responder a este mensaje
#2 Rubén Vigón
28/07/2009 - 18:05 | Informe spam
Hola Manuel,

Si te he entendido bien, puedes resolverlo con la función «Partition» de Visual Basic. Por ejemplo, para averiguar en qué intervalo está el número 123 en el rango de números del 1 al 1.000 en "bloques" de 25 números (40 bloques), sólo tendrías que hacer:

Debug.Print "Está en el intervalo " & Partition(123, 1, 1000, 75)

~~~~~~~~~ Inmediato ~~~~~~~~~~~~~
Está en el intervalo 76: 150
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Para averiguar en qué intervalo están los números 992, 996 y 998 en el rango de números del 1 al 999 en "bloques" de 3 números:

Debug.Print "Está en el intervalo " & Partition(992, 1, 999, 3)
Debug.Print "Está en el intervalo " & Partition(996, 1, 999, 3)
Debug.Print "Está en el intervalo " & Partition(998, 1, 999, 3)

~~~~~~~~~ Inmediato ~~~~~~~~~~~~~
Está en el intervalo 991: 993
Está en el intervalo 994: 996
Está en el intervalo 997: 999

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ésta función también es aplicable a fechas (como simples números que realmente son). Imagina que viviésemos en un planeta cuyas semanas durasen 12 días en lugar de 7. Para averiguar en qué semana estaríamos en dicho planeta podrías hacer:

Dim fchIni As Date, fchFin As Date, strIntervalo() As String
fchIni = DateSerial(2009, 1, 1)
fchFin = DateSerial(2009, 12, 31)
strIntervalo = Split(Partition(Date, fchIni, fchFin, 12), ":")
Debug.Print "Estamos en la semana del " & CDate(strIntervalo(0)) & " al " & CDate(strIntervalo(1))
Erase strIntervalo

~~~~~~~~~~~~~ Inmediato ~~~~~~~~~~~~~~~~
Estamos en la semana del 24/07/2009 al 04/08/2009

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un saludo!

Rubén Vigón
http://vigon.mvps.org
Respuesta Responder a este mensaje
#3 MEVB
28/07/2009 - 18:17 | Informe spam
Gracias Langosta por tu respuesta.
Sin embargo, no es correcta, puesto que al simplificarla quedaria:

bi = bp\b * b + 1
bf = bp\b * b + b



bi = bp + 1
bf = bp + b

lo cual no me sirve.

De todos modos gracias por el intento.
Saludos
MV



"langosta" escribió en el mensaje
news:h4n6r2$hgd$


Todo bien.
"MEVB" <m.a.n.u.e.l.[AT].a.p.u.r.o.s...c.o.m> escribió en el mensaje de
noticias:
Tengo un problema matemático que creo está relacionado con inecuaciones,
conjuntos e intervalos, pero no logro resolver con mis limitados
conocimientos de la materia.

El enunciado que me atrevo a formular es algo así:

Se tiene una lista total de valores conocida llamada "f", y que siempre
inicia en 1 (i=1).
Se tiene un bloque o intervalo de valores "b" y la posición dentro de ese
bloque llamada "bp".
Se desean conocer los extremos del bloque, "bi" y "bf".

i es un valor constante.
b, f y bp son variables.

Ejemplos de los bloques:
b. 10. 15
-
1. 1 - 10.. 1 - 15
2. 11 - 20.. 16 - 30
3. 21 - 30.. 31 - 45
4. 31 - 40.. 46 - 60

Si bp = 17,
cuando b entonces bi y bf (ubicado en el intervalo 2)
y cuando b entonces bi y bf0 (ubicado en el intervalo 2)

Si f = 41, el último bloque será...
para b entonces biA y bfA (ubicado en el intervalo 5)
y para b entonces bi1 y bfA (ubicado en el intervalo 3)

Sin embargo, bi y bf son desconocidos y deben calcularse teniendo los
valores de: b, f, bp, i=1.
Conociendo el intervalo "n" se puede saber el valor de "bf", siendo que
bf = b * n

Otra forma de ver el enunciado es como si fuera una recta en el plano.
i=1...f
||
..\-- b -/
.bi-bf
bp

Alguien sabe como calcular los valores de bi, bf???

Saludos
MV




bi = bp\b * b + 1
bf = bp\b * b + b

¿no?



Respuesta Responder a este mensaje
#4 langosta
28/07/2009 - 18:37 | Informe spam
"MEVB" <m.a.n.u.e.l.[AT].a.p.u.r.o.s...c.o.m> escribió en el mensaje de
noticias news:
Gracias Langosta por tu respuesta.
Sin embargo, no es correcta, puesto que al simplificarla quedaria:

bi = bp\b * b + 1
bf = bp\b * b + b



bi = bp + 1
bf = bp + b




NO.

bp / b * b, sí... pero una división de enteros, jamás.

lo cual no me sirve.

De todos modos gracias por el intento.
Saludos
MV


Respuesta Responder a este mensaje
#5 langosta
28/07/2009 - 19:05 | Informe spam
fue
bi = bp\b * b + 1
bf = bp\b * b + b







debió ser

bi = (bp \ b) * b + 1
bf = (bp \ b) * b + b

sino, b * b resulta tan grande que la división es 0.

Lo triste es que yo sé esto... Debería haber usado MulDiv(), que para
eso está...
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida