Está en la página 1de 23

Matemática Simbólica Mg.

Amado Malca Villalobos

Cálculo simbólico en MatLab

Muchas veces nos hemos visto en la necesidad de trabajar problemas relacionados al


Calculo Diferencial e Integral en la cual se trabajan con variables de tipo simbólico.
Surge entonces la necesidad de interactuar con el Toolbox de Matemática Simbólica
(TMS). Un ejemplo práctico vemos cuando se requiere hallar la derivada, la integral o la
transformada de una función.
Podemos seguir enumerando las aplicaciones más frecuentes, y veremos que en realidad
es muy útil manipular convenientemente las herramientas de matemática simbólica del
programa MatLab.

Introducción
El Toolbox de Matemática Simbólica (TMS) incorpora computación simbólica en el
ambiente numérico de MatLab, siendo además versátil y de fácil adaptación.
Complementa las soluciones de los entornos numérico y grafico mediante cómputo
numérico, entre ellos tenemos:
1. Cálculo: Derivada, Integral, límites, sumatorias y series de Taylor
2. Algebra lineal: Inversas, determinantes, valores propios, descomposición de valores
singulares y formas canónicas de matrices simbólicas
3. Simplificación: Métodos de simplificación de expresiones algebraicas
4. Solución de ecuaciones: Soluciones simbólicas y numéricas de álgebra y ecuaciones
de diferencia
5. Precisión aritmética: Evaluación numérica de expresiones matemáticas
6. Transformadas: Transformadas de Laplace, Fourier, Z y sus inversas
7. Funciones especiales: Funciones especiales clásicas aplicadas a matemáticas.

Comenzando con el Help


Para llamar alguna función para uso del TMS digitamos:
help help sym o también help sym/function

>> help
HELP topics:
matlab\general - General purpose commands.
……………………………………………
shared\statslib - Statistics Toolbox Library
symbolic\symbolic - Symbolic Math Toolbox
…………………………………………
>> help symbolic
Symbolic Math Toolbox
Version 5.4 (R2010a) 25-Jan-2010

Calculus.
diff - Differentiate.
int - Integrate.
limit - Limit.
taylor - Taylor series.
jacobian - Jacobian matrix.
symsum - Summation of series.

Linear Algebra.

1
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

diag - Create or extract diagonals.


triu - Upper triangle.
tril - Lower triangle.
inv - Matrix inverse.
det - Determinant.
rank - Rank.
rref - Reduced row echelon form.
null - Basis for null space.
colspace - Basis for column space.
eig - Eigenvalues and eigenvectors.
svd - Singular values and singular vectors.
jordan - Jordan canonical (normal) form.
poly - Characteristic polynomial.
expm - Matrix exponential.
mldivide - \ matrix left division.
mpower - ^ matrix power.
mrdivide - / matrix right division.
mtimes - * matrix multiplication.
transpose - .' matrix transpose.
ctranspose - ' matrix complex conjugate transpose.
…………………………………………………….
symengine - Interface to the MuPAD engine for sym objects.
>>

Donde, sym es la versión simbólica y function es el nombre de la función. Por ejemplo


si queremos información de la función de derivada (diff) digitamos:
>> help sym/diff
DIFF Differentiate.
DIFF(S) differentiates a symbolic expression S with respect to its
free variable as determined by SYMVAR.
DIFF(S,'v') or DIFF(S,sym('v')) differentiates S with respect to v.
DIFF(S,n), for a positive integer n, differentiates S n times.
DIFF(S,'v',n) and DIFF(S,n,'v') are also acceptable.
Examples;
x = sym('x');
t = sym('t');
diff(sin(x^2)) is 2*x*cos(x^2)
diff(t^6,6) is 720.
See also sym/int, sym/jacobian, sym/symvar.
Reference page in Help browser
doc sym/diff
>>

Paquete syms
Inicialmente MatLab se diseñó para el cálculo numérico. Así, si intentamos evaluar una
expresión en una variable no numérica, tendremos problemas:

>> y=sin(x)
??? Undefined function or variable 'x'.
>>

2
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

Que ha sucedido?, MatLab no conoce el valor numérico de x.


Para resolver ello se usa el TMS, el cual nos permite trabajar con variables simbólicas,
para esto primero se declaran tales las variables antes de usarlas, lo cual se puede hacer
de dos formas:
Primera forma:
>> clear
>> A=sym('Pedro')
A =Pedro
>> B=sym('x^3+5*x^2-8')
B =x^3 + 5*x^2 - 8
>> C=sym('Pablo')
C =Pablo
>> var=sym(4) % convierte numero a símbolo
var =4
>> w=4
w= 4

Segunda forma:
>> syms x y
>> fp=x^8+5*y^4+3*x^3-7*y
fp = x^8 + 5*y^4 + 3*x^3 – 7*y
>>
Haciendpo operaciones con simbolos
>> v1=sym(10)
v1 =10
>> v2=sym(55)
v2 =55
>> v3=sym(sqrt(2))
v3 =2^(1/2)
>> v4=v2/v1+v3^3
v4 =2*2^(1/2) + 11/2
>> v5=double(v4) % convierte símbolo a numero
v5 = 8.3284
>>

