Está en la página 1de 9

Cálculo simbólico en MatLab

Boyan Bonev
Facultad de Ciencias Económicas y Empresariales
Universidad de Alicante
31 de octubre de 2011

Resumen de funcionalidades
A continuación se describen varias funcionalidades del paquete de cálculo
simbólico.

Paquete syms
En un principio Matlab se diseñó orientado al cálculo numérico. Así, si
intentamos calcular el seno de una variable no numérica:
>> y=sin(x)
??? Undefined function or variable 'x'.
Matlab no conoce el valor numérico de x.
Recientemente se añadió un paquete adicional que permite a Matlab trabajar
con variables simbólicas, teniendo que declararlas antes de usarlas:
>> syms x

Simplicar
Ahora podemos usar expresiones que contengan a esta variable. Por ejemplo,
si queremos simplicar o evaluar una expresión lo hacemos con el comando
simplify.
>> y=sin(x);
>> z=cos(x);
>> simplify(y^2+z^2)
ans = 1

Sustituir valores en la variable


Para evaluar una expresión con determinado valor de la variable:

1
>> subs(x^2-x-1,-3)
ans =
11

Resolver ecuaciones
Para resolver la ecuación x2 − x − 1 = 0:
>> solve(x^2-x-1)
ans =
5^(1/2)/2 + 1/2
1/2 - 5^(1/2)/2
obteniendo estas dos soluciones.

Límites
Con el paquete simbólico también podemos calcular límites, derivadas, integrales,
etc. Para calcular el límite para f (x)= sin(x)
x cuando x tiende a cero:
>> limit(sin(x)/x,0)
ans = 1
n3 +3n2 −2n
Y un límite en el innito de f (n) = 3n3 −1 :
>> syms n
>> limit((n^3+3*n^2-2*n)/(3*n^3-1),inf)
ans = 1/3

Derivadas
Para calcular derivadas usamos el comando diff:
>> syms x
>> f=x^3-cos(x)+1;
>> g=diff(f)
g = 3*x^2+sin(x)

Evaluar funciones
Nótese que en los comandos introducidos se ha denido la función f (x), así
como la función g(x), que almacena el resultado de la derivada. Estas funciones
se pueden evaluar en un valor concreto de x por medio del comando subs, por
ejemplo, evaluamos f (1):
>> subs(f,1)
ans = 1.4597

2
Integrales indenidas
Por otro lado también es posible calcular primitivas utilizando el comando
int. Si queremos calcular la primitiva del último resultado, g:
>> int(g)
x^3 - cos(x)

Integrales denidas
Para calcular integrales denidas en un intervalo, podemos indicar los límites
´3
de éste en la función int. Por ejemplo, para la integral denida 1
3x3 +sin(x) dx
introducimos:
>> int(3*x^2+sin(x),1,3)
ans = cos(1) - cos(3) + 26
Nota: para integrales impropias utilizaremos -inf ó inf para indicar el límite
inferior y/o superior.

Representación gráca
Podemos representar grácamente una función utilizando la función ezplot:
>> ezplot(f)
o bien tecleando la expresión directamente (pero habiendo declarado previamente
x syms x):
como simbólica, con
>> ezplot(x^3 - cos(x) + 1)
El resultado se puede ver en la gura 1.
Más información en la documentación del paquete syms:
http://www.mathworks.es/help/toolbox/symbolic/index.html

Suma de series
1
Sea la serie
2n ; su suma desde un término hasta otro, por ejemplo desde 1
hasta 3, se calcula con:
>> syms n
>> symsum(1/2^n,1,3)
ans = 7/8
La suma desde un término hasta el innito se calcula así:
>> symsum(1/2^n,1,inf)
ans = 1

3
x3 − cos(x) + 1

250

200

150

100

50

−50

−100

−150

−200

−250

−6 −4 −2 0 2 4 6
x

Figura 1: Resultado de la función ezplot.

Ejemplo de análisis de una función


A continuación se muestra un ejemplo de estudio de una función asistido
por MatLab, pero no automático. Aunque podríamos automatizarlo del todo, el
objetivo de la asignatura no es aprender a programar.
La función a estudiar será

f (x) = x 4 − x2

La introducimos en MatLab, declarando previamente que la x debe tratarse


como variable simbólica, y no numérica:
>> syms x
>> f=x*sqrt(4-x^2)
f =
x*(4 - x^2)^(1/2)
Nota: a lo largo de esta guía lo que el usuario introduce en matlab está
marcado por >>; lo demás es la respuesta de MatLab.

Dominio, continuidad, asíntotas verticales


El dominio de la función son los x∈R tales que 4 − x2 ≥ 0. Resolvemos la
2
ecuación 4 − x = 0 y obtenemos dos soluciones:
>> solve(4-x^2,0)
ans =
2

