COMANDOS BÁSICOS DE ÁLGEBRA LINEAL EN MAPLE Prof. Carlos Conde LázaroL Prof. Arturo Hidalgo LópezL Prof. Alfredo López L Benito Marzo, 2007
Manipulación de de expresiones algebraicas Se usan los comandos: [> simplify( expresión) simplifica [>simplify(x*(x-5)**3+x**2-x*(x+4)*(x-3)/(x*(x-2))); 5 4 3 2 x 17x + 106x 278x + 249x + 12 x 2 [> expand( expresión) expande [>expand(x*(x-5)**3+x**2-x*(x+4)*(x-3)/(x*(x-2))); 2 4 3 2 x x 12 x 15x + 76x 125x + x 2 x 2 x 2
Manipulación de de expresiones algebraicas [> factor( expresión) factoriza [> factor(x^3-6*x^2+12*x-8); (x-2) 3
Manipulación de de expresiones algebraicas [> solve( {ecuaciones},{incógnitas}) resuelve ecs. [> eq:=x^3-6*x^2+12*x-8=4: [> solve(eq); 2 2 2 2 2 3 1 3 1 3 1 3 1 3 2 + 2, - 2 + I 3 2, - 2 I 3 2 2 2 2 2 [> eq1:=x+y=0;eq2:=x+3*y=17; [> solve({eq1,eq2},{x,y}); 17 17 x =, y= 2 2
Manipulación de de expresiones algebraicas [> fsolve( {ecuaciones},{incógnitas}) resuelve ecs. proporcionando soluciones [> eq:=x^3-6*x^2+12*x-8=4: reales [> fsolve(eq); 3.58740105
CONJUNTOS EN MAPLE CONJUNTO: Grupo de elementos NO ORDENADOS En MAPLE se definen escribiéndolos entre llaves ( {...} ) y separando sus elementos por comas (,). Los elementos repetidos sólo se consideran una vez. Ejemplo: Pueden asignarse a un nombre. [> C:={'manolo',x=2.4*x**2-y,A, B, aa, B, 2, 4, 7.14, Pi, 2}: [> C; {2, 4, A, B, aa, π, x=2.4x 2 -y, 7.14, manolo}
LISTAS EN MAPLE LISTA: Grupo de elementos ORDENADOS En MAPLE se definen escribiéndolos entre corchetes ([...]) y separando sus elementos por comas (,). Ejemplo: Los elementos repetidos se consideran tantas veces como aparezcan. Pueden asignarse a un nombre. [> L:=['manolo',x=2.4*x**2-y,A, B, aa, B, 2, 4, 7.14, Pi, 2]: [> L; {manolo, x=2.4x 2 -y, A, B, aa, B, 2, 4, 7.14, π, 2}
LISTAS EN MAPLE Un elemento de una lista (o de un conjunto) puede referenciarse con el nombre de la lista (o del conjunto) seguido del índice que en ella ocupa entre corchetes. EJEMPLO: Con el conjunto y la lista de las diapositivas anteriores se tiene que: [> C[1];C[2]; [> L[9]; 7.14 2 4 [> C[1]+L[9]; 9.14
VECTORES EN MAPLE Definición n de vectores en Maple: Dimensionado de un vector de n componentes [> nombre_vector:=array(1..n); o [> nombre_vector:=array(1..n, [c1,,cn]); Definición de un vector con sus componentes Ejemplo: Para definir el vector v = (1.5, 2, - 3) [> v:=array(1..3,[1.5, 2, -3]); v[1] v[2] v[3]
VECTORES EN MAPLE La instrucción array exige definir el límite inferior de la dimensión, por lo que su uso es obligado cuando éste es diferente a 1. [> nombre_vector:=array(ind_nor..ind_mayor);
VECTORES EN MAPLE Otra forma de definir vectores en Maple: Dimensionado de un vector de n componentes [> nombre_vector:=vector(n); o [> nombre_vector:=vector(n, [c1,, cn]); Definición de un vector con sus componentes Ejemplo: Para definir el vector w = (-1, 2.5, - 3.3) [> w:=vector(3,[-1, 2.5, -3.3]); w[1] w[2] w[3]
VECTORES EN MAPLE La instrucción vector toma límite inferior de los subíndices el valor 1, por lo que su uso es equivalente a: [> array(1..n);
VECTORES EN MAPLE EJEMPLO: (2.x+1) 1º) Define en Maple el vector: a = (2. 3,e,sen(2.x),ln(18)) 2º) Escribe las componentes a 1, a 2, a 3. Solución: 1º) [> a:=array(1..4, [2*sqrt(3),exp(2*x+1),sin(2*x),ln(18)]); [> a:=vector(4, [2*sqrt(3),exp(2*x+1),sin(2*x),ln(18)]); 2º) [> a[1]; a[2]; a[3]; a := [ 2 3, e ( 2 x + 1 ), sin( 2 x ), ln( 18) ]
OPERACIONES CON VECTORES EN MAPLE Suma de vectores. Operador: + Resta de vectores. Operador: - Producto escalar: dotprod ( ) o innerprod( ) Producto vectorial: crossprod ( ) Las dos últimas operaciones requieren haber cargado la librería linalg mediante la instrucción: [> with(linalg):
OPERACIONES CON VECTORES EN MAPLE Ejercicio: Sean los vectores: v = (1.5, 2, - 3) y w = (-1, 2.5, - 3.3) Se pide: 1. Definir los vectores v y w. 2. Calcular el producto escalar: (v, w) 3. Calcular el producto vectorial: (v-w) x (v+w)
OPERACIONES CON VECTORES EN MAPLE 1. Definición de los vectores: [> v:=array(1..3,[1.5,2, -3]); [> w:=vector(3,[-1, 2.5, -3.3]); 2. Cálculo del producto escalar [> pesc:=dotprod(v,w); Solución pesc := 13.4
OPERACIONES CON VECTORES EN MAPLE 3. Cálculo del producto vectorial [> pvect:=crossprod(v-w,v+w); Solución pvect := [1.80, 15.90, 11.50]
MATRICES EN MAPLE Dimensionado de una matriz de m filas y n columnas o [> A:=array(1..m,1..n); [> A:=array(1..m,1..n,[[A11 A1n],[A21,A2n],,[Am1,,Amn]); Definición de una matriz especificando sus elementos Ejemplo: 2-7 4 A= 5 8-11 [> A:=array(1..2,1..3,[[2,-7,4],[5,8,-11]]); A[1,2] A[2,3]
MATRICES EN MAPLE Otra forma de dimensionar una matriz: [> nombre_matriz:=matrix(m, n); La instrucción array exige definir el índice inferior de las filas y columnas de la matriz, por lo que su uso es obligado cuando éste es diferente a 1. [ > A:=array(ind_fila_inf..ind_fila_sup, ind_col_inf..ind_col_sup);
MATRICES EN MAPLE Ejemplo (Matriz Cuadrada): 1-2 0.5 A = 0 2 4-1 11 9 [>A:=array(1..3,1..3, [[1,-2,0.5],[0,2,4],[-1,11,9]]); O también [> A:=matrix(3,3,[[1,-2,0.5],[0,2,4],[-1,11,9]]); O también [> A:=matrix(3, 3,[1,-2,0.5,0,2,4,-1,11,9]);
MATRICES EN MAPLE Ejercicio: 1º) Define en Maple la matriz: x e 2-0.5 A= 3 0 1 2 3-7.5 9 2º) Escribe las componentes A 11, A 23, A 32 :
Solución: MATRICES EN MAPLE 1º) Cualquiera de las siguientes formas es válida: [>A:=array(1..3,1..3, [[exp(x),2,-0.5],[3,0,1/2],[sqrt(3),-7.5,9]]); [>A:=matrix(3,3, [exp(x),2,-0.5],[3,0,1/2],[sqrt(3),-7.5,9]]); [>A:=matrix(3,3, [exp(x),2,-0.5,3,0,1/2,sqrt(3),-7.5,9]); 2º) [> A[1,1]; A[2,3]; A[3,2];
OPERACIONES CON MATRICES EN MAPLE Suma de matrices. El operador es: + Resta de matrices. El operador es: - Producto de matrices. El operador es: &* Producto de escalar por matriz. El operador es: *! IMPORTANTE: EMPLEAR SIEMPRE evalm AL EVALUAR EXPRESIONES MATRICIALES.
OPERACIONES CON MATRICES EN MAPLE Ejemplo. Sumar las matrices: 2-7 4 1 2 3 M= ; N= 5 8-11 4 5 6 Almacenando el resultado en una matriz llamada SMAT
OPERACIONES CON MATRICES EN MAPLE Solución: Introducción de las matrices [> SMAT := array(1..2,1..3): (Recomendable) [> M := array(1..2,1..3,[[2,-7,4],[5,8,-11]]); [> N := array(1..2,1..3,[[1,2,3],[4,5,6]]); Realización de la suma: [> SMAT := evalm(m+n); Resultado 3-5 7 SMAT := 9 13-5
OPERACIONES CON MATRICES EN MAPLE Ejemplo. Producto de un escalar por una matriz Se considera la matriz: 0 1/2 2-1 0 6 M= 3.2 0 5 4.1-0.6 2 8.4 44 1 Obtener la matriz 7.M y almacenar el resultado en la matriz ML
OPERACIONES CON MATRICES EN MAPLE Solución: Introducción de las matrices [> ML := matrix(5, 3): [> M := matrix(5, 3,[0, 1/2, sqrt(2), -1, 0, 6,3.2, 0, 5, 4.1, -0.6, 2, 8.4, 44, 1]); Realización del producto: Resultado [> ML := evalm(7 * M); 7 0 7 2 2-7 0 42 ML := 22.4 0 35 28.7-4.2 14 58.8 308 7
OTRAS OPERACIONES CON MATRICES EN MAPLE Inversa de una matriz: inverse ( ) Determinante de una matriz: det ( ) Traspuesta de una matriz: transpose ( ) Traza de una matriz: trace ( ) Rango de una matriz: rank ( ) Valores propios de una matriz: eigenvals ( ) Vectores propios de una matriz: eigenvects ( ) Las operaciones anteriores requieren haber cargado la librería linalg.
LA LIBRERÍA linalg La librería linalg permite realizar muchas más operaciones: [> with(linalg); [ BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal, exponential, extend, ffgausselim, fibonacci, forwardsub, frobenius, gausselim, gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert, htranspose, ihermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszero, jacobian, jordan, kernel, laplacian, leastsqrs, linsolve, matadd, matrix, minor, minpoly, mulcol, mulrow, multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan, rref, scalarmul, singularvals, smith, stackmatrix, submatrix, subvector, sumbasis, swapcol, swaprow, sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector, wronskian ]
Ejercicios Ejemplo: Dada la matriz Calcular: 1-3 3 A = 3-5 3 6-6 4 1. Inversa de A 2. Determinante de A 3. Traspuesta de A 4. Traza de A 5. Rango de A 6. Valores propios de A 7. Vectores propios de A
Ejercicios Comenzamos... [> restart:with(linalg): Definimos la matriz... [> A := matrix(3,3,[1,-3,3,3.,-5,3,6,-6,4]); Si queremos que Maple la escriba: [> evalm(a); [> print(a); o bien: 1-3 3 3. -5 3 6-6 4
1. Inversa de la matriz A: [> A1 := inverse(a); Ejercicios [> A1 := array(1..4,1..4): Resultado: -0.1250000000-0.3750000000 0.3750000000 0.3750000000-0.8750000000 0.3750000000 0.7500000000-0.7500000000 0.2500000000
Ejercicios 2. Determinante de la matriz A: [> DD := det(a); 3. Traspuesta de la matriz A: [> T := transpose(a); Resultado: DD := 16. Solución: 1 3. 6 AT := -3-5 -6 3 3 4
4. Traza de la matriz A: [> tr := trace(a); 5. Rango de la matriz A: Ejercicios Resultado: tr := 0 [> R := rank(a); Resultado: R := 3
vp[2] Ejercicios 6. Autovalores de la matriz A: Resultado: [> lambda := eigenvals(a); 7. Autovectores de la matriz A: [> vp := eigenvects(a); Que se interpreta: vp[1] (multiplicidad algebraica doble) [ 4.00000, 1,{[ 0.447213, 0.447214, 0.894428 ]} ] λ := 4.,-2., -2. [-2.00000, 2,{[ 0.500002, 1.50000, 1.00001 ], [-0.559017, 0.559017, 1.11804 ]} ]
Ejercicios Sean los vectores: v (1.5, 2, - 3) y w (-1, 2.5, - 3.3) y la matriz: Se pide: 1 2 3 A = 4 5 6 7 8 9 1. Calcular el producto escalar: (v, w) 2. Calcular el producto vectorial: v x w 3. Calcular: v A
Ejercicios Definición de los vectores y la matriz: [> v:=array(1..3,[1.5,2, -3]); [> w:=vector(3,[-1, 2.5, -3.3]); [> A:=matrix(3,3,[[1, 2, 3],[4, 5, 6],[7, 8, 9]]); 1. Cálculo del producto escalar [> pesc:=dotprod(v,w); Solución pesc := 13.4
Ejercicios 2. Cálculo del producto vectorial [> pvect:=crossprod(v,w); 3. Cálculo de v A Solución pvect := [0.9, 9.95, 5.75] [> matv:=evalm(v&*a); Solución matv := [-11.5, -11, -10.5] (que, obviamente, es un vector)