Simplificar
Ahora podemos usar expresiones que contengan a esta variable. Por ejemplo, si
queremos simplificar o evaluar una expresión lo hacemos con el comando simplify.
>> syms x
>> y=sin(3*x)
y =sin(3*x)
>> z=cos(3*x)
z =cos(3*x)
>> simplify(y^2+z^2)
ans =1
>>
>> p=(x-1)^2,q=(x+1)^2
p =(x - 1)^2
q =(x + 1)^2

3
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> w=simplify(p+q)
w =2*x^2 + 2
>>
Expandiendo términos
>> syms x y
>> E1=(x-5)*(x-6)*(x+8)
E1 =(x - 5)*(x - 6)*(x + 8)
>> E2=expand(E1)
E2 =x^3 - 3*x^2 - 58*x + 240
>> E3=expand(sin(x-y))
E3 =cos(y)*sin(x) - cos(x)*sin(y)
>>

Factorizando términos
>> syms x y
>> E2
E2 =x^3 - 3*x^2 - 58*x + 240
>> E4=factor(E2)
E4 =(x - 6)*(x + 8)*(x - 5)
>> E5=factor(x^8-1)
E5 =(x - 1)*(x + 1)*(x^2 + 1)*(x^4 + 1)
>>

Sustituir valores en la variable


Para evaluar una expresión con determinado valor de la variable, se usara el comando
subs:
>> syms x
>> p=(x-1)^2,q=(x+1)^2, w=simplify(p+q)
p =(x - 1)^2
q =(x + 1)^2
w =2*x^2 + 2
>> subs(p,4),subs(q,5)
ans = 9
ans = 36
>> y=sin(3*x)
y =sin(3*x)
>> subs(w,y)
ans =2*sin(3*x)^2 + 2
>>

Construcción de variables reales y complejas


El comando sym especifica las propiedades matemáticas de las variables simbólicas
usando la opción 'real', mediante el código.
>> syms x y real
>> z=x+y*i
z = x + y*i
>> real(z)
ans = x
>> imag(z)
ans = y

4
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> real(z^2)
ans = (x - y*i)^2/2 + (x + y*i)^2/2
>> imag(z^2)
ans = ((x - y*i)^2*i)/2 - ((x + y*i)^2*i)/2
>>

Creando las variables simbólicas x e y que tienen la propiedad matemática de adicionar


variables reales. Específicamente esto significa que la expresión.
>> c1=x^2+y^2
c1 = x^2 + y^2
>>
Es estrictamente no negativa. Entonces z es una variable compleja y puede ser
manipulada de acuerdo con los comandos.
>> z
z = x + y*i
>> conj(z)
ans = x - y*i
>> expand(z*conj(z))
ans = x^2 + y^2
>>

Creando Matrices Simbólicas


Una matriz circulante tiene la propiedad que cada fila se obtiene de la anterior
permutando las entradas cíclicamente hacia adelante. Nosotros creamos la matriz
circulante A con elementos a, b y c que usa el código.

>> syms a b c
>> A=[a b c;b c a; c a b]
A=
[ a, b, c]
[ b, c, a]
[ c, a, b]
>> sum(A(1,:))
ans = a + b + c
>> sum(A(1,:)+A(3,:))
ans = 2*a + 2*b + 2*c
>> sum(A(1,:))==sum(A(:,3))
ans = 1
>> syms alfa beta
>> A(2,1)=alfa
A=
[ a, b, c]
[ alfa, c, a]
[ c, a, b]
>> A=subs(A,a,beta)
A=
[ beta, b, c]
[ alfa, c, beta]

5
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

[ c, beta, b]
>>

Resolver ecuaciones
Para resolver ecuaciones se usara el potente comando solve:
Ejemplo.- Resolver la ecuación x 2  4x  60  0

>> syms x
>> solve(x^2-2*x+1)
ans = 1 1
>> solve(x^2-4*x+60)
ans =
2 - 2*14^(1/2)*i
2 + 2*14^(1/2)*i
>> solve(x^2-4*x-60)
ans = -6 10
Resolver: x  4x  16  0
3

