Herramientas computacionales para la matemática MATLAB: Álgebra Simbólica Verónica Borja Macías Junio 2012 1 Matlab Introducción MATLAB tiene algunos tipos diferentes de datos, incluidos datos numéricos de precisión doble y sencilla, datos carácter, datos lógicos y datos simbólicos, los cuales se almacenan en una variedad de distintos arreglos. La capacidad simbólica de MATLAB se basa en el software Maple, producido por Waterloo Maple. El motor Maple es parte de la caja de herramientas simbólica. La caja de herramientas simbólicas de MATLAB le permite manipular expresiones simbólicas para simplificarlas, resolverlas simbólicamente y evaluarlas numéricamente. También le permite obtener derivadas, integrar y realizar manipulaciones algebraicas lineales, transformadas de LaPlace y transformadas de Fourier entre otras cosas. 2 Matlab Álgebra simbólica La matemática simbólica se usa regularmente en las clases de matemáticas, ingeniería y ciencias. Con frecuencia es preferible manipular las ecuaciones simbólicamente antes de sustituir valores para las variables. Por ejemplo, considere la ecuación 2( x 2 + 3) 2 y= 2 x + 6x + 9 Cuando la observa por primera vez, parece “complicada”. Sin embargo, si expande se hace evidente que puede simplificar 2( x 2 + 3) 2 2( x 2 + 6 x + 9) = y = = 2 2 2 x + 6x + 9 x + 6x + 9 3 Matlab Álgebra simbólica Al realizar esta simplificación es posible perder algo de información. para x = −3 tenemos que: y 2((−3) 2 + 3) 2 0 = lo cual está indefinido 2 (−3) + 6(−3) + 9 0 Las capacidades simbólicas de MATLAB le permiten realizar esta simplificación o manipular el numerador y denominador por separado. 4 Matlab Creación de variables simbólicas Las variables simbólicas simples se pueden crear en dos formas. Por ejemplo, para crear la variable simbólica x, escriba o x=sym('x') o syms x Ambas técnicas hacen al carácter 'x' igual a la variable simbólica x. Se pueden crear variables más complicadas usando las variables simbólicas existentes, como en la expresión y = 2*(x+3)^2/(x^2+6*x+9) 5 Matlab Variables simbólicas Podemos declarar varias variables en un solo comando: syms a b Es posible manipular los objetos simbólicos como es habitual en matemáticas: >> a+ a + b ans = 2*a + b También es posible crear variables simbólicas con valores de más de un carcter: a = sym('alpha') Nota: En el Symbolic Math Toolbox, pi es una palabra reservada. 6 Matlab Expresiones simbólicas Supongamos que deseamos usar una variable 1+ 5 ρ= simbólica para representar la razón dorada: 2 >> rho = sym('(1 + sqrt(5))/2'); Ahora podemos realizar las operaciones que deseemos con rho. >> f = rho^2 - rho – 1 f= (5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2 Veamos como estudiar la función cuadrática f = ax2 + bx + c. Una primera opción sería definirla como: >> f = sym('a*x^2 + b*x + c'); Pero así no es posible realizar sustituciones, lo adecuado es: >> syms a b c x >> f = a*x^2 + b*x + c; 7 Matlab Matrices de variables simbólicas La creación y manipulación de matrices de variables simbólicas es análoga a la de matrices numéricas, p/e: Ejemplo: >> syms a b c; >> A = [a b c; c a b; b c a] A= [ a, b, c] [ c, a, b] [ b, c, a] sum(A(1,:)) ans = a+b+c 8 Matlab Encontrar variables simbólicas en expresiones y matrices Para determinar las variables simbólicas que estan en una expresión se emplea el comando symvar: Ejemplo: >> syms a b n t x z; >> f = x^n; >> g = sin(a*t + b); >> symvar(f) ans = [ n, x] >> symvar(g) ans = [ a, b, t] 9 Matlab Números simbólicos Es posible convertir un número en un objeto simbólico, p/e: Ejemplo: >> a1 = sym('2') >> a2 = sym(2) >> sqrt(a1) ans = 1.4142 a = sqrt(a2) a= 2^(1/2) double(a) ans = 1.4142 10 Matlab Números simbólicos Ejemplo: >> sym(2)/sym(5) ans = 2/5 >> sym(2/5) ans = 2/5 >> 2/5 + 1/3 ans = 0.7333 >> sym(2/5) + sym(1/3) ans = 11/15 11 Matlab Impresión de expresiones simbólicas Las función pretty. Imprime en un formato agradable las expresiones: Ejemplo: >> syms x >> f = x^3 - 6*x^2 + 11*x - 6; >> g = (x - 1)*(x - 2)*(x - 3); >> h = -6 + (11 + (-6 + x)*x)*x; >> pretty(f) 3 2 x - 6 x + 11 x - 6 >> pretty(g); (x - 1) (x - 2) (x - 3) >> pretty(h); x (x (x - 6) + 11) – 6 12 Matlab Simplificar de expresiones simbólicas El Symbolic Math Toolbox poseé un conjunto de funciones para simplificar expresiones simbólicas. Veamos la función simplify. Por ejemplo previamente ya habíamos realizado operaciones con la expresión rho: Ejemplo: >> rho = sym('(1 + sqrt(5))/2'); >> f = rho^2 - rho – 1 f= (5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2 >> simplify(f) ans = 0 13 Matlab Simplificar de expresiones simbólicas Veamos las funciones expand, factor y horner. Ejemplo: >> syms x; >> f=(x^2- 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2 - x + 1); >> expand(f) ans = x^10 – 1 >> g = x^3 + 6*x^2 + 11*x + 6; >> factor(g) ans = (x + 3)*(x + 2)*(x + 1) >> h = x^5 + x^4 + x^3 + x^2 + x; >> horner(h) ans = x*(x*(x*(x*(x + 1) + 1) + 1) + 1) 14 Matlab Simplificar de expresiones simbólicas Veamos la función collect. Ejemplo: >> syms x y; >> R1 = collect((exp(x)+x)*(x+2)) R1 = x^2 + (exp(x) + 2)*x + 2*exp(x) >> R2 = collect((x+y)*(x^2+y^2+1), y) R2 = y^3 + x*y^2 + (x^2 + 1)*y + x*(x^2 + 1) >> R3 = collect([(x+1)*(y+1),x+y]) R3 = [ y + x*(y + 1) + 1, x + y] 15 Matlab syms x; f = cos(x) + i*sin(x); simple(f) Simplificar de expresiones simbólicas La función simple trata de reescribir la expresión empleando la menor cantidad de caracteres. Ejemplo: >> syms x; >> f = cos(x)^2 + sin(x)^2; >> f = simple(f) f= 1 >> g = cos(3*acos(x)); >> g = simple(g) g= 4*x^3 - 3*x 16