Autor |
Mensaje |
memovidal10
Nivel 4
Edad: 34
Registrado: 16 Mar 2009
Mensajes: 98
Carrera: Industrial
|
|
VARIABLES TIPO REAL:
Puede puede manejar, datos numéricos llamados de punto flotante, que se caracterizan por tener mantisa (parte fraccionaria) multiplicada por una potencia de 10. El número de dígitos que maneja en su mantisa se llama cifras significativas una variable tipo real puede manejar 11 cifras significativas en su mantisa y el rango de exponentes entre:
10-39 .. 10+38, para su representación real ocupa 6 bytes de memoria.
El rango de números es: 2.9*10-39 .. 1.7*1038
|
|
|
|
|
|
|
|
|
df
Nivel 9
Edad: 32
Registrado: 15 May 2010
Mensajes: 2298
Carrera: Civil
|
|
memovidal10 escribió:
|
En fin, otra duda, yo uso la funcion [f(x)-f(x-h)]/h y el signo de la derivada me da bien, pero cuando uso x+h me da el signo al reves... Muchas gracias a todos por las respuestas claras y rápidas, raro que nos pidan esto cuando ni lo vimos... Saludos!
|
Es [f(x+h)-f(x)]/h
|
|
|
|
_________________
|
|
|
|
|
Sebastian Santisi
Administrador Técnico
Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451
|
|
memovidal10 escribió:
|
Me gustaría averiguar cuanto ocupa la mantisa de un numero real almacenado en simple precisión en el FreePascal,
|
Te dejé dos enlaces al respecto; uno genérico sobre el standard y el otro de la documentación de FreePascal donde confirman que usan el standard...
@4WD: Soy un nabo, no se me había ocurrido por ese lado... lo que estaba pensando a nivel bits hacía lo mismo a bajo nivel; pero es incomparable hacerlo a través de la ALU .
|
|
|
|
_________________
|
|
|
|
|
memovidal10
Nivel 4
Edad: 34
Registrado: 16 Mar 2009
Mensajes: 98
Carrera: Industrial
|
|
Genios! Problema solucionado, me quedo claro que la mantisa ocupa 23 bits en el freepascal, pero al probar con MU=0.5E-22 el x=x+h... Entonces fui probando numeros que ocupa la mantisa, hasta que llegue a 11 y funciono perfecto con una linda aproximación... Abrazo!
|
|
|
|
|
|
|
|
|
4WD
Administrador
Edad: 39
Registrado: 07 Sep 2006
Mensajes: 2430
Ubicación: Ingeniero
Carrera: Mecánica
|
|
memovidal10 escribió:
|
Buenisimo! Muchas Gracias, ahora me cerro todo... Declare como constante MU, por lo que tengo entendido, la mantisa de un numero real almacendo en simple precisión ocupa 23 bits... O sea que MU=0.5E-22... Probé con ese pero parece que ese valor hace que x=x+h.
|
La teoría dice que con debería andar. No te olvides de multiplicar por x... Lo de los dígitos ni idea.
momovidal10 escribió:
|
En fin, otra duda, yo uso la funcion [f(x)-f(x-h)]/h y el signo de la derivada me da bien, pero cuando uso x+h me da el signo al reves...
|
Yo escribí cualquier cosa arriba. La derivada en adelanto (que es la que se suele usar) es: . La semana me limó...
|
|
|
|
_________________
|
|
|
|
|
GaboCR
Nivel 2
Edad: 32
Registrado: 29 Jul 2010
Mensajes: 14
Ubicación: Comodoro
Carrera: Química
|
|
Yo tengo que hacer el mismo TP, ya hice todo mas o menos, pero mi duda esta en eso de h= Mu*x que varios pusieron, de donde sale eso?
Osea, si x=0 no se puede hacer, porque h=0 y no se puede dividir por cero, estan seguros de que h no es simplemente mu?
|
|
|
|
|
|
|
|
|
4WD
Administrador
Edad: 39
Registrado: 07 Sep 2006
Mensajes: 2430
Ubicación: Ingeniero
Carrera: Mecánica
|
|
GaboCR escribió:
|
Yo tengo que hacer el mismo TP, ya hice todo mas o menos, pero mi duda esta en eso de h= Mu*x que varios pusieron, de donde sale eso?
Osea, si x=0 no se puede hacer, porque h=0 y no se puede dividir por cero, estan seguros de que h no es simplemente mu?
|
Buen punto. Ese es casi un caso de UNDERFLOW para los flotantes. Es uno de los casos en el que esa ecuación no es válida. En ese caso deberías tomar h como el mínimo valor positivo representable. Ese número depende de la cantidad de dígitos del exponente.
Ej: si tiene 6 dígitos para mantisa, 1 para signo, 1 para signo de exponente y 3 para dígitos de exponente, el mínimo número positivo representable es: .
Siguiendo con el ejemplo, la ecuación del no es válida cuando el flotante se va de rango, que es:
- (overflow)
- (overflow)
- excluído el 0 (underflow)
El cero es el caso particular, porque en ese lugar la grilla pega un salto de distintas características al regular que tiene que ver con . En el cero, el salto es:
(valores negativos)... MNR ... 0 ... MPR ... (valores positivos)
donde MNR = Máximo negativo representable y MPR = Mínimo positivo representable.
Gráficamente sería algo así (los | son puntos de la grilla; los . son números intermedios y de alguna forma según la cantidad indica la longitud del intervalo):
|....|....|...|..|.0.|..|...|....|.....|
.................A...B
Así se puede ver más o menos cómo es la grilla de punto flotante (la proporcionalidad entre los puntos y que no es regular). Esto es esquemático, obviamente. A sería el MNR y B el MPR. Esto intenta explicar el por qué usar el MPR para 0 (es el mínimo valor representable alrededor del 0).
Resumiendo, pongan un if haciendo que si (y también si pertenece al intervalo de underflow pero esto ya sería opcional ya que el intervalo es muy chico; en cambio 0 es un valor bastante común), fije h como tal valor (el MPR; calcúlenlo según las características del flotante). Caso contrario: .
|
|
|
|
_________________
|
|
|
|
|
|
Ir a página Anterior 1, 2
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|