>> solve(x^3-4*x-16)
ans = 4/(3*((27^(1/2)*1664^(1/2))/27 + 8)^(1/3)) + ((27^(1/2)*1664^(1/2))/27 +
8)^(1/3) - 2/(3*((27^(1/2)*1664^(1/2))/27 + 8)^(1/3)) -
((27^(1/2)*1664^(1/2))/27 + 8)^(1/3)/2 -
(3^(1/2)*(4/(3*((27^(1/2)*1664^(1/2))/27 + 8)^(1/3)) -
((27^(1/2)*1664^(1/2))/27 + 8)^(1/3))*i)/2
- 2/(3*((27^(1/2)*1664^(1/2))/27 + 8)^(1/3)) - ((27^(1/2)*1664^(1/2))/27 +
8)^(1/3)/2 + (3^(1/2)*(4/(3*((27^(1/2)*1664^(1/2))/27 + 8)^(1/3)) -
((27^(1/2)*1664^(1/2))/27 + 8)^(1/3))*i)/2
Resolver: x 3  x  1  0
>> solve(x^3-x+1)
ans = - 1/(3*(1/2 - (23^(1/2)*108^(1/2))/108)^(1/3)) - (1/2 -
(23^(1/2)*108^(1/2))/108)^(1/3)
1/(6*(1/2 - (23^(1/2)*108^(1/2))/108)^(1/3)) + (1/2 -
(23^(1/2)*108^(1/2))/108)^(1/3)/2 - (3^(1/2)*(1/(3*(1/2 -
(23^(1/2)*108^(1/2))/108)^(1/3)) - (1/2 - (23^(1/2)*108^(1/2))/108)^(1/3))*i)/2
1/(6*(1/2 - (23^(1/2)*108^(1/2))/108)^(1/3)) + (1/2 -
(23^(1/2)*108^(1/2))/108)^(1/3)/2 + (3^(1/2)*(1/(3*(1/2 -
(23^(1/2)*108^(1/2))/108)^(1/3)) - (1/2 - (23^(1/2)*108^(1/2))/108)^(1/3))*i)/2
Resolver: x 3  x  0
>> solve(x^3-x)
ans = -1 0 1
>>
Resolviendo una ecuacion cuadratica
>> syms x a b c
>> solve(a*x^2+b*x+c) % por defecto se resuelve respecto de x
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
>> solve(a*x^2+b*x+c,x) % resolviendo respect de x
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
6
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> solve(a*x^2+b*x+c,c) % resolviendo respect de c


ans = - a*x^2 - b*x
>> solve(a*x^2+b*x+c,b) % resolviendo respect de b
ans = -(a*x^2 + c)/x
>>
Resolviendo un sistema de ecuaciones lineales
>> syms x y t
>> EC1=x+y-8
EC1 =x + y - 8
>> EC2=2*x+7*y+t
EC2 =t + 2*x + 7*y
>> [xt yt]=solve(EC1,EC2)
xt =t/5 + 56/5
yt =- t/5 - 16/5
>> [sx sy sz]=solve('2*x-5*y+z-8','3*x-y+8*z-9','x-5*y+9*z-2')
sx =530/143
sy =-25/143
sz =-41/143
>> [sx sy]=solve('x^2+y^2=25','x+y=7')
sx = 4 3
sy = 3 4
>>
Para resolver otros tipos de ecuaciones están los métodos numéricos, en donde MatLab
tiene una gran potencia de cálculo.

Creando Funciones con Matemática Simbólica


Existen dos formas de crear funciones: usando expresiones simbólicas y creando
archivo M.
 Usando expresiones simbólicas
>> syms x y z w
>> p1=sin(x*y +3*z^2-5*w^2)
p1 = sin(- 5*w^2 + 3*z^2 + x*y)
>> p2=sqrt(x^2+y^2+w)
p2 = (x^2 + y^2 + w)^(1/2)
>> p3=2*x*w+y^3+5*z^3+5*y*z
p3 = y^3 + 5*y*z + 5*z^3 + 2*w*x
>>

Genera las expresiones simbólicas p1, p2 y p3. Podemos usar diff, int, subs y otras
funciones del TMS de MatLab para manipular las tales expresiones.

 Creando un archivo M
Los archivos M permiten un uso más general de funciones. Por ejemplo, suponga que se
quiere crear la función evalsin para evaluar sin(x)/x. Para hacer esto, creamos un
archivo M en el directorio sym.

7
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

En la ventana de comandos de MatLab Programa en MatLab


>> evalsin(3) function z=evalsin(x)
ans = 0.0470 if x==sym(0)
>> evalsin(0)
z=1;
ans = 1
>> evalsin(6) else
ans = -0.0466 z=sin(x)/x;
>> diff(evalsin(x),x) end
ans = cos(x)/x - sin(x)/x^2
>> int(evalsin(x),x)
ans = sinint(x)

CALCULO
El TMS provee funciones de operaciones básicas para el cálculo como son:
diferenciación, Integración, límites, expansión de la serie de Taylor.

Límites
La idea fundamental en cálculo es hacer que los cálculos en las funciones como una
variable se acerque a un cierto valor. Como por ejemplo la definición de la derivada que
es dada por un límite.
f x  h  f x
f '  x   lim  limit  f ,h,0
h0 h
Con tal de que el límite existe. El TMS computa los límites de las funciones de manera
directa. Ingresamos en código.
sin  x 
Para calcular el límite para f  x   , cuando x tiende a cero:
x
>> limit(sin(m)/m,m,0)
??? Undefined function or variable 'm'.
>> syms m
>> limit(sin(m)/m,m,0)
ans = 1
>> z=(1-cos(m))/(m^2)
z = -(cos(m) - 1)/m^2
>> limit(z,m,0)
ans = 1/2
>>
Con dos funciones a la vez
>> limit([sin(x)/x,(1-cos(x))/(x^2)],x,0)
ans =[ 1, 1/2]
>>

