Ecuaciones y Sistemas
Ecuaciones y Sistemas
Ecuaciones y Sistemas
Math Symbolic
En las páginas previas, hemos hecho cálculos numéricos, con una precisión limitada. En
estas páginas vamos a explicar como se utiliza la herramienta Symbolic Math Toolbox, que
emplearemos para realizar cálculos símbólicos, es decir, transformaciones de expresiones
matemáticas.
El comando sym se usa para crear objetos simbólicos en MATLAB. El argumento de sym es una
cadena de caracteres (string) entre comillas simples. Por ejemplo,
>> 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/2
ans = 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
2
y = x − 2x
x = 1 − √2
y = (1 − √2) − 2 (1 − √2)
>> x=sym('1-sqrt(2)');
>> y=x^2-2*x
y =(2^(1/2) - 1)^2 + 2*2^(1/2) - 2
>> simplify(y)
ans =1
sym nos permite crear y dar un valor inicial a una variable simbólica x.
Se ha creado una variable simbólica x y otra variable simbólica y, tal como puede verse en la
ventana Workspace. El comando simplify que estudiaremos más adelante simplifica la
expresión resultante.
El comando syms permite declarar más de una variable simbólica y no precisa de comillas
simples, por lo que se utilizará con mayor frecuencia.
>> syms x y;
>> s=x+2*y-x
s =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. s=x+2*y+x, r=sqrt(x^2+y^2), son ejemplos de expresiones simbólicas.
expand
Realiza operaciones con expresiones simbólicas tal como vemos en el siguiente ejemplo
3 2
y = (x − 1) + 3x + 1
>> 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 x con syms y se crea una variable simbólica y y otra
variable simbólica, por defecto, ans donde se guarda el resultado de expand.
collect
Ordena los términos en potencias de x
>> 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 simplify se utiliza con frecuencia en los cálculos con expresiones algebraicas.
1 1 1
2
(x − x + − ) : (x − 1 + )
2
x x x
>> syms x;
>> y=(x^2-x+1/x-1/x^2)/(x-1+1/x);
>> simplify(y)
ans =x - 1/x
1 2t 133
x = e (24 cos(8t) + sin(8t))
8 8
>> 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
2 x+y x−y
3 x
( )( 2
− 1) ( − )
x+y y x−y x+y
factor
Como su nombre indica, factoriza una expresión
8 6 4 2
y = x − 2x − 9x + 2x + 8
>> 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 x.
>> 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 a, b y c para resolver una determinada ecuación de
segundo grado. Una tabla de valores de la función y=x2-x-6.
>> 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 x se sustituye por u+v y la variable y se sustituye por u-v.
>> 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 serie
z=fs(f,t,N,P)
>> 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 en combinación con el programa MathType.
>> 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