4
-2
Para ver si 4 − x2 es positivo o negativo en el intervalo [−2, 2], sustituimos
un valor que pertenezca al intervalo y otro que no pertenezca, por ejemplo el 1
y el 3:
>> subs(4-x^2,1)
ans =
3
>> subs(4-x^2,3)
ans =
-5
Por tanto la función es negativa fuera del intervalo y positiva dentro, así que:
D(f ) = [−2, 2]
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:
>> limit(f,-2)
ans =
0
>> limit(f,2)
ans =
0

Puntos de corte con el eje y


Para x = 0,
>> subs(f,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 f (x) = 0 tenemos que resolver dicha ecuación:
>> solve(f,0)
ans =
0
2
-2
y obtenemos tres soluciones de x para y = 0, así que los puntos de corte son:
(−2, 0), (0, 0) y (2, 0).

5
Asíntotas horizontales
No es posible estudiar el comportamiento de la función en el innito porque
está fuera de su dominio. De haberlo sido, lo habríamos hecho así:
>> limit(f,inf)
ans =
i*Inf
>> limit(f,-inf)
ans =
-i*Inf
En este caso obtenemos números complejos (la i signica parte imaginaria),
que no pertencen 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 f1 y f2 respectivamente. Además vamos a aplicar el comando de simplicación
con el único propósito de ver las mismas expresiones que hubiéramos obtenido
a mano:
>> f1 = simplify(diff(f))
f1 =
-(2*(x^2 - 2))/(4 - x^2)^(1/2)
>> f2 = simplify(diff(f1))
f2 =
(2*x*(x^2 - 6))/(4 - x^2)^(3/2)
Las expresiones obtenidas signican:
2(x2 − 2)
f 0 (x) = − √
4 − x2
2
2x(x − 6)
f 00 (x) = p
(4 − x2 )3

Crecimiento, decrecimiento y extremos locales


Para obtener los puntos críticos tenemos que resolver la ecuación f 0 (x) = 0:
>> solve(f1,0)
ans =
2^(1/2)
-2^(1/2)
√ √
obteniendo dos soluciones: x= 2, x = − 2. (Nótese que la potencia (1/2)
afecta sólo al 2, no al signo).
Para ver si son extremos locales y clasicarlos, los sustituimos en la segunda
derivada:
>> subs(f2, 2^(1/2))
ans =

6
-4.0000
>> subs(f2,-2^(1/2))
ans =
4.0000
√ √ √
obteniendo f 00 ( √2) < 0, por tanto x = 2 es un máximo local, y f 00 (− 2) >
0, por tanto x = − 2 es un mínimo local.
Para ver qué valor alcanza la función en dichos extremos, sobra con sustituirlos
en f (x):
>> subs(f, 2^(1/2))
ans =
2
>> subs(f,-2^(1/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) y ( 2, 2]. Para ello sobra con
que sustituyamos algún valor de cada uno de los intervalos en f 0 (x) para ver si
la pendiente es positiva o negativa, por ejempo, −1,9, 0 y 1,9:
>> subs(f1,-1.9)
ans =
-5.1561
>> subs(f1,0)
ans =
2
>> subs(f1,1.9)
ans =
-5.1561
Por tanto:
√ 0
Si x ∈ [−2, − 2) ⇒ f (x) < 0 ⇒ f (x) es decreciente,
√ √
si x ∈ (− 2,
√ 2) ⇒ f 0 (x) > 0 ⇒ f (x) es creciente,
0
si x ∈ (− 2, 2] ⇒ f (x) < 0 ⇒ f (x) es decreciente.

Intervalos de concavidad/convexidad y puntos de


inexión
La segunda derivada se anula en:
>> solve(f2,0)
ans =
0
6^(1/2)
-6^(1/2)

7
pero de los tres, sólo el punto x = 0 pertenece al dominio de f (x). Estudiamos
el signo de la segunda derivada a ambos lados de dicho punto, sustituyendo en
-1 y 1:
>> subs(f2,-1)
ans =
1.9245
>> subs(f2,1)
ans =
-1.9245
00
Si x ∈ (−2, 0) ⇒ f (x) > 0 ⇒ f (x) es convexa,
00
si x ∈ (0, 2) ⇒ f (x) < 0 ⇒ f (x) es cóncava.
La función cambia de convexa a cóncava en x = 0, por tanto el punto (0, 0)
es un punto de inexión.

Representación gráca
Representamos grácamente una función utilizando la función ezplot:
>> ezplot(f, [-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
Nótese que la gráca 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

8
limitaciones a la hora de representar. En este caso la gáca está incompleta
probablemente debido a que la pendiente de la función tiende a innito conforme
se acerca al nal de su dominio. Sin embargo no signica que la función no esté
denida en estos puntos. Lo podemos comprobar dibujando la gráca en un
intervalo muy pequeño alrededor del punto -2. (Nota: el cambio de curvatura
en la segunda gráca con respecto a la primera se debe a diferentes cambios de
escala en los ejes x e y).
>> ezplot(f,[-2.01,-1.99])

x (4 − x2)1/2
0

−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

Ningún programa de representación gráca 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áca 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.

Referencias
Más información en la documentación del paquete syms:
http://www.mathworks.es/help/toolbox/symbolic/index.html

También podría gustarte