n 3  3n 2  2n
Y para hallar el limite en el infinito de f  n  
3n 3  1
>> limit((n^3+3*n^2-2*n)/(3*n^3-1),inf)
??? Undefined function or variable 'n'.
>> syms n
>> limit((n^3+3*n^2-2*n)/(3*n^3-1),inf)
ans =1/3

8
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

Calculando otros limites:


>> limit((n^6-7*n^3+5*n-4)/(n^3+6*n+8),inf)
ans =Inf
>> limit((n^2-8*n+6)/(6*n^5+7*n^2-9*x+6),inf)
ans =0

Limites laterales
>> syms x h
>> lim=limit((cos(x+h)-cos(x))/h,h,0)
lim = -sin(x)
>> lim2=limit((sin(x+h)-sin(x))/h,h,0)
lim2 = cos(x)
>> lim3=limit(1/x,x,0)
lim3 = NaN
>> lim3=limit(1/x,x,0,'left')
lim3 = -Inf
>> lim3=limit(1/x,x,0,'right')
lim3 = Inf
>> lim3=limit(abs(x)/x,x,0,'right')
lim3 = 1
>> lim3=limit(abs(x)/x,x,0,'left')
lim3 = -1
>>
Funciones matemáticas Comando en MatLab
lim f  x  limit(f)
x 0

lim f  x  limit(f,x,a)
x a

lim f  x  limit(f,x,a,’right’)
xa 

lim f  x  limit(f,x,a,’left’)
xa 

Derivadas
Para calcular derivadas usamos el comando diff que tiene la siguiente estructura:
d nf  x 
 diff  f ,x,n 
d xn
Tambien tenemos que:
df  diff  f   diff (f ,x)

>> syms x
>> p1=x^4+5*x^3+8*x^2+6
p1 =x^4 + 5*x^3 + 8*x^2 + 6
>> d1p1=diff(p1,x,1)
d1p1 =4*x^3 + 15*x^2 + 16*x
>> d2p1=diff(p1,x,2)
d2p1 =12*x^2 + 30*x + 16
>> d3p1=diff(p1,x,3)
d3p1 =24*x + 30

9
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> d4p1=diff(p1,x,4)
d4p1 =24
>> d5p1=diff(p1,x,5)
d5p1 =0

>> f1=diff(sin(x))
f1 = cos(x)
>> f2=diff(x^4+6*x^3-5*x+8,x)
f2 = 4*x^3 + 18*x^2 - 5
>> f3=diff((x^3-6*x)/(x^2+1),x)
f3 = (3*x^2 - 6)/(x^2 + 1) + (2*x*(6*x - x^3))/(x^2 + 1)^2
>> f4=diff(exp(a*x)*sin(b*x))
??? Undefined function or variable 'a'.
>> syms a b
>> f4=diff(exp(a*x)*sin(b*x))
f4 = a*exp(a*x)*sin(b*x) + b*exp(a*x)*cos(b*x)
Trabajando con funciones de varias variables
>> syms x y
>> f5=diff(x^4+6*x^3*y^4-5*x*y+8,y)
f5 = 24*x^3*y^3 - 5*x
>> f6=diff(x^4+6*x^3*y^4-5*x*y+8,x)
f6 = 4*x^3 + 18*x^2*y^4 - 5*y
>> diff(f5,y,3)
ans =144*x^3
>> diff(f5,x,3)
ans =144*y^3
Con varias funciones a la vez
>> diff([x*sin(x),x*exp(x)],x)
ans =[ sin(x) + x*cos(x), exp(x) + x*exp(x)]
>> diff([x*sin(x),x*exp(x)],x,2)
ans =[ 2*cos(x) - x*sin(x), 2*exp(x) + x*exp(x)]
>>

Asignando funciones a las derivadas


>> h=2*x^3+6*y^2+8*y-5*x+5
h =2*x^3 - 5*x + 6*y^2 + 8*y + 5
>> g=diff(h,x)
g =6*x^2 - 5
>> j=diff(h,y)
j =12*y + 8
>>
Evaluar funciones
Nótese que en los comandos introducidos se ha definido la función p1(x), así como la
función d1p1(x), que almacena el resultado de la derivada. Estas funciones se pueden
evaluar en un valor concreto de x por medio del comando subs, ejemplo:
>> syms x
>> p1=x^4+5*x^3+8*x^2+6
p1 =x^4 + 5*x^3 + 8*x^2 + 6
>> d1p1=diff(p1,x,1)
d1p1 =4*x^3 + 15*x^2 + 16*x

10
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> subs(p1,1)
ans = 20
>> subs(p1,1),subs(p1,2),subs(p1,3),subs(p1,4)
ans = 20
ans = 94
ans = 294
ans = 710
>> subs(p1,1:4)
ans = 20 94 294 710
>> a=1:10
a = 1 2 3 4 5 6 7 8 9 10
>> subs(p1,a)
ans = 20 94 294 710 1456 2670 4514 7174 10860 15806
>> b=subs(p1,a)
b = 20 94 294 710 1456 2670 4514 7174 10860 15806
>> plot(a,b)
>>
16000

14000

12000

10000

8000

6000

4000

2000

0
1 2 3 4 5 6 7 8 9 10

