Quiero crear un programa que debe utilizar la función gama de Euler, esta
función es:
G(n)=(n-1)! Si n es un nº entero
G(p)=(p-1)G(p-1) para los demás valores de p (los múltiplos de 0.5), con
G(0.5)=raiz de Pi
El problema es que no se como conseguir que la hp distinga un nº entero de
uno real, dado que la función TYPE devuelve el mismo valor (0) tanto para
reales como enteros.
¿Alguien sabe como conseguir esto, o, mejor aún, si existe un programa que
haga esto?
Muchas gracias,
Alberto Reig Pérez
Hp48 o hp49???
En la hp49g version 1.19-1 o posteriores el comando es GAMMA.
>
> El problema es que no se como conseguir que la hp distinga un nº entero de
> uno real, dado que la función TYPE devuelve el mismo valor (0) tanto para
> reales como enteros.
Me suena a que entonces es una hp48...
>
> ¿Alguien sabe como conseguir esto, o, mejor aún, si existe un programa que
> haga esto?
>
> Muchas gracias,
>
> Alberto Reig Pérez
>
Si es hp48 voy a revolver un poco en la mia mañana despues del
examen de estadistica...
J.Manrique
>
>
>
Un saludo
> > El problema es que no se como conseguir que la hp distinga un nº entero de
> > uno real, dado que la función TYPE devuelve el mismo valor (0) tanto para
> > reales como enteros.
> >
> > ¿Alguien sabe como conseguir esto, o, mejor aún, si existe un programa que
> > haga esto?
> >
> > Muchas gracias,
> >
> > Alberto Reig Pérez
Pablo Iranzo Gómez (Pablo....@uv.es)
http://www.uv.es/~iranzop/ring/astron/ (Anillo Astronómico)
http://www.uv.es/~iranzop/hp48/ (Página de la HP)
--
ICQ UIN: 36614467
(PGPKey Available on http://www.uv.es/~iranzop/PGPKey.pgp)
--
Principio de Heisenberg sobre la Incertidumbre:
La localización de todos los objetos no se puede conocer de forma
simultánea.
Corolario:
Si encuentra un objeto que estaba perdido, desaparecerá otro.
--
pues ya tendrías el resultado
Saludos
Gregorio Rodríguez
greg...@rpn48.zzn.com
http://www.rpn48.zzn.com
La función gamma ya viene en la calculadora, hay que restar 1 al
número (sea entero o real) y aplicar el comando factorial (!), en forma de
programa podría ser:
<< 1 - ! >>
Sencillo, ;-)
En cuanto a lo de saber si un número es real o entero, sólo hay
que comprobar si tiene o no parte decimal:
<< IF DUP FP 0 SAME THEN "entero" ELSE "real" END >>
Un saludo,
Rubén
No sé si estas funciones están en la 48, pero ahí va de todas formas.
Con CEIL, FLOOR o IP puedes conseguir números enteros (el inmediatamente
superior, inferior, o truncado), así que te basta con algo como:
DUP IP ==
que devuelve 1 si el número era entero y 0 si no.
Comprueba que realmente funciona: que las funciones existen y que
aceptan números negativos (aunque me parece que esto no lo necesitas).
2: Función
1: {var1 var2 var3 var4}
y luego ejecutar la derivada
Esto entra como trabajo con listas y entonces la HP automáticamente me
calcula de forma simbólica todas las derivadas a la vez, luego, mediante
una forma más burra, creo unas variables que se llaman evar1, etc que
hacen referencia al error de cada una de las variables y eso lo hago con
un maravilloso
1: "e"
2: {var1 var2 var3 var4}
y luego utilizo la suma y como resultado tengo:
1: {"evar1" "evar2" "evar" "evar4"}
luego realizo todos los cálculos y si me interesa, pues aprovecho y con el
SOLVER de la hp pues las resuelvo y meto los valores de cada una.
Las ventajas de hacerlo así son que no necesito un cuadro de
diálogo para meter los datos, de forma que tengo por un lado el cuadro de
diálog, por otro la rutina de cálculo, con la ventaja de que puedo
aprovechar la rutina dentro de otros programas y así no tener que
programar otra vez o separarlo luego.
Propuesta:
Programa el algoritmo para que te calcule una sola integral con
unos valores que le pongas en la pila
por ejemplo a, b, alfa, beta y en el segundo nivel los valores de p y q
crea un cuadro de dialogo que te pida los valores una sola vez
y luego creas una rutina principal que llame al principio a unos
valores y luego el resto ya los proporcione y repita el proceso para el
numero de ecuaciones n que tue le digas
No te puedo ayudar con el programa porque es para la 49 y yo la
experiencia la tengo conla 48, pero debe ser muy parecido porque muchas
cosas me suenan :)
A ver, la rutinas serían algo así como: (los formularios te los
dejo para que los hagas tú)
Area (a,b,alfa,beta) (es un formulario que tu creas y que deja en la pila
los cuatro valores en el orden a b alfa beta cada uno en un nivel de la
pila.
Parametros (p,q) es otro formulario que creas para introducir los valores
de p y q y los dejas en la pila a continuación de a, b, alfa, beta
el programa principal sería:
Introduce N (formulario para introducir el numero de ecuaciones)
<<
IntroduceN (devuelve el valor N a la pila)
Area (devuelve a, b, alfa, beta en la pila)
1 N FOR i
DUP
Parametros (devuelve p, q en la pila)
p q
calcula (rutina de calculo)
SWAP (para dejar el resultado en la parte de arriba de la
pila y que vuelvan a quedar los valores del area en el primer nivel para
poder volver a hacer el DUP y repetir el proceso)
NEXT
>>
Calcula:
<<
-> a b alfa beta p q
(lo que sigue es tu rutina original) el último comando de 1. "n"
STO+ no se a que hace referencia, pero en principio haciendo el programa
como te he puesto arriba no gastas variables fijas (sólo volátiles, que
conforme se ejecute el programa se borran automáticamente y así en caso de
fallo del soft pues no queda nada de porquería por ahí tirado)
«
a p ^ b q ^ * a ß * / p a / GAMMA q
ß / GAMMA * 1. p a /
+ q ß / + GAMMA / *
»
»
Espero que te sea útil.
Un saludo
Pablo
"Alberto Reig Pérez" <alber...@hotmail.com> escribió en el mensaje news:9eigsr$pcs$1...@m2wpersoisp01.wanadoo.es...Hola amigos, y gracias por vuestras respuestasLa calculadora es una 49g, con el ROM 1.18, que ya incluye la función gamma. ¡Que conste que antes de escribiros busqué el commando en la AUG publicada por HP!Enfin, ahora ya he intentado programar el bicho, y claro, como es harto común entre principiantes, me he quedado atascado.El programa que estoy intentando escribir sirve para evaluar integrales usando una fórmula que a su vez usa la función gamma, de ahí viene mi pregunta original...La idea es que se le de al programa el nº de integrales a evaluar (n) y la definición del recinto (a, b, a, ß) , y luego usar una estructura WHILE ... REPEAT ... END para que calcule las n integrales sobre el mismo recinto. El código del programa es:«"Nº de integrales a evaluar?""" INPUT ® n
«"Definicion del recinto"
{{"a:" "Introduce el coeficiente a"}
{"b:" "Introduce el coeficiente b"}
{"a:" "Introduce el coeficiente a"}
{"ß:" "Introduce el coeficiente ß"}}
{ } { } { }
INFORM»
DROP OBJ® ® a b a ß
'1.' ® i
«WHILE i n £
REPEAT
«"Parametros de la integral"
{ { "p:" "Potencia de x + 1" }
{ "q:" "Potencia de y + 1" }}
{ } { } { } INFORM»
DROP OBJ® ® p q
« a p ^ b q ^ *
a ß * / p a / GAMMA q
ß / GAMMA * 1. p a /
+ q ß / + GAMMA / * »
n '1.' STO+
END
»
»
También os mando el programa como datos adjuntosEl problema es que cuando tiene que evaluar la condición del REPEAT, me da error diciendo que 'REPEAT Error: Undefined Name'. La pila tiene el siguiente aspecto:2: 11: '1.£n'Agradecería muchísimo que me pudieseis echar un cable, ya que el examen de Elasticidad (estudio Caminos en la UPM) es el lunes y no puedo perder mucho más tiempo con esto...Un cordial saludo,Alberto Reig Pérez"Rodriguez Rodriguez, Gregorio" <zz98...@opalo.etsiig.uniovi.es> escribió en el mensaje news:krF65u...@opalo.etsiig.uniovi.es...