Neopolys v8.1 (c)APO ¡¡¡ IMPORTANTE !!! ESTA VERSIÓN ( 8.1 ) FUNCIONA SÓLAMENTE EN LA HP49G Y HA SIDO TESTEADA EN LAS VERSIONES DE ROM 1.10 Y 1.14-2 ( La librería definitiva de cálculo polinomial para la HP48-G,GX ) ( y ahora también para la HP49G ) ( CON TRANSFORMADAS Z Y DE LAPLACE ) Lo primero es agradeceos a todos aquéllos de vosotros que os tomáis un pequeño tiempo de vuestra vida para enviarme cualquier comentario sobre ésta o cualquier otra librería. ¡¡¡ GRACIAS !!! LOS FICHEROS ============ NeopV8x1esp.txt Manual en español. NeopV8x1eng.txt Manual en inglés. NeopV8x1.lib Librería con la versión 8.1 de Neopolys ¡¡ ATENCION !! ALGUNOS COMANDOS VIENEN ACOMPAÑADOS POR UNAS NOTAS IMPORTANTES ; POR FAVOR, LEELAS. LA INTRODUCCION =============== 1. Los polinomios pueden representarse: a) por sus coeficientes en orden descendente del exponente, y que pueden ser: reales : { 2 0 4 -500 } = '2·x^3+x-500' complejos : { (1,0) (3,-6) 2 } simbólicos : { '1/3' 6 '2*(A,B)' '4/(B+C)' A } b) por sus raíces, que también pueden ser: reales : { { 1 2 3 4 } } complejas : { { (1,2) (3,4) 5 (6,0) } } simbólicas : { { A B (0,-2) 'COS(E)' '2*INV(F)' 4 } } c) en cualquier otro caso, el elemento que haya en el nivel correspondiente se convierte a un polinomio de un único ele- mento y se opera con él normalmente. Por ejemplo: 2: 2 P+ 1: 'X' ->->->->->->->-> 1: { 'X+2' } NOTA: Si en el directorio de trabajo o en los directorios supe- riores a él se encuentran unas variables con el mismo nombre que el de cualquiera de las variables que pueda aparecer en las expresiones de los coeficientes, si el contenido de esas variables es un número o una expresión que dé resultado numé- rico, se tomará ese valor a la hora de realizar los cálculos en lugar de operar con el nombre simbólico de la variable en cuestión. Personalmente encuentro esto de gran utilidad porque per- mite realizar algunos estudios interesantes de los polinomios en función de la variación de sus coeficientes. 2. Las fracciones polinómicas se representan mediante el numerador en el nivel 2 y el denominador en el nivel 1 de la pila . En casi todos los comandos que trabajan con fracciones polinómicas se pue- de aplicar también el apartado c) del punto 1. anterior. 3. Todos los comandos admiten coeficientes simbólicos y/o numéricos salvo 'Roots' que sólo trabaja con valores numéricos o simbólicos con resultado numérico (como por ejemplo '8/4+1' que es igual a 3) excepto cuando el grado del polinomio es menor o igual que 2 , en cuyo caso 'Roots' puede devolver las raíces simbólicas. 4. El polinomio '0' se representa por la lista nula '{ }', aunque se admiten otras formas como { 0 } o { (0,0) 0 0 '2*A-A-A' }, como más guste. 5. El polinomio representado por '{{ }}' es en realidad un polinomio indefinido (es el polinomio cuyas raíces son ??? ); de todas for- mas, a efecto de cálculos se considera como el polinomio 0 o lo que es igual, como el polinomio '{ }'. 6. Al ejecutar cualquiera de los comandos de la librería se tienen en cuenta el estado de los siguientes flags de usuario: flag Cuando está activado ---- ------------------------------------ 2 ........... Los resultados simbólicos se simplifican automá- ticamente. Las fracciones polinómicas se simplifican ( si ello fuera posible ). Las operaciones son más lentas cuando se trabaja con coeficientes simbólicos. Algunas expresiones muy complicadas puede que no se simplifiquen del todo. 3 ........... Después de cada operación se ejecuta el comando XQ. 4 ........... Este flag es utilizado sólo por el comando '->Z'. Cuando está activado, la salida de ese comando se expresa directamente como una fracción polinómica. Cuando no está activado , el resultado se expresa mediante una forma alternativa (ver comando '->Z' más abajo). Podéis activar o desactivar cualquiera de estos flags escribiendo en la calculadora: N SF -> activa el flag número N N CF -> borra el flag número N o bien podéis utilizar el comando 'flgs' de esta librería ( ver más abajo ). LOS COMANDOS ============ Explico al lado de cada comando lo que hace , aunque creo que es bastante obvio. * P+ : Suma polinomios: 2: { 0 1 '3/4' } P+ 1: '-3/4' ->->->->->->->-> 1: { 1 0 } 2: { { '3/A' (1,1) 0 } } P+,flg3,flg2 1: { 1 '(0,-1)-3/A' '2 1: { 1 '2/3' (4,0) } ->->->->->->->-> /3+(3,3)/A' 4 } * P- : Resta polinomios: 2: { 1 2 3 4 } P-,flg2 1: { '2+A+B+C' '3+(-B- 1: { { A B C } } ->->->->->->->-> C)*A-B*C''4+A*B*C'} * P* : Multiplica polinomios: 2: { { 1 2 } } P* 1: { 1 -9 31 -51 40 1: { 1 -6 11 -6 } ->->->->->->->-> -12 } * P/ : Divide polinomios: 2: { { A B 'C/3' } } P/,flg2 2: { } (resto) 1: { { B 'C/3 } } ->->->->->->->-> 1: { 1 '-A'}(cociente) * P^ : Eleva un polinomio a una potencia entera: 2: { 1 '-A' } P^,flg2 1: { 1 '-(2*A)' 'A^2' 1: '(5*C-C)/(2*C)' ->->->->->->->-> } 2: { { 1 2 3 } } P^ 2: { 1 } 1: -2 ->->->->->->->-> 1: { 1 -12 58 -144 193 -132 36 } NOTA: Cuando el exponente se dé en forma simbólica ( como en el primer ejemplo ), algunas veces la simplificación de la expresión puede no ser completa y dar lugar error. Si le pasas a este comando una lista en lugar del exponente se toma el primer elemento de la lista como exponente. * Pval : Evalúa un polinomio en un punto mediante el método de Horner: 2: { 5 4 3 2 1 } Pval 1: (0,-1) ->->->->->->->-> 1: (3,2) 2: { { A B 1 } } Pval 1: '(1+C/3-1)*(1+C/3-B 1: '1+C/3' ->->->->->->->-> )*(1+C/3-A)' Los siguientes comandos ( que trabajan con fracciones polinómicas ) tienen en cuenta posibles resultados de división por cero. Recuerda que las fracciones polinómicas necesitan dos niveles, uno para el numerador y otro para el denominador. NOTA: Todos los comandos que devuelven fracciones polinómicas siempre devolverán dos listas (aunque el denominador sea la unidad) EXCEPTo CUANDO EL RESULTADO SEA CERO, EN CUYO CASO SE DEVUELVE UNA SOLA LIS- TA NULA EN EL NIVEL 1 DE LA PILA. * F+ : Suma fracciones de polinomios. 4: { 1 2 } 3: { { 3 4 5 } } F+ 2: { 6 7 A } ->->->->->->->-> 2: { 6 8 'A+2' } 1: { 1 -12 47 -60 } 1: { 1 -12 47 -60 } * F- : Resta fracciones de polinomios. 4: 1 3: { 2 } F-,flg2,flg3 2: { { 3 } } ->->->->->->->-> 2: { '-1/4' '5/4' } 1: 4 1: { 1 } Si no acabas de entender la forma de trabajar con fracciones, piensa que este ejemplo es como si hicieras: 1 (s-3) (1/4)·s+(5/4) --- - ------- = --------------- = (1/4)·s+(5/4) 2 4 1 * F* : Multiplica fracciones de polinomios. * F/ : Divide fracciones de polinomios. * F^ : Eleva fracciones de polinomios a una potencia entera . Admite expresiones simbólicas para el exponente al igual que el co- mando P^ ( ver nota relativa a las expresiones simbólicas en la ayuda de P^ ). * Fval : Evalúa fracciones de polinomios. * A->P : Transformación de una expresión Algebraica en Polinómica. 2: 'A*s^2+B/(3*s)' A->P 2: { 'A*3' 0 0 B } 1: 's' ->->->->->->->-> 1: { 3 0 } NOTA: Ten en cuenta que la expresión simbólica puede ser fraccionaria o no, con lo que el resultado puede ser también fraccionario ( dos listas) o no (una lista). * P->A : Expresión polinómica -> expresión algebraica: 2: { A '1/3' (1,1) } P->A,flg3 1: 'z' ->->->->->->->-> 1: 'A*z^2+1/3*z+(1,1)' 2: { { 1 2 3 } } P->A 1: '(S+3)^3-6*(S+3)^2+ 1: 'S+3' ->->->->->->->-> 11*(s+3)-6' NOTA: Poniendo un valor real o complejo en el nivel 1 de la pila se puede obtener el valor del polinomio evaluado en ese punto. * F->A : Fracción de polinomios -> expresión algebraica. 3: { { A B } } F->A 2: { 1 2 3 } ->->->->->->->-> 1: '(X^2+(-B-A)*X-B*-A 1: 'X' )/(X^2+2*X+3)' 3: { { 1 1 3 } } F->A 2: { { 1 2 } } ->->->->->->->-> 1: '(X^2-4*X+3)/(X-2)' 1: 'X' * Pd : Deriva polinomios: Pd,flg2 1: { { 1 1 '2/(A+B)' } ->->->->->->->-> 1: { 3 '2*(-2-2/(A+B)) } ' '1+4/(A+B)' } * PS : Integra polinomios. * Fd : Deriva fracciones de polinomios. * Pcoef : Dadas las raíces de un polinomio devuelve sus coeficientes: 1: { { 'A+B' 2 '1/3' } Pcoef,flg3 1: { 1 '-7/3+(-A-B)' ' } ->->->->->->->-> 2/3-7/3*(-A-B)' '2/ 3*(-A-B)' } Pcoef,flg3 1: '2/3' ->->->->->->->-> 1: { 1 '-(2/3)' } * Fsimp : Simplifica fracciones de polinomios: 2: { { 1 2 } } Fsimp 2: { 1 } 1: { 1 -6 11 -6 } ->->->->->->->-> 1: { 1 -3 } 2: { { A B } } Fsimp 2: { 1 } 1: { { A B } } ->->->->->->->-> 1: { 1 } NOTA: Los polinomios con muchos coeficientes simbólicos pueden tar- dar mucho en simplificarse o incluso no llegar a hacerlo. * GCD : Calcula el mayor común denominador de 2 polinomios: 2: { { 0 (1,0) A } } GCD,flg2 1: { { 1 A } } ->->->->->->->-> 1: { 1 '-A-1' A } 2: { 1 2 3 4 5 } GCD 1: { 1 2 3 4 } ->->->->->->->-> 1: { 1 } (no hay GCD) * Roots : Calcula las raíces numéricas de un polinomio o simbólicas si el grado del polinomio es menor o igual que 2. Roots 1: { 1 -15 85 -225 274 ->->->->->->->-> 1: { { 1 2 3 4 5 } } -120 } 1: { 1 '-(7/3)' '14/9' Roots,flg3 1: { { '1/3' '2/3' '4/ '-(8/27)' } ->->->->->->->-> 3' } } NOTA: Te recuerdo que puedes obtener las raíces SIMBÓLICAS de polino- mios con grado menor o igual que 2 (listas con menos de 4 elementos). También se pueden calcular las raíces de un polinomio con coe- ficientes simbólicos de resultado numérico. Por ejemplo, si tienes almacenados los valores 1, -3 y -12 en unas variables situadas en directorio actual de trabajo o en los superiores a él y que se lla- men por ejemplo 'A', 'B' y 'C' respectivamente, podrías hacer: Roots 1: { A '-A+3*B' '-A+B*C' ->->->->->->->-> 1: { { 1 2 3 4 } } '3*C+4*B-2*A' '-2*C' } Esto también funcionaría si 'A', 'B' y 'C' fueran variables tem- porales de un programa. Por ejemplo, el siguiente programa en user- RPL: << 1 -3 -12 -> A B C << 'A' '-A+3*B' '-A+B*C' '3*C+4*B-2*A' '-2*C' 5 ->LIST Roots >> >> devolvería lo mismo que el ejemplo anterior: 1: { { 1 2 3 4 } } * pf : Descompone una fracción polinómica en fracciones simples: En el nivel 2 se obtienen los coeficientes que acompañan a cada raíz del nivel 1. 2: { 1 } pf 2: { '1/(A-B)' '1/(... 1: { { A B } } ->->->->->->->-> 1: { { A B } } En el caso de raíces múltiples los coeficientes del nivel 2 SE ORDENAN DE MENOR A MAYOR EXPONENTE del denominador es de- cir: 2: { { 1 2 } } pf 2: { 1 0 -1 -1 0 } 1: { { 1 2 1 2 1 } } ->->->->->->->-> 1: { { 2 2 1 1 1 } } que significa: (x-1)·(x-2) ----------------------------- = (x-1)·(x-2)·(x-1)·(x-2)·(x-1) 1 0 -1 -1 0 = ------- + --------- + ------- + --------- + --------- (x-2) (x-2)^2 (x-1) (x-1)^2 (x-1)^3 * flgs : Activa/desactiva los flags de usuario 2 y 3 alternativamente. Para activar/desactivar el flag 4 utiliza las formas explica- das al principio de este documento, esto es , 4 CF( borrar el flag 4 ) y 4 SF ( activar el flag 4 ). * DoLis : Aplica el programa del nivel 1 a la lista del nivel 2: 2: { 1 2 3 4 5 } DoLis 1: << 1 + >> ->->->->->->->-> 1: { 2 3 4 5 6 } NOTA: Este comando ahora también trabaja con matrices simbólicas (lista de listas) y polinomios dados por sus raíces. 2: { { '1/3' } { '2/4 } } DoLis 1: << ->NUM >> ->->->->->->->-> 1: { { 0.333333333333 } { .5 } } 2: { { 2 6 8 } } DoLis 1: << 2 / >> ->->->->->->->-> 1: { { 1 3 4 } } * RevLis : Invierte ¡ rápidamente ! los elementos de una lista. RevLis 1: { 1 2 3 4 5 6 } ->->->->->->->-> 1: { 6 5 4 3 2 1 } NOTA: Al igual que el comando anterior, DoLis, también trabaja con matrices simbólicas y polinomios dados por sus raíces. RevLis 1: { { 1 2 } { 3 4 } } ->->->->->->->-> 1: { { 4 3 } { 2 1 } } RevLis 1: { { 1 2 3 4 } } ->->->->->->->-> 1: { { 4 3 2 1 } } * Q-> : Este comando es el inverso de '->Q'. Convierte expresiones que contienen fracciones numéricas y expresiones simbólicas de resulta- do numérico en números. Es útil cuando has activado el flag 3 para obtener resultados fraccionarios pero esos resultados no son de tu agrado porque contienen fracciones "exageradas" como por ejemplo: '12345/67890', o cuando quieres convertir resultados simbólicos en números ( válido sólo para expresíones simbólicas con resultado nu- mérico ). Veamos: Q-> 1: { '1/3' 'A+2/5*B' } ->->->->->->->-> 1: { .333333333333 'A+ .4*B' } Si representamos por 'V' el símbolo de la raíz cuadrada y por 'pi' el símbolo del número pi (3.1415...), entonces, si por ejemplo obtuviste después de ejecutar el comando Roots { { 'V3''pi' } } pue- des aplicar Q-> para obtener los resultados numéricos: Q-> 1: { { 'pi' 'V3' } } ->->->->->->->-> 1: { { 3.14159265359 1.73205080757 } } También se tiene en cuenta la posibilidad de que alguna de las variables que intervienen en las expresiones de los coeficientes se encuentren en el directorio actual (o superiores) y contengan una expresión de resultado numérico. Por ejemplo, prueba a crear en el directorio actual dos variables, una llamada 'A' que contenga un 2 y otra llamada 'B' y que contenga '6/2' ( tecleando simplemente 2 'A' STO '6/2' 'B' STO ). Y ahora, una vez creadas esas variables y suponiendo que no hay nin- guna variable llamada C en el directorio actual y superiores, piensa en el resultado del siguiente ejemplo: Q-> 1: { A 'A+B' 'A*B+C' } ->->->->->->->-> 1: { 2 5 '6+C' } (A=2,B='6/2') -o-o- Los siguientes comandos sólo están disponibles si instalas la li- brería con la opción del cálculo de transformadas y antitransformadas de Laplace y Z (fichero .trn). * ->L : Proporciona la transformada de Laplace de expresiones que in- cluyan combinaciones de cualquiera de las siguientes funcio- nes: · K (constante) · t^n · e^( a·t ± b ) · sin( a·t ± b ) · cos( a·t ± b ) · sinh( a·t ± b ) · cosh( a·t ± b ) NOTA: Recuerda que las expresiones han de estar en función de 't'. 1: 'e^-t*COS(3*t+2)+2* ->L,DEG 2: { .999390827019 6.... e^-(2*t)*t' ->->->->->->->-> 1: { 1 6 22 48 40 } ->L,flg2 2: { 'COS(b)' '-(2*SI... 1: 't*COS(a*t+b)' ->->->->->->->-> 1: { 1 0 '2*a^2' 0 'a^ 4' } * L-> : Proporciona la antitransformada de Laplace de la función dada por la fracción polinómica situada en los niveles 1 y 2 (que ha de tener el grado del numerador menor o igual que el del denominador). 2: { 1 } L-> 1: '-(.5*e^-t*COS(t))+ 1: { { (-1,1) (-1,-1) ->->->->->->->-> 0.5*e^-(2*t)+.5*t*e^ -2 -2 } } -(2*t)' NOTA: Las antitransformadas de Laplace de las funciones senh y cosh se devuelven en forma exponencial. Te recuerdo que: e^t - e^(-t) sinh(t) = -------------- 2 e^t + e^(-t) cosh(t) = -------------- 2 * ->Z: Debido a que muchas veces se calcula la transformada Z a par- tir de una transformada de Laplace (una función en "s"), este comando lo que espera como argumento es precisamente eso , una fracción polinómica que representa una transformada de Laplace Asímismo, como las transformadas Z incluyen normalmente térmi- nos exponenciales dependientes del período de muestreo, el re- sultado puede a veces ser difícil de leer con claridad ; esta es la principal razón que me llevó a tener la posibilidad de poder ver el resultado de otra forma más rápida de calcular (aunque quizá no más sencilla de interpretar) . La posibilidad de obtener el resultado de forma completa o a través de esta forma alternativa se lleva a cabo mediante la activación o desactivación del flag 4 de usuario ( ver notas al principio del documento para su activación/desactivación ). Veamos todo esto con un ejemplo. EJEMPLO ------- Si x(t) es x(t)=1-t·e^(-t) cuál será su transformada Z ? -0-0- SOL: --- X(z) = Z[x(t)] = Z[x(kT)] = Z[1-kT·e^(-kT)] Para calcular esta transformada Z introduce '1-t·e^(-t)' en el nivel 1 y presiona '->L', con lo que obtendrás la corres- pondiente transformada de Laplace 2: { 1 1 1 } 1: { 1 2 1 0 } lo que significa s^2 + s + 1 X(s) = L[x(t)] = ----------------- s^3 + 2·s^2 + s En este punto puedes hacer una de las siguientes cosas: a) activa el flag 4 y presiona '->Z' con lo que obtendrás la expresión de la transformada Z de X(s) en su "versión completa" 2: { 1 '-(T*e^-T)-2*e... 1: { 1 '-1-2*e^-T' 'e^ (-T-T)+2*e^-T' '-e^ (-T-T}' } lo que quiere decir que: z^3 + [-T·e^(-T)-2·e^(-T)]·z^2 + [T·e^(-T)+e^(-2T)]·z X(z) = ----------------------------------------------------------- z^3 + [-1-2·e^(-T)]·z^2 + (e^(-2T)+2·e^(-T)]·z + (-e^(-2T)) A algunas personas les gusta más la notación en potencias negativas de z ... En fin, como prefieras. O también puedes hacer: b) desactiva el flag 4 y presiona '->Z' con lo que obten- drás el resultado expresado de una forma alternativa: 2: { { 1 0 } { '-(T*e... 1: { { 0 1 } { '-T' 2 } } que significa lo siguiente: z -T·e^(-T)·z X(z)= ------------- + --------------- (*) (z - e^0)^1 (z - e^(-T))^2 A A A A Es decir, las listas contenidas en la lista del nivel 2 son polinomios en potencias descendientes de z (como los de toda la vida), que representan los numeradores de la descomposición en fracciones simples de la transformada. Las listas del nivel 1 contienen pares de la forma { X Y } donde X es el exponente al que hay que elevar "e" para posteriormente restárselo a "z" y obtener algo de la for- ma ( z - e^X ) e Y es la potencia a la que se eleva ese factor para ob- tener la expresión completa del denominador de la forma ( z - e^X )^Y - en la expresión (*) las Aes marcan los valores de X e Y para cada término del ejemplo - ¿ Has entendido ? Creo que no es muy complicado y después de un poco de práctica verás qué útil es ( por lo menos a mi me lo resulta ). ¿Que quieres particularizar la transformada Z para un va- lor concreto del período de muestreo "T" ? ¡¡¡ NINGÚN PROBLEMA !!! Este comando lo hace por ti. Dale X(s) (como siempre expresa- do en forma de una fración polinómica pero ahora en los nive- les 2 y 3 ) y el valor (real) del período de muestreo "T" en el nivel 1 y te devolverá la transformada Z particularizada para ese período. Por ejemplo: Una vez que tienes X(s) de la forma: 2: { 1 1 1 } 1: { 1 2 1 0 } introduce T en el nivel 1. V.g. ( para T = 0.5 segundos ) 3: { 1 1 1 } 2: { 1 2 1 0 } 1: .5 Pulsa '->Z' y obtendrás lo que buscas. ¿ Obtuviste la forma alternativa de la transformada Z y quieres la forma completa ? ¡¡¡ NINGÚN PROBLEMA !!! Eso es precisamente lo que hace el siguiente comando: * ->ND: Dada la transformada Z en su forma alternativa , devuelve la forma completa. Continuando con el ejemplo anterior... Una vez que tienes la forma alternativa 2: { { 1 0 } { '-(T*e... 1: { { 0 1 } { '-T' 2 } } presiona '->ND' y obtendrás la fracción polinómica correspon- diente a la forma completa de la transformada Z. * Z-> : Devuelve la transformada Z inversa de la fracción polinómica (expresada en potencias positivas descendentes de z) dada en los niveles 1 y 2. EJEMPLO ------- Para calcular la transformada inversa de z z^-1 X(z) = --------------- = ------------------- z^2 + 3·z + 2 1 + 3·z^-1 + z^-2 introduce 2: { 1 0 } 1: { 1 3 2 } y presiona 'Z->'. Obtendrás: 1: (-1)^k-(-2)^k lo que quiere decir que x(k) = Z^-1[X(z)] = (-1)^k-(-2)^k NOTAS (para '->Z' y 'Z->'): * Estos dos comandos sólo trabajan con polinomios CUYAS RAÍCES TENGAN UNA MULTIPLICIDAD MENOR O IGUAL QUE 4 ( lo que es sufi- ciente para la mayoría de los casos ). DATE CUENTA QUE ESO NO SIGNIFICA QUE NO PUEDAS TRABAJAR CON POLINOMIOS DE MÁS DE 4 COEFICIENTES. * Puedes también jugar con el flag 2 para obtener resultados algo más simplificados. * No olvides que puedes seguir utilizando la notación habitual de Neopolys para los polinomios que pasas a estos comandos. Por ejemplo: en el ejemplo del comando 'Z->' podías haberle pasado 2: { { 0 } } 1: { { -1 -2 } } y habrías obtenido el mismo resultado. * Para particularizar las transformadas Z para un T dado , pudes también utilizar los comandos 'MATCH' de la calculadora en combi- nación con el comando 'Dolis' ... Pero dejaré que pienses en ello... REFERENCIA RÁPIDA ================= La siguiente es una relación de los argumentos admitidos por cada comando y el tipo de resultado devuelto. Para el que no esté acostum- brado a este tipo de simbología, los términos a la izquierda del sím- bolo "->->" representan los argumentos pasados al comando , y su si- tuación en la pila. Así por ejemplo: P+ : (lrts,otro) (lrts,otro) ->-> list ( Nivel de la pila )-> (2) (1) ->-> (1) ) significa que el comando P+ admite o bien un polinomio, o bien otro tipo de dato en el nivel 2 (posíción (2)), y los mismos tipos de datos en el nivel 1, y devuelve un polinomio en el nivel 1. El significado de cada símbolo es el siguiente: list = Una lista con los coeficientes del polinomio. Ej: { 1 2 3 4 } roots = Una lista doble con las raíces del polinomio. Ej: { { 1 2 3 4 } } lrts = Cualquiera de las dos anteriores. Ej: { 1 2 3 } o { { 1 2 3 } } listlst = Una "lista de listas" Ej: { { 1 0 } { 1 3 } } simb = Expresión simbólica. Ej: 'x^2+1/A' simbn = Expresión simbólica de resultado numérico: Ej: '1/3+2^3' var = Nombre de variable. Ej: s num = Dato numérico real o complejo. Ejs: 1) 123 2) (1,-23.12) prog = Programa. Ej: << 2 * >> otro = Cualquier tipo de dato. Y la referencia para cada comando es: P+ : SUMA POLINOMIOS (lrts,any) (lrts,any) ->-> list P- : RESTA POLINOMIOS (lrts,any) (lrts,any) ->-> list P* : MULTIPLICA POLINOMIOS (lrts,any) (lrts,any) ->-> list P/ : DIVIDE POLINOMIOS (lrts,any) (lrts,any) ->-> list(resto) list(cociente) P^ : ELEVA UN POLINOMIO A UNA POTENCIA ENTERA (lrts,any) (num,simbn,list) ->-> list Pval : EVALÚA UN POLINOMIO EN UN PUNTO (lrts,any) (num,simbn,simb,var) ->-> num F+ : (lrts,any) (lrts,any) (lrts,any) (lrts,any) ->-> list list ( ó { } ) F- : (lrts,any) (lrts,any) (lrts,any) (lrts,any) ->-> list list ( ó { } ) F* : (lrts,any) (lrts,any) (lrts,any) (lrts,any) ->-> list list ( ó { } ) F/ : (lrts,any) (lrts,any) (lrts,any) (lrts,any) ->-> list list ( ó { } ) F^ : (lrts,any) (lrts,any) (num,simbn) ->-> list list ( ó { } ) Fval : (lrts,any) (lrts,any) (num,simbn,simb,var) ->-> num A->P : EXPRESIÓN ALGEBRAICA A POLINOMIO (simb,num,var) var ->-> list list list P->A : POLINOMIO A EXPRESION ALGEBRAICA (lrts,any) (var,num,simb) ->-> simb F->A : FRACCION POLINOMICA A EXPRESION ALGEBRAICA (lrts,any) (lrts,any) (var,num,simb) ->-> simb Pd : DERIVA POLINOMIOS (lrts,any) ->-> list PS : INTEGRA POLINOMIOS (lrts,any) ->-> list Fd : DERIVA FRACCIONES DE POLINOMIOS (lrts,any) (lrts,any) ->-> list list { } Pcoef : DEVUELVE LOS COEFICIENTES DE UN POLINOMIO DADAS LAS RAICES (roots,any) ->-> list Fsimp : SIMPLIFICA FRACCIONES DE POLINOMIOS (lrts,any) (lrts,any) ->-> list list { } GCD : MAYOR COMUN DENOMINADOR DE DOS POLINOMIOS (lrts,any) (lrts,any) ->-> list Roots : RAICES DE UN POLINOMIO DADOS LOS COEFICIENTES (lrts,any) ->-> roots pf : DESCOMPOSICION EN FRACCIONES PARCIALES (lrts,any) (lrts,any) -> -> list roots flgs : ACTIVACION/DESACTIVACION DE LOS FLAGS 3 Y 4 ALTERNATIVAMENTE ->-> (modified state of user flags 2 and 3) DoLis : APLICA UN PROCEDIMIENTO A UNA LISTA (lrts,listlst) proc ->-> (lrts,listlst) RevLis : INVIERTE LOS ELEMENTOS DE UNA LISTA (lrts,listlst) ->-> (lrts,listlst) Q-> : CONVIERTE FRACCIONES NUMÉRICAS Y EXPRESIONES NUMÉRICAS EN NÚMEROS SUSTITUYENDO EL CONTENIDO DE LAS VARIABLES QUE SEAN NUMÉRICAS Y QUE ESTÉN EN EL DIRECTORIO ACTUAL O SUPERIORES (lrts,listlst) ->-> (lrts,listlst) ->L : TRANSFORMADA DE LAPLACE symb(in terms of t) ->-> list list { } L-> : TRANSFORMADA INVERSA DE LAPLACE (lrts,any) (lrts,any) ->-> symb ->Z : TRANSFORMADA Z lrts lrts ->-> listlst listlst (flag 4 not set) ->-> list list (flag 4 set) lrts lrts num(real) ->-> listlst listlst (flag 4 not set) ->-> list list (flag 4 set) Z-> : TRANSFORMADA Z INVERSA (lrts,any) (lrts,any) ->-> symb ->ND : FORMA ALTERNATIVA A FRACCION POLINOMICA listlst listlst ->-> list list EL AUTOR ======== Agradezco cualquier comentario sobre fallos que hayáis encontrado o sobre cualquier otra cuestión que penséis sea de interés para mejo- rar Neopolys. Para ello podéis encontrarme en : apolo1@usuarios.retecal.es NOTA FINAL ========== Todos aquellos que utilizáis las librerías de polinomios para trabajar con funciones de transferencia , control de sistemas y todo ese tipo de cosas, que sepáis que hay una librería llamada Bode-Routh que hace Bodes, diagramas de Nyquist , lugar de las raíces , etc... y que utiliza Neopolys. Bode-Routh la podéis encontrar en los mismos si- tios que Neopolys; así que si estáis leyendo esto ahora mismo, seguro que no tenéis mucho problema para encontrar esa librería.