Integrales indefinidas
Por otro lado también es posible calcular primitivas utilizando el comando int. Si
queremos calcular la primitiva de alguna función se procede como sigue:
>> g1=x^4+6*x^3-3x^2+8*x-7
??? g1=x^4+6*x^3-3x^2+8*x-7
Error: Unexpected MATLAB expression.
>> g1=x^4+6*x^3-3*x^2+8*x-7
g1 = x^4 + 6*x^3 - 3*x^2 + 8*x - 7
>> g2=diff(g1,x)
g2 = 4*x^3 + 18*x^2 - 6*x + 8
>> g3=int(g2)
g3 = x^4 + 6*x^3 - 3*x^2 + 8*x
Integración con constantes reales
Si se quiere hallar la integral de una función, que contiene unos parámetros, procedemos
como sigue:
f  x   e k x  , cuando k  1/ 2
2

>> syms x
>> k=sym(1/sqrt(2))
k =2^(1/2)/2
>> f=exp(-(k*x)^2)
f =1/exp(x^2/2)
>> ezplot(f)

11
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> int(f)
ans =(2^(1/2)*pi^(1/2)*erf((2^(1/2)*x)/2))/2
>>
1/exp(x2/2)

0.8

0.6

0.4

0.2

-3 -2 -1 0 1 2 3
x

Integrales definidas
Para calcular integrales definidas en un intervalo, podemos indicar los límites de éste en

  2x  sin(x) dx
5
la función int. Por ejemplo, para la integral definida
1
>> int(2*x+sin(x),1,5)
ans = cos(1) - cos(5) + 24
 1
Ahora calculando una integral impropia: 
0 x 1
2
dx
>> int(1/(x^2+1),0,inf)
ans = pi/2
>> int(1/(x^2+1),-inf,inf)
ans =pi
>> int(1/x,0,inf)
ans =Inf

Representación gráfica
Para representar gráficamente una función que esta en forma simbolica, podemos usar la
función ezplot:
>> syms x
>> g1=1/(x^2+1)
g1 = 1/(x^2 + 1)
>> ezplot(g1) % por defecto es el interval [-2*pi, 2*pi]
>> ezplot(x^3-cos(x)+1)
>>
1/(x2 + 1)
x3 - cos(x) + 1

1 250

0.9 200

0.8 150

0.7 100

0.6 50

0.5 0

0.4 -50

0.3 -100

0.2 -150

0.1 -200

0 -250
-5 0 5 -6 -4 -2 0 2 4 6
x x

>> syms x y
>> ezplot(x^3-y^2+5*x-8*y+7,[0 5])

12
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

x3 + 5 x - y2 - 8 y + 7 = 0
5

4.5

3.5

2.5
y

1.5

0.5

0
0 1 2 3 4 5
x

>> ezplot(x^3-y^2+5*x-8*y+7,[-5 15 -20 20])


x3 + 5 x - y2 - 8 y + 7 = 0
20

15

10

0
y

-5

-10

-15

-20
-5 0 5 10 15
x

>> ezplot(cos(2*t),sin(3*t),[-20 280])


>>
x = cos(2 t), y =sin(3 t)

0.8

0.6

0.4

0.2

0
y

-0.2

-0.4

-0.6

-0.8

-1 -0.5 0 0.5 1
x

>> ezplot3(cos(t),sin(t),t,[0 20])

13
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

x = cos(t), y =sin(t), z =t

20

15

10
z

0
1
0.5 1
0 0.5
0
-0.5 -0.5
y -1 -1
x

>> ezplot3(cos(t),sin(t),t,[0 20],'animate')


x = cos(t), y =sin(t), z =t
x = cos(t), y =sin(t), z =t

20
20

15
15

10
z

10
z

5
5

0
1 0
1
0.5 1 0.5 1
0 0.5 0.5
0
0 0
-0.5 -0.5 -0.5 -0.5
y -1 -1 y -1 -1
x x

Más información en la documentación del paquete syms:


http://www.mathworks.es/help/toolbox/symbolic/index.html

Suma de series
Para efectuar la suma de una serie, se usara el comando symsum:
>> syms n
>> symsum(n^2,1,7)
ans = 140
>> symsum(1/n^2,1,7)
ans = 266681/176400
>> symsum(1/n^2,1,inf)
ans = pi^2/6
>> symsum(n^2,1,n)
ans = (n*(2*n + 1)*(n + 1))/6
>> symsum(n^2)
ans = n^3/3 - n^2/2 + n/6
Mas ejemplos
>> syms n
>> v1=symsum(1/n^2,n,1,inf)
v1 =pi^2/6
>> v2=double(v1)
v2 = 1.6449
>> v3=symsum(1/n^2,n,1,10)
v3 =1968329/1270080
>> v4=symsum(n^2,n,1,20)

14
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

v4 =2870

Cambio a otros formatos


