SPN XCAS: MANUAL CALCULO SIMBÓLICO COMPUTACIONAL Y MATEMÁTICA CON XCAS
|
12-24-2018, 03:14 PM
(This post was last modified: 12-28-2018 08:40 PM by compsystems.)
Post: #1
|
|||
|
|||
SPN XCAS: MANUAL CALCULO SIMBÓLICO COMPUTACIONAL Y MATEMÁTICA CON XCAS
○ Hello, I am translating and expanding the XCAS manual to Spanish, any contribution is welcome. (better examples, better writing, error detection, etc. )
○ Hola, estoy traduciendo y ampliando el manual de XCAS a español, cualquier aporte es bienvenido. (mejores ejemplos, mejor redacción, detección de errores, etc.) MANUAL CALCULO SIMBÓLICO COMPUTACIONAL Y MATEMÁTICA CON XCAS Por CompSystems, versión 0.0.1 25/12/2018 Fuente original en francés e inglés por Renée De Graeve & Bernard Parisse & Jean-Michel Lecointre. PRELIMINAR Nota: El símbolo [↵] en este documento significa pulsar la tecla [ENTER] para ejecutar la instrucción, o sentencia. El operador de asignación usa el dígrafo (:=) Los símbolos [] es el principal constructo o contenedor de objetos en XCas, además se usa como indicador de extracción de elementos. TIPOS DE DATOS U OBJETOS EN Xcas Observemos que los datos 1,2,3 y 4,5,6 entre diferentes contendores y contextos retornan diferentes resultados. ◉ ( 1, 2, 3 ) * ( 4, 5, 6 ) [↵] retorna 720, realiza multiplicación implícita 1*2*3*4*5*6 ◉ [ 1, 2, 3 ] * [ 4, 5, 6 ] [↵] retorna 32, se interpreta como producto punto entre vectores ◉ list[ 1, 2, 3 ] * list[ 4, 5, 6 ] [↵] retorna list[ 4, 10, 18 ], se interpreta como producto entre elementos ◉ set[ 1, 2, 3 ] * set[ 4, 5, 6 ] [↵] retorna set[ tuple[1,4], tuple[1,5], tuple[1,6], tuple[2,4], tuple[2,5], tuple[2,6], tuple[3,4], tuple[3,5], tuple[3,6] ], se interpreta como producto cartesiano entre conjuntos ◉ poly1[ 1, 2, 3 ] * poly1[ 4, 5, 6 ] [↵] retorna poly1[ 4, 13, 28, 27, 18 ], se interpreta como producto entre polinomios ◉ [[ 1, 2, 3 ]] * [[ 4, 5, 6 ]] [↵] retorna "Error: Invalid dimension", la multiplicación de dos matrices A₍n₁, m₁₎ y B₍n₂, m₂₎ debe cumplir que m₁= n₂. [[1,2,3]] tiene como tamaño ₍n₁=1, m₁=3₎ y [[4,5,6]] tiene como tamaño ₍n₂=1, m₂=3₎ por lo tanto m₁ ≠ n₂ ya que 3≠1 ◉ [[ 1, 2, 3 ]] * tran([ 4, 5, 6 ]) [↵] retorna matrix[[ 32 ]], ya que tran([ 4, 5, 6 ]) = [[4],[5],[6]] que tiene como tamaño ₍n₂=3,m₂=1₎ por lo tanto m₁ = n₂ ya que 3=3 y el resultado tiene que tener dimensión (n₁, m₂) = (1,1) Ⅰ) SECUENCIA DE EXPRESIONES U OBJETOS: este objeto en Xcas no requiere un símbolo contenedor que agrupe los elementos o miembros, estos se separan solo por medio de comas (,) a, b, c es una secuencia de tres objetos, por consiguiente, su tamaño o dimensión es 3. ◉ seq1 := a, b, c [↵] ◉ subtype( seq1 ) [↵] retorna 1, sinónimo de tipo de objeto secuencia ◉ size( seq ) [↵] retorna 3, número de miembros o elementos de la secuencia seq1 ◉ dim( seq ) [↵] retorna 3 Para hacer referencia a un miembro individual de una secuencia se requiere primero asignar la secuencia a un nombre identificador de referencia, luego se usan corchetes simples [] si se desea indexarlo o que la ordenación de los miembros se tome desde 0 Por ejemplo, se desea extraer cada elemento de la secuencia definida anteriormente ◉ seq1[ 0 ] [↵] retorna a ◉ seq1[ 1 ] [↵] retorna b ◉ seq1[ 2 ] [↵] retorna c ◉ seq1[ 3 ] [↵] retorna ""Index outside range: … Error: Invalid dimension" Se usan corchetes dobles [[]] si se desea indexarlo o que la ordenación de los miembros se tome desde 1 ◉ seq1[[ 0 ]] [↵] retorna "Error: Invalid dimension" ◉ seq1[[ 1 ]] [↵] retorna a ◉ seq1[[ 2 ]] [↵] retorna b ◉ seq1[[ 3 ]] [↵] retorna c Aunque también se puede usar paréntesis curvos () para la extracción, no se recomienda el uso de paréntesis, pues generan “confusión” al compilador con la definición de funciones ◉ seq1( 1 ) [↵] retorna a Algunas ordenes devuelven una secuencia de expresiones, por ej. ◉ qr( [[1,2],[3,4]] ) [↵] retorna dos matrices cada elemento como un numero racional. matrix[[1/√10,3/5/(√10/5)],[3/√10,-1/5/(√10/5)]], matrix[[√10,7/5*√10],[0,√10/5]] ◉ evalf( qr([[1,2],[3,4]]) ) [↵] retorna dos matrices [[-0.316227766017,-0.948683298051], [-0.948683298051,0.316227766017]], [[-3.16227766017,-4.42718872424], [0.0,-0.632455532034]] Ⅱ) LISTA: es un objeto u arreglo que conserva orden y multiplicidad de los elementos o miembros, los símbolos o corchetes [ ] se usan como contenedores de elementos y para definir una lista, e incluso para vectores o matrices. [ a, b, c ] es una lista diferente de [ b, a, c ] ◉ list1 := [ a, b, c ] ◉ list2 := [ b, a, c ] ◉ list1 == list2 [↵] retorna false Ⅲ) VECTOR: como un vector es un arreglo unidimensional, entonces una lista unidimensional se considera un vector. ◉ vect1 := [ a, b, c ] [↵] ◉ type( vect1 ) [↵] retorna 'vector' sinónimo de tipo de objeto DOM_LIST o lista ◉ size( vect1 ) [↵] retorna 3, número de miembros o elementos del vector vect1 ◉ dim( vect1 ) [↵] retorna 3 Para hacer referencia a un miembro individual de una lista se usa también corchetes simples o dobles y entre ellos el valor numérico de la posición Usando corchetes simples ◉ vect1[ 0 ] [↵] retorna a ◉ vect1[ 2 ] [↵] retorna c Usando corchetes dobles ◉ vect1[[ 1 ]] [↵] retorna a ◉ vect1[[ 3 ]] [↵] retorna c A diferencia de las secuencias se puede usar los corchetes directamente sobre el vector para extraer sus elementos, por obvias razones no se realiza algún tipo de multiplicación implícita entre arreglos [ a, b, c ] [ 0 ], sino que es interpretado como extracción de elementos. ◉ [ a, b, c ] [ 0 ] [↵] retorna a ◉ [ a, b, c ] [ 2 ] [↵] retorna c ◉ [ a, b, c ] [[ 1 ]] [↵] retorna b ◉ [ a, b, c ] [[ 3 ]] [↵] retorna c Ⅳ) MATRIZ: una MATRIZ es un arreglo de vectores, donde cada vector debe tener el mismo número de elementos, es decir forman un arreglo bidimensional (rectangular o cuadrado de elementos), donde el número de elementos de cada vector definen el número de columnas que se denotan con la letra m, y el número de vectores definen el número de filas que se denotan con la letra n, por lo tanto el número de elementos del arreglos se obtiene al multiplicar (n*m) o (n*n) si es un arreglo cuadrado ya que m=n ◉ mat1 := [[ a, b ],[ c, d ]] [↵] por lo tanto ◉ type( mat1 ) [↵] retorna 'vector' ◉ size( mat1 ) [↵] retorna 2, número de filas (n) de la matriz mat1 ◉ dim( mat1 ) [↵] retorna [2, 2], número de filas y columnas [n, m] es decir n=2, m=2 Para extraer los elementos de un arreglo se requiere dos posiciones n, m Usando corchetes dobles ◉ mat1 [[ 1, 1 ]] [↵] retorna a ◉ mat1 [[ 1, 2 ]] [↵] retorna b ◉ mat1 [[ 2, 1 ]] [↵] retorna c ◉ mat1 [[ 2, 2 ]] [↵] retorna d Usando corchetes simples ◉ mat1 [ 0, 0 ] [↵] retorna a ◉ mat1 [ 0, 1 ] [↵] retorna b ◉ mat1 [ 1, 0 ] [↵] retorna c ◉ mat1 [ 1, 1 ] [↵] retorna d En un arreglo no matricial no todos los vectores contienen el mismo número de elementos, por lo tanto, no es un arreglo rectangular. ◉ array1 := [[ a, b, c ],[ d ]] [↵] ◉ array1 [[ 1, 1 ]] [↵] retorna a ◉ array1 [[ 1, 2 ]] [↵] retorna b ◉ array1 [[ 1, 3 ]] [↵] retorna c ◉ array1 [[ 2, 1 ]] [↵] retorna d ◉ array1 [[ 2, 2 ]] [↵] retorna "array1(2,2) Error: Invalid dimension" ◉ size( array1 ) [↵] retorna 2, número de filas (n) del arreglo array1 ◉ dim( array1 ) [↵] retorna 2, se interpreta como el número de filas ya que el tamaño de las columnas varía en cada fila Obteniendo el tamaño de cada fila ◉ size( array1[[1]] ) [↵] retorna 3 ◉ size( array1[[2]] ) [↵] retorna 1 Ⅴ) CONJUNTO: es un objeto que no conserva orden, como si lo hacen los arreglos de listas, vectores, matrices y polinomios. Cuando se almacena un conjunto en una variable se elimina multiplicidad de los elementos, los símbolos [] más el prefijo (set) se usan como contenedores de elementos para definir un conjunto. set[ a, b, c ] es una conjunto igual a set[ b, a, c ] ◉ set1 := set[ a, a, b, c ] se elimina la multiplicidad, por lo tanto set1 es igual a set[ a, b, c ] ◉ set2 := set[ b, a, c ] ◉ set1 == set2 [↵] retorna true ◉ subtype( set1 ) [↵] retorna Usando corchetes simples ◉ set1[ 0 ] [↵] retorna a ◉ set1[ 2 ] [↵] retorna c Usando corchetes dobles ◉ set1[[ 1 ]] [↵] retorna a ◉ set1[[ 3 ]] [↵] retorna c ◉ size( set1 ) [↵] retorna 3, número de miembros o elementos del conjunto set1 ◉ dim( set1 ) [↵] retorna 3 Una secuencia se puede convertir en el contenido de una lista o vector, usando la orden tipo funcional makevector() ◉ seq1 := a, b, c [↵] a, b, c ◉ makevector( seq1 ) [↵] retorna [ a, b, c ] ◉ seq2 := "H", "E", "L", "L", "O" [↵] ◉ makevector( seq2 ) [↵] retorna [ "H", "E", "L", "L", "O" ] Ⅵ) LISTA {} Para visualizar una lista de objetos encerrados entre llaves {}, se usan como contenedores los símbolos [] más el prefijo (list) ◉ list[ a, b, c ] [↵] se visualiza como { a, b, c } Los elementos de las soluciones que arroja las ordenes de resolución por defecto usan list[] para contenerlos, aunque también set[] ◉ solve( x^3 - 6*x² + 11*x -6 = 0, x, '=' ) [↵] retorna set[ x = 1, x = 2, x = 3 ] mientras que ◉ solve( x^3 - 6*x² + 11*x -6 = 0, x ) [↵] retorna list[ 1, 2, 3 ] Ⅶ) POLINOMIOS Un polinomio en una variable está representado por una expresión algebraica simbólica explicita, por defecto en orden decreciente de potencias y de la siguiente forma aₙ*xⁿ+aₙ₋₁*xⁿ⁻¹+...+a₂*x²+a₁*x¹+a₀*x⁰. ◉ increasing_power( 0 ) [↵] ◉ x^3 - 6*x² + 11*x -6 [↵] retorna x^3 - 6*x^2 + 11*x -6 ◉ increasing_power() [↵] retorna 0 ◉ increasing_power( 1 ) [↵] ◉ x^3 - 6*x² + 11*x -6 [↵] retorna -6+11*x-6*x^2+x^3 ◉ increasing_power() [↵] retorna 1 Matemáticamente un polinomio también se puede representar por la lista de sus coeficientes (vector), [aₙ, aₙ₋₁, ..., a₂, a₁, a₀] y en este CAS como poly1[aₙ, aₙ₋₁, ..., a₂, a₁, a₀] en formato vector siempre se escriben los coeficientes asociados a su potencias decrecientes, e incluso si se fija o selecciona el indicador (potencia CRECIENTE en 1), increasing_power(1) ◉ autosimplify( 'simplify' ) [↵] retorna 1 ◉ ( x^2 + 2*x +3 ) * ( 4*x^2 + 5*x + 6 ) [↵] retorna 4*x^4 + 13*x^3 + 28*x^2 + 27*x + 18 Se facilita la entrada si se escribe como ◉ poly1[ 1, 2, 3 ] * poly1[ 4, 5, 6 ] [↵] retorna poly1[4, 13, 28, 27, 18] ◉ subtype( poly1[ 1, 2, 3 ] ) [↵] retorna 10 Resumen ejemplos preliminar ( 1, 2, 3 ) * ( 4, 5, 6 ); [ 1, 2, 3 ] * [ 4, 5, 6 ]; list[ 1, 2, 3 ] * list[ 4, 5, 6 ]; set[ 1, 2, 3 ] * set[ 4, 5, 6 ]; poly1[ 1, 2, 3 ] * poly1[ 4, 5, 6 ]; " [[ 1, 2, 3 ]] * [[ 4, 5, 6 ]]"; [[ 1, 2, 3 ]] * tran([ 4, 5, 6 ]); seq1 := a, b, c; subtype( seq1 ); size( seq1 ); dim( seq1 ); seq1[ 0 ]; seq1[ 1 ]; seq1[ 2 ]; "seq1[ 3 ]"; "seq1[[ 0 ]]"; seq1[[ 1 ]] ; seq1[[ 2 ]]; seq1[[ 3 ]]; seq1( 1 ); qr( [[1,2],[3,4]] ); evalf( qr([[1,2],[3,4]]) ); list1 := [ a, b, c ]; list2 := [ b, a, c ]; list1 == list2; vect1 := [ a, b, c ]; type( vect1 ); size( vect1 ); dim( vect1 ); vect1[ 0 ]; vect1[ 2 ]; vect1[[ 1 ]]; vect1[[ 2 ]]; [ a, b, c ] [ 0 ]; [ a, b, c ] [ 2 ]; [ a, b, c ] [ 1 ]; mat1 := [[ a, b ],[ c, d ]]; type( mat1 ); size( mat1 ); dim( mat1 ); mat1 [[ 1, 1 ]]; mat1 [[ 1, 2 ]]; mat1 [[ 2, 1 ]]; mat1 [[ 2, 2 ]]; mat1 [ 0, 0 ]; mat1 [ 0, 1 ]; mat1 [ 1, 0 ]; mat1 [ 1, 1 ]; array1 := [[ a, b, c ],[ d ]]; array1 [[ 1, 1 ]]; array1 [[ 1, 2 ]]; array1 [[ 1, 3 ]]; array1 [[ 2, 1 ]]; "array1 [[ 2, 2 ]]"; size( array1 ); dim( array1 ); size( array1[[1]] ); size( array1[[2]] ); set1 := set[ a, a, b, c ]; set2 := set[ b, a, c ]; set1 == set2; set1[ 0 ]; set1[ 2 ]; set1[[ 1 ]]; set1[[ 3 ]]; size( set1 ); dim( set1 ); seq1 := a, b, c; makevector( seq1 ); seq2 := "H", "E", "L", "L", "O"; makevector( seq2 ); list[ a, b, c ]; solve( x^3 - 6*x² + 11*x -6 = 0, x, '=' ); solve( x^3 - 6*x² + 11*x -6 = 0, x ); increasing_power( 0 ); x^3 - 6*x² + 11*x -6; increasing_power(); increasing_power( 1 ); x^3 - 6*x² + 11*x -6; increasing_power(); autosimplify( 'simplify' ); ( x^2 + 2*x +3 ) * ( 4*x^2 + 5*x + 6 ); poly1[ 1, 2, 3 ] * poly1[ 4, 5, 6 ]; subtype( poly1[ 1, 2, 3 ] ) [enter] 720, 32, list[4,10,18], set[tuple[1,4],tuple[1,5],tuple[1,6],tuple[2,4],tuple[2,5],tuple[2,6],tuple[3,4],tuple[3,5],tuple[3,6]], poly1[4,13,28,27,18], "[[ 1, 2, 3 ]] * [[ 4, 5, 6 ]]", matrix[[32]], (a,b,c), 1, 3, 3, a, b, c, "seq1[ 3 ]", "seq1[[ 0 ]]", a, b, c, a, matrix[[1/√10,3/5/(√10/5)],[3/√10,-1/5/(√10/5)]],[[√10,7/5*√10],[0,√10/5]], matrix[[0.316227766017,0.948683298051],[0.948683298051,-0.316227766017]],[[3.16227766017,4.42718872424],[0.0,0.632455532034]], [a,b,c], [b,a,c], false, [a,b,c], vector, 3, 3, a, c, a, b, a, c, b, [[a,b],[c,d]], vector, 2, [2,2], a, b, c, d, a, b, c, d, [[a,b,c],[d]], a, b, c, d, "array1 [[ 2, 2]]", 2, 2, 3, 1, set[a,b,c], set[b,a,c], true, a, c, a, c, 3, 3, (a,b,c), [a,b,c], "H","E","L","L","O", ["H","E","L","L","O"], list[a,b,c], set[x=1,x=2,x=3], list[1,2,3], 0, x^3-6*x^2+11*x-6, 0, 1, x^3-6*x^2+11*x-6, 0, 1, (x^2+2*x+3)*(4*x^2+5*x+6), poly1[4,13,28,27,18], 10 session Xcas ✪ Capítulo 6 Funciones del Calculo Simbólico Computacional Fuente: Frances Xcas: https://www-fourier.ujf-grenoble.fr/~par...tml#sec201 Frances HP-prime https://www.hpcalc.org/details/8773 Ingles Xcas: https://www-fourier.ujf-grenoble.fr/~par...node4.html Ingles HP-prime: https://www.hpcalc.org/details/8774 ★ 6.1 Las constantes simbólicas: e, pi, infinity, inf, i, euler_gamma ◉ Función exponencial: base del logaritmo natural. e [↵] retorna exp(1), Nota: la letra e es un identificador reservado, por esta razón no se puede usar como variable que contenga un objeto. Sinónimo %e [↵] retorna exp(1) ◉ Número π: constante circular Π [↵] retorna π Sinónimos pi [↵] retorna π %pi [↵] retorna π Nota: pi es un identificador reservado, por esta razón no se puede usar como variable. ◉ Infinito, (no es número, ni un límite) Infinito real sin signo infinity [↵] retorna ∞ ○ Infinito real positivo +infinity [↵] retorna +∞ Sinónimo +inf [↵] retorna +∞ inf [↵] retorna +∞ ○ Infinito real negativo -infinity [↵] retorna -∞ Sinónimo -inf [↵] retorna -∞ ◉ Unidad imaginaria, √-1 i [↵] retorna i Nota: la letra i es un identificador reservado, por esta razón no se puede usar como variable. Sinónimo %i [↵] retorna i √(-1) [↵] retorna i sqrt(-1) [↵] retorna i ◉ Constante de Euler γ euler_gamma [↵] retorna euler_gamma evalf(euler_gamma) [↵] retorna 0.577215664902 limit(Σ(1/k,k,1,n)-ln(n),n, +infinity) [↵] retorna euler_gamma ✪ 6.2 Booleanos ★ 6.2.1 Constantes booleanas ◉ Booleano Verdadero true [↵] retorna true Sinónimos TRUE [↵] retorna true evalb(1) [↵] retorna true, para todo número diferente de 0 evalb(-2) [↵] retorna true ◉ Booleano Falso false [↵] retorna false Sinónimos FALSE [↵] retorna false evalb(0) [↵] retorna false, solo para el valor de 0 ◉ Tipo de datos de las constantes Nota: La orden type() no arroja el tipo de dato o palabra "constante type(e), type(%e), type(π), type(pi), type(%pi), type(infinity), type(+infinity), type(+inf), type(+inf), type(-infinity), type(-inf), type(i), type(%i), type(euler_gamma), type(limit(sum(1/k,k,1,n)-ln(n),n,+infinity)), type(evalf(euler_gamma)), type(true) [↵] retorna expression, expression, identifier, identifier, identifier, identifier, expression, expression, expression, expression, expression, complex, complex, identifier, identifier, real, integer ☆ Resumen de ejemplos capítulo 6.1 y 6.2.1 list[ e, %e, π, pi, %pi, infinity, +infinity, +inf, -infinity, -inf, i, %i, √(-1), sqrt(-1), euler_gamma, limit(Σ(1/k,k,1,n)-ln(n),n,+infinity), evalf(euler_gamma), true, TRUE, evalb(1), evalb(-2), false, FALSE, evalb(0) ] [↵] retorna [e, e, π, π, π, ∞, +∞, +∞, -∞, -∞, i, i, i, i, euler_gamma, euler_gamma, 0.577215664902, true, true, true, true, false, false, false] ☆ Prueba online/ test online session Xcas, capítulos 6.1 y 6.2.1 |
|||
« Next Oldest | Next Newest »
|
Messages In This Thread |
SPN XCAS: MANUAL CALCULO SIMBÓLICO COMPUTACIONAL Y MATEMÁTICA CON XCAS - compsystems - 12-24-2018 03:14 PM
RE: SPN XCAS: MANUAL CALCULO SIMBÓLICO COMPUTACIONAL Y MATEMÁTICA CON XCAS - compsystems - 12-25-2018, 09:24 PM
RE: SPN XCAS: MANUAL CALCULO SIMBÓLICO COMPUTACIONAL Y MATEMÁTICA CON XCAS - compsystems - 12-26-2018, 04:16 PM
|
User(s) browsing this thread: 1 Guest(s)