Math Symbolic
Declaración de variables simbólicas
La herramienta Symbolic Math Toolbox define un nuevo tipo de dato denominado objeto simbólico, que representan a variables, expresiones y matrices.
El comando
>> sym('x')>> sym('2')>> sym('1/3')
Hemos creado tres objetos simbólicos, x es una variable, 2 es un número y 1/3 es una fracción. Vamos a apreciar la diferencia entre operar con números a operar con objetos simbólicos.
>> sqrt(2)ans = 1.4142>> sqrt(sym('2'))ans =2^(1/2)>> 2/3+1/2ans = 1.1667>> sym('2/3')+sym('1/2')ans =7/6>> sin(pi)ans = 1.2246e-016>> sin(sym('pi'))ans =0
En la última línea, vemos claramente la diferencia entre los valores que devuelve el seno de π.
Supongamos que queremos evaluar una función f(x) para un determinado valor de x
>> x=sym('1-sqrt(2)');>> y=x^2-2*xy =(2^(1/2) - 1)^2 + 2*2^(1/2) - 2>> simplify(y)ans =1
Se ha creado una variable simbólica
El comando
>> syms x y;>> s=x+2*y-xs =2*x>> r=sqrt(x^2+y^2);
Se han creado dos variables simbólicas nuevas s y r tal como podemos apreciar en la ventana Workspace.
Funciones que trabajan con expresiones simbólicas.
Vamos ahora a estudiar las funciones que trabajan con expresiones simbólicas
expand
Realiza operaciones con expresiones simbólicas tal como vemos en el siguiente ejemplo
>> syms x;>> y=(x-1)^3+3*x^2+1;>> expand(y)ans =x^3 + 3*x>> y=exp(x+x^2);>> expand(y)ans =exp(x^2)*exp(x)
Se ha declarado una variable simbólica
collect
Ordena los términos en potencias de
>> syms x;>> y=x*(cos(x)+x)*(exp(x)+x^2);>> collect(y)ans =x^4 + cos(x)*x^3 + exp(x)*x^2 + (exp(x)*cos(x))*x
simplify
La función
>> syms x;>> y=(x^2-x+1/x-1/x^2)/(x-1+1/x);>> simplify(y)ans =x - 1/x
En la página, Sistema de ecuaciones diferenciales lineales, realizaremos largas operaciones con expresiones algebraicas, por ejemplo
>> syms t;>> x=(-80+25*i)*(1-8*i)*exp((2-8*i)*t)/80-(80+25*i)*(1+8*i)*exp((2+8*i)*t)/80;>> simplify(x) ans =(exp(2*t)*(24*cos(8*t) + 133*sin(8*t)))/8
Como ejercicio se sugiere, simplificar las siguientes expresiones
factor
Como su nombre indica, factoriza una expresión
Primero vamos a probar con números y a continuación, con expresiones simbólicas
>> factor(360)ans = 2 2 2 3 3 5>> factor(sym('360'))ans =2^3*3^2*5
>> syms x;>> factor(x^8-2*x^6-9*x^4+2*x^2+8)ans =(x - 1)*(x - 2)*(x + 2)*(x + 1)*(x^2 + 2)*(x^2 + 1)
subs
Evalúa numéricamente una expresión simbólica, para un determinado valor de la variable simbólica
>> syms x;>> y=x^8-2*x^6-9*x^4+2*x^2+8;>> subs(y,x,2)ans = 0>> subs(y,x,-0.5)ans = 7.9102
Valores que se asignan a los parámetros
>> syms a b c x;>> y=a*x^2+b*x+c;>> yy=subs(y,{a,b,c},{1 -1 -6})yy =x^2 - x - 6>> subs(yy,[-2:0.5:2])ans = 0 -2.2500 -4.0000 -5.2500 -6.0000 -6.2500 -6.0000 -5.2500 -4.0000
Una variable simbólica puede ser sustituida por otra variable simbólica. Por ejemplo, la variable
>> syms x y;>> z=x^2-y^2;>> syms u v;>> z=subs(z,{x,y},{u+v,u-v})z =(u + v)^2 - (u - v)^2>> simplify(z)ans =4*u*v
Presentación de resultados
En el capítulo Series de Fourier vamos a obtener el desarrollo en serie de Fourier de funciones periódicas. El resultado del cálculo no es fácilmente legible
syms t k P n;assume(k,'Integer');a = @(f,t,k,P) int(f*cos(k*pi*t/P),t,-P,P)/P;b = @(f,t,k,P) int(f*sin(k*pi*t/P),t,-P,P)/P;fs=@(f,t,n,P) a(f,t,0,P)/2+symsum(a(f,t,k,P)*cos(k*pi*t/P)+b(f,t,k,P)*sin(k*pi*t/P),k,1,n);f=t;P=1;N=6; %términos del desarrollo en seriez=fs(f,t,N,P)
z =(2*sin(pi*t))/pi - sin(2*pi*t)/pi + (2*sin(3*pi*t))/(3*pi) - sin(4*pi*t)/(2*pi) + (2*sin(5*pi*t))/(5*pi) - sin(6*pi*t)/(3*pi)
Se mejora la lectura utilizando la función
>> pretty(z)2 sin(pi t) sin(2 pi t) sin(3 pi t) 2 sin(4 pi t) sin(5 pi t) 2 sin(6 pi t)---------- - ---------- + ------------ - ----------- + ---------- - ------------ pi pi 3 pi 2 pi 5 pi 3 pi
Se mejora aún más, si utilizamos la función
>> latex(z)ans =\frac{2\, \sin\!\left(\pi\, t\right)}{\pi} - \frac{\sin\!\left(2\, \pi\, t\right)}{\pi} + \frac{2\, \sin\!\left(3\, \pi\, t\right)}{3\, \pi} - \frac{\sin\!\left(4\, \pi\, t\right)}{2\, \pi} + \frac{2\, \sin\!\left(5\, \pi\, t\right)}{5\, \pi} - \frac{\sin\!\left(6\, \pi\, t\right)}{3\, \pi}
Copiamos el código (cuatro últimas líneas), lo pegamos en MathType que lo convierte en una expresión algebraica completamente legible, la insertamos en el documento Word, seleccionado en el menú File/Update Documento1. El resultado es el que aparece en la figura