>> char(126,64,124,89)
ans = ~ @ | Y
>> syms x
>> f=exp(x)+sqrt(x)+1/(x^5-1)
f =exp(x) + 1/(x^5 - 1) + x^(1/2)
>> latex(f)
ans =\mathrm{e}^{x} + \frac{1}{x^5 - 1} + \sqrt{x}
>> ccode(f)
ans = t0 = exp(x)+1.0/(x*x*x*x*x-1.0)+sqrt(x);
>> fortran(f)
ans = t0 = exp(x)+1.0D0/(x**5-1.0D0)+sqrt(x)
>>

Series de Taylor
La serie de Taylor para una función de la forma y  f  x  , esta dado por:
f ''  a  x  a  f  n 1  a  x  a 
2 n 1

f  x   f  a   f '  a  x  a    ....   Rn
2!  n  1!
Donde R n es el resto después de los primeros términos, se pueden hallar por cualquiera
de las siguientes formulas:
f  n    x  a 
n

Resto de Lagrange: R n 
n!
f   x    x  a 
n n 1

Resto de Cauchy: R n 
 n  1!
El valor de  esta comprendido entre a y x, puede ser diferente en las dos formulas.
Este resultado valido siempre que f  x  tenga derivadas continúas de orden n como
mínimo.
Además como tenemos que: lim R n  0
n 

Se obtiene una serie infinita que es llamada serie de Taylor de f  x  en torno a x  a .


En el caso de que a  0 se suele llamar serie de McLaurin. La declaración de la serie
de Taylor con matemática simbólica es dada por la función:
T  x   taylor f ,n 
Donde T es el polinomio de (n-1) orden de la aproximación de McLaurin. Si n  a
significa una aproximación respecto del punto a

>> syms x
>> T=taylor(exp(x),7)
T =x^6/720 + x^5/120 + x^4/24 + x^3/6 + x^2/2 + x + 1
>> T=taylor(exp(x),7,1)
T =exp(1) + exp(1)*(x - 1) + (exp(1)*(x - 1)^2)/2 + (exp(1)*(x - 1)^3)/6 +
(exp(1)*(x - 1)^4)/24 + (exp(1)*(x - 1)^5)/120 + (exp(1)*(x - 1)^6)/720
>>

15
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

>> g=exp(x*sin(x))
g =exp(x*sin(x))
>> H=taylor(g,6)
H =x^4/3 + x^2 + 1
>> H=taylor(g,8)
H =x^6/120 + x^4/3 + x^2 + 1
>> H=taylor(g,2,8)
H =exp(8*sin(8)) + exp(8*sin(8))*(8*cos(8) + sin(8))*(x - 8)
>> H=taylor(g,2,pi/4)
H =exp((pi*2^(1/2))/8) - exp((pi*2^(1/2))/8)*((pi*2^(1/2))/8 + 2^(1/2)/2)*(pi/4 -
x)
>>
Ahora graficaremos la función original y el polinomio de Taylor para ver la
aproximación.

>> syms x
>> g=exp(x*sin(x))
g =exp(x*sin(x))
>> g=exp(x*sin(x));
>> T=taylor(g,12,2);
>> t=1:0.05:3;
>> yd=double(subs(g,x,t));
>> ezplot(T,[1 3]),hold,plot(t,yd,'m:')
>> title('Aproximación Taylor vs Función actual')
>> ylabel('g(x),T')
>> legend('Aproximación Taylor','Función real')
>>
Aproximación Taylor vs Función actual

Aproximación Taylor
6 Función real

5
g(x),T

1
1 1.5 2 2.5 3
x

Aproximación de g(x) con serie de Taylor

Ecuaciones diferenciales ordinarias


dsolve('Dy=4*t+2*y') % resolviendo y'=4t+2y
dsolve('D2x+2*Dx+x=0') % resolviendo x''+2x'+x=0
dsolve('Ds=a*x^2')
dsolve('Ds=a*x^2','x')
dsolve('Ds=a*x^2','a')

16
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

dsolve('Dy+4*y=60','y(0)=5') %dsolve('eq1','cond1','var')
% variable indep por defecto es: t
dsolve('Dy+4*y=60','y(0)=5','x')

dsolve('D2y-2*Dy+2*y=0','y(0)=1','Dy(0)=0')
factor(ans)

Ejemplo del análisis simbólico de una función real de variable real

A continuación se muestra un ejemplo de estudio de una función asistido por MatLab,


pero no en modo automático. Aunque podríamos automatizarlo del todo, el objetivo de
esta parte no es aprender a programar, sino aprender a usar estas herramientas para el
trabajo simbólico de funciones.

La función a estudiar será: f  x   x 4  x 2

La introducimos en MatLab, declarando previamente la variable x como simbólica, y no


numérica.
>> syms x
>> y=x*sqrt(4-x^2)
y = x*(4 - x^2)^(1/2)

Dominio, continuidad, asíntotas verticales


El dominio de la función son los x  tales que 4  x 2  0 . Para ello primero
resolvemos la ecuación 4  x 2  0 , de lo cual se obtiene dos soluciones:
>> S=solve(4-x^2,0)
S = -2
2
También puede ser de la siguiente forma:
>> S=solve('4-x^2=0')
S=
-2
2
Para ver si 4  x 2 es positivo o negativo en el intervalo [-2; 2], sustituimos algunos
valores que pertenezcan al intervalo y otros que no pertenezcan:
>> subs(4-x^2,-4:4)
ans = -12 -5 0 3 4 3 0 -5 -12

