Por: Araden
introduccion:
FETI es una biblioteca diseada para optimizar algunas funciones del CAS de la 49 relacionadas con el clculo diferencial, integral y vectorial, tales como DIV, IBP, DERIV, CURL, HESS, LAP, iLAP, etc. Por lo cual solo es til si se trabaja simblicamente. Asimismo quiero sealar que esta biblioteca contiene la traduccin al castellano de los mensajes y una pequea modificacin del cdigo fuente para que sea til en la ROM 1.19-6 del programa Pretty Laplace de Jorge Aranda y una versin corregida de Hessiana & Jacobiana de Pablo Antoln. Agradezco a ambos por su cooperacin y aprobacin para la publicacin de esta suite. FETI est hecha en su totalidad en User-RPL, por lo cual tal vez la ejecucin sea algo lenta, pero segura. Espero que les sea til y se diviertan con ella. NOTA: Debe actualizarse primero la ROM a la versin 1.19-61
instalacion:
Para instalar: enva FETI a tu calculadora, posteriormente almacnala en el puerto cero presionando 0K. Si deseas hacer una copia de respaldo, desde copia FETI y pgala en el puerto 2. Repite el proceso anterior para JACOBI, y procura dejarlo en HOME, pues te ser indispensable para la correcta ejecucin de JACOBIANO. Para borrar: asegrate de estar en HOME o en el directorio donde hayas guardado FETI, abre una lista presionando !+ y presiona la tecla de funcin que corresponda a FETI (A, B, C, D, E F), una vez hecho esto presiona `. Ahora presiona !N() para abrir el men de programacin y una vez dentro presiona BEF y listo. Si no funcion entonces te sugiero que escribas en la pila: CF(-117)` y vulvelo a intentar. Te recuerdo que todo lo dicho aqu est escrito para ser usado en RPN, as que te sugiero que uses este modo (al menos para la instalacin).
ejecucion:
Presiona la tecla J para ver las variables almacenadas en HOME, y usa !J () y L las veces que sean necesarias hasta ver el directorio FETI en la barra de mens. La ejecucin variar de acuerdo al comando que se elija. En general, para manejar adecuadamente FETI sugiero mantener activado el Soft menu, es decir, el marcador -117 (para mayor informacin consulte la Gua de HP49G Pocket ).
1
He optado por la ROM 1.19-6 por ser la ms reciente y estable de todas, adems de que en la parte de transformadas, con ella se puede trabajar mejor con funciones como la delta de Dirac o la funcin de Heaviside. Y en cuanto a la evaluacin de funciones o variables expresadas en trminos de otra variable, tales como f(x) o y(t), no es lo que el usuario podra esperar, pero al menos los resultados son ms entendibles en la ROM 1.19-6.
Por: Araden
Programa Es una optimizacin del comando DIV, el cual proporciona la divergencia de una funcin. J$)FETI$ Nivel n+2/ Argumento 1: El elemento primero del vector de dimensin n+2 donde n es el nivel 1. Nivel 2/ Argumento 2: El ltimo elemento del vector. Nivel 1/ Argumento 3: La dimensin del vector (generalmente 3). La divergencia de la funcin con respecto a las variables empleadas, expresada en una forma reducida. Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra la divergencia de la siguiente funcin vectorial: + x 2 y v = x 2 yi j + y 2 zk En RPN En modo algebraico: 4: X^2*Y DIVERG(X^2*Y,X^2*Y, 3: X^2*Y Y^2*Z,3) 2: Y^2*Z 1: 3 (X+Y)^2 CURL, DERIV, HESS Vn LNAME DIV
EXPAND COLLECT
Crea un vector de la dimensin especificada, proporciona un vector con los nombres de las variables contenidas en una expresin simblica, en orden alfabtico y proporciona la divergencia de una funcin vectorial. Expande y simplifica una expresin algebraica., luego agrupa los trminos de una expresin polinmica en los reales.
Por: Araden
GRADIENTE
Programa Es una aplicacin del comando DERIV, para obtener el vector de las derivadas parciales (gradiente) de una funcin vectorial. Acceso: J$)FETI$ Una funcin. Entrada: El vector gradiente de la funcin con respecto a las variables especificadas. Salida: Marcadores: Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Ejemplo: Encuentra el gradiente de la siguiente funcin, respecto a las variables x, y e z. : 2 x 2 y + 3 y 2 z + xz En RPN En modo algebraico: Comando:
Tipo: Descripcin:
2*X^2*Y+3*Y^2*Z+X*Z GRADIENTE(2*X^2*Y+3*Y^2*Z+X*Z)
DERVX, RISCH
LNAME DERIV EXPAND Proporciona un vector con los nombres de las variables contenidas en una expresin simblica, en orden alfabtico. Proporciona las derivadas parciales de una funcin. Expande y simplifica la expresin.
HESSIANA
Marcadores: Ejemplo:
Comando: Resultado:
Programa Es una forma simplificada del comando HESS que proporciona la matriz hessiana y el gradiente de una expresin. J$)FETI$ Una funcin. Nivel 2/ Elemento 1: La matriz Hessiana con respecto a las variables empleadas. Nivel 1/ Elemento 2: El vector gradiente de la funcin con respecto a las variables especificadas. Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra la matriz hessiana y el gradiente de la siguiente funcin, respecto a las variables x, y e z. : 2 x 2 y + 3 y 2 z + xz En RPN En modo algebraico:
2*X^2*Y+3*Y^2*Z+X*Z HESSIANA(2*X^2*Y+3*Y^2*Z+X*Z) 2: [[ '4*Y' '4*X' 1 ] [[ '4*X' '6*Z' '6*Y' ]
Por: Araden
Funciones Especiales, Transformadas e Integrales torix Veckhm Vacelaevus [[ 1 '6*Y' 0 ]] 1: [ '4*Y*X+Z' '2*X^2+6*Z*Y' 'X+3*Y^2' ]
Proporciona un vector con los nombres de las variables contenidas en una expresin simblica, en orden alfabtico; luego proporciona la matriz hessiana y el gradiente respecto a las variables especificadas y un vector de variables (LNAME). Elimina el objeto del nivel 1 de la pila, en nuestro caso, a LNAME. EXPAND SWAP EXPAND Expande y simplifica una expresin algebraica e SWAP intercambia la posicin de dos objetos en los niveles 1 y 2 de la pila. Ibid. Ibidem.
IPP
Tipo: Descripcin:
Programa Proporciona un algoritmo ms simple y fcil de utilizar para el comando IBP, el cual efecta la integracin por partes de una funcin que pueda expresarse como el producto de dos funciones. Dado que el comando IBP fue concebido para usarse exclusivamente en RPN, este programa tambin tendr que ser ejecutado en RPN pues incluye a dicho comando.
Quiero aadir adems, que esta es la propuesta inicial del autor, aunque al final, como anexo agrego una versin alterna del mismo programa que requiere directamente de u(x) y de v(x) como argumentos, para que el usuario que as lo desee, pueda modificar el cdigo de ste programa que al final se explica.
Acceso: Entrada:
J$)FETI$ Nivel 2/ Argumento 1: la primera funcin u(x). Nivel 1/ Argumento 2: la segunda funcin v(x).
NOTA: Dada la disposicin de los argumentos en el programa, despus de elegir a u(x), ser necesario efectuar primero la integral de v(x) mediante INTVX o RISCH para poder aplicar IPP.
Salida:
Marcadores:
Ejemplo:
Debe configurarse al modo RPN (marcador -95 desactivado). Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Asegrate de que el valor actual de VX sea el mismo valor respecto al cual est trabajando. Utiliza la integracin por partes para obtener la integral de: x cos( x) dx
Por: Araden
Comando:
2: 'X' | 1: COS(X)1| 2: INTVX | 1: SIN(X)*X+COS(X) INT, INTVX, PREVAL, RISCH U V V DERVX U SWAP *
'X' SIN(X)
V IBP INTVX +
JACOBIANO
Declara los valores de las variables internas U y V. Invoca a V y la deriva respecto al valor actual de VX. Llama a U, la intercambia con la derivada de V(v(x) y luego multiplica a U*d1V (u(x)*v(x)). Llama a V aplica integracin por partes a los dos argumentos anteriores. Integra al argumento en el nivel 1 respecto a VX y suma los niveles 2 y 1 para dar el resultado final.
Tipo: Descripcin:
Programa Proporciona el determinante de la matriz jacobiana de la transformacin T para una integral mltiple. Tal vez sea el programa ms complejo de FETI en cuanto a estructura, pero en realidad es muy fcil de utilizar. El programa JACOBIANO requiere de la subrutina JACOBI en HOME, para su correcto funcionamiento.
Consulte el apndice para ver la explicacin acerca de Jacobi.
Acceso: Entrada:
Salida:
J$)FETI$ Nivel n+2/ Argumento 1: El elemento primero del vector de dimensin n+2 donde n es el nivel 1. Nivel 2/ Argumento 2: El ltimo elemento del vector. Nivel 1/ Argumento 3: La dimensin del vector. Nivel 2/ Elemento 2: El vector de transformaciones. Nivel 1/ Elemento 1: El resultado del determinante jacobiano.
NOTA: Adems, agregar dentro del directorio FETI, la variable JAC que contiene a la matriz jacobiana resultante.
Marcadores:
Ejemplo: Comando:
Debe configurarse al modo RPN (marcador -95 desactivado). Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra el jacobiano de la transformacin: x = e u v y = e u + v z = e u + v + w En RPN: En modo algebraico:
4: 3: EXP(U-V) EXP(U+V) JACOBIANO('EXP(U-V)', 'EXP(U+V)', 'EXP(U+V+
Por: Araden
Resultado:
2: EXP(U+V+W) 1: 3 2: [ EXP(U+V) EXP(U+V) EXP(U+V+W) ] 1: -(2*EXP(U-V)*EXP(U +V)*EXP(U+(V+W))) $JAC$ $$N$$ DIVER GRADI HESSI $IPP$
W)',3) : JACOBIANO('EXP(U-V)', 'EXP(U+V)', 'EXP(U+V+ W)') {[EXP(U+V),EXP(U+V),EXP (U+V+W)], -(2*EXP(U-V)*EXP(U +V)*EXP(U+(V+W )))}
iLAPLACE
Tipo: Descripcin:
Acceso: Entrada:
Programa Proporciona la transformada inversa de Laplace de una expresin, y permite hacerlo en trminos de s y t en vez de x. Dado que realiza la misma accin que ILAP, la expresin debe evaluarse como una fraccin racional. J$)FETI$ Una funcin racional.
Por: Araden
Salida: Marcadores:
Ejemplo:
Comando:
La transformada inversa de Laplace, en trminos de t. Debe configurarse al modo RPN (marcador -95 desactivado). Debe configurarse al modo real (marcador -103 desactivado). Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentre la transformada inversa de Laplace de: 1 ( x 5 )2 En RPN: En modo algebraico:
2: 1: '1/(X-5)^2' t*EXP(5*t) LAP IF DEPTH 0 == iLAPLACE(1/(X-5)^2)
Inicia la estructura condicional, pide la cantidad de objetos en la pila antes de ejecutar DEPTH y prueba si el valor devuelto por DEPTH es igual con cero. THEN 1392 .075 BEEP Comienza la clusula verdadera en la estructura condicional pone la frecuencia y duracin del pitido y hace el sonido. "ERROR: Comienza la cadena del mensaje de error. Pila vaca" MSGBOX KILL Crea un cuadro de mensaje y cancela el programa. ELSE PATH CASDIR VX Comienza una clusula alterna dentro de la estructura condicional, devuelve una lista con la ruta del directorio actual y abre el directorio CASDIR e invoca el valor actual de VX. Agrega la variable s, agrega la variable VX y 's''VX' STO ROT { X guarda el valor de s como VX, luego s } | ILAP EXPAND { s sustituye x por s en la expresin; ejecuta t } | SWAP'VX' STO ILAP y EXPANDe la expresin. Sustituye la variable s por t e intercambia los niveles 1 y 2 y almacena como VX al objeto contenido en el nivel 1. Intercambia nuevamente los niveles 1 y 2. SWAP Finaliza la estructura condicional y evala. END EVAL
LAPLACE
Por: Araden
Ejemplo: Comando:
Programa Efecta la transformada de Laplace de una expresin con respecto a s y t en vez de x. J$)FETI$L Una expresin. La transformada de Laplace, en trminos de s. Debe configurarse al modo RPN (marcador -95 desactivado). Debe configurarse al modo real (marcador -103 desactivado). Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra la transformada de Laplace de: ex En RPN: En modo algebraico:
2: 1: 'EXP(X)' 1/(s-1) ILAP IF DEPTH 0 == LAPLACE(EXP(X))
Inicia la estructura condicional, pide la cantidad de objetos en la pila antes de ejecutar DEPTH y prueba si el valor devuelto por DEPTH es igual con cero. THEN 1392 .075 BEEP Comienza la clusula verdadera en la estructura condicional pone la frecuencia y duracin del pitido y hace el sonido. "ERROR: Comienza la cadena del mensaje de error. Pila vaca" MSGBOX KILL Crea un cuadro de mensaje y cancela el programa. ELSE PATHCASDIR VX Comienza una clusula alterna dentro de la estructura condicional, devuelve una lista con la ruta del directorio actual y abre el directorio CASDIR e invoca el valor actual de VX. 't''VX' STO ROT { X Agrega la variable t, agrega la variable VX t } | LAP {t s } | y guarda el valor de t como VX, luego sustituye x por t en la expresin; ejecuta LAP y sustituye la variable t por s. SWAP'VX' STO SWAP Intercambia los niveles 1 y 2 y guarda al objeto en el nivel 1 como VX e intercambia de nueva cuenta los niveles 1 y 2. END EVAL Finaliza la estructura condicional y evala.
Por: Araden
PARTDERIV
Marcadores: Ejemplo:
Comando: Resultado:
Programa Proporciona las derivadas parciales de una funcin, con respecto a las variables empleadas. J$)FETI$L Una funcin. Nivel n+1/ Argumento 1: La derivada parcial de la funcin con respecto a la primera variable en orden alfabtico, donde n es el nivel 1. Nivel 1/ Argumento 2: La ltima derivada parcial respecto a la ltima variable de la funcin. Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra las derivadas parciales de la siguiente funcin, respecto a las variables x , y e z. : 2 x 2 y + 3 y 2 z + xz En RPN: En modo algebraico:
2*X^2*Y+3*Y^2*Z+X*Z PARTDERIV(2*X^2*Y+3*Y^2*Z+X*Z )
En RPN:
3: 4*X*Y+Z 2: 2*X^2+6*Z*Y 1: X+3*Y^2 DERIV, DERVX LNAME DERIV
En modo algebraico:
{ 4*X*Y+Z 2*X^2+6*Z*Y X+3*Y^2}
EXPAND OBJ
ROTACIONAL
DROP
Proporciona un vector con los nombres de las variables contenidas en una expresin simblica, en orden alfabtico. Proporciona las derivadas parciales de una funcin. Expande la expresin algebraica, separa las componentes del vector e indica el nmero de elementos en l, finalmente elimina dicho nmero.
Salida:
Programa Proporciona el rotacional de una funcin vectorial, sin necesidad de armar el vector. J$)FETI$L Nivel n+2/ Argumento 1: El elemento primero del vector de dimensin n+2 donde n es el nivel 1. Nivel 2/ Argumento 2: El ltimo elemento del vector. Nivel 1/ Argumento 3: La dimensin del vector (generalmente 3). El rotacional de la funcin vectorial con respecto a las variables empleadas.
Por: Araden
Marcadores: Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra el rotacional de la funcin vectorial siguiente: Ejemplo: + x 2 y v = x 2 yi j + y 2 zk En RPN: En modo algebraico: Comando:
ROTACIONAL([ X^2*Y X^2*Y Y^2*Z ] ) 4: X^2*Y 3: X^2*Y 2: Y^2*Z 1: 3 [ '2*Z*Y' 0 '-(X^2-2*Y*X)' ] DERIV, DERVX, DIV
Vn LNAME CURL
EXPAND OBJ
OBJ
DROP
EVAL n
Vn
Vn
Crea un vector de la dimensin especificada, Proporciona un vector con los nombres de las variables contenidas en una expresin simblica, en orden alfabtico y obtiene el rotacional del vector. Expande la expresin algebraica, separa las componentes del vector e indica el nmero de elementos en l dos veces; elimina el segundo nmero. Lo guarda con el nombre n y pasa el elemento ubicado en el nivel 3 al primero y evala dicho elemento. Pasa el elemento ubicado en el nivel 1 al nivel 3, intercambia la posicin de los objetos en los niveles 1 y 2, se evala el nivel 1 y se vuelven a intercambiar los niveles 1 y 2. Evala nuevamente el nivel 1, invoca a n y crea un vector de dimensin n.
Tipo: Descripcin:
Acceso: Entrada:
Subrutina Arma un vector numrico o simblico de la dimensin especificada. se puede decir que es una generalizacin de los comandos V2 y V3 del men VECTOR J$)FETI$L Nivel n+2/ Argumento 1: El elemento primero del vector de dimensin n+2 donde n es el nivel 1. Nivel 2/ Argumento 2: El ltimo elemento del vector.
10
Por: Araden
Nivel 1/ Argumento 3: Un entero2 que represente la dimensin del vector. El vector de la dimensin especificada Salida: Marcadores: Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado) si es que se desea armar un vector simblico. Ensamble el vector siguiente: Ejemplo: + x 2 y u = x 32 i j + z + 4k En RPN: En modo algebraico: Comando:
Vn('(X-3)^2','X^2*Y','Z+4',3 ) 4: (X-3)^2 3: X^2*Y 2: Z+4 1: 3 [ '(X-3)^2' 'X^2*Y' 'Z+4' ] V2, V3
LIST AXL
Programa Simplemente borra los objetos y variables creados al ejecutar algunos programas de FETI, o bien al ocurrir un error en la ejecucin, tales como las variables JAC y n para evitar as, que te estropeen clculos posteriores. El nombre lo tome de la celebre frase de Marco Porcio Catn el Censor (234-149 a.C.) con la que siempre conclua sus discursos: DELENDA EST CARTAGO. Acceso: J$)FETI$L Ninguna. Entrada: Ninguna, si es que lo hiciste correctamente. Salida: Marcadores: Ninguno en especial que yo sepa. Elimine las variables JAC y n: Ejemplo: En RPN: En modo algebraico: Comando:
Tipo: Descripcin:
Resultado:
En RPN:
En modo algebraico:
Hago nfasis de que sea un entero, por sentido comn, pero si se quisiera dar como argumento un numero racional o irracional, la calculadora inmediatamente har algo parecido a 0RND para redondearlo al entero ms prximo sin importar los argumentos presentes, si no me creen, hagan la prueba con o con e.
11
Por: Araden
PURGE.
{ n N JAC U V } PURGE
Una lista que contiene los nombres de los objetos a purgar. Purga los objetos incluidos en la lista.
ACERCA
Tipo: Descripcin:
Programa Simple, tranquilo e inofensivo programita que indica el nombre de la biblioteca, el nombre del autor y mi direccin de correo electrnico para cualquier queja, sugerencia, comentario, mentada, etc, con un pequeo fondo muy ad hoc con el tema de los programas aqu descritos. Mil disculpas a todos aquellos a los que el nombre de este programa les interfiera con alguna otra biblioteca. J$)FETI$L Ninguna Un fondo con un mensaje Ninguno en especial que yo sepa.
Cdigo fuente:
apendice:
Una vez cubierta la explicacin de cada uno de los programas, vale la pena aclarar ciertos puntos que creo, no han quedado del todo claros hasta ahora. En algunos programas como GRADIENTE, PARTDERIV, ROTACIONAL o DIVERG, el uso de Vn permite armar vectores de la dimensin que sea, desde 1 hasta , claro que,
12
Por: Araden
generalmente trabajaremos con dimensiones 2 y 3. Asimismo, LNAME nos asegura que los objetos sobre los que trabaje sern en estricto orden alfabtico lo cual es muy til al momento de interpretar el resultado final. Pero ten cuidado, porque si ingresas una funcin de 3 variables y en la funcin solo especificas 2 (por ejemplo) estos programas lo tomarn como una funcin de dos variables. En el caso de iLAPLACE y LAPLACE, qe son una versin mejorada de la versin de Jorge Aranda, tenemos la ventaja de que podemos usar indistintamente x, s t, segn sea el caso de las dos ltimas variables. Claro que por la disposicin inmediata de X en el teclado, lo ms cmodo es usar X, y dada la estructura de ambos programas, podemos hacer uso del resultado en trminos de s y t con estos programas sin mayor problema. Por ejemplo, si yo quiero obtener la transformada inversa de Laplace de x 152 , aplico iLAPLACE y obtengo:
iLAPL
Ahora si yo quiero recuperar la expresin original, aplico la transformada de la place mediante LAPLACE y entonces:
LAPLA !COLCT
Como vemos, el resultado que obtuve no est expresado en trminos de x como pudiera pensarse, sino en trminos de s, y VX sigue valiendo X, por lo que puedo seguir utilizando X sin problemas. Por esta razn, creo que se puede aplicar parte de la estructura de LAPLACE o iLAPLACE, para crear aplicaciones similares que les permitan trabajar en trminos de una variable diferente a X sin afectar sustancialmente el valor de VX. Cabe mencionar que para aquellos que necesiten usar transformadas y transformadas inversas de Laplace para cuestiones de electrnica o en variable compleja, pueden activar y desactivar el modo complejo mediante el siguiente atajo: I, el cual les permitir fcil y rpidamente pasar del modo real al complejo y viceversa de ser necesario. Ahora bien, anteriormente me compromet a dar en esta seccin una forma alterna de IPP, as como de describir la subrutina JACOBIANO. Pues bien, agarrense que ah les van:
IPP (Versin alterna)
13
Por: Araden
Tipo: Descripcin:
Programa Proporciona un algoritmo ms simple y fcil de utilizar para el comando IBP, el cual efecta la integracin por partes de una funcin que pueda expresarse como el producto de dos funciones. Dado que el comando IBP fue concebido para usarse exclusivamente en RPN, este programa tambin tendr que ser ejecutado en RPN pues incluye a dicho comando.
J$)FETI$ Nivel 2/ Argumento 1: la primera funcin u(x). Nivel 1/ Argumento 2: la segunda funcin v(x).
Acceso: Entrada:
Salida:
Marcadores:
Debe configurarse al modo RPN (marcador -95 desactivado). Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Asegrate de que el valor actual de VX sea el mismo valor respecto al cual est trabajando. Utiliza la integracin por partes para obtener la integral de: x cos( x) dx
2: 'X' 1: COS(X)1 SIN(X)*X+COS(X) INT, INTVX, PREVAL, RISCH U V U V * V INTVX IBP
INTVX +
Declara los valores de las variables internas U y V. Invoca a U y V y luego las multiplica, llama a V aplica integracin por partes a los dos argumentos anteriores. Integra al argumento en el nivel 1 respecto a VX y suma los niveles 2 y 1 para dar el resultado final.
Como puede verse, el programa se simplifica de esta manera, y puede resultar ms fcil de usar para algunas personas, sin embargo, a veces no resulta tan sencillo el integrar a v(x) lo cual podra conllevar a algn error al usar esta versin alterna; por lo cual, personalmente prefiero efectuar dicha operacin de antemano antes de usar IPP. Pero tal vez el usuario final de estos programas encuentre ms cmoda y poco peligrosa esta versin que aqu propongo. As que tal vez en alguna versin posterior, agregue definitivamente
14
Por: Araden
esta versin, pero para ello, vosotros tendris primero que mandarme dicha peticin por e-mail vale? Pasando a algo ms constructivo, he aqu la subrutina JACOBI:
JACOBI
Tipo: Descripcin:
Subrutina A partir de la descomposicin del vector de transformacin T y de la variable N, obtiene la matriz jacobiana.
NOTA: Para la correcta ejecucin de JACOBI se requiere ejecutar desde la pila todos los comandos contenidos en el programa JACOBIANO hasta antes de JACOBI3, o bien, ingresar los argumentos que se enuncian ms adelante.4
Acceso: Entrada:
J$)FETI$ Nivel n+1/ Argumento 1: El elemento primero del vector de dimensin n+1 donde n es el nivel 1. Nivel 1/ Argumento 2: El ltimo elemento del vector.
NOTA: Adems, se deber agregar dentro del directorio FETI, la variable N con la dimensin del vector de transformacin T.
Salida: Marcadores:
Ejemplo: Comando:
Nivel 1/ Elemento 1: La matriz jacobiano. Debe configurarse al modo RPN (marcador -95 desactivado). Debe configurarse al modo exacto (marcador -105 desactivado). No debe configurarse al modo numrico (marcador -03 desactivado). Encuentra el jacobiano de la transformacin: x = e u v y = e u + v z = e u + v + w En RPN: En modo algebraico:
3: EXP(U-V) JACOBIANO('EXP(U-V)', 2: EXP(U+V) 'EXP(U+V)', 'EXP(U+V+ 1: EXP(U+V+W) W)') [[ 'EXP(U-V)''-EXP (U-V)' 0 ] [[ 'EXP(U+(V+W))' 'EXP(U+(V+W))'] [[ 'EXP(U+V)' 'EXP(U+V)' 0 ]] DERIV, INTVX, PREVAL, RISCH CASE N 2 == Inicia el ciclo y pide la primera condicin: si N es igual a 2. Entonces, si la condicin es cierta, THEN ejecuta la subrutina: Elimina el objeto en el nivel 1 de la DROP DROP pila 2 veces. LNAME 'V' STO DUP Ensambla el vector de la dimensin
3 4
Para mayores detalles consulte el cdigo fuente de JACOBIANO. Otra opcin es insertar el comando KILL antes de la instruccin JACOBI en el cdigo fuente de JACOBIANO para obtener el mismo resultado sin necesidad de efectuar las operaciones manualmente.
15
Por: Araden
OBJ
DROP SWAP V
ROW
DUP OBJ
DROP V DERIV
especificada, agrega la variable V la guarda en la memoria duplica el vector. Separa las componentes del vector e indica el nmero de elementos contenidos en l; elimina dicho valor, intercambia los argumentos en los niveles 1 y 2, y llama a V. Deriva a V respecto a la primera variable en orden alfabtico, intercambia los niveles 1 y 2, llama de nuevo a V y lo deriva respecto a la segunda variable. Forma una matriz de 2 renglones, la transpone y purga la variable V. Evala el resultado. Termina la instruccin. Si la primera condicin no fuese cierta, se ejecuta la segunda condicin: si N es igual a 3. Entonces, si la condicin es cierta, ejecuta la subrutina: Elimina el objeto en el nivel 1 de la pila 2 veces. Elimina una vez ms el objeto en el nivel 1 de la pila, 2 veces, ensambla el vector de la dimensin especificada, agrega la variable V la guarda en la memoria. Duplica el vector, separa las componentes del vector e indica el nmero de elementos contenidos en l; elimina dicho valor, llama a V y la deriva respecto a la primera variable.
Desplaza el objeto contenido en el nivel 1 al nivel 3, llama a V y la deriva respecto a la segunda variable, de nuevo desplaza el objeto del nivel 1 al 3 y llama a V.
Deriva a V respecto a la ltima variable, mueve al elemento del nivel 1 al 3 y forma una matriz de 3 renglones. Elimina a V. Evala el resultado final Finaliza la instruccin.
16
Por: Araden
END
Finaliza el programa.
Bien, este es el corazn de JACOBIANO, pues dicho programita, consta de una estructura iterativa o ciclo, en el cual, segn las condiciones de los argumentos, se evala una de las tres condiciones que contiene. En otras palabras, lo que hace JACOBI, es utilizar la dimensin del vector T de transformaciones, para generar la matriz jacobiana, y a partir de ella regresar al programa jacobiano, para obtener el determinante de dicha matriz. Como se puede observar, la estructura de JACOBI esta diseada para obtener un resultado a partir de 2 condiciones, pues la condicin N=1 puede omitirse, pues dado que es imposible obtener el determinante de una matriz de 1 1 , veo como innecesaria dicha condicin. Adems como una propuesta se podra intentar obtener una generalizacin para un caso donde N>3. De hecho, si sois observadores, veris que dada la complejidad del caso, este programa se ajusta perfectamente para una divisin modular segn el axioma Divide y vencers. Ya por ltimo sealo que ir revisando y depurando los programas para versiones futuras, de igual forma espero agregar nuevos programas a FETI dentro de la misma temtica, para complementarla.
http://www.hpcalc.org: la meca de las calculadoras hp. En esta pgina pueden encontrar casi todo lo que deambula por la red en cuanto a estas fabulosas calculadoras, ya que es raro que se les escape algo. Desde aqu pueden bajar programas, documentos, etc., as como subir los propios (seguramente aqu fue donde encontraron FETI, no es cierto?. http://www.adictoshp.org: Modestia aparte, es una de las mejores pginas para encontrar informacin acerca de las hp. Contiene foros donde se pueden exponer dudas e interactuar con usuarios de toda Latinoamrica y Espaa (principalmente) , as como una seccin de descargas con programas, artculos y dems; por cierto, desde aqu pueden tambin actualizar la ROM de su HP para lo cual encontrarn una gua donde se explica bastante bien, como actualizar la ROM. Por otra parte, creo que para algunos usuarios, sobre todo si estudian ingeniera en electrnica o telecomunicaciones, esta pgina les ser de utilidad:
http://pagina.de/hp49: Es la pgina de Jorge Aranda Moro, coautor de FETI. Aqu encontraran herramientas tiles para aquellos que estudian las carreras arriba mencionadas, adems de que contiene ligas a sitios de inters ms general.
17
Por: Araden
Adems, si de programar se trata, pueden bajar los siguientes manuales, que listo en el orden que considero ms pedaggico, aunque los dos primeros son sospechosamente similares:
En http://hpuser.8m.com pueden encontrar el primer manual, escrito por el seor Jorge Broncazo Reyes, el cual aunque es breve, los introduce al ambiente de programacin en User RPL. Por otra parte, en http://www.angelfire.com/ok/hp48g podrn encontrar el manual de Luis M. Gallardo D. el cual tampoco es muy extenso pero contiene varios ejemplos realmente ilustrativos. Por ltimo, en http://www.angelfire.com/co/48gx/49g.html pueden encontrar, el ms completo de los tres manuales, escrito por el Ing. Jorge Ayala Nio de Guzmn, que fuera de algunas faltas de ortografa, es un muy buen manual (mi manual de cabecera) para aprender User RPL. La verdad, dada la antigedad del texto, no me fo mucho del vnculo del manual, as que si la pgina a la que hago referencia ya no existe, les recomiendo buscar en http://www.sethiansweb.com/hpcivil/, desde ah podrn llegar a la ltima versin disponible.
A fin de cuentas, lo que hace al maestro es la prctica. Ya para concluir esta seccin, si lo que desean es conseguir un buen manual para su HP 49G, les sugiero, bajar la gua de la nueva (aun en la fecha en que escrib esta gua) calculadora hp 49g+, la cual se encuentra en PDF, y pesa algo as como 10 MB, o aproximadamente 7 MB si la encuentran comprimida en formato ZIP. Hasta la fecha de publicacin de FETI V 1.0, la gua est disponible en la pgina de Hewlett Packard, en la siguiente liga: http://h20015.www2.hp.com/en/manualCategory.jhtml?reg=&cc=us&pagetype=manual&prodId =hp49ggraph351775&lc=en&docparent=manual&sw_lang=es&cat=manual&plc=null
epilogo:
Agradezco la enorme paciencia de todos los usuarios que hayan llegado hasta esta seccin. Les pido me disculpen por la exhaustiva explicacin que he plasmado en este mamotreto de casi 20 pginas! (en verdad no me imagin que fuese taaaan largo). Espero asimismo que el esfuerzo de leer esta gua haya sido til para entender cabalmente la funcin y estructura de cada uno de los programas que se incluyen en esta suite. Ojal no se hayan aburrido demasiado con ella, y lo principal, que les sea til en sus cursos de anlisis matemtico y clculo. Les reitero que estoy abierto a crticas, sugerencias y propuestas. Les recuerdo adems que todo el que quiera los puede modificar para mejorarlos...eso si...envenme una copia a mi, no sean ingratos. Por cierto si hay algn ocioso que tenga el inters de compilar FETI en Sys RPL, sea bienvenido. Para ello pueden enviar cualquier sugerencia, propuesta o duda a cualquiera de las siguientes direcciones:
18
Por: Araden
Si han de hacer uso de ellas, por favor enven su mensaje slo a una de ellas, pues reviso todas mis cuentas casi a diario, por lo que solo en caso de que les reboten el mensaje, hagan favor de reenvenlo a otra direccin, pues seguramente la que es cogieron est saturada de momento. Hemos llegado al fin de esta gua, espero que la hayan disfrutado y los haya dejado con menos dudas. Ciudad de Mxico, Diciembre de 2003. Aradentorix Veckhm Vacelaevus.
Este texto es propiedad intelectual de Vctor Daniel Vela Cuevas (o que, crean que Aradnix era mi nombre verdadero?) (2003) y no puede ser utilizado ni modificado sin su previa y expresa autorizacin.
19