Aquí lo que se hizo es dar valores enteros con incremento de 1 (por defecto), desde -4
hasta 4, es decir los valores: -4, -3, -2, -1, 0, 1, 2, 3, 4. De donde vemos que los
valores son no negativos en el intervalo [-2, 2], entonces este intervalo resulta ser el
dominio de la función.
D  f    2,2

17
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

La función es continua en su dominio y no tiene asíntotas verticales. Los límites del


dominio son cerrados así que no hace falta estudiar los límites (sobra con sustituir en la
función), pero si hubiera que hacerlo se haría con el comando:
>> y=x*sqrt(4-x^2)
y = x*(4 - x^2)^(1/2)
>> limit(y,-2)
ans = 0
>> limit(y,2)
ans = 0

Puntos de corte con el eje y


Estos puntos se dan para para x = 0:
>> subs(y,0)
ans = 0
obtenemos que f(0) = 0, por tanto un punto de corte es el (0; 0).

Puntos de corte con el eje x


Para ubicar estos puntos tendremos que resolver la ecuación y(x) = 0:
>> solve(y,0)
ans =
0
2
-2
De donde se obtiene tres soluciones de x para y = 0, así que los puntos de corte son:
(-2; 0), (0; 0) y (2; 0).

Asíntotas horizontales
No es posible estudiar el comportamiento de la función en el infinito porque
está fuera de su dominio. De ser necesario se utilizaran los siguientes comandos:
>> limit(y,inf)
ans = i*Inf
>> limit(y,-inf)
ans = -i*Inf
Lógicamente en este caso obtenemos números complejos (la i significa parte
imaginaria), que no pertenecen al dominio real (se debe a la raíz cuadrada de números
negativos).

Primera y segunda derivada


Como vamos a utilizarlas repetidas veces, vamos a almacenarlas bajo los nombres ‘dy’
y ‘ddy’ respectivamente. Además vamos a aplicar el comando de simplificación con el
único propósito de ver las mismas expresiones que hubiéramos obtenido a mano:
>> dy=simplify(diff(y))
dy =-(2*(x^2 - 2))/(4 - x^2)^(1/2)
>> ddy=simplify(diff(dy))
ddy = (2*x*(x^2 - 6))/(4 - x^2)^(3/2)
Las expresiones obtenidas son las más simples posibles en MatLab:
2 x2  2
dy  y'(x)  
4  x2

18
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

2x  x 2  6 
ddy  y ''(x) 
4  x 
2 3

Crecimiento, decrecimiento y extremos locales


Ahora con la primera y segunda derivadas, podemos obtener los puntos críticos y
evaluar en la respectiva función para determinar si es un máximo o minimo.
Para obtener los puntos críticos tenemos que resolver la ecuación dy(x)  0 :
>> solve(dy,0)
ans =
2^(1/2)
-2^(1/2)
De donde se obtiene dos soluciones: x  2 y x   2

Para ver si son extremos locales y clasificarlos, los reemplazamos en la segunda


derivada:
>> subs(ddy,sqrt(2))
ans = -4.0000
>> subs(ddy,-sqrt(2))
ans = 4.0000

Obteniéndose que:
 
ddy 2  0 , por lo tanto en x  2 , hay un máximo local.
ddy   2   0 , por lo tanto en x   2 , hay un mínimo local.

Para ver qué valor alcanza la función en dichos extremos, es suficiente con reemplazar
en la función original y  f  x   x 4  x 2 :
>> subs(y,sqrt(2))
ans = 2
>> subs(y,-sqrt(2))
ans = -2

Finalmente vamos a comprobar el crecimiento/decrecimiento de la función dentro de


todo su dominio, particionado por los dos extremos que hemos obtenido, es decir, en los
intervalos  2,  2  ,   2, 2  ,  2,2 
Para ello sobra con que sustituyamos algún valor de cada uno de los intervalos en dy(x)
para ver si la pendiente es positiva o negativa:
>> subs(dy,-1.9:0.2:-1.5)
ans = -5.1561 -1.6895 -0.3780
>> subs(dy,-1.4:0.8:1.4)
ans = 0.0560 1.7192 1.9699 1.1547
>> subs(dy,1.5:0.2:1.9)
ans = -0.3780 -1.6895 -5.1561

Por tanto:
Si x   2,  2  , entonces dy  x   0 , de donde y  y  x  es decreciente.

19
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

Si x    2, 2  , entonces dy  x   0 , de donde y  y  x  es creciente.


Si x   2,2  , entonces dy  x   0 , de donde y  y  x  es decreciente.

Intervalos de concavidad/convexidad y puntos de inflexión


Para ello se considerara la segunda derivada, y se resuelve la ecuación ddy(x)  0 .
>> solve(ddy,0)
ans =
0
6^(1/2)
-6^(1/2)
Aquí debemos tener en cuenta un detalle que, sólo el punto x = 0 pertenece al dominio
de y  y(x) . Así estudiaremos el signo de la segunda derivada a ambos lados de dicho
punto, en los intervalos:  2,0 , 0,2 . Sustituyendo valores en la segunda derivada,
tenemos:
>> subs(ddy,-1.9:0.8:-0.1)
ans = 37.2893 2.2613 0.4586
>> subs(ddy,0.1:0.8:1.9)
ans = -0.1503 -1.6397 -9.0418

Si x  2,0 , entonces ddy  x   0 , de donde y  y  x  es convexa.


Si x  0,2 , entonces ddy  x   0 , de donde y  y  x  es concava.
La función cambia de convexa a cóncava en x = 0, por tanto en el punto (0; 0) hay un
punto de inflexión.

Representación gráfica
Ahora graficaremos la función utilizando la función ezplot de MatLab:
>> ezplot(y,[-2.1,2.1])
>>
x (4 - x2)1/2

1.5

0.5

-0.5

-1

-1.5

-2

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2


x

En este caso hemos indicado entre qué intervalos debe dibujarse la función, para dejar
un pequeño margen de 0.1 unidades a los lados del dominio de la función.

Limitaciones

20
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

Nótese que la gráfica no llega a representarse en los puntos (-2; 0) y (2; 0). Según la
implementación de las funciones de representación puede haber distintas limitaciones a
la hora de representar. En este caso la gráfica está incompleta probablemente debido a
que la pendiente de la función tiende a infinito conforme se acerca al final de su
dominio. Sin embargo no significa que la función no esté definida en estos puntos. Lo
podemos comprobar dibujando la gráfica en un intervalo muy pequeño alrededor del
punto -2. (Nota: el cambio de curvatura en la segunda gráfica con respecto a la primera
se debe a diferentes cambios de escala en los ejes x e y).
>> ezplot(y,[-2.01,-1.99])
>>
x (4 - x2)1/2

-0.05

-0.1

-0.15

-0.2

-0.25

-0.3

-0.35

-0.4

-2.008 -2.006 -2.004 -2.002 -2 -1.998 -1.996 -1.994 -1.992 -1.99


x

CONCLUSION
Ningún programa de representación gráfica es perfecto. Es muy común que importantes
detalles de la función no aparezcan representados debido a la escala de representación.
Por tanto es arriesgado extraer conclusiones sobre una función solamente a partir de una
gráfica generada por ordenador. Utilizaremos los programas matemáticos para agilizar
nuestro trabajo y para comprobar los resultados pero teniendo presentes los
conocimientos teóricos adquiridos en la asignatura.

Tablas de Comandos Usados en Matemática Simbólica


Cálculo
diff Derivada
int Integral
jacobian Matriz jacobiana
limit Expresi´on de límite
symsum Sumatoria de serie
taylor Expansi´on de serie de Taylor
Algebra Lineal
colspace Base espacio de columna
det Determinante
diag Crea o extrae diagonales
eig valores y vectores propios
expm Matriz exponencial
inv Matriz inversa
jordan Forma can´onica de Jordan
null Base para el espacio nulo

21
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

poly Polinomio caracter´ıstico


rank Rango de matriz
tril Tri´angulo inferior
triu Tri´angulo superior
Simplificación
collect Colecciona t´erminos comunes
expand Expande polinomios y funciones elementales
factor Factor
horner Representaci´on de polinomio aninado
numden Numerador y denominador
simple Busca la forma corta
simplify Simplificaci´on
subexpr Rescribe los t´erminos o subexpresiones
Solución de Ecuaciones
compose Composici´on de funciones
dsolve Soluci´on de ecuaciones diferenciales
finverse Inversa de una funci´on
solve Soluci´on de una ecuaci´on algebraica
Precisión Aritmética
digits Conjunto de variables de precisi´on
vpa Variable de precisi´on aritm´etica
Operaciones Aritméticas
+ Adici´on
- Sustracci´on
* Multiplicaci´on
.* Arreglo de multiplicaci´on
/ Divisi´on por la derecha
./ Arreglo de divisi´on por la derecha
\ Divisi´on por la izquierda
.\ Arreglo de divisi´on por la izquierda
ˆ Operador potencia
.ˆ Arreglo de operador potencia
’ Transpuesta conjugada compleja
.’ Arreglo de transpuesta
Aplicaciones Gráficas
ezplot Funci´on de ploteo
funtool Funci´on calculadora
rsums Suma de Riemann
Operaciones Básicas
ccode Expresi´on c´odigo C para expresiones simb´olicas
conj Complejo conjugado
findsys Determina variables simb´olicas
imag Parte imaginaria de un n´umero complejo
latex Representaci´on simb´olica en LATEX
pretty Imprime expresiones simb´olicas
real N´umero con parte o imaginaria
Transformadas e Inversas
fourier Transformada de Fourier
ifourier Transformada inversa de Fourier
ilaplace Transformada inversa de Laplace

22
11. Matemática simbólica
Matemática Simbólica Mg. Amado Malca Villalobos

iztrans Transformada inversa Z


laplace Transformada de Laplace
ztrans Transformada Z

23
11. Matemática simbólica