You are on page 1of 206

Matlab en un curso

de C
alculo

Carlos Guerrero Garca


Departamento de Matem
atica Aplicada
Universidad de M
alaga
cguerrerog@uma.es

25 de septiembre de 2012

Indice general
Introducci
on
1. Comandos b
asicos

IX

1.1. Documentaci
on y representaciones . . . . . . . . . . . . . . . .

1.1.1. Matrices, vectores y operaciones . . . . . . . . . . . . .

1.1.2. Introducci
on de datos . . . . . . . . . . . . . . . . . . .

1.1.3. El operador : . . . . . . . . . . . . . . . . . . . . . . .

1.1.4. Operaciones con matrices . . . . . . . . . . . . . . . . .

1.1.5. Tabla de valores de una funci


on . . . . . . . . . . . . . .

1.1.6. El comando plot . . . . . . . . . . . . . . . . . . . . . . 10


1.1.7. Correcciones en la lnea de comandos . . . . . . . . . . . 12
1.1.8. Funciones cientficas . . . . . . . . . . . . . . . . . . . . 12
1.1.9. Representaci
on de funciones por ramas . . . . . . . . . . 13
1.1.10. Parametrizaci
on de una circunferencia . . . . . . . . . . 14
1.1.11. Impresi
on . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.12. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2. Rutinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.1. Ejemplo de rutina . . . . . . . . . . . . . . . . . . . . . 17
1.2.2. Algunas opciones del comando plot . . . . . . . . . . . 17
1.2.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3. Funciones .m . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.1. Ejemplo de funci
on .m . . . . . . . . . . . . . . . . . . . 22

Indice general

iv
1.3.2. Funci
on .m con dos salidas . . . .
1.3.3. La funci
on fzero.m de Matlab .
1.3.4. Definici
on de funciones por ramas
1.3.5. La central de archivos Matlab . .
1.3.6. Ejercicios . . . . . . . . . . . . . .
1.4. Derivaci
on numerica . . . . . . . . . . . .
1.4.1. La primera derivada . . . . . . . .
1.4.2. La segunda derivada . . . . . . . .
1.4.3. Otros comandos b
asicos . . . . . .
1.4.4. Mnimo de una funci
on . . . . . .
1.4.5. Ejercicios . . . . . . . . . . . . . .
2. Integrales

2.1. Areas
. . . . . . . . . . . . . . . . . .
2.1.1. Estimaci
on gr
afica del area . .
2.1.2. Definici
on de area . . . . . . .
2.1.3. Polinomios . . . . . . . . . . .

2.1.4. Area
bajo y = x + x2 x4 . . .

2.1.5. Area
bajo y = e2x . . . . . . .

2.1.6. Area
bajo y = 1 + x3 . . . . .
2.1.7. Ejercicios . . . . . . . . . . . .
2.2. La integral definida . . . . . . . . . . .
2.2.1. Ejemplo de la integral definida
2.2.2. Ejercicios . . . . . . . . . . . .
2.3. El teorema fundamental del C
alculo .
2.3.1. Una interpretaci
on numerica .
2.3.2. Ejercicios . . . . . . . . . . . .
2.4. Derivaci
on e integraci
on simb
olica . .
2.4.1. Obtenci
on de ayuda . . . . . .
2.4.2. Derivaci
on simb
olica . . . . . .
2.4.3. Integraci
on simb
olica . . . . . .
2.4.4. Ejercicios . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

23
24
26
27
28
28
28
31
32
33
34

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

35
35
35
36
37
41
42
43
45
47
48
49
50
50
54
55
56
57
58
62

Indice general

2.5. Integraci
on numerica . . . . . . . . . . . . . . . . . . . . . . . . 62
2.5.1. La regla de Simpson . . . . . . . . . . . . . . . . . . . . 63
2.5.2. La regla del punto medio con estimaci
on del error . . . 66
2.5.3. La regla del punto medio como funci
on .m . . . . . . . . 68
2.5.4. Integradores numericos de Matlab . . . . . . . . . . . 70
2.5.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3. Aplicaciones de la integral

3.1. Area
entre curvas . . . . . . . . . . .

3.1.1. Area
entre 2x y tg x . . . . .

3.1.2. Area
entre x2 5 y ln x . . .

3.1.3. Area
encerrada por una curva

73
. . . . . . . . . . . . . . . 73
. . . . . . . . . . . . . . . 73
. . . . . . . . . . . . . . . 74

parametrizada . . . . . . 76
3.1.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.2. C
alculo de vol
umenes . . . . . . . . . . . . . . . . . . . . . . . 78
3.2.1. Por secciones paralelas . . . . . . . . . . . . . . . . . . . 78
3.2.2. Por cilindros . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.3. Longitudes de curvas... . . . . . . . . . . . . . . . . . . . . . . . 83
3.3.1. ...de la forma y = f (x) . . . . . . . . . . . . . . . . . . . 83
3.3.2. ...parametrizadas . . . . . . . . . . . . . . . . . . . . . . 84
3.3.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.4. Funciones de densidad y distribuciones de probabilidad . . . . . 86
3.4.1. La distribuci
on exponencial . . . . . . . . . . . . . . . . 86
3.4.2. La distribuci
on normal . . . . . . . . . . . . . . . . . . . 87
3.4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4. Sucesiones y Series
89
4.1. Sucesiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.1.1. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.1.2. Sucesiones definidas de forma recursiva . . . . . . . . . 92
4.1.3. La sucesi
on de Fibonacci . . . . . . . . . . . . . . . . . 93
4.1.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Indice general

vi
4.2. Series numericas . . . . . . . . . . . . .
4.2.1. La sucesi
on de sumas parciales .
4.2.2. Series numericas simb
olicas . . .
4.2.3. Ejercicios . . . . . . . . . . . . .
4.3. Aproximaci
on de series... . . . . . . . . .
4.3.1. ...de terminos positivos . . . . . .
4.3.2. ...alternadas . . . . . . . . . . . .
4.3.3. Ejercicios . . . . . . . . . . . . .
4.4. Series de potencias . . . . . . . . . . . .
4.4.1. Ejercicios . . . . . . . . . . . . .
4.5. Series de Taylor . . . . . . . . . . . . . .
4.5.1. Polinomios de Taylor simb
olicos
4.5.2. Producto de series . . . . . . . .
4.5.3. Ejercicios . . . . . . . . . . . . .
5. Vectores y geometra analtica
5.1. Aritmetica vectorial . . . . . . . . . .
5.1.1. Vectores en el plano . . . . . .
5.1.2. Vectores en el espacio . . . . .
5.1.3. El producto escalar . . . . . . .

5.1.4. Angulos
y longitudes . . . . . .
5.1.5. El producto vectorial . . . . . .
5.1.6. Volumen de un paraleleppedo
5.1.7. El producto escalar triple . . .
5.1.8. Ejercicios . . . . . . . . . . . .
5.2. Curvas parametrizadas . . . . . . . . .
5.2.1. Representaci
on de una curva .
5.2.2. Vector tangente a una curva . .
5.2.3. Ejercicios . . . . . . . . . . . .
5.3. Longitud y curvatura de una curva . .
5.3.1. Longitud de una elipse . . . . .
5.3.2. Curvatura de una curva . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

94
95
97
98
98
98
104
105
108
111
111
113
114
116

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

119
. 119
. 120
. 121
. 121
. 121
. 122
. 122
. 123
. 123
. 124
. 124
. 130
. 132
. 134
. 135
. 136

Indice general

5.3.3. Crculo osculador de una curva plana . . . .


5.3.4. Ejercicios . . . . . . . . . . . . . . . . . . .
5.4. Superficies en el espacio . . . . . . . . . . . . . . .
5.4.1. Representaci
on de un plano . . . . . . . . .
5.4.2. Representaci
on conjunta de dos planos . . .
5.4.3. Grafo de un campo escalar sobre R2 . . . .
5.4.4. Coordenadas cilndricas y esfericas . . . . .
5.4.5. Curvas como intersecci
on de superficies . .
5.4.6. Superficies de revoluci
on . . . . . . . . . . .
5.4.7. Superficies parametricas . . . . . . . . . . .
5.4.8. Vector normal a una superficie parametrica
5.4.9. Ejercicios . . . . . . . . . . . . . . . . . . .

vii
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

137
138
139
139
142
143
146
148
150
151
152
154

6. C
alculo diferencial en varias variables
157
6.1. Funciones de dos variables . . . . . . . . . . . . . . . . . . . . . 157
6.1.1. Representaci
on sobre dominios perforados de R2 . . . . 159
6.1.2. Representaci
on sobre dominios no rectangulares de R2 . 160
6.1.3. Curvas de nivel . . . . . . . . . . . . . . . . . . . . . . . 161
6.1.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 164
6.2. Derivadas en dos variables . . . . . . . . . . . . . . . . . . . . . 164
6.2.1. Derivaci
on numerica en dos variables . . . . . . . . . . . 165
6.2.2. Derivaci
on simb
olica en dos variables . . . . . . . . . . . 170
6.2.3. Plano tangente a un campo escalar sobre R2 . . . . . . 172
6.2.4. Plano tangente a una superficie parametrica . . . . . . . 174
6.2.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 177
6.3. Vector gradiente . . . . . . . . . . . . . . . . . . . . . . . . . . 177
6.3.1. Recta tangente a curvas planas de la forma f (x, y) = cte.178
6.3.2. Plano tangente a superficies de la forma f (x, y, z) = cte. 178
6.3.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . 180
6.4. M
aximos y mnimos . . . . . . . . . . . . . . . . . . . . . . . . 181
6.4.1. Extremos de f (x, y) sobre un dominio rectangular . . . 181
6.4.2. Extremos de f (x, y) sobre un disco . . . . . . . . . . . . 183

Indice general

viii
6.4.3. Extremos de f (x, y) sobre otros
6.4.4. Ejercicios . . . . . . . . . . . .
6.5. Optimizaci
on numerica . . . . . . . . .
6.5.1. Ejercicios . . . . . . . . . . . .

dominios
. . . . . .
. . . . . .
. . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

184
185
186
189

Introducci
on
En este libro pretendemos ilustrar el empleo de Matlab1 como herramienta inform
atica, tanto un curso b
asico como en un curso avanzado de C
alculo
Diferencial e Integral, en los cuales este libro puede ser utilizado como texto
complementario. Por ello, los conceptos que aqu aparecen lo hacen en el
mismo orden que en un curso habitual de c
alculo y, como nuestro objetivo
es que el alumno aprenda de este programa lo suficiente como para poder
trabajar con los correspondientes elementos matem
aticos, nuestra primera
labor consistir
a en presentar unos cuantos comandos b
asicos de este programa.
Estos comandos b
asicos se presentan en el primer captulo, por lo que sera
conveniente que el contenido de este se cubriera en las primeras tres o cuatro
horas del curso, con la idea de que el alumno pueda seguir construyendo sus
propios conocimientos seg
un el correspondiente plan de estudios.
Al principio de cada secci
on se propondr
an ciertas tareas, de cuya realizaci
on nacer
a la necesidad de la utilizaci
on, tanto de los comandos b
asicos
como de otros comandos de Matlab que se ir
an describiendo en el contexto
propio de la tarea a abordar. Esta forma de ense
nar el manejo de Matlab se
diferencia de la forma habitual de ense
nar matem
aticas, en la cual, a partir
de ciertos principios aceptados como punto de partida, se obtienen propiedades y conclusiones siguiendo procedimientos l
ogicos. Aunque siempre se puede
1

Matlab es una marca registrada de The Mathworks Inc., 24 Prime Park Way, Natick,
MA 01760-1500, Tfno: 508-647-7000
email: info@mathworks.com
P
agina Web: www.mathworks.com

Introducci
on

encontrar una descripci


on m
as detallada de dichos comandos utilizando el comando help, puede ser de utilidad para los alumnos tener a mano un ejemplar
del libro [1]. En el, se presentan los comandos de Matlab siguiendo un orden
m
as cercano al programa Matlab en s.
Diversas versiones de Matlab desde la 5.2 hasta la 7.1, han servido de
banco de pruebas para nuestras casi 200 rutinas. Los resultados que se obtienen en cada una de ellas no las hemos incluido puesto que creemos m
as
interesante que cada uno las ejecute por s mismo y vea que es lo que sucede.
Por tanto, es aconsejable que este libro se lea delante de un ordenador en el
que haya instalada una copia de Matlab para poder ir reescribiendo cada
una de las rutinas de ejemplo. Esto conlleva a que se preste una mayor atenci
on ya que, tanto para los usuarios m
as expertos, como para los principiantes,
no es f
acil captar todos los detalles importantes de cada una de ellas en una
lectura sobre el papel y, adem
as, cada alumno disfrutar
a de la experiencia de
observar por s mismo los resultados que se vayan obteniendo.
Casi todas las instrucciones de este libro utilizan los c
alculos numericos del
n
ucleo de Matlab. Aunque hemos utilizado el paquete simb
olico de Matlab
en algunas contadas ocasiones (como, por ejemplo, en la b
usqueda de primitivas de una funci
on), creemos que la utilizaci
on de dicho paquete, por lo
general, no enriquece el proceso de aprendizaje de los conceptos de C
alculo.
Por ejemplo, se puede utilizar el comando ezplot del paquete simb
olico para
obtener la gr
afica de una funci
on, sin entender que representa dicha gr
afica.
Por contra, la utilizaci
on del comando plot exige del alumno la definici
on de
un conjunto de puntos en el dominio de la funci
on y la evaluaci
on de la funci
on
en cada uno de ellos para construir su gr
afica a partir de los correspondientes
pares ordenados. Este sencillo ejemplo ilustra la idea que subyace en todo el
libro: es necesario conocer el porque de los c
alculos numericos que se vayan a
realizar.
Al final de cada secci
on se presentan algunos ejercicios para ilustrar c
omo
se pueden adaptar los problemas habituales de un curso de C
alculo para
abordarlos con herramientas inform
aticas. Por lo general, estos ejercicios se

xi
pueden resolver con peque
nas modificaciones de las rutinas presentadas en la
secci
on correspondiente. Pretendemos que estos modelos se puedan utilizar
de forma que Matlab se convierta en una herramienta u
til para la resoluci
on
de tales problemas, propiciando as el manejo con soltura del correspondiente
concepto matem
atico.
De entre las varias herramientas inform
aticas especialmente dise
nadas para el campo de las matem
aticas hemos elegido Matlab por varios motivos:
funciona muy bien, es una herramienta bastante extendida entre los alumnos
de nuestra escuela y se puede utilizar de manera eficaz sin muchos conocimientos de el. La prueba de que es sencillo utilizarlo es que yo lo he aprendido
sin mucha dificultad y, en los seis cursos en los que los alumnos han estado
trabajando con Matlab, practicamente ning
un alumno ha tenido ninguna
queja de el. Esto no quiere decir que los alumnos no hayan tenido ninguna
dificultad; es m
as, de hecho las ha habido, pero han sido m
as con el concepto
matem
atico con el que se estaba trabajando, que con la sintaxis de los comandos a utilizar y, por lo general, los alumnos han visto recompensado su
trabajo con los gr
aficos y los resultados numericos obtenidos.
El trabajo que llevaremos a cabo con los comandos correspondientes no
precisan un conocimiento detallado de ellos y, por lo general, bastar
a con un
conocerlos de forma superficial. Aquellos alumnos que quieran profundizar
m
as en los aspectos gr
aficos de Matlab pueden consultar [2] o la extensa documentaci
on que se puede encontrar on-line en el manual [3], y en metodos
m
as avanzados de c
alculo numerico, pueden consultar [4], entre otros.

Captulo 1

Comandos b
asicos
1.1.

Documentaci
on y representaciones

helpdesk (www.tau.ac.il/cc/pages/docs/matlab/help)
Este comando muestra la lista de toda la documentaci
on online, incluido el manual de introducci
on titulado Getting Started. En Documentation
Roadmap se puede encontrar una lista de manuales adicionales.
help
Cuando se va a utilizar alg
un comando de Matlab pero se han olvidado
algunos detalles de su sintaxis, se puede introducir el nombre del comando en
la lnea de comandos de Matlab precedido de la palabra help. Por ejemplo,
help plot
devuelve instrucciones detalladas del uso del comando plot
lookfor
El comando help no sirve de ayuda si desconocemos o hemos olvidado
el nombre exacto del comando que queremos utilizar. Por ejemplo, si introducimos help graph obtendremos graph.m not found. Entonces podemos

Comandos b
asicos

utilizar la instrucci
on
lookfor graph
y obtendremos una lista de cerca de 40 comandos de Matlab. Desafortunadamente, ninguno de ellos es plot, porque el termino graph no aparece en
las lneas de comentarios del principio del archivo plot.m. Sin embargo, aparece el comando plotyy y esto nos hace recordar que el comando que estamos
buscando es plot. Si no supieramos nada del comando que queremos utilizar, deberamos ejecutar helpdesk y buscar Graphics en el manual Getting
Started.
doc
La instrucci
on
doc plot
devuelve informaci
on similar, pero m
as detallada, que la que ofrece el comando
help plot
type
Muchos comandos Matlab son archivos .m. El comando help muestra
las lneas de comentarios iniciales del correspondiente archivo. El comando
type muestra el archivo al completo. La instrucci
on plot no es un archivo .m
sino una funci
on precompilada, pero podemos ver el archivo helpdesk con el
comando
type helpdesk

1.1.1.

Matrices, vectores y operaciones

Las matrices son tablas rectangulares de n


umeros. Constituyen la estructura b
asica conceptual de Matlab, que significa Matrix Laboratory. Una
matriz A de tama
no m n es una matriz con m filas y n columnas (Las filas
son horizontales y las columnas, verticales). A(i, j) corresponde al valor de la
matriz A que aparece en la iesima fila y la jesima columna. Si A tuviera

1.1. Documentaci
on y representaciones

una sola fila, diremos que A es un vector fila y si tuviera una sola columna,
diremos que es un vector columna. Observese que una matriz 11 es lo mismo
que un n
umero (tambien denominado escalar).
Por ejemplo, si

1
2
3
4
5
h i
h
i
2

A= 2 ,B = 1 2 3 , C =
3 , D = 6 7 8 9 10

11 12 13 14 15
4
entonces A es 1 1 (es decir, un escalar), B es 1 3 (es decir, un vector fila),
C es 4 1 (es decir, un vector columna) y D es 3 5

1.1.2.

Introducci
on de datos

La forma m
as simple de definir un vector o una matriz es indicando los
valores de cada uno de sus elementos. Los elementos de cada fila se separaran
por un espacio o por una coma e indicaremos el final de cada fila con un punto
y coma. Por ejemplo, podemos definir el vector B del ejemplo anterior como
B=[1 2 3]
mientras que la matriz D la podemos definir como
D=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15]
Esto puede no ser la forma m
as efectiva para definir un vector que consista
en los n
umeros desde el 1 hasta el 5 incrementados en 0.1. Afortunadamente
el operador : que se presentar
a en la subsecci
on siguiente, proporciona una
forma simple de hacerlo. En otras situaciones, querremos evitar teclear los
valores, por ejemplo, cuando los datos ya los tenemos en formato electr
onico
generados por alg
un instrumento de medida o por alguna hoja de c
alculo. El
comando load nos permitir
a importarlos y ser
a presentado m
as adelante.
Subndices
Si en el entorno Matlab, D es una matriz, entonces el comando D(i,j)
devolver
a el valor del elemento de D en la iesima fila y la jesima columna.

Comandos b
asicos

Para un vector fila B o un vector columna C, el comando B(i) o el comando


C(i) devolver
a el valor de la iesima columna o fila, respectivamente. Comprobar que, para el ejemplo anterior,
B(3) = 3, C(3) = 3, D(3, 3) = 13, D(3, 1) = 11
Matlab tambien indiza los elementos de una matriz contando los elementos de izquierda a derecha y de arriba a abajo. Por ejemplo, la instrucci
on
D(8) devuelve lo mismo que D(2,3) para la matriz anterior.
Longitud y tama
no
Para un vector fila o columna, el comando length devuelve su longitud,
es decir, el n
umero de elementos. De los ejemplos anteriores, length(A) devolver
a 1, length(B) devolver
a 3 y length(C) devolver
a 4. Para una matriz
m n, el comando size devuelve la pareja m n. As, size(D) devuelve
3 5. Si u
nicamente quisieramos el n
umero de filas de D, podemos ejecutar la
instrucci
on size(D,1) y si quisieramos el n
umero de columnas, ejecutaramos
size(D,2). Observese que size(B) devuelve 1 3 y size(C) devuelve 4 1

1.1.3.

El operador :

Debido a la importancia de este operador, recomendamos la lectura de la


documentaci
on correspondiente ejecutando doc colon. Un vector o una matriz se puede definir tecleando sus elementos. As hemos definido el vector B
anterior, pero si queremos construir un vector con los n
umeros naturales del
1 al 100, teclearlos puede ser una labor muy tediosa. El operador : genera
una secuencia de n
umeros de 1 en 1. Podemos especificar incrementos diferentes, coloc
andolo entre dos :, e incluso construir secuencias decrecientes
utilizando incrementos negativos. Por ejemplo:
x=1:5 es el vector fila x = [1 2 3 4

5]

y=1:0.1:5 es el vector fila formado por los n


umeros del 1 al 5 con
incremento de 0.1

1.1. Documentaci
on y representaciones

x=6:-1:2 es el vector fila x = [6 5 4 3 2]

1 2

Si la matriz M es M = 3 4, entonces M(:,2) es la segunda columna

5 6

2

de M (es decir, M (:, 2) = 4), mientras que M(3,:) es la tercera fila
6
de M (es decir, M (3, :) = [5 6])
M(1:2,:) es la matriz formada por las dos primeras filas de M
M(2,:)=[] borra la segunda fila de M

Si, a partir de un vector x, queremos construir otro vector y eliminando


el u
ltimo elemento de x, podemos utilizar la instrucci
on
y=x(1:length(x)-1)
Para definir un vector z con los valores de x que ocupan un lugar impar,
podemos utilizar
z=x(1:2:length(x))
Concatenaci
on
Si x = [1 2 3] e y = [4 5], entonces z=[x y] nos permite definir el
vector fila z = [1 2 3 4 5]. Esto se llama concatenaci
on. Observese que,
considerando la matriz M anterior, si intentamos concatenar y con M (:, 2)
esperando obtener

4 5 2

[y M (:, 2)] =
4
6
Matlab nos devuelve un mensaje de error porque, en Matlab, todas las
matrices tienen que ser rectangulares.
Otro ejemplo de concatenaci
on lo podemos ver en la instrucci
on

Comandos b
asicos

N=[M M;M M]
que devuelve la matriz N de tama
no

N =
1

1.1.4.

6 4 siguiente:

2 1 2

4 3 4

6 5 6

2 1 2

4 3 4

6 5 6

Operaciones con matrices

Matlab permite las siguientes operaciones con matrices:


+ suma
- resta
* multiplicaci
on
^ potencia
transpuesta (o transpuesta conjugada si hay valores complejos. En tal
caso, para transponer sin conjugar, podemos utilizar .)
\ divisi
on izquierda
/ divisi
on derecha
En principio, nos centraremos en las correspondientes operaciones elemento a elemento (dejando las operaciones del algebra matricial para el u
ltimo
captulo). El orden en el que Matlab realiza las operaciones es el mismo
que el de cualquier calculadora cientfica, es decir, de izquierda a derecha,
haciendo las potencias en primer lugar, luego las multiplicaciones y divisiones
y, por u
ltimo, las sumas y las restas. As, la instrucci
on 1+12/6/3*9^(1/2)
devuelve 3

1.1. Documentaci
on y representaciones

Suma y resta
S
olo podemos sumar y restar matrices del mismo tama
no. Si tenemos
definidas dos matrices A y B de tama
no m n, la instrucci
on C=A-B define la
matriz C de tama
no m n en la que cada uno de sus elementos es la suma del
correspondiente elemento de A con el correspondiente elemento de B. De la
misma forma, la instrucci
on D=A-B define la matriz D de tama
no m n en la
que cada uno de los elementos de D es la diferencia entre el correspondiente
elemento de A y el correspondiente elemento de B
Multiplicaci
on por un escalar
Para multiplicar todos los elementos de una matriz A por cierto escalar k,
podemos utilizar indistintamente tanto la instrucci
on k*A como la instrucci
on
A*k
Multiplicaci
on matricial elemento a elemento
Si A y B son dos matrices de tama
no m n, la instrucci
on C=A.*B define una matriz C de tama
no m n en la que cada uno de sus elementos es
el producto del correspondiente elemento de la matriz A con el correspondiente elemento de la matriz B. Destaquemos el . que aparece antes del
asterisco. Este producto elemento a elemento que obtenemos a traves del operador .*, es diferente del producto usual de matrices que obtendremos a
traves del operador * (y se presentar
ltimo cap
"
# a en el u
" tulo).
# Por ejemplo,
1 2
5 6
si consideramos la matriz A =
y la matriz B =
, que podemos
3 4
7 8
definir con las instrucciones A=[1 2;3 4] y B=[5 6;7 " 8] la matriz
C
#
5 12
que resulta al multiplicarlas elemento a elemento es C =
, que la
21 48
podemos obtener con la instrucci
on C=A.*B, mientras que la matriz
" D que
#
19 22
resulta al multiplicarlas matricialmente de la forma usual es D =
,
43 50
que la podemos obtener con la instrucci
on D=A*B

Comandos b
asicos

Divisi
on matricial elemento a elemento
Centr
andonos u
nicamente en la divisi
on matricial elemento a elemento
(otros tipos de divisiones matriciales se presentar
an en el u
ltimo captulo),
esta se construye de forma similar al producto matricial elemento a elemento:
si A y B son dos matrices de tama
no m n, la instrucci
on C=A./B define una
matriz C de tama
no m n en la que cada uno de sus elementos es el cociente
del correspondiente elemento de la matriz A entre el correspondiente elemento
de la matriz B. Destaquemos tambien aqu la presencia del . antes de /
Si alguno de los elementos de B es nulo, entonces el correspondiente elemento de C ser
a NaN que son las siglas que utiliza Matlab para indicar que
el resultado no es un n
umero (Not a Number). Adem
as, indiquemos tambien,
que esta operaci
on no es conmutativa, con lo que el orden en el que operemos
con las matrices es importante.
Por ejemplo, para las matrices A = [1 2 3] y B = [4 5 6], la matriz
C = [1/4 2/5 3/6] la podemos construir como C=A./B, aunque Matlab
la exprese utilizando aproximaciones decimales que es el formato por defecto.
Para ver las distintas opciones de los formatos de salida, podemos consultar
la ayuda con help format o ver la p
agina 41 m
as adelante.
Exponenciaci
on matricial elemento a elemento
Para elevar cada elemento de una" matriz
# a una potencia utilizaremos el
1 2
operador .. Por ejemplo, si A =
, la instrucci
on B=A.^2 define la
3 4
"
#
1 4
matriz A =
9 16

1.1.5.

Tabla de valores de una funci


on

Utilicemos algunos de estos comandos de Matlab para hacer una tabla de


3x2 5x + 2
valores de la funci
on y =
en el intervalo 2 x 2. Queremos
x4 + 1
que en nuestra tabla aparezca el correspondiente valor de y para cada valor

1.1. Documentaci
on y representaciones

de x en el dicho intervalo con un incremento de, pongamos por caso, 0.5. Las
siguientes instrucciones nos proporcionan dicha tabla:
x=-2:0.5:2;
y=(3*x.^2-5*x+2)./(x.^4+1);
[x;y]
Observese que el vector x lo hemos definido como un vector fila de longitud
9, lo que se puede comprobar con la instrucci
on length(x), y que hemos
omitido su presentaci
on en pantalla a
nadiendo ; al final de la lnea. Adem
as,
por la forma en la que hemos construido el vector y, este es tambien un vector
fila del mismo tama
no que x. Por u
ltimo, la salida la hemos presentado en
dos filas y nueve columnas
-2.0000
1.4118

-1.5000
2.6804

-1.0000
5.0000

-0.5000
4.9412

0
2.0000

0.5000
0.2353

...
...

Por lo general, se suele mostrar dicha tabla como nueve filas y dos columnas, lo que podemos hacer transponiendo la matriz [x; y] de tama
no 2 9
utilizando el operador . De esta forma, la instrucci
on [x;y] nos proporciona
-2.0000
-1.5000
-1.0000
-0.5000
0
0.5000
.
.
.

1.4118
2.6804
5.0000
4.9412
2.0000
0.2353
.
.
.

Transpuesta
El operador que utiliza Matlab para la transpuesta es el ap
ostrofe .
0
Si x es un vector fila, entonces x es un vector columna de la misma longitud
y viceversa. Si A es una matriz m n, entonces A0 es una matriz n m cuyas
columnas son las filas transpuestas de A

10

1.1.6.

Comandos b
asicos

El comando plot

3x2 5x + 2
Podemos obtener un esbozo de la gr
afica de la funci
on y =
en
x4 + 1
el intervalo 2 x 2, representando los nueve pares anteriores y uniendolos
con un segmento. Eso es precisamente lo que hace el comando plot (Podemos
ver una descripci
on de sus muchas opciones con la instrucci
on help plot.
Algunas de ellas las comentaremos en la pr
oxima secci
on), con lo que podemos
obtener el esbozo correspondiente con la instrucci
on plot(x,y)
El gr
afico resultante no parece muy suave, pero ello es debido a que hemos considerado u
nicamente nueve puntos, con un incremento de 0.5 en la
primera coordenada. Podemos obtener una gr
afica mucho m
as suave si cambiamos el incremento a 0.01 y representamos los 401 pares resultantes con las
instrucciones
x=-2:0.01:2;
y=(3*x.^2-5*x+2)./(x.^4+1);
plot(x,y)
Matlab escoge tanto las escalas como las marcas en cada uno de los ejes.
En la pr
oxima secci
on tambien aprenderemos a controlar estos elementos.
Gr
afica de una recta
Puesto que el comando plot une los puntos adyacentes con un segmento,
podemos representar una recta utilizando u
nicamente dos puntos. El siguiente
ejemplo representa la recta de ecuaci
on y = 3x 2 entre los puntos (1, 5)
y (3, 7)
x=[-1 3];
plot(x,3*x-2)
El comando plot admite m
as de dos vectores y as, podemos representar en una misma gr
afica la recta anterior y el eje X con la instrucci
on
plot(x,3*x-2,x,0*x)
Fijemonos especialmente en el cuarto par
ametro de la instrucci
on plot:
est
a escrito como 0*x, es decir, un vector cuyos elementos son todos nulos

1.1. Documentaci
on y representaciones

11

y que tiene el mismo tama


no que el vector x. Si el cuarto argumento hubiese
sido simplemente 0 habramos obtenido un mensaje de error, puesto que el
escalar 0 no tiene el mismo tama
no que el vector x con el que est
a relacionado. Adem
as, podemos representar de forma conjunta la recta anterior y
ambos ejes con la instrucci
on plot(x,3*x-2,x,0*x,[0 0],[-5 7])
Ttulo de un gr
afico
La instrucci
on title(Mi gr
afico) coloca el ttulo Mi gr
afico.en la parte superior de la representaci
on anterior. Si el ttulo que quisieramos mostrar
tuviese alg
un ap
ostrofe, dicho ap
ostrofe lo tendramos que escribir duplicado.
As, para titular un gr
afico como Las funciones f (x) y f 0 (x) podramos
utilizar la instrucci
on title(Las funciones f(x) y f(x)). En contra
de lo que pudiera parecer, s
olo aparecer
a un ap
ostrofe en el ttulo.
xlabel, ylabel, zlabel
La instrucci
on xlabel(Eje X) nos permite titular el eje X con lo indicado entre los ap
ostrofes y podemos hacer lo mismo con las instrucciones ylabel
y zlabel para los ejes Y y Z, respectivamente. Tambien podemos a
nadir en
un gr
afico cualquiera un cuadriculado y as, la representaci
on pedida al inicio
de esta subsecci
on la podemos obtener con las siguientes instrucciones:
x=-2:0.01:2;
y=(3*x.^2-5*x+2)./(x.^4+1);
plot(x,y)
xlabel(Eje X); ylabel(Eje Y);
title(y=(3x^2-5x+2)/(x^4+1));
grid on;
Destaquemos que la u
ltima lnea es la que nos ha permitido a
nadir un
cuadriculado y que tanto el * correspondiente al producto, como los .
correspondientes a la potenciaci
on y a la divisi
on matricial elemento a elemento, los hemos eliminado del ttulo.

12

1.1.7.

Comandos b
asicos

Correcciones en la lnea de comandos


   

Las teclas y nos permiten recuperar los comandos anteriormente


   
ejecutados para poder corregir errores en instrucciones largas sin tener que
volver a reescribirlas. Por ejemplo, si en la anterior definici
on de y hubieramos
escrito
y=(3*x.^2-5*x+2)./(x^4+1);
Matlab nos habra devuelto un mensaje de error. Ves por que?. En vez de
 
tener que reescribir la lnea completa, pulsando la tecla recuperamos la
 
lnea anterior sobre la lnea de comandos. Moviendo el cursor con las teclas
  
o o coloc
andolo con el bot
on izquierdo del rat
on, podramos situarnos
  
donde fuera preciso para poder corregir el error.

1.1.8.

Funciones cientficas

Matlab dispone de muchas funciones cientficas, de las cuales presentaremos las m


as comunes en un curso de C
alculo. En cualquier caso, x deber
a estar
definido anteriormente como un n
umero, un vector o una matriz. Si queremos una lista de las funciones cientficas elementales disponibles, podemos
ejecutar helpwin en la lnea de comandos (o seleccionando Help Window del
men
u Help), seleccionar la lnea matlab\elfun (abreviatura de Elementary
Functions), a continuaci
on pulsar sobre Go to Help Desk y, por u
ltimo, pulsar
sobre la palabra Index que aparece debajo de Matlab Functions.
Raz cuadrada
Matlab reconoce la funci
on
x.^(1/2)

x como sqrt(x), como x.^(0.5) y como

Funciones trigonom
etricas
Las funciones trigonometricas tienen en Matlab sus nombres est
andard,
pas
andoles los argumentos entre parentesis. De la misma forma, las funciones inversas de las funciones trigonometricas se denotan por la abreviaci
on

1.1. Documentaci
on y representaciones

13

est
andard y as, por ejemplo, la funci
on arctg x se denomina atan(x). De la
misma forma sin(x), cos(x^2), tan(x-1) y acos(x^3), denotan, respectivamente, a las funciones sen x, cos(x2 ), tg(x 1) y arccos(x3)
La funci
on exponencial
En Matlab, la funci
on exponencial ex se escribe como exp(x)
La funci
on logartmica
La funci
on ln x denominada logaritmo neperiano se escribe en Matlab como log(x), y la funci
on log10x denominada logaritmo decimal, como log10(x)

1.1.9.

Representaci
on de funciones por ramas

Algunas funciones no podemos definirlas a traves de una u


nica expresi
on,
como por ejemplo

x
tg x
si

4
4


f (x) =
si
<x
cos x

4
4
2

ex
si
<x3
2

Para representar una funci


on como esta, podemos concatenar cada uno de los
tramos:
x1=-pi/4:pi/200:pi/4; y1=tan(x1);
x2=pi/4:pi/200:pi/2; y2=cos(x2-pi/4);
x3=linspace(pi/2,3); y3=exp(x3);
x=[x1 x2 x3];
y=[y1 y2 y3];
plot(x,y);
title(y=tan x, -\pi/4 \leq x \leq \pi/4,y=cos(x-\pi/4),
\pi/4 < x \leq \pi/2,y=e^x, \pi/2 < x \leq 3);

14

Comandos b
asicos

Observa que hemos introducido el valor como pi, puesto que as es


como lo reconoce Matlab. Adem
as, debes a
nadir los nombres de cada uno
de los ejes. Por otra parte, puesto que Matlab acepta algunos comandos del
procesador de textos cientficos TEX, hemos utilizado el comando TEX \pi
para poner en el ttulo y el comando TEX \leq para . Tambien hemos
utilizado el comando linspace del que hablaremos m
as adelante en la secci
on
1.4.1

1.1.10.

Parametrizaci
on de una circunferencia

Tambien podemos representar curvas parametrizadas de la misma forma.


As, la circunferencia centrada en el punto (1, 2) y de radio 3, definida parametricamente por las ecuaciones x = 1 + 3 cos t, y = 2 + 3 sen t, sobre el
intervalo 0 t 2, la podemos representar mediante
t=0:2*pi/100:2*pi;
x=1+3*cos(t);
y=2+3*sin(t);
plot(x,y)
Tambien podramos combinar las tres u
ltimas lneas y reemplazarlas por
plot(1+3*cos(t),2*3*sin(t))
Debido a que las escalas de los ejes no son la misma, puede que el gr
afico
resultante no parezca el deseado. Para hacer que las escalas de ambos ejes
sean la misma, basta con ejecutar el comando axis equal

1.1.11.

Impresi
on

Gr
aficos
Para imprimir el gr
afico de una ventana gr
afica, pulsaremos sobre Print
del men
u File de dicha ventana.

15

1.1. Documentaci
on y representaciones

Salida num
erica
Hay varias formas de grabar e imprimir una salida numerica de Matlab.
Podemos utilizar el comando diary (ejecutar help diary para conocer m
as
detalles de dicho comando), podemos utilizar un bloc de notas (ejecutar help
notebook), o bien podemos pasar dicha salida numerica como un texto dentro
de una ventana gr
afica. Puesto que nuestro interes se centra en el empleo de
Matlab para las representaciones gr
aficas, utilizaremos este u
ltimo metodo
ser
a el utilizado en casi todos los casos. Detallaremos este procedimiento en
la siguiente secci
on.

1.1.12.

Ejercicios

Representar las siguientes funciones en los intervalos indicados, tomando


incrementos de, aproximadamente, 0.1 para la variable independiente. A
nadir
tu nombre y la definici
on de la funci
on correspondiente en el ttulo. Adem
as,
etiquetar cada uno de los ejes.
1. y = 2 sen 3x + 3 cos 2x en el intervalo 0 x 2
2. y = 3 ln(1 + x) en el intervalo

3. y =

4. s =

arctg x

1
x2
2

si 10 x 0

ex/3 1 si

0x4

2t
en el intervalo 3 t 3
1 + t2

5. La curva definida por las ecuaciones x =


intervalo 0 t 2

cos t
sen t
, y =
, sobre el
4
9

1
6. y = 3x+ en el intervalo 2 x 2. Puesto que es una recta, podemos
2
tomar para la variable independiente, u
nicamente el primer y el u
ltimo
valor, es decir 2 y 2

16

1.2.

Comandos b
asicos

Rutinas

Editor
Para acceder al editor de Matlab, pulsaremos sobre el icono situado m
as
a la izquierda de la barra de botones (que representa una p
agina en blanco con
una esquina doblada). Para acceder a un archivo .m que ya tenemos definido,
pulsaremos sobre el siguiente icono (que representa una carpeta amarilla) y,
en la ventana que aparecer
a, localizaremos nuestro archivo. Una vez dentro
del editor, podemos imprimir el contenido del archivo .m abierto sin m
as que
pulsar sobre Print dentro del men
u File de la barra de men
us del editor.

Ruta
Las rutinas contienen una lista de comandos de Matlab que se ejecutar
an,
en el orden en el que aparecen, cuando introduzcamos el nombre del archivo
correspondiente en la lnea de comandos. Todos los archivos tienen que tener
la extensi
on .m. Para ejecutar una rutina que hayamos construido, debemos
a
nadir la ruta donde la hayamos grabado. Para ello, podemos pulsar sobre Set
Path dentro del men
u File, a continuaci
on, sobre Add to Path del men
u Path
y finalmente escribiremos la ruta correspondiente; o bien, podemos ejecutar,
desde la lnea de comandos, la instrucci
on path(Ruta a a~
nadir, path),
lo que situar
a nuestra Ruta a a~
nadir como el primer elemento de las rutas en
las que Matlab busca las rutinas. Leer las rutinas desde la unidad A: suele
ser m
as lento que leerlas desde el subdirectorio work que existe en la carpeta
en la que hemos instalado Matlab (Dicho subdirectorio es el directorio por
defecto del editor de Matlab). En el caso en el que trabajemos sobre ese
subdirectorio, al acabar nuestra sesi
on, podemos trasladar nuestras rutinas
a un diskette o al correspondiente directorio donde queramos almacenarlas.
Con la instrucci
on help path puedes acceder a m
as informaci
on acerca de
c
omo Matlab busca los archivos.

1.2. Rutinas

1.2.1.

17

Ejemplo de rutina

Abre el editor, teclea la siguiente rutina y gr


abala con el nombre ejemplo.m
donde quieras, asegur
andote de que la ruta correspondiente est
a a
nadida. Ejecuta dicha rutina, simplemente llam
andola desde la lnea de comandos (
unicamente el nombre del archivo correspondiente, sin la extensi
on).
% Ejemplo de rutina. Esta es una l
nea de comentarios.
% Estas son las l
neas que aparecer
an cuando ejecutemos
% la instrucci
on help ejemplo desde la l
nea de comandos.
x=0:0.01:2*pi; % El punto y coma elimina la salida a pantalla.
y=1+sin(x);
yprima=cos(x);
plot(x,y,x,yprima);
title(Tu nombre, y=1+sen(x), yprima=cos(x));
xlabel(X); ylabel(Y);
La ventaja de los archivos .m es que uno puede f
acilmente corregirlos o
modificarlos. Por ejemplo, si con esta rutina, quisieramos representar esas dos
funciones, pero sobre el intervalo 0 x 4, podramos volver al editor,
modificar la lnea correspondiente y grabar de nuevo nuestra rutina sobreescribiendola. Una vez hecho esto, volviendo a la lnea de comandos y ejecutando
 
ejemplo (pulsando la tecla ), obtenemos la correspondiente modificaci
on
 
de nuestra figura. Si quisieramos haber hecho lo mismo pero, en vez de utilizar un archivo .m, ejecutando directamente las instrucciones desde la lnea
de comandos, tendramos que volver a ejecutar todas las cuatro instrucciones
en las que aparece el vector x.

1.2.2.

Algunas opciones del comando plot

A menudo, nos interesar


a representar en un mismo gr
afico m
as de una
funci
on. Para ello, en la rutina anterior hemos utilizado el comando plot que
admite tantas parejas de vectores como funciones queramos representar.

18

Comandos b
asicos

Trazos, marcas y colores


Despues de cada pareja de vectores, el comando plot acepta un tercer
argumento, entre ap
ostrofes, para indicar el tipo de trazo, el color y las marcas
elegidas. Puesto que con el comando help plot podemos obtener una lista
de las posibles elecciones para cada uno de ellos, no hace falta memorizarlas.
En la rutina anterior, la lnea
plot(x,y,x,yprima);
utiliza las opciones por defecto: trazo continuo, en color azul para la primera
gr
afica y verde para la segunda y cada punto marcado por .. Si quisieramos
que el rojo fuera el color para la primera gr
afica y el magenta para la segunda,
podramos sustituir dicha lnea por
plot(x,y,r,x,yprima,m);
Sin una impresora a color, quiz
a la elecci
on de diferentes colores no sea
suficientes para distinguirlas con claridad sobre el papel, con lo que puede ser
aconsejable utilizar diferentes trazos para cada curva. Con el siguiente comando podramos dibujar la primera curva con un trazo continuo y la segunda,
con un trazo discontinuo:
plot(x,y,-,x,yprima,:);
legend
Cuando, como en el caso anterior, tenemos representadas en un mismo
gr
afico varias curvas, puede ser u
til a
nadir un letrero con el se puedan identificar con claridad. As, si en la rutina anterior a
nadieramos la lnea
legend(1+sen(x),cos(x));
veremos como aparece un letrero de tales caractersticas. Debemos tener especial cuidado en que los nombres se correspondan con las funciones que
identifican, en el mismo orden en el que se representan. En el caso en el que
el lugar elegido por Matlab para colocarlo no sea el m
as adecuado, siempre podemos pulsar sobre el con el bot
on izquierdo del rat
on y, sin soltarlo,
arrastrarlo hasta la posici
on que queramos. Podemos acceder a m
as detalles

1.2. Rutinas

19

acerca de la utilizaci
on de este comando con la instrucci
on help legend
Ejes
En ocasiones, puede suceder que el subconjunto del plano en el que se nos
muestran nuestras representaciones no sea el adecuado o las escalas en los ejes
no guarden la proporci
on adecuada. Podemos indicar otro rect
angulo diferente
con la instrucci
on axis([xmin,xmax,ymin,ymax]); y podemos hacer que la
escala sea la misma en cada eje con la instrucci
on axis equal. Si queremos
m
as detalles acerca del manejo de estos comandos, s
olo tenemos que ejecutar
help axis
Marcas en los ejes
Si ejecutamos nuestra rutina anterior, podemos ver que las marcas del eje
X van desde el 0 hasta el 7 de unidad en unidad y las del eje Y van desde el
1 hasta el 2 de media unidad en media unidad. La siguiente lnea, a
nadida a
nuestra rutina despues del comando plot, hace que las marcas en el eje X y en
el eje Y sean los valores de los vectores que acompa
nan a XTick e YTick,
respectivamente. En dicha lnea aparece el par
ametro gca que identifica a los
ejes de la ventana gr
afica actual (es la abreviatura de Get Current Axes)
set(gca,XTick,[0:pi/2:2*pi],YTick,[-1:0.25:2]);
Textos
Supongamos que, en el gr
afico que nuestra anterior rutina genera, queremos etiquetar la gr
afica de la funci
on y = 1 + sen x como La funci
on y
la gr
afica de la funci
on y = cos x como La derivada, a
nadiendo una flecha
que, desde el texto correspondiente, apunte hacia la funci
on que identifica. A
la vista de la gr
afica, decidimos colocar la punta de la primera flecha en el
punto (, 1) y la de la segunda, en el punto (/2, 1). As, nuestros textos los
podemos a
nadir con las instrucciones

20

Comandos b
asicos

text(pi,1,\leftarrow La funci
on);
text(pi/2,0,\leftarrow La derivada);
Tambien podemos elegir la ubicaci
on del texto a a
nadir de forma interactiva. As, si la u
ltima de las lneas anteriores la sustituimos por
gtext(\leftarrow La derivada);
cuando esta se ejecute, en la ventana gr
afica de Matlab aparecer
a un cursor
en forma de cruz. Situando el centro de dicha cruz sobre la posici
on donde
queramos que comience el texto, este aparecer
a en cuanto pulsemos el bot
on
izquierdo del rat
on.
Indiquemos que, tanto en el par
ametro el comando gtext, como en el
tercer par
ametro de los comandos text anteriores, aparece la instrucci
on
\leftarrow de TEX que corresponde a una flecha apuntando hacia la izquierda.

Fuentes y tama
nos de letra
En los comandos title, text, gtext, xlabel, ylabel, zlabel y
set(gca,Xtick) tambien se puede especificar la fuente y el tama
no de
letra que se utilizar
a en el texto que se mostrar
a en la ventana gr
afica.
Aunque ahondar en m
as detalles se escapa de nuestro objetivo (podemos
consultar [2]) indiquemos, a modo de ejemplo, que el siguiente comando
muestra la etiqueta del eje X a 14 puntos, cuando el tama
no por defecto es
10 puntos:
x=-2:0.01:2; plot(x,x.^2);
xlabel(X,FontSize,14)
Para hacerse un verdadero experto en el manejo del comando plot, se
puede leer el captulo 2, titulado Basic Plotting, del manual Using Matlab
Graphics al que se puede acceder on-line sin m
as que ejecutar helpdesk y
seleccionarlo de la lista que nos aparece tras pulsar sobre Online Manuals.

1.2. Rutinas

1.2.3.

21

Ejercicios

1. Si juntamos todas las lneas anteriores, la rutina de ejemplo quedar


a (salvo los comentarios) de la siguiente forma:
x=0:0.01:2*pi;
y=1+sin(x);
yprima=cos(x);
plot(x,y,x,yprima);
title(Tu nombre, y=1+sen(x), yprima=cos(x));
xlabel(X); ylabel(Y);
legend(1+sen(x),cos(x));
set(gca,XTick,[0:pi/2:2*pi],YTick,[-1:0.25:2]);
text(pi,1,\leftarrow La funci
on);
gtext(\leftarrow La derivada);
Una vez que la hayas grabado, sobreescribiendola, con el nombre
ejemplo.m donde hayas elegido, y tras comprobar que la ruta correspondiente est
a a
nadida, ejec
utala con la instrucci
on ejemplo. Coloca el
cursor donde desees que empiece el texto correspondiente al comando
gtext y pulsa el bot
on izquierdo del rat
on. Si el letrero no aparece
en el lugar m
as indicado, col
ocalo donde quieras e imprime el gr
afico
resultante.
2. Escribe una rutina que, en un mismo gr
afico, represente las siguientes
tres funciones:
y = ln x en el intervalo 1/2 x 4
y = ex en el intervalo ln 2 x ln 4
y = x en el intervalo 1 x 4.5
Adem
as, que dicha rutina ponga la misma escala en ambos ejes con el
comando axis equal, que a
nada un ttulo al gr
afico y que etiquete los

22

Comandos b
asicos

ejes. Tambien que ponga las marcas en el eje X, desde 1 hasta 4.5 de
media unidad en media unidad, y las del eje Y , desde 1 hasta 4, de
media unidad en media unidad. Por u
ltimo, que a
nada un letrero y que,
en alg
un sitio, coloque el texto Simetra respecto a la recta y = x.
Imprime el gr
afico resultante.

1.3.

Funciones .m

Como ya hemos comentado, los archivos con extensi


on .m de Matlab nos
sirven para construir rutinas, pero tambien nos sirven para definir funciones
que generar
an una salida a partir de los par
ametros de entrada. Aunque muchas de las funciones elementales de Matlab son funciones precompiladas,
algunas est
an definidas como archivos .m; por ejemplo, linspace est
a definida como un archivo .m del que podemos ver su contenido ejecutando la
instrucci
on type linspace

1.3.1.

Ejemplo de funci
on .m

En el editor de Matlab, abre nuevo archivo .m y copia en el las siguientes


lneas
function y=ejemplo1(x)
% En las l
neas de comentarios puedes explicar qu
e hace
% esta funci
on, cu
al es su sintaxis, qu
e significan
% las variables de entrada, poner alg
un ejemplo, ...
y=x+x.^2-x.^4;
Graba este archivo con el nombre ejemplo1.m donde quieras. Esto define una funci
on llamada ejemplo1 que podemos utilizar como cualquier otra
funci
on elemental, como por ejemplo, la funci
on exponencial, cualquiera de
las funciones trigonometricas, . . . . El par
ametro x de entrada puede ser un
escalar, un vector o una matriz. En estos dos u
ltimos casos, la funci
on operar
a componente a componente puesto que as la hemos definido. En cualquier

23

1.3. Funciones .m

caso, el par
ametro de salida y ser
a del mismo tama
no que x. Si hemos escrito
esta funci
on correctamente, no hemos olvidado a
nadir la ruta correspondiente
y ejecutamos la instrucci
on
ejemplo1([1 3;0 -1;-2 2])

1
69

Matlab nos devuelve la matriz 0


1 . As, podemos obtener una
14 10
representaci
on de la funci
on y = x + x2 x4 junto con un cuadriculado
ejecutando las instrucciones
x=-2:0.01:2;
plot(x,ejemplo1);
grid on
Siempre que definas en Matlab una funci
on debes tener en cuenta que
la primera lnea siempre debe empezar por function y ajustarse al formato
de la primera lnea de esta funci
on de ejemplo; es decir, que la primera lnea
de cualquier funci
on de Matlab siempre debe ser
function variable de salida = nombre(variables de entrada)
Tambien debes tener en cuenta que el nombre del archivo .m correspondiente debe ser nombre y que la u
nica comunicaci
on entre el entorno de trabajo y la funci
on es a traves de las variables de entrada y de salida; es decir,
que cualquier otras variables que utilices en la funci
on y los c
alculos que se
realicen dentro de ella, no afectar
an a las variables del entorno de trabajo.
Adem
as, recuerda que, si se ejecuta la instrucci
on help nombre se mostrar
an
las correspondientes lneas de comentarios.

1.3.2.

Funci
on .m con dos salidas

En algunas ocasiones, puede que necesites m


as de una variable de salida.
En tal caso, las variables de salida deben ir encerradas entre corchetes. Por
ejemplo, puede que necesites una rutina que, dados dos n
umeros positivos a y
b, te devuelva el cociente c y el resto r de dividir a entre b, siendo 0 r < b.

24

Comandos b
asicos

Comprueba si la siguiente rutina hace eso:


function [c,r]=ejemplo2(a,b)
% a y b deben ser n
umeros positivos.
% c es el cociente de a/b y r es el resto.
q=0; r=a-b;
while r>=0
q=q+1;
r=r-b;
end
r=r+b;
El bucle while-end es una forma de controlar el flujo de una rutina de
Matlab: mientras la sentencia que sigue a while sea cierta, se ejecutar
an
las instrucciones que haya antes de end, y en cuanto no se cumpla la sentencia while, Matlab saltar
a a la primera sentencia que haya despues del
end. Aunque iremos viendo otros metodos para controlar el flujo, si quieres
m
as informaci
on acerca de los bucles while-end puedes consultar la ayuda
correspondiente con help while

1.3.3.

La funci
on fzero.m de Matlab

En general, encontrar las races de una funci


on cualquiera (es decir, los
puntos en los que dicha funci
on se anula) puede ser una tarea algebraica
demasiado complicada. Para ello, puedes utilizar la funci
on fzero de Matlab
que es un metodo numerico basado en el metodo de biparticiones. Aunque
puedes ver el contenido del archivo fzero.m ejecutando la instrucci
on type
fzero, no te desanimes por lo complicada que te pueda parecer: es una de
las rutinas elaboradas por las que has pagado al comprar Matlab. Si ves la
ayuda correspondiente a este comando, ejecutando la instrucci
on help fzero,
te dar
as cuenta que la primera de las variables de entrada es una funci
on y
la segunda variable de entrada es, o bien un n
umero que consiste en una
aproximaci
on que t
u haces del punto a encontrar, o bien es un vector de dos

1.3. Funciones .m

25

componentes tal que la funci


on cambia de signo en cada una de ellas. Por
ejemplo, la instrucci
on
r1=fzero(cos,1.5)
devuelve 1.5708 y la instrucci
on
r2=fzero(cos(x.^2),[0 sqrt(pi)])
devuelve la primera raz positiva de la funci
on cos(x2 ). Adem
as, cualquiera
de las instrucciones
r=fzero(ejemplo1,1.4)
r=fzero(x+x.^2-x.^4,1.4)
devuelve la raz positiva de la funci
on y = x + x2 x4 . El valor 1.4 de nuestra
aproximaci
on inicial est
a tomado a la vista del gr
afico de la funci
on ejemplo1
en el intervalo [2, 2]. La siguiente rutina devuelve el valor r entre las marcas
del eje X y adem
as, hemos incluido un cuadriculado en la gr
afica. En este
caso, hemos sustituido nuestra estimaci
on inicial por un vector de longitud
2 (el vector [1 2]), para el que la funci
on cambia de signo en cada una
de sus componentes. Recuerda que, si la funci
on es continua (y la funci
on
2
4
y = x + x x lo es), esa condici
on implica que el punto buscado estar
a en
dicho intervalo.
x=-2:0.01:2;
plot(x,ejemplo1(x));
r=fzero(ejemplo1,[1 2]);
title(La ra
z positiva de y=x+x^2-x^4);
grid on;
set(gca,Xtick,[-2:1 r 2])
Las componentes del vector [-2:1 r 2] de la u
ltima lnea, en la que se
a
naden las marcas en el eje X, deben estar ordenadas en orden creciente o
decreciente puesto que, en otro caso (por ejemplo, si el vector que hubieramos
puesto fuera [-2:2 r]), Matlab nos devolvera un mensaje de error.

26

Comandos b
asicos

1.3.4.

Definici
on de funciones por ramas

Consideremos el problema de determinar los puntos en los que se anula la


siguiente funci
on:

sen x 2x + 1 si 0 x 2
f (x) =

sen x + ex2 4 si 2 < x 4

Para poder utilizar el comando fzero anterior, tendramos que tener definida esta funci
on como una funci
on .m. Las siguientes lneas cumplen tal
objetivo utilizando operadores relacionales:
function y=atrozos(x)
% Una funci
on definida por ramas en [0,4]
y=(x>=0).*(x<=2).*(sin(x)-2*x+1)+...
(x>2).*(x<=4).*(sin(x)+exp(x-2)-4);
Graba este archivo como atrozos.m donde quieras.
Operadores relacionales
Para definir nuestra funci
on anterior hemos utilizado los operadores relacionales , y <. Puedes encontrar m
as detalles acerca de dichos operadores
ejecutando la instrucci
on help relop (abreviatura de relational operators).
El primero que hemos utilizado es , mayor o igual, que, aplicado sobre una
matriz, devuelve otra matriz del mismo tama
no cuyos elementos son 1 o 0
dependiendo de que la afirmaci
on correspondiente sea verdadera o falsa, respectivamente. Por ejemplo, si la matriz A es [1 3;0 -1;-2 2], entonces A>=0
devuelve la matriz [1 1;1 0;0 1], A<=2 devuelve la matriz [1 0;1 1;1 1]
y (A>=0).*(A<=2) devuelve la matriz [1 0;1 0;0 1]

La siguiente rutina representa la funci


on atrozos en el intervalo [0, 4] y
a
nade una malla al gr
afico:

1.3. Funciones .m

27

x=0:0.01:4;
plot(x,atrozos(x));
grid on;
A la vista de este gr
afico, esta funci
on tiene dos races: una, cercana a
1, y otra cercana a 3.5. Si a
nadimos las siguientes lneas a nuestra rutina, el
comando fzero las aproximar
a numericamente y las a
nadir
a a las marcas del
eje X:
z1=fzero(atrozos,1);
z2=fzero(atrozos,3.5);
set(gca,XTick,[0 .5 z1 1.5:0.5:3 z2 4]);

1.3.5.

La central de archivos Matlab

En todo el mundo hay muchos usuarios de Matlab. Algunos de ellos


has escritos sus propias rutinas de car
acter general que nos pueden interesar
(ahora o en un futuro). Todas estas rutinas est
an disponibles en la central de
intercambios de archivos de Matlab alojada en la p
agina de Mathworks (accesible desde http://www.mathworks.com/matlabcentral) y clasificadas por
categoras.
Nosotros vamos a necesitar dos de tales rutinas: la llamada arrow.m (escrita por Erik Johnson) y la llamada surfcv.m (escrita por Ruslan L. Davidchack). En este caso, en vez de buscarlas a traves de las categoras, podemos
acceder directamente a ellas tecleando el nombre de cada una de ellas en la
casilla de b
usqueda. Una vez localizadas, desc
argalas en tu ordenador pulsando sobre el bot
on correspondiente. Recuerda que para poder ejecutarlas desde
la lnea de comandos deber
as a
nadir a la ruta el directorio donde las hayas
guardado.

28

Comandos b
asicos

1.3.6.

Ejercicios

En los siguientes ejercicios, representa la correspondiente funci


on en un
intervalo suficientemente grande para poder dar una estimaci
on inicial de
sus races, utiliza dicha estimaci
on para aproximarlas numericamente con el
comando fzero e incluye dicha aproximaci
on entre las marcas del eje X.
1. y = x3 2x 5
2. y = cos(x2 1) x3
3. y = ln 4 x2 x
 

tg
x
si 0 x 2
1

2
8
4. f (x) =
 

x 3 cos x
si 2 < x 4
4
Esta funci
on deber
as definirla en un archivo .m

1.4.

Derivaci
on num
erica

En concepto de derivada de una funci


on es uno de los conceptos iniciales
de un curso de C
alculo Diferencial. Con ayuda de Matlab vamos a hacer una
aproximaci
on numerica de la derivada de una funci
on y tambien presentaremos otros comandos b
asicos para aproximar el m
aximo y el mnimo de una
funci
on en un intervalo.

1.4.1.

La primera derivada

Consideremos una funci


on y = f (x) derivable en un punto x. Si para un
incremento peque
no x de la variable independiente definimos el incremento
y
y = f (x + x) f (x), entonces el cociente
se aproxima al valor f 0 (x)
x
y dicha aproximaci
on es mejor cuanto menor sea x. Por tanto, debe ser evidente que la siguiente rutina genera una aproximaci
on, yprima, de la primera
derivada de la funci
on sen x en el intervalo [0, 2]

1.4. Derivaci
on numerica

29

x=linspace(0,2*pi,1001); % Este vector tiene 1001 componentes


y=sin(x); % Este vector tiene 1001 componentes
deltax=diff(x); % Este vector tiene 1000 componentes
deltay=diff(y); % Este vector tiene 1000 componentes
yprima=deltay./deltax; % Este vector tiene 1000 componentes
linspace
Siendo a y b dos n
umeros reales tales que a < b, y siendo n un n
umero
natural tal que n 2, las dos siguientes instrucciones de Matlab son equivalentes:
x=linspace(a,b,n)
x=a:(b-a)/(n-1):b
En cualquier caso, el vector x de salida es de longitud n. El tercer par
ametro del comando linspace es opcional, siendo 100 el valor por defecto. Es
decir, linspace(a,b) es lo mismo que linspace(a,b,100)
diff
Si, por ejemplo, el vector x=[a,b,c,d], la instrucci
on diff(x) devuelve
el vector [b-a,c-b,d-c]. Observa que la longitud del vector diff(x) es una
unidad menor que la longitud del vector x
diff(x,2)
La diferencia segunda es la diferencia de la diferencia, con lo que, siendo x el mismo vector anterior, la instrucci
on diff(x,2) devuelve el vector
[c-2b+a,d-2c+b]. De nuevo, observa que la longitud de este vector es dos
unidades menos que la longitud del vector x. De la misma forma, las instrucciones que se obtienen al sustituir 2 por 3, 4, . . . son similares a esta.

30

Comandos b
asicos

Volviendo a nuestra aproximaci


on de la primera derivada de la funci
on
sen x, como el vector diff(x) es constantemente igual a 2/1000 (es decir,
todas sus componentes son iguales a 2/1000), podemos evitar la construcci
on
del vector diff(x) y sustituir la u
ltima lnea por
yprima=deltay/2/pi*1000;
Podemos ver si el vector yprima se aproxima suficientemente al vector
cos x comparando sus componentes. Por supuesto, que comparar una a una
cada una de las 1000 componentes es una tarea muy pesada, pero podemos,
por ejemplo, comparar las 10 primeras, generando un par de columnas a traves
de las siguientes instrucciones (suponiendo que las anteriores ya han sido ejecutadas):
[yprima(1:10) cos(x(1:10))]
% Al transponer con transformamos las filas en columnas
Observa c
omo hemos utilizado aqu la concatenaci
on y la transposici
on.
Tambien podemos hacer una comparaci
on gr
afica utilizando el comando
plot. La siguiente rutina representa yprima como funci
on de x, con un trazo
continuo y en azul, en el mismo gr
afico en el que se representa, con un trazo
discontinuo y en verde, la funci
on y = cos x:
plot(x(1:1000),yprima,-,x,cos(x),:);
% Hemos utilizado x(1:1000) en vez de x
% puesto que cada par de vectores del comando
% plot debe tener la misma longitud.
legend(Derivada num
erica,Derivada);
title(Derivada num
erica y exacta de y=sen x);
xlabel(X); ylabel(Y)

31

1.4. Derivaci
on numerica

Ejecuta esta rutina y obtendr


as una evidencia gr
afica de que la derivada
de la funci
on sen x es la funci
on cos x. Las dos gr
aficas tambien las puedes
representar una al lado de otra como en la siguiente rutina:
subplot(1,2,1); % Divide la ventana gr
afica en dos.
plot(x(1:1000),yprima); % Esto ir
a en la primera subventana.
subplot(1,2,2); plot(x,cos(x)); % Y esto ir
a en la segunda.
subplot
Este comando nos permite dividir una ventana gr
afica en varias subventanas. Siendo m, n y k n
umeros naturales tales que 1 k mn, la instrucci
on subplot(m,n,k) divide la ventana gr
afica en mn subventanas y considera
abierta la k-esima, empezando a contar por al esquina superior izquierda y
contando de izquierda a derecha y de arriba a abajo.

1.4.2.

La segunda derivada

Siguiendo con la notaci


on anterior, la derivada segunda de una funci
on
y = f (x) la podemos aproximar por los cocientes
f 0 (x + x) f 0 (x)

f (x + 2x) f (x + x) f (x + x) f (x)

x
x

f (x + 2x) 2f (x + x) + f (x)
(x)2

En base a esto, la siguiente rutina genera una aproximaci


on, y2prima, de
x
la segunda derivada de la funci
on y = e , en el intervalo [0, 3]:
x=linspace(0,3,1001);
deltax=3/1000;
y2prima=diff(exp(x),2)/(deltax^2);

32

1.4.3.

Comandos b
asicos

Otros comandos b
asicos

Dado un vector x, en ocasiones nos puede interesar determinar el valor


de la suma de todas sus componentes, encontrar el valor de su componente
m
axima o mnima, ordenarlas o calcular la media o la mediana de ellas. Para
ello podemos utilizar los siguientes comandos:
sum
Siendo x un vector, la instrucci
on sum(x) devuelve el valor correspondiente
a la suma de sus componentes. Por ejemplo, si definimos un vector x como
x=[5 2 1 6 3], la instrucci
on sum(x) nos devuelve el valor 17
min
Siendo x un vector, la instrucci
on min(x) devuelve el valor mnimo de
sus componentes. Para el vector x del ejemplo anterior, la instrucci
on min(x)
devuelve 1. Tambien podemos conseguir que dicho comando devuelva adem
as
el lugar que dicha componente mnima ocupa en el vector x y as, la instrucci
on
[minimo,indice]=min(x) devuelve minimo=1, indice=3
max
Como puedes imaginar, este comando se comporta de forma similar al
anterior, calculando el correspondiente valor m
aximo.
sort
Siendo x un vector, la instrucci
on sort(x) nos permite ordenar sus componentes de forma creciente. As, siendo x el mismo vector anterior, la instrucci
on
sort(x) devuelve el vector [1 2 3 5 6]. Para obtener una ordenaci
on en orden decreciente, lo u
nico que tenemos que hacer es anadir la opcion descend
en la instrucci
on sort. As, sobre el mismo vector x anterior, la instrucci
on
sort(x,descend) devolvera el vector [6 5 3 2 1]

1.4. Derivaci
on numerica

33

mean
Siendo x un vector, la instrucci
on mean(x) devuelve la media de los valores
de sus componentes. De nuevo, para nuestro vector x la instrucci
on mean(x)
devuelve 3.4, al igual que la instrucci
on sum(x)/length(x)
median
Siendo x un vector, la instrucci
on median(x) nos permite obtener el valor mediano de sus componentes. As, siendo x el mismo vector anterior, la
instrucci
on median(x) devuelve 3
std
Siendo x un vector, la instrucci
on std(x) devuelve la desviaci
on tpica muestral de los valores de sus componentes. Considerando de nuevo, el
vector x anterior, la instrucci
on std(x) devuelve 2.0736, al igual que la
instrucci
on sqrt(sum((x-mean(x)).^2)/(length(x)-1)). Para calcular la
desviaci
on tpica podemos utilizar tanto la instrucci
on std(x,1) como la instrucci
on sqrt(sum((x-mean(x)).^2)/length(x)) con lo que obtendramos
el valor 1.8547
Tanto el comando diff y como cualquiera de estos comandos admiten
que el par
ametro de entrada, en vez de ser un vector, sea una matriz. En tal
caso, cada uno de estos comandos operara sobre cada una de las columnas
de dicha matriz.

1.4.4.

Mnimo de una funci


on

La siguiente rutina nos permite aproximar el valor mnimo de la funci


on
y = 2 cos(2x) 3 cos x en el intervalo [0, 2]. Es un interesante ejercicio de
C
alculo determinar exactamente el valor mnimo y comparar dicho resultado
con el que se obtiene de la aproximaci
on (se puede hacer de manera similar

34

Comandos b
asicos

para el m
aximo):
x=linspace(0:2*pi,700);
y=2*cos(2*x)-3*cos(x);
m=min(y)

1.4.5.

Ejercicios

1. Escribe una rutina que utilice el comando subplot para representar, en


x
el intervalo [0, 2], la derivada de la funci
on y = 2 sen(2x) 3 cos y su
2
correspondiente derivada numerica (utilizando un incremento cercano a
0.001), una al lado de la otra.
2. Igual que el ejercicio anterior, pero ahora queremos utilizar el comando
subplot para representar tanto la primera como la segunda derivada
y sus correspondientes aproximaciones numericas. El gr
afico resultante
debe tener cuatro subventanas.
x
3. Siguiendo con la funci
on y = 2 sen(2x) 3 cos , utiliza los comandos
2
min y max, y un incremento cercano a 0.001, para aproximar su valor
mnimo y m
aximo en el intervalo [0, 2]. Representa la funci
on en dicho
intervalo y a
nade los puntos en los que se obtienen el m
aximo y el
mnimo en las marcas del eje X y los valores m
aximo y mnimo de la
funci
on en el eje Y .

Captulo 2

Integrales
2.1.
2.1.1.

Areas
Estimaci
on gr
afica del
area

Representa la funci
on y = cos x en el intervalo [/2, /2], sobre un
cuadriculado en el que el lado de cada elemento de la cuadrcula mida 0.1.
Imprime el gr
afico resultante y determina una cota inferior y una cota superior para el valor del area encerrada por la gr
afica de dicha funci
on y el eje X,
contando el n
umero de cuadrados de la malla que se encuentran totalmente
contenidos en la regi
on y cu
antos tienen alguna zona com
un con ella, respectivamente. A mano, determina el valor exacto de dicho area.
Si representas la funci
on y = cos x en el intervalo [/2, /2], puedes observar que las marcas en el eje Y se encuentran espaciadas en la forma pedida,
pero no sucede lo mismo con las marcas del eje X. La siguiente rutina nos
proporciona el gr
afico solicitado aunque las etiquetas de las marcas del eje X
no queden en la forma m
as satisfactoria. De momento, no nos preocuparemos
de ese peque
no detalle, pero recuerda a
nadir un ttulo al gr
afico y los nombres
de los ejes.

36

Integrales

x=linspace(-pi/2,pi/2);
plot(x,cos(x));
grid on;
set(gca,XTick,-2:0.1:2);

2.1.2.

Definici
on de
area

El area de la regi
on encerrada por la gr
afica de una funci
on no negativa
y = f (x) definida en un intervalo [a, b] y el eje X la podemos aproximar por
n
X
f (xk ) x, siendo:
k=1

n un n
umero natural,
x =

ba
,
n

xk = a + k x, k = 0, 1 . . . , n, una partici
on uniforme de [a, b], y
xk puntos cualquiera pertenecientes a cada intervalo [xk1 , xk ].
El area, si existe, coincide con el lmite de estas sumas cuando n .
La siguiente rutina, una vez especificados los valores de a, b y n, y suponiendo que la funci
on f es una funci
on precompilada de Matlab o est
a definida
en un archivo .m como la funci
on f.m, realiza los c
alculos correspondientes
cuando los puntos xk son los puntos medios de cada subintervalo:
deltax=(b-a)/n; % Longitud de cada subintervalo
xestrella=a+deltax/2:deltax:b-deltax/2; % Puntos medios
y=f(xestrella);
A=sum(y)*deltax
En la u
ltima lnea hemos utilizado que
n
X
k=1

f (xk ) x =

n
X
k=1

f (xk )

n
n
X
ba
ba X
=

f (xk ) = x
f (xk )
n
n
k=1

k=1


2.1. Areas

37

Si quisieramos utilizar, en vez del punto medio de cada subintervalo, el extremo izquierdo, sustituiramos la segunda lnea anterior por
xestrella=a:deltax:b-deltax;
y si quisieramos el extremo derecho, por
xestrella=a+deltax:deltax:b;

2.1.3.

Polinomios

Los polinomios juegan un papel importante a la hora de calcular la area


encerrada bajo la gr
afica de funciones de la forma y = xm definidas en [0, 1] y
el eje X. Por ejemplo, si queremos dar una estimaci
on del area determinada
2
por el eje X y la gr
afica de la funci
on y = x definida en [0, 1], podemos tomar
una partici
on uniforme en n subintervalos y considerar el extremo derecho de
cada uno de ellos. As, la longitud de cada subintervalo sera x = 1/n, los
puntos xk seran xk = k/n con k = 1, 2, . . . , n, y por tanto,
A

n
X
k=1

f (xk ) x =

n
n
1 X k2
1 X 2
=
k
n
n2
n3
k=1

(2.1)

k=1

Para expresar esta suma en terminos de n podemos utilizar la igualdad


n
X
k=1

k2 =

n(n + 1)(2n + 1)
6

(2.2)

con lo que la ecuaci


on (2.1) quedara
A

n(n + 1)(2n + 1) n 1

6n3
3

y podemos concluir que el area indicada vale 1/3.


Es un simple ejercicio utilizar inducci
on matem
atica para probar que
la igualdad (2.2) se verifica para todo n 1, pero, en primer lugar, uno

38

Integrales

se puede preguntar c
omo se ha obtenido dicha f
ormula. Si recordamos que
n
X
n(n + 1)
nos permite expresar la suma de los primeros n
umeros nak=
2
k=1
turales a traves de un polinomio de orden 2, uno puede pensar que la suma
de los cuadrados de los primeros n
umeros naturales puede ser expresable a
traves de un polinomio de orden 3 y podemos utilizar Matlab para calcularlo.
Para ello, expliquemos brevemente c
omo trabaja Matlab con los polinomios.
Un polinomio es una expresi
on de la forma
p(x) = an xn + an1 xn1 + . . . + a2 x2 + a1 x + a0
en la cual nos encontramos u
nicamente con potencias naturales de x. Los
coeficientes ai son n
umeros reales y el m
aximo valor de n tal que an 6= 0
se denomina grado del polinomio. As, un polinomio queda perfectamente
determinado a traves de sus coeficientes. En Matlab podemos representar
cualquier polinomio a traves del vector fila formado por sus coeficientes ledos
de izquierda a derecha. En el caso en el que haya algunos coeficientes nulos,
no debemos olvidar incluirlos en dicho vector. Por ejemplo, el polinomio

p(x) = x5 + 2 x4 3 x2 + 2 x + 12
lo podemos representar a traves del vector p=[1 2 0 -3 sqrt(2) 12]. No
debes confundir este vector con el vector q=[1 2 -3 sqrt(2) 12], puesto
que este representa al polinomio

q(x) = x4 + 2 x3 3 x2 + 2 x + 12
polyval
Un polinomio expresado a traves de su vector de coeficientes lo podemos
evaluar a utilizando el comando polyval. Por ejemplo, podemos representar
el polinomio p(x) anterior, en el intervalo [2, 2], a traves de la siguiente rutina:


2.1. Areas

39

p=[1 2 0 -3 sqrt(2) 12];


x=linspace(-2,2);
y=polyval(p,x);
plot(x,y)
Utilizando el metodo descrito en el captulo anterior, la siguiente rutina
nos permite obtener la misma representaci
on:
x=linspace(-2,2);
plot(x,x.^5+2*x.^4-3*x.^2+sqrt(2)*x+12)
La ventaja de utilizar polyval se hace patente al considerar polinomios de
un grado elevado. Por ejemplo, la siguiente rutina representa, en el intervalo
30
X
xk
[0.8, 0.8], el polinomio de grado 30 definido como p(x) =
k
k=1

x=linspace(-0.8,0.8);
n=30:-1:1; % Los grados deben decrecer
p=[1./n 0]; % El t
ermino independiente es cero
plot(x,polyval(p,x))
Compara esta rutina con la que utilizaras bas
andote en el metodo anterior.

polyfit
Este comando nos permite determinar los coeficientes del polinomio mnimocuadr
atico que mejor se ajusta a un conjunto de puntos. Por ejemplo, en
nuestro contexto, queremos encontrar un polinomio de grado 3 de tal forma
n
X
que su valor para cada n N sea
k2 . En cualquier libro de algebra elemenk=1

tal, podemos encontrar la igualdad (2.2), es decir, que el polinomio buscado

40

Integrales

es
q(x) =

x(x + 1)(2x + 1)
1
1
1
= x3 + x2 + x
6
3
2
6

(2.3)

Nuestro objetivo es encontrar un metodo que podamos aplicar, no s


olo a
la determinaci
on de dicho polinomio para la suma de los cuadrados, sino que
tambien sea aplicable a la suma de las potencias de orden 3, de orden 4, . . . .
De hecho, un polinomio de orden n viene determinado por sus valores en n+1
puntos, puesto que eso conducira a un sistema compatible y determinado de
n + 1 ecuaciones lineales con n + 1 inc
ognitas. En particular, el polinomio de
grado 3 buscado, viene determinado por sus valores en 4 puntos. Podemos
elegir los correspondientes valores en 1, 2, 3 y 4 que deben ser, respectivamente, 12 = 1, 12 + 22 = 5, 12 + 22 + 32 = 14 y 12 + 22 + 32 + 42 = 30. La
siguiente rutina, en la que se utilizan los comandos cumsum y format rat que
se describir
an a continuaci
on, nos permite determinar dicho polinomio q:
n=1:4;
s=cumsum(n.^2); % s=[1 5 14 30]
format rat
q=polyfit(n,s,3) % El polinomio de grado 3 buscado
La salida es un vector de longitud 4 que corresponde a los coeficientes
del polinomio de grado 3 buscado. Seg
un la ecuaci
on (2.3) dicho vector debe
ser [1/3 , 1/2 , 1/6 , 0]. Si ejecutamos la rutina anterior observamos que la
salida de Matlab es el vector [1/3 , 1/2 , 1/6 , ]. La u
ltima componente
de este vector aparece como * indicando que es valor muy pr
oximo a cero
(ejecuta la instrucci
on q(4) para ver su valor), con lo que podemos sospechar
que los coeficientes son los apuntados anteriormente y probar la correspondiente igualdad utilizando inducci
on matem
atica.
Matlab no nos ha devuelto los valores exactos de los coeficientes por
las estimaciones que realiza al utilizar el comando polyfit, que est
a basado en la divisi
on izquierda matricial. Como esta operaci
on la analizaremos


2.1. Areas

41

con m
as detalle en el u
ltimo captulo, tambien revisaremos all este metodo
para conseguir los correspondientes resultados exactos utilizando el paquete
simb
olico.
cumsum
Dado un vector x, la instrucci
on cumsum(x) construye un vector de la
misma longitud que x en el que sus componentes son las sumas acumuladas
de las componentes de x, empezando por la izquierda. En nuestro caso, puesto
que el vector de entrada es [1 4 9 16], el vector cumsum([1 4 9 16]) es el
vector [1 5 14 30]
format
Por defecto, el formato de salida de Matlab para valores numericos es
el de cinco dgitos significativos en notaci
on cientfica de punto flotante. El
formato de Matlab para valores racionales se denota por rat. Puedes obtener
m
as informaci
on de los formatos de salida de Matlab para valores numericos
con la instrucci
on help format

2.1.4.

Area
bajo y = x + x2 x4

Aproxima el area de la regi


on encerrada por la gr
afica de la funci
on
2
4
y = x x + x y el eje X utilizando una partici
on uniforme en 100 subintervalos. Representa en un gr
afico dicha funci
on sobre un cuadrcula en la
que el lado de cada uno de sus elementos mida 0.1. Aproxima gr
aficamente el
valor del area y compara con el resultado obtenido.
La gr
afica de esta funci
on corta al eje X en dos puntos (ver secci
on 1.3.3).
Aunque el primero de dichos puntos de corte es el (0, 0), determinar algebraicamente las coordenadas del segundo puede ser, como comentabamos, una
tarea complicada, por lo que, lo m
as conveniente es trabajar con la aproximaci
on numerica que nos proporcionaba el comando fzero. La siguiente rutina,

42

Integrales

que utiliza la funci


on ejemplo1 definida en la p
agina 22, realiza la aproximaci
on correspondiente considerando el punto medio de cada uno de los 100
subintervalos:
n=100; a=0; b=fzero(ejemplo1,[1 2]);
deltax=(b-a)/n;
xestrella=a+deltax/2:deltax:b-deltax/2;
y=ejemplo1(xestrella);
A=sum(y)*deltax
plot([xestrella b],[y 0]);
set(gca,Xtick,[a:0.1:b],YTick,[0:0.1:1.4]);
grid on;
El valor 1.4 lo hemos elegido a la vista de la gr
afica de la funci
on.

2.1.5.

Area
bajo y = e2x

Da una estimaci
on del area bajo al gr
afica de la funci
on y = e2x definida
en el intervalo [1, 3] utilizando una partici
on uniforme en 150 subintervalos
y considerando el punto medio de cada uno de ellos. Calcula, a mano, el valor
exacto de dicho area y comp
aralo con el resultado obtenido.
n=150; a=-1; b=3;
deltax=(b-a)/n;
xestrella=a+deltax/2:deltax:b-deltax/2;
y=exp(-2*xestrella);
A=sum(y)*deltax
Como la funci
on y = e2x es decreciente, obtenemos una estimaci
on por
exceso del area si consideramos, en vez de los puntos medios de cada subintervalo, el extremo izquierdo de cada uno de ellos y, obtenemos una estimaci
on
por defecto, si consideramos el extremo derecho. Incluso podemos una estima-


2.1. Areas

43

ci
on mejor si consideramos la media de estas dos estimaciones. La siguiente
rutina calcula dichas aproximaciones y adem
as proporciona una cota superior
del error:
n=150; a=-1; b=3;
deltax=(b-a)/n;
xizq=a:deltax:b-deltax; % Extremos izquierdos
xdch=a+deltax:deltax:b; % Extremos derechos
Aexceso=sum(exp(-2*xizq))*deltax; % Aproximaci
on por exceso
Adefecto=sum(exp(-2*xdch))*deltax; % Aproximaci
on por defecto
A=(Aexceso+Adefecto)/2
ErrorMaximo=(Aexceso-Adefecto)/2
Si queremos representar la gr
afica de esta funci
on y a
nadir los resultados
de estos c
alculos en el ttulo, podemos utilizar el comando num2str como se
ilustra a continuaci
on.

2.1.6.

Area
bajo y =

1 + x3

Aproxima el valor del area bajo la gr


afica de la funci
o n y = 1 + x3
definida en el intervalo [1, 2] utilizando una partici
on uniforme en 200 subintervalos, dando una cota superior del error. Devuelve los resultados correspondientes como parte de un gr
afico en el que se represente dicha funci
on.
num2str
Este comando se utiliza para convertir un valor numerico, que se pasa como par
ametro de entrada, a una cadena de caracteres formada por los dgitos
que corresponden a dicho valor. La siguiente rutina ilustra c
omo se puede
utilizar en nuestro caso:
n=200; a=-1; b=2;
deltax=(b-a)/n;

44

Integrales

xizq=a:deltax:b-deltax; % Extremos izquierdos


xdch=a+deltax:deltax:b; % Extremos derechos
Aexceso=sum(sqrt(1+xdch.^3))*deltax; % Aprox. por exceso
Adefecto=sum(sqrt(1+xizq.^3))*deltax; % Aprox. por defecto
A=(Aexceso+Adefecto)/2;
ErrorMaximo=(Aexceso-Adefecto)/2;
x=a:deltax:b; % Puntos para la gr
afica
plot(x,sqrt(1+x.^3));
xlabel(X); ylabel(Y);
T1=[Con un error m
aximo de , num2str(ErrorMaximo), , ...];
T2=[... el a
rea bajo y=(1+x^3)^{1/2}];
T3=[en el intervalo [-1,2] es , num2str(A);]
title(T1); % Sin ap
ostrofes
text(0,0.5,T2); % Sin ap
ostrofes
text(0,0.3,T3); % Sin ap
ostrofes

Observa que, en este caso, puesto que la funci


on y = 1 + x3 es creciente,
obtenemos una estimaci
on por exceso del area correspondiente al considerar
el extremo derecho de cada subintervalo y una estimaci
on por defecto al considerar el extremo izquierdo. Por otra parte, observa tambien c
omo hemos
construido los vectores T1, T2 y T3, cuyas componentes son caracteres, y los
hemos utilizado en las instrucciones title y text. Las coordenadas de inicio
de los textos correspondientes a las dos u
ltimas lneas las hemos elegido a la
vista de la gr
afica de la funci
on.

Por otra parte, en este caso no es posible comprobar a mano los resultados,

puesto que no es posible encontrar una primitiva de la funci


on y = 1 + x3 en
terminos de las funciones elementales para poder aplicar la regla de Barrow.
Como esta complicaci
on no es exclusiva de este ejemplo, es conveniente el
empleo de metodos numericos de integraci
on (como el utilizado u otros m
as
elaborados que se presentar
an m
as adelante) para aproximar dicho area.


2.1. Areas

2.1.7.

45

Ejercicios

1. Representa, sobre un cuadriculado en el que los lados de los elementos de


1
la cuadrcula midan 0.1, la funci
on y = 5 en el intervalo [1, 4]. Coloca
x
las marcas de los ejes espaciados entre s a una distancia de 0.1 unidades,
imprime el gr
afico resultante y, contando los elementos correspondientes
de la cuadrcula, determina una cota superior y una cota inferior para
el area de la regi
on delimitada por el eje X y la gr
afica de la funci
on
1
y = 5 definida en el intervalo [1, 4]. Determina, a mano, el valor exacto
x
de dicho area y compara con los resultados obtenidos.
2. Igual que el ejercicio anterior, pero para la funci
on y = sec x tg x
definida en el intervalo [0, /3].
3. Utiliza el comando polyval para representar cada uno de los siguientes
polinomios en los intervalos indicados:
a) p(x) = 1
b) q(x) =

40
X
xk
k=1

4.

1 4
1 6
1 2
x +
x
x , en el intervalo [3, 3]
2
24
720
k2

, en el intervalo [1, 1]

a) Escribe una rutina en la que utilices el comando polyfit para


determinar el polinomio de grado 4 tal que su valor en cada n
umero natural n coincida con el valor de la suma de las n primeras
potencias de orden 3. Copia el resultado y pegalo como la u
ltima
lnea del c
odigo de dicha rutina. Imprime la rutina y en el folio
correspondiente realiza las siguientes partes de este ejercicio.
b) Demuestra que la f
ormula

n
1 X 3
k se corresponde con la aproxin4
k=1

maci
on del area bajo la gr
afica de la funci
on y = x3 en el intervalo
[0, 1], cuando utilizamos una partici
on uniforme en n subintervalos
y consideramos el extremo derecho de cada uno de ellos.

46

Integrales

c) Utiliza el polinomio del apartado a) y la f


ormula del apartado b)
para encontrar el lmite de estas aproximaciones cuando n .
Este lmite es el area bajo la gr
afica de la funci
on y = x3 definida
en el intervalo [0, 1]
5. Igual que el ejercicio anterior, pero para la funci
on y = x4 definida en
el intervalo [0, 1]
6. Utiliza el comando fzero para aproximar la raz positiva r de la funci
on
4
6
y = 2 x + 4 x 2 x . Representa dicha funci
on en el intervalo [0, r] y
aproxima el area de la regi
on encerrada por la gr
afica de la funci
on
4
6
y = 2 x + 4 x 2 x en dicho intervalo utilizando una partici
on con
100 subintervalos y considerando el punto medio de cada uno de ellos.
Calcula a mano dicho valor y compara con el resultado obtenido.
1
7. Escribe una rutina que represente la funci
on y = 2 definida en el
x
intervalo [1, 2] y aproxime el area de la regi
on determinada por el eje X
y la gr
afica de dicha funci
on utilizando una partici
on uniforme en 100
subintervalos considerando el punto medio de cada uno de ellos. Para
ver todo el area, necesitar
as utilizar el comando axis para asegurarte
que la escala en el eje Y empieza en cero. Comprueba, a mano, los
resultados obtenidos.
8. Igual que el ejercicio anterior pero utilizando los extremos izquierdo y
derecho de cada uno de los subintervalos. Utilizando que dicha funci
on
es decreciente, da una cota superior del error, incluyendo los resultados
como parte del gr
afico.
9. Representa la funci
on y = sen2 x en el intervalo [0, ]. Puesto que esta
funci
on es simetrica respecto a /2, el area de la regi
on encerrada por
el eje X y la gr
afica de la funci
on es el doble del area de la regi
on
2
determinada por eje X y la gr
afica de la funci
on y = sen x definida en
el intervalo [0, /2]. Teniendo en cuenta que, en el intervalo [0, /2], la
funci
on es creciente (podras justificarlo?), aproxima el valor de esta

47

2.2. La integral definida

segunda regi
on utilizando una partici
on uniforme del intervalo [0, /2]
en 150 subintervalos, dando una cota superior del error. Con su ayuda,
determina una aproximaci
on al valor del area de la primera regi
on. Cu
al
sera una cota superior para el error de esta otra aproximaci
on? Incluye
los resultados obtenidos como parte del gr
afico y compruebalos a mano.
10. La funci
on y = sen(x2 ) no admite una primitiva expresable en terminos
de las funciones elementales.

a) Representala en el intervalo [ 0, ]
b) Divide dicho intervalo en dos de tal forma que la funci
on sea
mon
otona en cada uno de ellos y justifica tu respuesta. Aproxima cada una de las areas resultantes dividiendo cada una de las
regiones en 200 subintervalos, dando cotas superiores para el error
en cada una de dichas aproximaciones.
c) Aproxima el area de la regi
on encerrada por el eje X y la gr
afica

de dicha funci
on definida en el intervalo [ 0, ] utilizando los resultados de los apartados anteriores. Cu
al sera una cota superior
del error en esta u
ltima aproximaci
on?. Las respuestas incl
uyelas
como parte del gr
afico resultante.

2.2.

La integral definida

De la misma forma anterior, dada una funci


on y = f (x), que no tenga
necesariamente que ser no negativa, definida en un intervalo [a, b], el valor
Z b
n
X
f (x) dx lo podemos aproximar por
f (xk ) x, siendo:
a

k=1

n un n
umero natural,
x =

ba
,
n

xk = a + k x, k = 0, 1 . . . , n, una partici
on uniforme de [a, b], y

48

Integrales

xk puntos cualquiera pertenecientes a cada intervalo [xk1 , xk ].


La siguiente rutina, una vez especificados los valores de a, b y n, y suponiendo que la funci
on f es una funci
on precompilada de Matlab o est
a definida
en un archivo .m como la funci
on f.m, realiza los c
alculos correspondientes

cuando los puntos xk son los puntos medios de cada subintervalo:


deltax=(b-a)/n; % Longitud de cada subintervalo
xestrella=a+deltax/2:deltax:b-deltax/2; % Puntos medios
y=f(xestrella);
IntDef=sum(y)*deltax
En la u
ltima lnea hemos utilizado que
n
X
k=1

f (xk )

x =

n
X
k=1

f (xk )

n
n
X
ba
ba X

f (xk ) = x
f (xk )
n
n
k=1

k=1

Si quisieramos utilizar, en vez del punto medio de cada subintervalo, el extremo izquierdo, sustituiramos la segunda lnea anterior por
xestrella=a:deltax:b-deltax;
y si quisieramos el extremo derecho, por
xestrella=a+deltax:deltax:b;

2.2.1.

Ejemplo de la integral definida

1
Representa la funci
on y =
en el intervalo [1, 3]. Aproxima el va2x 7
Z 3
1
lor de
dx considerando una partici
on uniforme de [1, 3] en 100
1 2x 7
subintervalos y utilizando la regla del punto medio (es decir, considerando
el punto medio de cada subintervalo). A
nade el valor correspondiente como

49

2.2. La integral definida

parte del gr
afico resultante.
a=-1; b=3; n=100;
deltax=(b-a)/n; % Longitud de cada subintervalo
xestrella=a+deltax/2:deltax:b-deltax/2; % Puntos medios
y=1./(2*xestrella-7);
IntDef=sum(y)*deltax
plot(xestrella,y); xlabel(X); ylabel(Y);
T=[\int {-1}^3 (1/(2x-7)) dx \approx ,num2str(IntDef)];
title(y=1/(2x-7). Regla del punto medio con n=100);
text(0.5,-0.5,T);
En este caso, hemos utilizado el comando TEX \approx para el signo y
R
el comando \int para a
nadir el smbolo en el texto. El -1 que acompa
na a
R
\int despues de corresponde al subndice del signo y aparece entre llaves
por estar compuesto por m
as de un car
acter. El 3 que aparece tras el signo
^, corresponde al superndice.
Como en este caso, esta funci
on es negativa, ejecutando la instrucci
on
-IntDef podemos determinar el valor del area de la regi
on determinada por
1
eje X y la gr
afica de la funci
on y =
definida en el intervalo [1, 3]
2x 7

2.2.2.

Ejercicios

1. Representa la funci
on y = x3 5 x2 + 7 x 3 en el intervalo [0, 3]. AproZ 3

xima el valor de
x3 5 x2 + 7 x 3 dx considerando una partici
on
0

uniforme de [0, 3] en 100 subintervalos y utilizando la regla del punto medio (es decir, considerando el punto medio de cada subintervalo).
Z 3

A
nade el valor de
x3 5 x2 + 7 x 3 dx y el valor correspondiente
0

al area de la regi
on determinada por el eje X y la gr
afica de la funci
on
3
2
y = x 5 x + 7 x 3 en el intervalo [0, 3], como parte del gr
afico resul-

50

Integrales

tante. Determina a mano dichos valores y compara con los resultados


obtenidos.
2. Igual que el ejercicio anterior pero utilizando
a) la regla del extremo izquierdo
b) la regla del extremo derecho
3. Igual que el primer ejercicio pero para la funci
on y = arctg x definida

en el intervalo [ 3, 1], considerando una partici


on uniforme en 150
subintervalos y utilizando las tres reglas anteriores. Recuerda que el
nombre Matlab de la funci
on arctg es atan

2.3.

El teorema fundamental del C


alculo

El teorema fundamental del C


alculo pone de manifiestoZ que, siendo f una
x
funci
on continua en un intervalo [a, b], la funci
on F (x) =
f (t) dt definida
a

en dicho intervalo es la primitiva de f (es decir, que F 0 = f ) que cumple


que F (a) = 0. En ese sentido, se dice que los procesos de derivaci
on y de
integraci
on son inversos. Veamos c
omo ilustrar este resultado con ayuda de
Matlab.

2.3.1.

Una interpretaci
on num
erica

Podemos entender que los comandos diff y cumsum son las versiones discretas de los operadores de derivaci
on e integraci
on, respectivamente, con lo
que es de esperar que esten tambien relacionados de la misma forma. Esta
relaci
on se observa claramente al verificar que, siendo f un vector de Matlab,
el vector g de la siguiente rutina coincide con el:
F=[0 cumsum(f)];
g=diff(F)

51

2.3. El teorema fundamental del C


alculo

La forma m
as sencilla de comprobar que g=f puede consistir en la construcci
on a mano del vector g considerando como f un vector relativamente
peque
no (por ejemplo, de longitud 3)
La funci
on PrimIzq.m
La siguiente rutina, una vez almacenada como PrimIzq.m en un directorio
cuya ruta este debidamente a
nadida, toma una funci
on f definida en un intervalo [a, b] y un n
umero natural n indicando el n
umero de subintervalos de la
misma longitud en los que queremos dividirlo y utiliza el extremo izquierdo
de
Z
x

cada uno de ellos para aproximar los valores de la funci


on F (x) =

f (t) dt

ba
con k = 0, 1, . . . , n. Recuerda que dicha funci
on
en los puntos a + k
n
F es la primitiva de f tal que F (a) = 0. Puedes pensar c
omo retocar esta
rutina para aproximar los valores de dicha funci
on si, en vez de considerar
el extremo derecho de cada subintervalo, consideramos el punto medio o el
extremo derecho.

Para que sea m


as f
acil representar la aproximaci
on de la funci
on F , esta
ba
rutina devuelve tanto los puntos de la forma a + k
con k = 0, 1, . . . , n,
n
como el valor aproximado de F en dichos puntos. Observa que el valor de la
aproximaci
on de F en el punto a corresponde al primer elemento del vector
F y que lo hemos definido como 0
function [F,x]=PrimIzq(f,a,b,n)
% n es un n
umero natural.
% Esta rutina aproxima el valor de
% la primitiva F de la funci
on f de entrada,
% tal que F(a)=0, en el extremo izquierdo
% de cada uno de los subintervalos indicados.
f=fcnchk(f,vectorized);
deltax=(b-a)/n;
x=a:deltax:b;

52

Integrales

xestrella=x(1:length(x)-1);% Los extremos izquierdos.


y=f(xestrella);
F=[0 cumsum(y)*deltax];
fcnchk
Este comando nos permite utilizar funciones definidas por una cadena de
caracteres como par
ametros de otras. En nuestro caso, si no utiliz
aramos esta instrucci
on, s
olo podramos aplicar PrimIzq a funciones precompiladas o
a funciones definidas a traves de un archivo .m. Por ejemplo, para aplicar

PrimIzq a la funci
on f (x) = sen(x2 ) en el intervalo [ 0, ], dividiendolo de
forma uniforme en 200 subintervalos, podemos ejecutar la instrucci
on
[F,x]=PrimIzq(sin(x^2),0,sqrt(pi),200);
mientras que sin fcnchk tendramos que definir la funci
on f (x) = sen(x2 ) a
traves de un archivo .m, llamarlo por ejemplo como senxcuadr.m, y ejecutar
la instrucci
on
[F,x]=PrimIzq(senxcuadr,0,sqrt(pi),200);
Adem
as, con la opci
on vectorized de la instrucci
on fcnchk, podemos
evitar tener que escribir el punto delante del operador ^
Para aclarar un poco m
as el efecto del comando fcnchk, supongamos que
quisieramos aplicar PrimIzq a la funci
on f (x) = sen x en el intervalo [0, ],
dividiendolo de forma uniforme en 200 subintervalos. Utilizando nuestra rutina tal y como est
a definida, podemos ejecutar la instrucci
on
[F,x]=PrimIzq(sin(x),0,pi,200);
mientras que sin fcnchk la instrucci
on tendra que ser

53

2.3. El teorema fundamental del C


alculo

[F,x]=PrimIzq(sin,0,pi,200);
En resumen, con la instrucci
on fcnchk, la rutina PrimIzq la podemos
aplicar tanto a una funci
on definida a traves de una cadena de caracteres entre
ap
ostrofes, como a una funci
on precompilada o incluso a una funci
on definida
a traves de un archivo .m. Sin el comando fcnchk, s
olo podramos utilizar
PrimIzq para funciones definidas a traves de un archivo .m o a funciones
precompiladas, utilizando la correspondiente cadena de caracteres encerrada
entre ap
ostrofes. As, cualquiera de las instrucciones anteriores son admisibles
para nuestra rutina PrimIzq.
Ejemplos utilizando PrimIzq
La siguiente rutina nos sirve para comparar gr
aficamente la aproximaci
on
3
que hace PrimIzq de la primitiva de la funci
on f (x) = x en el intervalo [1, 3],
dividiendolo de forma uniforme en 200 subintervalos, con la primitiva exacta
x4
1
que es la funci
on F (x) =

4
4
[F,x]=PrimIzq(x^3,1,3,200);
plot(x,F,x,x.^4/4-1/4)
Las gr
aficas parecen casi iguales. Otro indicio a favor de que PrimIzq
aproxima la primitiva puede ser la comprobaci
on de que
Z su derivada coinx

F 0 (x) = ex

et dt, entonces

cide con la funci


on de partida. Por ejemplo, si F (x) =

[F,x]=PrimIzq(exp(-x.^2),-3,3,600);
Fprima=[diff(F)./diff(x)];
% Para poder usar el comando plot con los vectores
% Fprima y x, hace falta que tengan la misma longitud
% por ello eliminaremos la u
ltima componente del vector x

54

Integrales

x(length(x))=[];
plot(x,Fprima,x,exp(-x.^2))
Este resultado es impresionante: parece que s
olo hay representada una
gr
afica porque la segunda (en verde) coincide exactamente con la primera (en
azul).

2.3.2.

Ejercicios

1. Escribe una rutina .m que acepte como par


ametros de entrada una funci
on f , dos n
umeros reales a y b tales que a < b y un n
umero natural n,
Rb
y que devuelva una aproximaci
on del valor de a f (x) dx, considerando
una partici
on uniforme del intervalo [a, b] en n subintervalos y considerando el punto medio de cada uno de ellos. Utiliza dicha rutina para
Z
aproximar el valor de
sen(x2 ) dx para n = 200. El valor de dicha
0

aproximaci
on incl
uyela como parte de un gr
afico en el que representa la
gr
afica de la funci
on del integrando.

2. Igual que el ejercicio anterior pero, en vez de considerar el punto medio


de cada subintervalo, considera el extremo de la derecha.
tanto
Z 2Utiliza
p
esta rutina como la anterior para aproximar el valor de
1 + x3 dx
1

para n = 300. Los valores resultantes incl


uyelos como parte de un gr
afico
en el que representa la gr
afica de la funci
on del integrando.
Z x
3. Utiliza la rutina PrimIzq para aproximar la funci
on F (x) =
sen(t2 ) dt
0

en el intervalo [ 0, ] cuando consideramos una partici


on uniforme de
dicho intervalo en 400 subintervalos. Utiliza el comando diff para aproximar los valores de la derivada de F en dicho intervalo. Adem
as, re2
presenta en un mismo gr
afico las funciones sen(x ) y F (x) y en otro, la
funci
on F y la aproximaci
on de su derivada, identificando conveniente
cada una de las funciones mediante un letrero.

55

2.4. Derivaci
on e integraci
on simb
olica

4. Utiliza la rutina PrimIzq para aproximar la funci


on F (x) =

ceil(t) dt

en el intervalo [0, 6] cuando consideramos una partici


on uniforme del
mismo en 600 subintervalos. Utiliza el comando help para averiguar
con que funci
on estamos trabajando y representala en un gr
afico junto
con la funci
on F . Imprime el gr
afico resultante y, en la misma hoja,
calcula a mano una expresi
on para la funci
on F en dicho intervalo. Como la funci
on ceil no es continua, el teorema fundamental del c
alculo
podra no ser aplicable. En que puntos la funci
on F no es derivable?
Z x
sen t
5. Utiliza la rutina PrimIzq para aproximar la funci
on F (x) =
dt
t
0
en el intervalo [0, 6] cuando consideramos una partici
on uniforme de
dicho intervalo en 2000 subintervalos. Para evitar el problema de la
sen t
en el origen, utiliza un archivo
evaluaci
on de la funci
on f (t) =
t
.m en el que se extienda, de forma continua, dicha funci
on a todo R (es
sen t
decir, en el que se defina como f (0) = lm
= 1). Representa en un
t0
t
mismo gr
afico la funci
on F y la extensi
on de la funci
on f en el intervalo
[0, 6].
6. Escribe una rutina llamada PrimMed.m que acepte como par
ametros de
entrada una funci
on f , dos n
umeros reales a y b tales que a < b y
un n
umero natural n que indicar
a el n
umero de subintervalos en los
que queremos dividir el intervalo [a, b] y que, utilizando el punto medio
de cada Zuno de esos subintervalos, aproxime los valores de la funci
on
x
ba
F (x) =
f (t) dt en los puntos a + k
con k = 0, 1, . . . , n. Una
n
a
vez construida, repite los ejercicios anteriores utilizando PrimMed en vez
de PrimIzq y compara los resultados obtenidos.

2.4.

Derivaci
on e integraci
on simb
olica

El paquete simb
olico incluido en Matlab est
a constituido por un conjunto
de m
as de 100 funciones a traves de las cuales podemos acceder al n
ucleo

56

Integrales

de Maple1 . En la Gua del Usuario de Mathworks titulada Symbolic Math


Toolbox, y a la que podemos acceder on-line a traves del comando helpdesk,
podemos encontrar una detallada introducci
on al paquete simb
olico. Tambien
podemos acceder a un tutorial interactivo ejecutando la instrucci
on demos y

seleccionando Symbolic Math. El te proporcionar


a informaci
on acerca de m
as
detalles de los que necesitaremos de momento.

2.4.1.

Obtenci
on de ayuda

El comando help tambien es la herramienta m


as u
til para obtener ayuda
acerca de las funciones simb
olicas de Matlab. En el caso en el que estemos
interesados en determinado comando simb
olico y haya un comando numerico
con el mismo nombre, al ejecutar la instrucci
on help seguida del nombre de
dicho comando, Matlab nos mostrar
a la ayuda de la versi
on numerica pero
tambien nos indicar
a que existe una versi
on sobrecargada del mismo, entendiendo dicha sobrecarga como la existencia de una versi
on simb
olica. Para
obtener la ayuda de la correspondiente versi
on simb
olica tendremos que ejecutar la instrucci
on help sym/ seguida del nombre del comando en cuesti
on.
As sucede, por ejemplo, con el comando diff del que podemos obtener la ayuda correspondiente a la versi
on simb
olica con la instrucci
on help sym/diff
En esta primera introducci
on, adem
as de diff, presentaremos las funciones simb
olicas syms, pretty, simplify, int, ezplot y subs, de las cuales
podemos obtener la correspondiente ayuda con los comandos help syms, help
int, . . .

Maple es una marca registrada de Maplesoft, 615 Kumpf Drive, Waterloo, Ontario,
Canada, N2V 1K8, Tfno: 519-747-2373
email: info@maplesoft.com
P
agina Web: www.maplesoft.com

2.4. Derivaci
on e integraci
on simb
olica

57

syms
La forma m
as sencilla de definir variables simb
olicas, por ejemplo x, t y
a, es ejecutando el comando
syms x t a
Una vez definidas dichas variables de forma simb
olica, las instrucciones
f=x/(1+x^2)
g=x^2*sin(x)/(1+x^6)
h=sqrt(a*t-t^2)
x
x2 sen x
nos permiten definir las funciones simb
olicas f (x) =
,
g(x)
=
y
1 + x2
1 + x6

h(t) = at t2 respectivamente, conteniendo esta u


ltima funci
on un par
ametro a. Para visualizarlas en una forma m
as parecida a la habitual, podemos
utilizar el comando pretty. Prueba con los comandos pretty(f), pretty(g)
y pretty(h)

2.4.2.

Derivaci
on simb
olica

Para la funci
on f (x) anterior, podemos obtener su derivada f 0 (x), sin m
as
que ejecutar la instrucci
on
fprima=diff(f)
De forma an
aloga, para obtener la tercera derivada de f (x), podemos utilizar la instrucci
on
ftercera=diff(f,3)
Si, en la expresi
on de la funci
on a derivar, hubiera m
as variables impli-

58

Integrales

cadas, entonces tendramos que indicar respecto a cu


al de ellas queremos
calcular su derivada. As, por ejemplo, podemos determinar la derivada de la
funci
on h(t) definida anteriormente, ejecutando la instrucci
on
hsegunda=diff(h,t,2)
Podemos simplificar esta expresi
on de la funci
on hsegunda ejecutando la
instrucci
on
hsegunda=simplify(hsegunda)
que aparecer
a de una forma m
as parecida a la habitual con el comando
pretty(hsegunda)

2.4.3.

Integraci
on simb
olica

Para determinar una primitiva de funciones como las definidas anteriormente, podemos utilizar el comando int. En general, siendo f una expresi
on
simb
olica de la funci
on f (x), la instrucci
on
F=int(f)
nos proporciona una expresi
on simb
olica para la funci
on F (x) =
De forma an
aloga, la instrucci
on

f (x) dx.

int(f,0,1)
nos proporciona el valor de
trucci
on

f (x) dx. Para la funci


on g(x) anterior, la ins-

2.4. Derivaci
on e integraci
on simb
olica

59

G=int(g)
nos devuelve una expresi
on en terminos de otras funciones m
as complejas, y
tampoco nos proporciona una respuesta satisfactoria si, para determinar el
Z /2
g(x) dx, utilizamos el comando
valor de
0

int(g,0,pi/2)
Para la funci
on H(t) =
trucci
on

h(t) dt tenemos un poco m


as de suerte. La ins-

H=int(h)
nos devuelve una expresi
on simb
olica en la que aparecen tanto el par
ametro
a como la variable independiente y. Observa que en dicha instrucci
on no hemos tenido que indicar la variable respecto a la cual queramos integrar y, sin
embargo, hemos obtenido el resultado deseado. Eso se debe a que Matlab
sigue un cierto orden a la hora de determinar que variable considerar
a como
variable independiente: elige como tal aquella cuya primera letra sea la m
as
cercana a x, con y teniendo preferencia sobre w y z sobre v, manteniendo el mismo esquema para las letras may
usculas. En resumen, el orden
es
x y w z v u ...a X Y W Z V U ...A
En el caso en el que el nombre de las variables tengan m
as letras, el orden
para las siguientes letras es el alfabetico, teniendo preferencia las may
usculas
sobre las min
usculas, es decir
A B ...Z a b ...z
Como regla general, en el caso en el que haya m
as de una variable, es

60

Integrales

mucho m
as seguro indicar explcitamente cu
al es la variable independiente.
Por defecto, Matlab considera las variables simb
olicas definidas como
n
umeros complejos. La expresi
on simb
olica que se ofrece para la funci
on anteriormente definida podra simplificarse ligeramente si supieramos que el
par
ametro a es un n
umero real positivo. En nuestro caso, podemos ejecutar las instrucciones
syms a positive
H=int(h)
Para determinar el valor de

h(t) dt podemos utilizar la instrucci


on
0

b=int(h,t,0,a)

ezplot
La forma m
as sencilla de representar funciones simb
olicas es utilizando el
comando ezplot. Por defecto, este comando representa la funci
on que le indiquemos cuando la variable independiente recorre el intervalo [2, 2], a
nade
una etiqueta en el eje horizontal con el nombre de dicha variable y tambien
coloca el nombre de la funci
on como ttulo del gr
afico resultante. Recuerda
que puedes cambiar todas estas opciones con los comandos, axis, xlabel y
title. Por ejemplo, los comandos
ezplot(f)
ezplot(f,[-1 1])
representan la funci
on f (x) en el intervalo [2, 2] y en el intervalo [1, 1],
respectivamente. Un cambio en el intervalo en el que representamos la funci
on
correspondiente puede hacer que vare sustancialmente el aspecto de la gr
afica.

2.4. Derivaci
on e integraci
on simb
olica

61

Si intentamos ejecutar el comando ezplot(h) para representar la funci


on h
definida anteriormente, el programa nos devuelve un mensaje de error puesto
que es imposible representar dicha funci
on sin conocer el valor del par
ametro
a. Podemos asignar valores concretos a las variables simb
olicas que aparezcan
en una expresi
on utilizando el comando subs.
subs
La instrucci
on subs(expresi
on,variable,valor) sustituir
a, en la expresi
on indicada en su primer par
ametro, la variable indicada en el segundo
par
ametro por el valor indicado en el tercero. Si la llamada a este comando se
realiza u
nicamente con dos par
ametros, Matlab buscar
a la variable a sustituir utilizando la misma regla anterior.
As, podemos representar funci
on h2 (t), correspondiente a la funci
on h
anterior para el par
ametro a = 2, definiendola como
h2=subs(h,a,2)
Podemos obtener su representaci
on con el comando ezplot(h2,[0 2]) o
bien
t=0:0.1:2;
y=subs(h2,t);
plot(t,y)
Tambien podemos obtener una primitiva de la funci
on h2 (t), con las instrucciones
H2=subs(H,a,2)
H2estrella=int(h2,t,0,x)

62

Integrales

cuyas gr
aficas podemos representar en un mismo gr
afico con las instrucciones
ezplot(H2)
hold on
ezplot(H2estrella)
axis([0 2 -pi/4 pi/2])
Observa que, aunque las funciones H2 y H2 son primitivas de h2 , no son
exactamente iguales: H2 (0) = /4 y H2 (0) = 0

2.4.4.

Ejercicios

1. Siendo f (x) = x5 x2 + 1, utiliza el paquete simb


olico para determinar
0
la funci
on F (x) tal que F (x) = f (x) y adem
as cumpla que F (0) = 0.
Con los comandos subplot y ezplot, representa dichas funciones en
dos subventanas distintas, cuando la variable independiente recorre el
intervalo [1, 1].
2. Siendo g(x) = 50 sen5 x cos4 x sen(2x), encuentra la primitiva G(x) de
dicha funci
on tal que G(0) = 1. Con el comando subplot representa
en tres subventanas distintas, una encima de otra, las funciones G(x),
g(x) y g 0 (x) en el intervalo [0, 2] y, a mano, etiqueta los puntos del
gr
afico en los que G tiene un punto de inflexi
on.

2.5.

Integraci
on num
erica

Matlab es una excelente herramienta para aproximar, mediante metodos


numericos, valores de integrales definidas. Antes de presentar algunos de los
comandos que se basan en estas tecnicas, veamos c
omo construir nuestras
propias rutinas para implementar la regla de Simpson y la regla del punto
medio.

63

2.5. Integraci
on numerica

2.5.1.

La regla de Simpson

Consideremos una funci


on y = f (x) definida en un intervalo [a, b] y que
dicho intervalo est
a dividido, de forma uniforme, en n subintervalos iguales,
ba
siendo n un n
umero par (n = 2m con m N). Denotando por h =
a la
n
longitud de cada subintervalo, y por xk = a + k h con k = 0, 1, . . . , n a los
extremos de cada subintervalo, la regla de Simpson nos permite aproximar el
Z b
valor de
f (x) dx por la suma
a

h
Sn =
3

f (a) + 4

m
X
i=1

f (x2i1 ) + 2

m1
X
i=1

f (x2i) + f (b)

As, dados los valores a y b, siendo n un n


umero par y dada una funci
on
f , la siguiente rutina permitira calcular la aproximaci
on correspondiente:
h=(b-a)/n;
x=a:h:b;
y=f(x);
Sn=h/3*(y(1)+4*sum(y(2:2:n))+2*sum(y(3:2:n-1))+y(n+1))
Observa que, siguiendo este esquema, el valor de f (xk ) queda almacenado en la (k + 1)-esima componente del vector y=f(x), con lo que los valores
de f (x2i1 ) se encuentran en y(2i) y los valores de f (x2i) se encuentran en
y(2i+1). Teniendo en esto en cuenta, podemos adaptar la rutina anterior
Z 1
4
para, por ejemplo, aproximar el valor de
dx cuando consideramos
2
0 1+x
una divisi
on uniforme del intervalo [0, 1] en 10 subintervalos iguales:
a=0; b=1; n=10;
h=(b-a)/n;
x=a:h:b;
y=4./(1+x.^2)
Sn=h/3*(y(1)+4*sum(y(2:2:n))+2*sum(y(3:2:n-1))+y(n+1))

64

Integrales

En la pr
actica, puede suceder que, en vez de disponer de una funci
on f (x)
tal que el area que queremos calcular venga delimitado por su gr
afica, u
nicamente dispongamos de ciertos valores de ella. Por ejemplo, supongamos que
queremos determinar el area de una regi
on S cerrada y acotada y supongamos que conocemos la longitud de cada segmento (o segmentos) en los que se
interseca dicha regi
on con las perpendiculares a cierta recta de referencia R,
para los valores comprendidos entre x = a y x = b. Considerando un n
umero impar de dichas perpendiculares y estando igualmente separadas entre s,
podemos utilizar la regla de Simpson para aproximar dicho area por
!
m
m1
X
X
h
L(a) + 4
L(x2i1 ) + 2
L(x2i ) + L(b)
Sn =
3
i=1

i=1

siendo h la distancia que separa a cada una de las perpendiculares anteriores,


y L(x) la longitud del segmento (o segmentos) en los que se interseca la perpendicular a R que pasa por el punto x con la regi
on S.
Por ejemplo, supongamos que, debido al intenso tr
afico que cierta calle
recta tiene que soportar, en un tramo de ella se ha abierto un socav
on sin
ninguna forma definida. Para saber cu
anto asfalto comprar para realizar la
reparaci
on, queremos aproximar el valor del area de la regi
on correspondiente. Utilizando una de las aceras como la recta R de referencia anteriormente
descrita, realizamos 15 mediciones separadas entre s por 10 centmetros obteniendo las siguientes longitudes:
0 28 46 57 61 57 45 33 27 24 23 22 21 20 0
Podemos adaptar la rutina anterior para aproximar el area de dicha regi
on
utilizando el metodo de Simpson, considerando el correspondiente de longitud
140 cm de la recta de referencia dividida en n = 14 subintervalos iguales, cada
uno de ellos de longitud 10 cm:

2.5. Integraci
on numerica

65

L=[0 28 46 57 61 57 45 33 27 24 23 22 21 20 0]; %en cm.


Sn=140/14/3*(L(1)+4*sum(L(2:2:14))+2*sum(L(3:2:13))+L(15))
con lo que Matlab nos devuelve 0.47 m2 como aproximaci
on del area del
socav
on que debemos asfaltar.
Para obtener una mayor precisi
on en nuestra estimaci
on podemos considerar una divisi
on m
as fina de dicho segmento perteneciente a la recta de
referencia. Por ejemplo, supongamos que lo dividimos en 150 o 1500 subintervalos iguales y que, para llevar a cabo las 151 o 1501 mediciones correspondientes, disponemos una m
aquina. En el caso anterior, teclear los 15 valores
que se haban obtenido como resultado de nuestras mediciones iniciales no
nos ha costado ning
un esfuerzo, pero no podemos decir lo mismo si tenemos
que introducir los datos de las 151 o 1501 mediciones.
Para evitarnos tan tediosa labor, nuestra m
aquina dispone de un dispositivo que genera en un diskette, un archivo ASCII de nombre datos.txt en
el que quedan almacenados los resultados de las mediciones. Para incorporar
los datos de este archivo a nuestra rutina, podemos utilizar el comando load
seg
un se muestra en la siguiente rutina:
L=load(a:\datos.txt); n=length(L)-1;
Sn=140/n/3*(L(1)+4*sum(L(2:2:n))+2*sum(L(3:2:n-1))+L(n+1))
load
En la rutina anterior, el comando load recupera los datos del archivo correspondiente y los almacena como las componentes del vector L. El archivo
indicado como argumento del comando load debe ser un archivo ASCII con
cada uno de los datos separados por un espacio. Si los datos de dicho archivo vinieran indicados en una columna, el vector L sera un vector columna.
Puedes obtener m
as detalles de este comando con la instrucci
on help load

66

Integrales

2.5.2.

La regla del punto medio con estimaci


on del error
1

4
dx, con un error que no
1
+
x2
0
supere 0.0001, utilizando una partici
on uniforme del intervalo [a, b] = [0, 1]
4
y considerando el valor de la funci
on f (x) =
en el punto medio de
1 + x2
cada uno de los subintervalos correspondientes. Puesto que la funci
on f es
dos veces derivable, sabemos que, considerando una partici
on uniforme en n
subintervalos, el error que cometemos en la aproximaci
on correspondiente, lo
podemos acotar superiormente por
Supongamos que queremos aproximar

|E|

K (b a)3
24 n2

siendo K un n
umero real positivo tal que |f 00 (x)| K, para todo x [a, b].
Puesto que, en este caso, queremos que el error no supere a 0.0001, podemos
utilizar dicha desigualdad para encontrar el n
umero n de subintervalos que
debemos considerar, obteniendo que el valor buscado debe cumplir que
r
K (b a)3 104
n
24
As, para poder utilizar esta desigualdad para determinar el valor de n, nos
hace falta conocer una cota superior de los valores de la funci
on |f 00 (x)| en el
4
intervalo [0, 1]. En este caso, la funci
on f (x) =
, con lo que su derivada
1 + x2
8 (3x2 1)
segunda es f 00 (x) =
. Puesto que una representaci
on gr
afica de la
(1 + x2 )3
00
funci
on |f (x)| nos puede servir para intuir un valor para dicha cota superior,
vamos a construir una rutina que, tras representar la gr
afica correspondiente
y utilizando el comando input, nos permita introducir nuestra estimaci
on de
dicha cota superior, determine de forma autom
atica el valor de n y proporcione
la aproximaci
on correspondiente.
input
Este comando detiene la ejecuci
on de la rutina correspondiente hasta la
introducci
on en la lnea de comandos de un valor solicitado.

2.5. Integraci
on numerica

67

a=0; b=1;
x=linspace(a,b);
plot(x,abs(8*(3*x.^2-1)./((1+x.^2).^3)))
K=input(Introduce tu estimaci
on. K <= );
% La cadena de caracteres entre ap
ostrofes
% aparecer
a en la l
nea de comandos antes del cursor
n=ceil(sqrt(K*(b-a)^3*10^4/24))
% A continuaci
on, utilizamos la regla del punto medio
h=(b-a)/n;
xestrella=a+h/2:h:b-h/2; % Esos son los puntos medios
y=4./(1+xestrella.^2);
Mn=sum(y)*h

abs
El comando abs nos proporciona el valor absoluto.
ceil
El comando ceil nos proporciona la aproximaci
on por exceso al entero
m
as cercano. Para m
as detalles de esta funci
on, o de otras relacionadas con
ella como por ejemplo floor, round y fix, puedes utilizar el comando help
Tambien podemos aproximar numericamente el valor de K utilizando el
comando max. As, en el caso en el que optemos por esta posibilidad, la rutina
podra quedar de la siguiente forma:
a=0; b=1;
x=linspace(a,b);
K=max(abs(8*(3*x.^2-1)./((1+x.^2).^3)));
n=ceil(sqrt(K*(b-a)^3*10^4/24))

68

Integrales

h=(b-a)/n;
xestrella=a+h/2:h:b-h/2;
y=4./(1+xestrella.^2);
Mn=sum(y)*h

2.5.3.

La regla del punto medio como funci


on .m

La siguiente funci
on .m implementa el metodo anterior para cualquier
funci
on f , para cualquier intervalo [a, b] y para cualquier cota del error, introducidos por el usuario. Como en la secci
on anterior, utilizaremos la f
ormula
anteriormente indicada para determinar el mnimo valor de n de subintervalos
iguales en los que tenemos que dividir el intervalo [a, b] para poder garantizar
Z b
que el error que cometemos al aproximar el valor de
f (x) dx considerando
a

el punto medio de cada subintervalo no supere la cota del error indicada. La


cota superior de la funci
on |f 00 (x)| en el intervalo [a, b] la aproximaremos utilizando el comando max. Adem
as, esta funci
on .m nos devolver
a dos valores: el
correspondiente a la estimaci
on del valor de la integral definida y el de n
umero
n de subintervalos utilizados. Indiquemos que debemos tener cierto cuidado
con el empleo de esta funci
on puesto que no dispone de ninguna forma de
controlar el error que se comete en la estimaci
on de una cota para el valor
absoluto de la derivada segunda.
function [A,n]=PMedio(func,a,b,E)
% PMedio(func,a,b,E) devuelve una aproximaci
on del valor
% de la integral definida en el intervalo [a,b] de la funci
on.
% indicada por la cadena de caracteres func.
% a<b son los valores de los l
mites de integraci
on,
% y el valor E>0 es el error m
aximo permitido
% Por ejemplo, para aproximar el valor de la integral entre
% 0 y 1 de la funci
on f(x)=x^2 con un error que no supere una
% cent
esima, podemos utilizar PMedio(x^2,0,1,0.01)

2.5. Integraci
on numerica

69

if nargin<4 error(Faltan argumentos en PMedio(func,a,b,E))


end
func=fcnchk(func,vectorized);
x=a:0.001:b; % Este vector lo usaremos para estimar K
y=func(x);
fsegunda=diff(y,2)/(0.001^2); % Aprox. derivada segunda
K=max(abs(fsegunda)); % Estimaci
on de K
n=ceil(sqrt(K*(b-a)^3/E/24)); % N
umero m
nimo de intervalos
h=(b-a)/n; % Longitud de cada subintervalo
xestrella=a+h/2:h:b-h/2; % Sus puntos medios
f=func(xestrella);
A=sum(f)*h; % La aproximaci
on pedida
En esta rutina, inmediatamente despues de las lneas de comentarios, hemos incorporado un mecanismo de control para garantizar que el n
umero de
par
ametros empleados sea el esperado. La llamada a una funci
on cualquiera
se detiene si se realiza con un n
umero mayor de par
ametros para el que dicha
funci
on est
a definida. Por tanto, al devolver un mensaje de error y detenerse
la ejecuci
on cuando el n
umero de par
ametros es inferior al esperado, estamos
forzando al usuario, mediante una estructura del tipo if-end y con la ayuda
de los comandos nargin y error, a que utilice exactamente tantos par
ametros
como espera nuestra funci
on.
nargin
El comando nargin cuenta el n
umero de par
ametros utilizados. Dentro de
la estructura if-end utilizada en la rutina anterior, se ejecutar
a la instrucci
on
siguiente a nargin si el n
umero de par
ametros es inferior a 4.
error
Este comando devuelve en la ventana de comandos el mensaje que, entre
ap
ostrofes, figura como su argumento y detiene por completo la ejecuci
on de

70

Integrales

la funci
on correspondiente.
Si ejecutamos la instrucci
on [A,n]=PMedio(sin(6*x),0,pi,0.001),
Matlab nos devuelve A=2.5432e-016 y n=216. A mano, uno puede comprobar que el valor de esa integral es 0, que K = 36 es una cota superior del
valor absoluto de la derivada segunda y que el mnimo n
umero de intervalos
con el que podemos garantizar que, utilizando el metodo del punto medio, el
error no supera una milesima es n = 216

2.5.4.

Integradores num
ericos de Matlab

Entre los metodos numericos disponibles en Matlab para calcular integrales definidas, presentaremos los llamados quad y quad8. Ambos comandos
admiten que la funci
on a integrar sea una funci
on precompilada, o bien este definida a traves de un archivo .m o a traves de fcnchk. Recuerda que puedes
obtener m
as informaci
on acerca de cada uno de ellos con el comando help o
incluso ver su contenido con el comando type.
quad
Este metodo se basa en una tecnica recursiva tomando la f
ormula de Simpson como base de la misma. La siguiente instrucci
on determinara una aproximaci
on de la funci
on correspondiente a la cadena de caracteres func en
el intervalo [a, b] con un error que no supera a 0.0001:
quad(func,a,b,0.0001)
Por ejemplo, el valor

/4

sen x dx lo podemos aproximar mediante

quad(sin,0,pi/4,0.0001)
Si la funci
on a integrar no es una funci
on precompilada ni est
a definida en

71

2.5. Integraci
on numerica

un archivo .m, debemos


Z 1utilizar el comando fcnchk. Por ejemplo, podemos
4
aproximar el valor de
dx, con un error que no supere a 0.0001 a
1
+
x2
0
traves de la instrucci
on
quad(fcnchk(4/(1+x^2),vectorized),0,1,0.0001)
quad8
Esta instrucci
on, cuya sintaxis es completamente an
aloga a la anterior,
implementa el metodo que se obtiene, con la misma tecnica recursiva anterior,
cuando se toma como base una f
ormula de Newton Cotes de 8 puntos, de
mayor exactitud que la de Simpson.

2.5.5.

Ejercicios

1. Escribe una funci


on llamada Trapez.m tal que, al ejecutar la instrucci
on
[A,n]=Trapez(func,a,b,E)

obtengamos la aproximaci
on del valor de

func(x) dx que proporciona

el metodo de los trapecios cuando consideramos una partici


on uniforme del intervalo [a, b] en n subintervalos iguales, determinando el valor
de n sabiendo que el podemos acotar el error cometido a traves de la
desigualdad
K (b a)3
|E|
12 n2
siendo K un n
umero real positivo tal que |f 00 (x)| K, para todo
x [a, b] y utilizando derivaci
on numerica para aproximar K. Una vez
construida esta funci
on, utilzala para aproximar el valor de las siguientes integrales con un error menor que 0.0001 y devuelve tanto el valor de
dicha aproximaci
on como el n
umero de intervalos utilizados como parte
de un gr
afico en el que representes la funci
on del integrando. Adem
as,

72

Integrales

tambien utiliza quad y quad8 para aproximarlas e incluye tambien los


valores obtenidos en la gr
afica anterior.
a)

/2

sen(5x) dx

b)

ex dx

Z 2
x
c)
f (x) dx siendo f (x) =

2x
0

0
Puedes utilizar el siguiente archivo

si
x0
si 0 x 1
si 1 x 2
si
x2
.m para definirla:

function y=integrando(x)
y=(x>=0).*(x<=1).*x+(x>=1).*(x<=2).*(2-x)

2. Igual que el ejercicio anterior, pero utilizando la regla de Simpson. Recuerda que el valor de n para utilizar el metodo de Simpson implementado al principio de esta secci
on debe ser un n
umero par y que el error
m
aximo lo puedes acotar utilizando la desigualdad
|E|

K (b a)5
180 n4

siendo K un n
umero real positivo tal que |f 0000(x)| K, para todo
x [a, b]

Captulo 3

Aplicaciones de la integral
En este captulo vamos a utilizar las tecnicas y los comandos descritos en
los captulos anteriores para resolver problemas relacionados con los conceptos
de primitivas y de integrales definidas.

3.1.

Area
entre curvas

En esta primera parte, vamos a ilustrar c


omo podemos calcular areas de
regiones planas en algunos casos particulares.

3.1.1.

Area
entre 2x y tg x

Calcular el area de la regi


on del primer cuadrante encerrada por las curvas
y = 2x e y = tg x.
Este area viene determinada por el valor

(2x tg x) dx, siendo a la

soluci
on positiva de la ecuaci
on 2x = tg x. As, una vez determinado el punto
a y buscando a mano una primitiva F (x) de la funci
on f (x) = 2x tg x, el
valor del area correspondiente puede calcularse como F (a) F (0)

Puesto que el valor a lo podemos determinar, por ejemplo, con la ayuda

74

Aplicaciones de la integral

del comando fzero a traves de la instrucci


on
a=fzero(2*x-tan(x),1.2)
podemos considerar que el problema est
a resuelto.

3.1.2.

Area
entre x2 5 y ln x

Determinar el area de la regi


on encerrada por las gr
aficas de las funciones
y = x2 5 e y = ln x
De la misma forma anterior, el valor de dicho area lo podemos calcular a
traves de la correspondiente integral definida una vez que, a mano, determinemos una primitiva de la funci
on x2 5 ln x y conozcamos sus races.
Como recordar
as, para utilizar el comando fzero debemos conocer una
estimaci
on de la raz a localizar o un vector de dos componentes tal que la
funci
on cambie de signo en cada una de ellas. Como punto de partida para
un problema como este, daremos una estimaci
on de sus races a la vista de
2
la gr
afica de las funciones y = x 5 e y = ln x. Por el metodo de ensayo
y error, podemos determinar un intervalo que contenga todas las races. En
este caso podemos considerar el intervalo [0, 3]
x=0:0.01:3;
plot(x,x.^2-5,x,log(x))
Matlab nos devolver
a un mensaje de error cuando intente evaluar la funci
on ln x en x = 0, pero a la vista del gr
afico resultante, podemos observar
que uno de los puntos de corte est
a cerca de 2.5 y el otro, cerca de 0. El
problema surge cuando intentamos determinar la menor de las races de la
funci
on x2 5 ln x. Por ejemplo, si utilizamos la instrucci
on


3.1. Area
entre curvas

75

a=fzero(x.^2-5-log(x),0.5)
obtenemos a=NaN con el siguiente mensaje de error: aborting search for an
interval containing a sign change because complex function value encountered
during search. Es decir, que el comando fzero, intentando buscar un intervalo
en el que se produzca un cambio de signo de la funci
on x2 5 ln x, se ha
ido hasta valores negativos en los que dicha funci
on toma valores complejos.
Por tanto, deberamos escoger mejor el valor inicial.
Para ello, observemos que si la raz a buscada tiene que cumplir que
x 5 ln x = 0 y es pr
oxima a cero, entonces 5 ln a tambien debe
ser pr
oximo a cero, con lo que a debe estar pr
oxima a e5 0.0067. La instrucci
on
2

a=fzero(x.^2-5-log(x),0.0067)
nos devuelve como estimaci
on de la raz a buscada el valor 0.0067. Otra forma de haber llegado al mismo resultado puede ser la observaci
on de que la
6
funci
on tiene signos distintos en el intervalo [e , 0.5]. La siguiente rutina determina ambas races (a y b), las marca en el eje X y representa la gr
afica de
2
las funciones y = x 5 e y = ln x
a=fzero(x.^2-5-log(x),[exp(-6) 0.5]);
b=fzero(x.^2-5-log(x),2.5);
x=linspace(a/2,b+a/2); % desde a/2
plot(x,x.^2-5x,log(x));
set(gca,XTick,[a b])
Una vez que conocemos los valores a y b, el area encerrada por las gr
aficas
de estas dos funciones ya lo podramos determinar a mano, o bien, utilizando el paquete simb
olico. Las siguientes lneas, a
nadidas a la rutina anterior,

76

Aplicaciones de la integral

calculan el area de dicha regi


on y muestran dicho valor en el gr
afico correspondiente:
syms x;
A=int(log(x)-x^2+5,[a b]);
A=num2str(double(A));
C=[
Area = ,A]; % Cadena de caracteres
text(1,-5.5,C)
double
Los detalles de este comando los puedes obtener utilizando la instrucci
on
help sym/double pero, dentro del contexto anterior, nos permite convertir
el escalar simb
olico A a un n
umero decimal representado en punto flotante y
doble precisi
on.

Area
encerrada por una curva parametrizada

3.1.3.

Determinar el area de la regi


on delimitada por la curva (3 cos t, 2 sen t)
con t [0, 2]
Recordemos que si tenemos una curva plana de la forma (x(t), y(t)) con
t [a, b], cerrada (si (x(a), y(a)) = (x(b), y(b)), simple (si no tiene autointersecciones; es decir, si siempre que t1 , t2 (a, b) con t1 6= t2 , se cumple
(x(t1 ), y(t1)) 6= (x(t2 ), y(t2 ))) y recorrida en el sentido positivo (es decir, que
recorrida en el sentido creciente del par
ametro, deja el interior a su izquierda),
el area de la regi
on que determina lo podemos determinar como
A=

b
0

x (t) y(t) dt =

1
x(t) y (t) dt =
2
0

b
a

(x(t) y 0 (t) x0 (t) y(t)) dt


3.1. Area
entre curvas

77

Utilizando la primera
de estas igualdades, el area pedida lo podemos deterZ
2

minar calculando

6 sen2 t dt. Determina a mano una primitiva de dicha

funci
on y comprueba los resultados que aparecen al ejecutar la siguiente rutina que utiliza el paquete simb
olico para evaluar dicha integral:
t=linspace(0,2*pi);
plot(3*cos(t),2*sin(t));
axis equal;
syms t;
A=int(6*(sin(t))^2,0,2*pi);
A=num2str(double(A));
C=[
Area = \int 0^{2\pi} 6 sen^2 t dt = ,A];
text(-1,0,C)
El gr
afico resultante se muestra en la ventana 3 x 3, 2 y 2,
pero si quieres hacer la ventana m
as grande recuerda que puedes utilizar el
comando axis, por ejemplo, con la instrucci
on
axis([-4 4 -3 3])

3.1.4.

Ejercicios

1. Representa la regi
on encerrada por las curvas y = ln x e y = x3 +2x2 6.
Marca las primeras coordenadas de los puntos de intersecci
on en el eje X
y las correspondientes coordenadas segundas en el eje Y . Con el paquete
simb
olico determina el valor del area de dicha regi
on y muestra dicho
valor en el gr
afico.
2. Representa la curva (cos5 t, sen5 t) con t [0, 2]. Utiliza el paquete
simb
olico para evaluar una integral que te permita calcular el area de
la regi
on encerrada por dicha curva. A
nade la integral correspondiente
y su valor como parte del gr
afico.

78

Aplicaciones de la integral

3.2.

C
alculo de vol
umenes

Supongamos que tenemos un s


olido cualquiera del que queremos conocer
su volumen. Si consideramos dicho s
olido descompuesto en secciones paralelas
y conocemos el area A(t) de cada una de ellas, para los valores del par
ametro
t que van desde un cierto valor a hasta un cierto valor b, podemos calcular el
volumen de dicho s
olido como
Z b
V =
A(t) dt
(3.1)
a

Por otra parte, si consideramos dicho s


olido descompuesto como la uni
on
de cilindros todos ellos con el mismo eje, y conocemos la longitud r(t) de los
radios y las longitudes h(t) de las alturas, para los valores del par
ametro t que
van desde un cierto valor a hasta un cierto valor b, entonces podemos calcular
el volumen como
Z
b

V =

2 r(t) h(t) dt

(3.2)

Apoy
andonos en las igualdades anteriores, veamos algunos casos particulares del c
alculo del volumen de un s
olido de revoluci
on.

3.2.1.

Por secciones paralelas

Determinar el volumen del s


olido engendrado al girar la regi
on determinada por la gr
afica de la funci
on y = sen x con 0 x y el eje X,
descomponiendolo en secciones paralelas:
1. alrededor del eje X
2. alrededor del eje Y
Aunque podemos hacer una representaci
on en el espacio de cada uno de
los s
olidos correspondientes, pospondremos esta tarea hasta la secci
on 5.4.6,
puesto que para comprender c
omo se construye nos har
an falta otros comandos que se presentar
an m
as adelante. De todas formas, no suele ser de mucha
ayuda la observaci
on del s
olido correspondiente para el c
alculo de su volumen.

79

3.2. C
alculo de vol
umenes

Por lo general, suele ser m


as interesante una representaci
on de la regi
on que
queremos girar.
1. Cuando giramos dicha regi
on alrededor del eje X, para cada valor x
del intervalo [0, ], cada segmento vertical, cuya longitud es sen x, de
dicha regi
on, genera un crculo de radio sen x, con lo que el area de
cada una de las secciones paralelas entre s, y perpendiculares al eje X,
lo podemos expresar de la forma A(x) = sen2 x. As, determinaremos
el volumen buscado utilizando
Z la igualdad (3.1) anterior que, en este

caso, se transforma en V =

sen2 x dx y, determinando a mano

una primitiva de la funci


on sen2 x, podemos comprobar el resultado que
se obtiene al ejecutar la siguiente rutina:
x=linspace(0,pi,100);
plot(x,sin(x)); hold on;
indice=1;
while indice<=100
plot([x(indice) x(indice)],[0 sin(x(indice))]);
indice=indice+10;
end;
syms x;
int(pi*(sin(x))^2,0,pi)

Las dos primeras lneas de la rutina se encargan de representar la gr


afica
de la funci
on y = sen x con 0 x , con las cinco siguientes lneas
se representan algunos de los segmentos anteriormente indicados y en
las dos u
ltimas lneas se calcula el volumen del s
olido indicado en este
apartado.
2. Cuando giramos dicha regi
on alrededor del eje Y , para cada valor y del
intervalo [0, 1] (el recorrido de la funci
on sen x), cada segmento horizontal, cuya longitud es 2 arcsen y, de dicha regi
on, genera una corona

80

Aplicaciones de la integral

circular cuyo radio mayor mide arcsen y y cuyo radio menor mide
arcsen y. Por tanto, el area de cada una de las secciones paralelas entre
s y perpendiculares al eje Y lo podemos expresar como
A(y) = ( arcsen y)2 (arcsen y)2 = 3 2 2 arcsen y
As, utilizando de nuevo la igualdad (3.1) anterior, podemos determiZ 1

nar el volumen pedido a traves de V =
3 2 2 arcsen y dy.
0

Determinando a mano una primitiva de la funci


on arcsen y (hace falta
integraci
on por partes) podemos comprobar el resultado que se obtiene
al ejecutar la siguiente rutina:

x=linspace(0,pi,100);
plot(x,sin(x)); hold on;
y=linspace(0,1,10); indice=1;
while indice<=10
x=asin(y(indice));
plot([x pi-x],[y(indice) y(indice)]);
indice=indice+1;
end;
syms pi y;
int(pi^3-2*pi^2*asin(y),0,1)

3.2.2.

Por cilindros

Determinar el volumen del s


olido engendrado al girar la regi
on determinada por la gr
afica de la funci
on y = sen x con 0 x y el eje X,
descomponiendolo en cilindros:
1. alrededor del eje X
2. alrededor del eje Y

81

3.2. C
alculo de vol
umenes

1. Al girar alrededor del eje X, para cada valor y del intervalo [0, 1], cada
uno de los segmentos indicados en el segundo apartado del ejercicio anterior genera un cilindro cuyo radio mide y y cuya altura es 2arcsen y.
Por tanto, utilizando la igualdad (3.2) anterior, podemos determinar el
Z 1
volumen pedido como V =
2 y ( 2 arcsen y) dy. Determi0

nando una primitiva de la funci


on y arcsen y (de nuevo hace falta
integraci
on por partes), podemos comprobar el resultado que se obtiene
al ejecutar las siguientes instrucciones y que coincide con el valor obtenido anteriormente:

syms y;
int(2*pi*y*(pi-2*asin(y)),0,1)

2. Al girar alrededor del eje Y , para cada valor x del intervalo [0, ], cada uno de los segmentos indicados en el primer apartado del ejercicio
anterior genera un cilindro cuyo radio mide x y cuya altura es sen x.
Utilizando de nuevo
Z la igualdad (3.2), podemos determinar el volumen

pedido como V =

2 x sen x dx. Determinando una primitiva de la

funci
on x sen x (tambien hace falta integraci
on por partes), podemos
comprobar el resultado que se obtiene al ejecutar las siguientes instrucciones y que coincide con el valor obtenido anteriormente:

syms x;
int(2*pi*x*sin(x),0,pi)

3.2.3.

Ejercicios

1. Representar la regi
on determinada por la curva y = x2 + 1 y por las
rectas x = 1, x = 3 e y = 0, ajustando los ejes de la mejor forma posible.
Determinar el volumen del s
olido engendrado al girar dicha regi
on

82

Aplicaciones de la integral

a) alrededor del eje X


b) alrededor del eje Y
2. Representar la regi
on determinada por la curvas y = tg 2 x e y = 2+xx2
y determinar el volumen del s
olido engendrado al girarla
a) alrededor de la recta y = 0
b) alrededor de la recta x = 1
3. En ocasiones, puede suceder que no dispongamos de ninguna expresi
on
analtica que determine el area de un conjunto de secciones paralelas
en funci
on de cierto par
ametro. En tal caso, si, por ejemplo, conocemos
los valores de dichas areas para un n
umero impar de valores de dicho
par
ametro, igualmente espaciados entre s, podemos utilizar la regla de
Simpson para aproximar el valor de dicho volumen.
Supongamos, por ejemplo, que tras una tomografa axial computerizada (TAC) de cierto organo interno de un paciente, disponemos de los
siguientes valores que corresponden a la estimaci
on del area (en cm2 ) de
cada una de las secciones transversales, siendo la separaci
on entre cada
par de secciones de 0.5 cm:
0 1.26 3.23 4.72 4.48 3.68 2.85 0.87 0
a) Escribe una rutina, llamada volumen.m, tal que la instrucci
on
volumen(A,d) utilice la regla de Simpson para aproximar el volumen de un s
olido cuando se conocen los valores A de las areas de
un n
umero impar de secciones transversales, siendo d la distancia
de separaci
on entre cada par de ellas.
b) Comprueba tu rutina aproximando el volumen engendrado al girar
x2
y2
la regi
on interior de la elipse
+
=1
9
16
1) alrededor del eje X, considerando el vector x=-3:0.1:3 (por
tanto, el vector A tendr
a 61 componentes y el espacio de separaci
on entre cada secci
on es 0.1)

3.3. Longitudes de curvas...

83

2) alrededor del eje Y , considerando el vector y=-4:0.2:4 (por


tanto, el vector A tendr
a 41 componentes y el espacio de separaci
on entre cada secci
on es 0.2)
c) Utiliza tu rutina para aproximar el volumen del organo del paciente, tomando los datos de la tabla anterior.

3.3.

Longitudes de curvas...

La longitud des
una curva de la forma y = f (x) con a x b, la podemos
 2
Z b
dy
1+
dx. Esta expresi
on, si la curva es de la forma
calcular como
dx
a
s
Z  2  2
dx
dy
x = x(t), y = y(t) con t , se traduce en
+
dt.
dt
dt

Puesto que para muy pocos tipos de curvas es posible evaluar exactamente
estos tipos de integrales definidas, es frecuente que tengamos que recurrir a
aproximaciones numericas para estimar la longitud. Aunque podemos aproximar el valor de la integral correspondiente mediante las tecnicas descritas
en el captulo anterior, tambien podemos aproximar la longitud a traves de
la longitud de una poligonal que se aproxime a la curva dada, siendo este el
razonamiento del que se derivan las igualdades anteriores. Sin embargo, aunque este procedimiento es conceptualmente interesante, no nos proporciona
ninguna informaci
on acerca de la precisi
on del valor aproximado.

3.3.1.

...de la forma y = f(x)

Determinar la longitud de la curva y = x3 + 3x2 5x + 2 con 1 x 2


La siguiente rutina calcula un valor aproximado de dicha longitud utilizando, en primer lugar, una aproximaci
on a la curva en cuesti
on a traves de
una poligonal con 400 vertices (por tanto, con 399 segmentos) y, en segundo
lugar, aproximando el valor de la integral definida que se obtiene seg
un la
primera de las expresiones anteriores. En ella hemos utilizado el integrador

84

Aplicaciones de la integral

numerico quad, pero podramos utilizar cualquier otro.


x=linspace(-1,2,400);
y=x.^3+3*x.^2-5*x+2;
plot(x,y);
axis equal;
dx=diff(x);
dy=diff(y);
ds=sqrt(dx.^2+dy.^2);
L1=sum(ds);
L2=quad(fcnchk(sqrt(9*x^4+36*x^3+6*x^2-60*x+26)),-1,2,0.0001);
T1=[Aproximaci
on poligonal = , num2str(L1)];
T2=[quad aplicado a la integral = , num2str(L2)];
text(-6,11,T1); text(-6,10,T2)
La rutina nos proporciona el valor 20.8314, tanto si utilizamos el primer
procedimiento como si utilizamos el segundo. Para comprobar si esta respuesta puede ser razonable, podemos imprimir la gr
afica resultante y utilizar un
cord
on para medir, de forma aproximada, la longitud de la curva dada, dividiendo la longitud del cord
on entre la longitud de una unidad del gr
afico.
Adem
as, tambien queremos llamar la atenci
on sobre el uso del comando
fcnchk que nos permite no tener que definir la funci
on en cuesti
on en un
archivo aparte.

3.3.2.

...parametrizadas

Determinar la longitud de la curva x = 4t t3 , y = t2 con 2 t 2


Podemos utilizar la misma rutina anterior, ligeramente modificada, para
adecuarla a esta otra tarea:

85

3.3. Longitudes de curvas...

t=linspace(-2,2,400);
x=4*t-2*t.^3;
y=t.^2;
plot(x,y);
axis equal;
dx=diff(x);
dy=diff(y);
ds=sqrt(dx.^2+dy.^2);
L1=sum(ds);
L2=quad(fcnchk(sqrt(36*t.^4-44*t.^2+16)),-2,2,0.0001);
T1=[Aproximaci
on poligonal = , num2str(L1)];
T2=[quad aplicado a la integral = , num2str(L2)];
text(-4,3.5,T1); text(-4,3.25,T2)

3.3.3.

Ejercicios

Para cada una de las curvas siguientes, determina la f


ormula integral correspondiente para calcular su longitud y utiliza tus integradores basados en
la regla de Simpson, en la regla de punto medio y en el metodo de los trapecios que construiste en el captulo anterior para aproximarla. Comprueba si
con el paquete simb
olico puedes evaluar la integral de forma exacta. Tambien
aproxima la longitud a traves del c
alculo de la longitud de una poligonal de
400 vertices que se aproxime a cada una de las curvas en cuesti
on. Representa
la curva y muestra los valores de las aproximaciones de su longitud en el mismo gr
afico. Si el paquete simb
olico es capaz de evaluar la integral de forma
exacta, a
nade tambien el valor correspondiente:
1. y = sen x con 0 x

2. x = cotg t, y = sen2 t con

t
4
2

3. y = x3 con 0 x 2
4. x = t cos t, y = t sen t con 0 t 2

86

3.4.

Aplicaciones de la integral

Funciones de densidad y distribuciones de probabilidad

Una funci
on de densidad en R es cualquier funci
on no negativa definida
Z

en R tal que
f (x) dx = 1. La primitiva F (x) de la funci
on f (x) tal que

Z


x
F () = 0 es decir, la funci
on F (x) =
f (t) dt es su funci
on de dis

tribuci
on asociada.

Adem
as, si f (x) es la funci
on de densidad de una variable aleatoria real X,
y denotamos por F (x) a su funci
on de distribuci
on, entonces la probabilidad
de que los valores de X esten comprendidos entre a y b con a b viene
determinada por
P (a X b) =

3.4.1.

f (x) dx = F (b) F (a)

La distribuci
on exponencial

Una variable aleatoria X diremos que sigue una distribuci


on exponencial
de par
ametro > 0 ( y lo denotaremos por X ; Exp() ) si su funci
on de
densidad es

0
si x < 0

f (x) =

ex si x 0

En tal caso, la media y la varianza de X vienen determinadas por el valor


1
y la correspondiente funci
on de distribuci
on es

F (x) =

si x < 0

1 ex si x 0

3.4. Funciones de densidad y distribuciones de probabilidad

3.4.2.

87

La distribuci
on normal

Una variable aleatoria X diremos que sigue una distribuci


on normal de
par
ametros y , con > 0 ( y lo denotaremos por X ; N (, ) ), si su
funci
on de densidad es
f (x) =

(x)2
2 2

En tal caso, la media y la varianza de X vienen determinadas por y 2 ,


respectivamente. La funci
on de distribuci
on asociada
F (x) =

(t)2
2 2

dt

no se puede expresar en terminos de las funciones elementales.


Si los valores de los par
ametros y son 0 y 1 respectivamente, diremos
que la variable aleatoria sigue una distribuci
on normal tipificada. El trabajo
con una normal de par
ametros y se suele reducir a una normal tipificada,
X
; N (0, 1)
utilizando que si X ; N (, ), entonces

Podemos representar en un mismo gr


afico la funci
on de densidad y la funci
on de distribuci
on de una normal tipificada, utilizando la siguiente rutina,
basada en el comando PrimIzq (construido en la p
agina 51), y el hecho de
que en el intervalo [5, 5] se encuentra el 99.9999 % del area bajo la gr
afica
de la funci
on de densidad de una normal tipificada:
x=-5:0.01:5;
f=1/sqrt(2*pi)*exp(-x.^2/2);
[F,x1]=PrimIzq(1/sqrt(2*pi)*exp(-x^2/2),-5,5,10000);
subplot(2,1,1); plot(x,f); grid on;
subplot(2,1,2); plot(x1,F); grid on;

88

Aplicaciones de la integral

3.4.3.

Ejercicios

1. Representa en un mismo gr
afico la funci
on de densidad de una variable
1
aleatoria exponencial de par
ametro 1, 2 y . Si no tienes una impresora
2
de color, utiliza distintos tipos de lnea para cada una de ellas (puedes
ver la lista de estilos de lnea con el comando help plot).
2. Supongamos que el tiempo de vida de una bombilla sigue una distribuci
on exponencial. En las especificaciones de la bombilla, se indica que
el tiempo medio de vida es de 1000 horas. Sabiendo que la bombilla estar
a encendida 3 horas diarias, determina el mayor n
umero n de das tal
que podamos asegurar, con una probabilidad del 75 %, que la bombilla
no se habr
a fundido (es decir, determinar el mayor n
umero n de das tal
que F (3n) 0.25, siendo F la funci
on de distribuci
on de la exponencial
correspondiente)
3. Representa en un mismo gr
afico la funci
on de densidad de una variable aleatoria normal
cuyos par
ametros (, ) son respectivamente (0, 1),


1
(2, 1), (0, 2) y 0,
. Si no tienes una impresora de color, utiliza dis2
tintos tipos de lnea para cada una de ellas.
4. La distribuci
on de alturas de cierta poblaci
on adulta sigue un modelo
normal de media 175 cm. y de desviaci
on tpica 7 cm.
a) Representa la correspondiente funci
on de densidad. Sobre dicho
gr
afico, indica a mano el area correspondiente a la probabilidad de
que la altura de un adulto elegido al azar este entre 167 y 183 cm.
b) Representa la correspondiente funci
on de distribuci
on. Sobre dicho
gr
afico, indica a mano c
omo determinar con el, el porcentaje de la
poblaci
on adulta que mide menos de 183 cm.

Captulo 4

Sucesiones y Series
4.1.

Sucesiones

Se llama sucesi
on infinita (o simplemente sucesi
on) a cualquier funci
on a
de los n
umeros naturales en los n
umeros reales y, lo m
as frecuente, es denotar
a dicha funci
on por an en vez de utilizar la notaci
on a(n). Aunque Matlab
s
olo puede trabajar con un n
umero finito de terminos de una sucesi
on, en
ocasiones podremos utilizar el paquete simb
olico para determinar el lmite de
algunas de ellas.
Al igual que las funciones reales de variable real, podemos utilizar el comando plot para representar los terminos de una sucesi
on. As, si las componentes de un vector a de, pongamos por caso, longitud 30 representan los
30 primeros terminos de una sucesi
on an , la instrucci
on plot(a) mostrar
a en
un gr
afico dichos terminos en funci
on del ndice; es decir, dicho comando es
equivalente a las instrucciones
i=1:n;
plot(i,a)

90

Sucesiones y Series

Al representar sucesiones puede que no nos interese unir los puntos consecutivos con un segmento. Podemos conseguir esto indicando el tipo de marca
que queremos utilizar, pero dejando sin especificar el tipo de lnea. Por ejemplo, la instrucci
on plot(a,o) representar
a cada punto con un peque
no
crculo, sin unir los puntos consecutivos.

4.1.1.

Ejemplos

4n 3
1. Representar los primeros 50 terminos de la sucesi
on an =
, marcan3n 4
do los puntos con un crculo. A la vista del gr
afico, crees que la sucesi
on
converge o que no converge? En caso afirmativo, cu
al crees que es su lmite?
Podemos representar los primeros 50 terminos de esta sucesi
on con las
instrucciones
n=1:50;
a=(4*n-3)./(3*n-4);
plot(a,o)
La gr
afica sugiere que la sucesi
on converge a alg
un valor alrededor de 1.3.
4
4n 3
=
A mano, puedes comprobar que lm
3n 4
3
400n 3
2. Representar los primeros 50 terminos de la sucesi
on b n =
, mar3n 400
cando los puntos con un crculo. Esta sucesi
on es convergente? En caso afirmativo, cu
al crees que es su lmite?

De la misma forma anterior, podemos representar los primeros 50 terminos de esta sucesi
on con las instrucciones
n=1:50;
b=(400*n-3)./(3*n-400);
plot(b,o)

91

4.1. Sucesiones

La gr
afica obtenida parece indicar que esta sucesi
on no converge, cuando
realmente no sucede as. Esta discrepancia se debe a que no estamos representando todos los terminos de la sucesi
on, sino s
olo los primeros 50. Si aumentamos el n
umero de terminos representados, pasando de 50 a 100 cambiando
la primera instrucci
on anterior por n=1:100;, la situaci
on tampoco mejora.
Sin embargo, si representamos los terminos de dicha sucesi
on a partir del 150,
con las instrucciones
n=150:200;
b=(400*n-3)./(3*n-400);
plot(n,b,o)
podemos obtener conclusiones m
as acertadas. Observa que, puesto que el
ndice n no comienza en 1, hemos optado por modificar tambien la u
ltima
lnea.
3. Representar los 50 primeros terminos de la sucesi
on cn =

(60)n
n!

Utilizando de nuevo las mismas instrucciones anteriores, podemos representar los primeros 50 terminos de esta otra sucesi
on como
n=1:50;
c=(-60).^n./cumprod(n);
plot(c,o)
Si quisieramos representar 50 terminos a partir de c50 podemos hacerlo
como
n=1:100;
c=(-60).^n./cumprod(n);

92

Sucesiones y Series

plot(50:100,c(50:100),o)
Observa que de esta forma, construimos todos los terminos desde c1 hasta
c100 y s
olo representamos los 50 u
ltimos. Con la siguiente rutina podemos
evitar la construcci
on de los terminos que no vamos a representar:
n=50:100;
c=(-60).^n./(prod(1:49)*cumprod(n));
plot(n,c,o)
prod
De forma an
aloga al comando sum (presentado en la p
agina 32), la instrucci
on prod devuelve el producto de las componentes del vector de entrada. As,
prod([1 1/2 1/3 1/4]) devuelve 0.0417 que es la aproximaci
on correspondiente de 1/24
factorial
La instrucci
on factorial(n), siendo n un entero positivo, es equivalente a prod(1:n). En la rutina anterior, podemos sustituir prod(1:49) por
factorial(49)
cumprod
Tambien, de forma an
aloga al comando cumsum (presentado en la p
agina
41), la instrucci
on cumprod devuelve el vector formado por los productos acumulados del vector de entrada. Por ejemplo, cumprod([1 2 3 4]) devuelve
el vector [1 2 6 24]

4.1.2.

Sucesiones definidas de forma recursiva

Consideremos la sucesi
on definida de forma recursiva como d1 = 2,
p
dn = 2 + dn1 , para n = 2, 3, . . . . Representar los primeros 50 terminos,

4.1. Sucesiones

93

marcando los puntos con un crculo. Crees que esta sucesion converge? En
caso afirmativo, cu
al crees que es su lmite?
Puedes construir y representar los primeros 50 terminos utilizando la siguiente rutina:
d=sqrt(2);
for n=2:50;
d=[d sqrt(2+d(n-1))];
end
plot(d,o)
Observa c
omo hemos utilizado la concatenaci
on para construir el vector d.
A la vista de la gr
afica, responde adecuadamente a las cuestiones planteadas.

4.1.3.

La sucesi
on de Fibonacci

La sucesi
on de Fibonacci se define recursivamente como f1 = 1, f2 = 1,
fn = fn2 + fn1 , para n = 3, 4, . . . . La siguiente rutina nos sirve para representar sus primeros 20 terminos:
f=[1 1]; for n=3:20;
f=[f f(n-2)+f(n-1)];
end
plot(f,o)

4.1.4.

Ejercicios

1. Representa los primeros 50 terminos de cada una de las sucesiones siguientes. Cu


ales crees que son convergentes? Cu
ales crees que son sus
lmites?


1 n
a) en = 1 +
n

94

Sucesiones y Series

b) gn = 1 +

1 1
1
+ + + ln n
2 3
n

fn+1
siendo fn la sucesi
on de Fibonacci.
fn
 n 
d ) wn = sen
12

e) la sucesi
on definida recursivamente como x1 = 1, xn = 1 + xn1 ,
para n = 2, 3, . . .
yn1
1
f ) la sucesi
on definida recursivamente como y1 = 2, yn =
+
,
2
yn1
para n = 2, 3, . . .
1
g) la sucesi
on definida recursivamente como z1 = 1, zn = 1 +
,
zn1
para n = 2, 3, . . .
c) kn =

2. Dadas las constantes p0 y k con 0 < p0 < 1 y k > 0, la ecuaci


on
logstica en diferencias pn = k pn1 (1 pn1 ), define una sucesi
o n pn .
Esta ecuaci
on se utiliza en modelos poblacionales. Escribe un archivo
llamado logistica.m que acepte como entrada los valores p0 , k y un
entero positivo n, y devuelva los primeros n terminos de la dicha sucesi
on. Utiliza los comandos nargin (p
agina 69) y error (p
agina 69) para
devolver un mensaje de error en el que se indique la sintaxis correcta
si el usuario no introduce convenientemente los par
ametros de entrada.
Escribe las lneas de comentario que creas necesarias para que, al ejecutar la instrucci
on help logistica, se explique tanto la sintaxis como la
construcci
on de esta rutina. Utiliza tu rutina logistica.m para representar los primeros 100 terminos cuando p0 = 0.5 y para los siguientes
valores de k: 1.5, 2.5, 3, 3.2, 3.48, 3.5, 3.7, 3.9 y 3.999. Utiliza el comando subplot para mostrar claramente los diferentes comportamientos de
cada una de las sucesiones correspondientes.

4.2.

Series num
ericas

Dada una sucesi


on an con n = 1, 2, . . ., se dice que su serie numerica
asociada es convergente si la sucesi
on sn de sumas parciales, definida como

95

4.2. Series numericas

sn = a1 + a2 + + an =

n
X

ak , es convergente. En tal caso, el lmite de la

k=1

sucesi
on de sumas parciales se suele representar por

an . Si la sucesi
on an

n=1

viene definida para los valores n = 0, 1, 2, . . ., se define la sucesi


on de sumas
n
X
parciales como sn = a0 + a1 + + an =
ak , y su lmite, en el caso de que
k=0

exista, se suele denotar por S =

an . En ambos casos, el comando cumsum

n=0

(presentado en la p
agina 41) resulta muy u
til para construir esa sucesi
on sn

4.2.1.

La sucesi
on de sumas parciales

Representa los 50 primeros terminos de la sucesi


on de sumas parciales
asociada a cada una de las siguientes series. A la vista del gr
afico, crees que
convergen? En caso afirmativo, da una estimaci
on del valor al que creas que
converge:

1.

X
(3)n1
n=1

2.

4n

X
1
n!
n=0

X
(3)n1

(3)n1
4n
4n
n=1
para n = 1, 2, . . .. Podemos construir un vector a con los valores de los
50 primeros terminos de an con las siguientes instrucciones:

1. La serie numerica

n=1:50;
a=(-3).^(n-1)./4.^n;

es la asociada a la sucesi
on an =

96

Sucesiones y Series

Utilizando un vector s de longitud 50 cuyas componentes sean cada uno


de los 50 primeros terminos de la sucesi
on sn de sumas parciales asociada a an , podemos representar dichos terminos de la siguiente forma:
s=cumsum(a); plot(s,o)
A la vista de este gr
afico, podemos intuir que esta serie converge a alg
un
valor cercano a 0.14285. De hecho, esta es una serie geometrica de raz
on
3
1
y cuyo valor inicial es , con lo que el valor exacto de su suma es
4
4
1
1
4
= que, aproximadamente, es 0.142857
7
1 3
4

X
1
1
es la asociada a la sucesi
on bn = , para los
n!
n!
n=0
valores n = 0, 1, 2, . . .

2. La serie numerica

Observa que, a diferencia de la anterior, esta sucesi


on empieza en 0. Teniendo en cuenta que 0! = 1, podemos construir los 50 primeros terminos
de bn con las instrucciones:
n=0:49;
b=1./[1 cumprod(n(2:50))];
Observa que, el vector n tiene longitud 50. Adem
as, comprueba que el
vector [1 cumprod(n(2:5))] es el vector [0! 1! 2! 3! 4!], mientras
que todas las componentes del vector cumprod(n) son nulas.
De nuevo, podemos construir un vector s de longitud 50 cuyas componentes sean cada uno de los 50 primeros terminos de la sucesi
on sn
de sumas parciales asociada a bn y representar dichos terminos de la
siguiente forma:

97

4.2. Series numericas

s=cumsum(b); plot(n,s,o)
A la vista del gr
afico, podemos intuir que esta serie tambien converge y
lo hace hacia un valor pr
oximo a 2.718

4.2.2.

Series num
ericas simb
olicas

En ocasiones, podemos utilizar el paquete simb


olico para determinar el valor exacto de una serie numerica a traves del comando symsum. Por ejemplo,

X
si r es un n
umero real tal que |r| < 1, la serie geometrica
r n converge al
n=1

r
. Podemos verificar este resultado con las siguientes instrucciones:
valor
1r

syms r n;
symsum(r^n,n,1,inf)
La n que aparece como el segundo par
ametro de la instrucci
on symsum
indica el ndice respecto al cual se realiza la suma y los dos u
ltimos indican,
respectivamente, los valores inicial y final para dicho ndice. As, puedes obtener el valor simb
olico de una suma parcial concreta sustituyendo el inf que
aparece como u
ltimo par
ametro, por el n
umero natural que desees.
El valor exacto de la suma infinita de una sucesi
on expresada en terminos

X
1
del factorial, como por ejemplo
, podemos obtenerlo con las siguientes
n!
n=0
instrucciones:
syms n;
symsum(1/sym(n!),n,0,inf)
Una vez hayas convertido el correspondiente valor simb
olico a su valor
decimal con el comando double puedes comprobar que nuestra estimaci
on

98

Sucesiones y Series

anterior se acerca al valor exacto.


Factorial simb
olico
El factorial simb
olico de un natural simb
olico n lo podemos representar
en Matlab por sym(n!)

4.2.3.

Ejercicios

1. Para cada una de las series siguientes y con la ayuda del comando
cumsusm, representa los 50 primeros terminos de la sucesi
on de sumas
parciales asociada. Utiliza el comando symsum para determinar el valor
exacto de dicha serie, compara su valor decimal con el valor del termino
50 de la sucesi
on de sumas parciales correspondiente y a
nade ambos
valores en el gr
afico:
a)

1
n 2n
n=1

X
1
b)
n2

c)

n=1

X
n=0

4.3.

n2 3n + 2
n!

Aproximaci
on de series...

Puesto que no siempre es posible determinar el valor exacto de una serie


numerica, es frecuente aproximarlo, con lo que es interesante poder determinar
una cota superior para el error que se comete en tal aproximaci
on.

4.3.1.

...de t
erminos positivos

En el caso de que an sea una sucesi


on de terminos positivos, el valor
de cada suma parcial es una aproximaci
on por defecto al valor de la serie. Es

99

4.3. Aproximaci
on de series...

f
acil determinar una cota superior del error que se comete en tal aproximaci
on
utilizando alguno de los siguientes criterios:
El criterio del cociente
Si an es una sucesi
on de terminos positivos tal que L = lm

an+1
an

y el valor L > 1, su serie asociada no es convergente.


y el valor L < 1, su serie asociada es convergente. Adem
as, fijado un
an+1
natural k, si la sucesi
on
es
an
1. creciente, entonces Rk = S sk =

X
n=1

an

k
X
n=1

an

ak+1
1L

ak+1
ak+2
< 1, entonces Rk = S sk
2. decreciente y
ak+2
ak+1
1
ak+1

1
, con un error que
n 2n
n=1
1
105 . Puesto que esta es la serie asociada la sucesi
on an =
y la sun 2n
an+1
n
cesi
on
=
es creciente (compruebalo analticamente) y tiende a
an
2n + 2
1
L = , podemos utilizar el primero de los resultados anteriores, con lo que
2
podramos aproximar el valor de la serie infinita a traves del k-esimo termino
de la sucesi
on de sumas parciales, siendo k el primer natural para el que se
ak+1
1
1
cumpla que
=
< 5 . La siguiente rutina permite deterk
1L
(k + 1) 2
10
minar dicho natural k:
As, supongamos que queremos aproximar

k=1;
while (k+1)*2^k <= 10^5 k=k+1;
end

100

Sucesiones y Series

Las siguientes lneas, a


nadidas a la rutina anterior, permiten construir la
correspondiente aproximaci
on:
n=1:k;
a=1./(n.*2.^n);
aprox=sum(a)
Con ayuda del paquete simb
olico, las siguientes instrucciones permiten
obtener el valor exacto de la suma infinita y poder as comprobar la exactitud
de la aproximaci
on:
syms n;
symsum(1/(n*2^n),n,1,inf)
Para ejemplificar el empleo del segundo de los resultados anteriores, po
X
1
demos suponer que queremos aproximar
con un error menor que 105 .
n!
n=0
1
bn+1
1
Puesto que, siendo la sucesi
on bn = , se cumple que
=
es decren!
bn
n+1
ciente y tiende a 0, podemos aproximar el valor de la suma infinita a traves del
k-esimo termino de la sucesi
on de sumas parciales, siendo k el primer natural
bk+2
1
bk+1
k+2
1
para el que
=
< 1 y adem
as
=
< 5.
bk+2
bk+1
k+2
(k + 1)! (k + 1)
10
1
bk+1
De forma an
aloga al ejemplo anterior, las siguientes lneas nos permiten determinar el correspondiente valor de k:
k=0;
while k+2 <= 1 | (k+1)*factorial(k+1) <= (k+2)*10^5 k=k+1;
end
La aproximaci
on correspondiente la podemos obtener como

101

4.3. Aproximaci
on de series...

n=1:k;
b=[1 cumprod(1./n)];
aprox=sum(b)
De nuevo, puedes utilizar el paquete simb
olico para obtener la suma exacta con la ayuda de las instrucciones:
syms n;
symsum(1/sym(n!),n,0,inf)
El operador (OR)
El operador | utilizado en este u
ltimo ejemplo para determinar el valor
k correspondiente, es el operador relacional OR, que es uno de los operadores
relacionales de los que ya te propusimos en la p
agina 26 que consultaras m
as
detalles acerca de ellos. Si todava no lo has hecho, hazlo ahora.
El criterio de la integral
Dada una funci
on f (x) continua y positiva de tal forma que existe N N

X
tal que f (x) es decreciente en el intervalo [N, ). Entonces la serie
f (n)
n=1
Z
es convergente, si y s
olo si, la integral
f (x) dx es convergente. En tal caso,
N

al aproximar el valor de la suma infinita por el k-esimo termino de la sucesi


on
de sumas parciales, con k N , el error Rk = S sk que cometemos verifica
que
Z
Z

k+1

f (x) dx Rk

f (x) dx

El comando stairs de Matlab es una buena herramienta para la ilustra


X
ln n
, podeci
on de este resultado. As, si queremos aproximar el valor de
n2
n=1
ln n
mos empezar representando los 20 primeros terminos de la sucesi
on cn = 2
n

102

Sucesiones y Series

y la funci
on f (x) =

ln x
en el intervalo [1, 20]
x2

n=1:20; x=1:0.1:20;
plot(n,log(n)./(n.^2),.,x,log(x)./(x.^2),r)
Todo parece indicar que, en este caso, se verifica el criterio de la integral
considerando N = 2. Estudiando la derivada de esta funci
on puedes garantizar
el decrecimiento de f en el intervalo [2, ) y puedes asegurar la convergencia
de la integral impropia correspondiente integrando por partes.
Utilicemos el comando stairs para ilustrar la estimaci
on del resto. Para
ello, a
nadamos las siguientes lneas a la rutina anterior:
hold on;
stairs(n,log(n)./(n.^2));
figure(2);
plot(n,log(n)./(n.^2),.,x,log(x)./(x.^2),r); hold on
stairs(n,log(n+1)./((n+1).^2));
plot(x,log(x)./(x.^2),r)
Consideremos el resto R5 = S s5 =

an . En la ventana gr
afica titu-

n=6

lada Figure 1, R5 es el area bajo la escalera azul para xZ 6. Este area es

ln x
mayor que el area bajo la curva roja para x 6, con lo que
dx R5 .
x2
6
Adem
as, en la ventana gr
afica Figure 2, R5 es el area bajo la escalera azul
para x 5. Este area es Zmenor que el area bajo la curva roja para x 5 con

ln x
lo que se tiene que R5
dx. La pen
ultima lnea de la rutina anterior
x2
5
muestra c
omo representar los escalones hacia la izquierda en vez de hacia la
derecha.
En general, para cualquier natural k, puedes comprobar analticamente

4.3. Aproximaci
on de series...

103

1 + ln k
, con lo que la siguiente rutina permite determinar un k
k
para el que se cumple que Rk < 105 :
que Rk

k=1;
while k/(1+log(k)) <= 10^5 k=k+1;
end;
La aproximaci
on correspondiente la podemos obtener ejecutando, tras las
instrucciones anteriores, las siguientes:
n=1:k;
aprox=sum(log(n)./(n.^2))
Para determinar el valor exacto de la suma infinita, podemos recurrir al
paquete simb
olico, utilizando las instrucciones:
syms n;
suma=symsum(log(n)/(n^2),n,1,inf)
Estas u
ltimas instrucciones nos devuelven suma=-zeta(1,2) que, aunque
puede no significar mucho en un curso como este, s que parece indicar que es
alg
un valor real, con lo que la serie numerica debe ser convergente. Este valor
simb
olico lo puedes convertir a decimal con el comando suma=double(suma)
Aunque ya lo habr
as probado integrando por partes, tambien puedes utilizar el paquete simb
olico para comprobar la convergencia de la integral impropia. Las instrucciones
syms x;
L=int(log(x)/(x^2),x,2,inf)

104

Sucesiones y Series

devuelven L=1/2*log(2)+1/2 lo que viene a ratificar tus c


alculos te
oricos.
stairs
Para cualquier vector a, cuyas componentes sean crecientes, y para cualquier funci
on f, la instrucci
on stairs(a,f(a)) produce una representaci
on en
escalera siendo cada pelda
no el segmento cuyos extremos son (a(i),f(a(i))
y (a(i+1),f(a(i)), para cada i desde 1 hasta length(a)
figure
La instrucci
on figure(n), siendo n un entero positivo, permite crear una
nueva ventana gr
afica etiquet
andola con el correspondiente valor n, pasando
esta a ser la ventana gr
afica activa y coloc
andola encima de las existentes.

4.3.2.

...alternadas

El teorema de Leibniz nos permite afirmar que, si an es una sucesi


on alternada que tiende a 0 y tal que |an | es una sucesi
on decreciente, el error que

X
se comete al aproximar el valor de la suma infinita S =
an a traves del
n=1

k-esimo termino de la sucesi


on de sumas parciales sk =

k
X

an , nunca supera

n=1

al valor |ak+1 |. Es decir, |Rk | = |S sk | |ak+1 |.

Sin embargo, bajo las mismas hip


otesis del teorema de Leibniz podemos
obtener una aproximaci
on ligeramente mejor si aproximamos el valor S a
traves de la media entre sk y sk+1 , es decir que podemos aproximar el valor
de la suma infinita a traves de

X
n=1

an

sk + sk+1
sk + sk + ak+1
ak+1
=
= sk +
2
2
2

Esto es debido a que, para cualquier entero positivo k, S siempre est


a entre
sk y sk+1 , de donde se deduce que la diferencia entre S y dicha media nunca

4.3. Aproximaci
on de series...

105

es superior a |ak+1 |/2. Est


a afirmaci
on se basa en la siguiente cadena de
desigualdades



1
s
+
s
k
k+1
|sk+1 sk | = |ak+1 |
S
2

2
2

As, supongamos que queremos aproximar, con un error menor que 105 ,

X
(1)n+1
el valor de
. Utilizando la acotaci
on anterior, la siguiente rutina
2n 1
n=1
nos permite determinar el correspondiente valor k que nos permite aproximar
dicho valor:
k=1;
while 2*(2*k+1) <= 10^5 k=k+1;
end
Una vez ejecutadas, podemos obtener la aproximaci
on correspondiente con
las siguientes instrucciones:
n=1:k;
aprox=sum((-1).^(n+1)./(2*n-1))+(-1)^(k+2)/(2*(2*k+1))
De nuevo, para determinar el valor exacto de la correspondiente suma infinita, podemos recurrir al paquete simb
olico:
syms n;
symsum((-1)^(n+1)/(2*n-1),n,1,inf)

4.3.3.

Ejercicios

Adem
as de los criterios anteriormente indicados para aproximar la suma
de una serie numerica de terminos positivos, podemos utilizar los siguientes:

106

Sucesiones y Series

El criterio de la raz
Si an es una sucesi
on de terminos positivos tal que L = lm

an

y el valor L > 1, su serie asociada no es convergente.


y el valor L < 1, su serie asociada es convergente. Adem
as, fijado un

n
natural k, si la sucesi
on an es

k+1

ak+1

k
X

Lk+1
1L
n=1
n=1
ak+1
< 1, entonces Rk = S sk

1 k+1 ak+1

1. creciente, entonces Rk = S sk =
2. decreciente y

an

an

El criterio de Raabe


an+1
Si an es una sucesi
on de terminos positivos tal que L = lm n 1
an
y el valor L < 1, su serie asociada no es convergente.
y el valor L > 1, su serie asociada
esconvergente. Adem
as, fijado un

an+1
natural k, si la sucesi
on n 1
es
an
1. decreciente, entonces Rk = S sk =

n=1

an

k
X

n=1

an

k ak+1
L1



ak+2
> 1, entonces
2. creciente y (k + 1) 1
ak+1
Rk = S sk

k a
 k+1 
ak+2
(k + 1) 1
1
ak+1

1. Para cada una de las siguientes series de terminos positivos, utiliza el


criterio que creas m
as conveniente (el del cociente, el de la integral,
el de raz o el de Raabe) para dar una aproximaci
on, con un error
5
menor que 10 , de la suma de cada una de ellas. En el caso de poder

107

4.3. Aproximaci
on de series...

utilizar varios, aproxima la suma infinita con el que tengas que sumar el
menor n
umero de terminos posible. En cualquier caso, si con la ayuda
del paquete simb
olico, puedes determinar el valor exacto comprueba el
error cometido en tu aproximaci
on.

X
1
a)
n2

X
1
b)
n3

n=1

d)

g)

n=1

X
1
n!

e)

n=1

1/n
X
e

h)

n2

n=1

X
(n!)2
(2n)!

n=0

n=1

X
1
c)
n4

n=1

1+
e

f)

1
n

!n

i)

X
n2
en3
n=1

n=1

en

1
n
1 + n1

2. Aproxima, con un error menor que 105 , el valor de cada una de las
siguientes series alternadas. Si, con ayuda del paquete simb
olico, puedes
determinar el valor exacto comprueba el error cometido en tu aproximaci
on.

a)

X
(1)n+1

n=1

b)

X
(1)n

n=0

(2n)!

108

Sucesiones y Series

4.4.

Series de potencias

Dada una sucesi


on numerica an y un punto x0 R, la serie de potencias
correspondiente, centrada en x0 , es

X
n=0

an (x x0 )n = a0 + a1 (x x0 ) + a2 (x x0 )2 + + an (x x0 )n + . . .

Puesto que el cambio de variable z = x x0 siempre trasforma una serie


de potencias centrada en x0 , en una serie de potencias centrada en 0, nos
restringiremos al trabajo con estas u
ltimas.
Formalmente, podemos entender una serie de potencias como un polinomio
cuyo grado pueda ser infinito. As, podemos ver un polinomio como una serie
de potencias tal que existe un natural n0 N de tal forma que an = 0 para
todo n n0 . Las correspondientes sumas parciales de una serie de potencias
centrada en 0 son las funciones
s0 (x) = a0
s1 (x) = a0 + a1 x
s2 (x) = a0 + a1 x + a2 x2
..
.
sk (x) = a0 + a1 x + a2 x2 + + ak xk
Observa que cada suma parcial de una serie de potencias es un polinomio.
Puesto que desde la secci
on 2.1.3 sabemos c
omo manejar los polinomios con
Matlab, eso nos puede servir para trabajar con las sumas parciales de una
serie de potencias.
Supongamos, por ejemplo, que queremos representar la suma parcial de

X
xn
orden 10 de la serie potencias
. Para cada natural k = 0, 1, 2, . . . , la
n!
n=0
suma parcial de orden k es, en este caso
sk (x) = 1 + x +

x2 x3
xn
+
++
2
6
n!

4.4. Series de potencias

109

x2 x3
Por ejemplo, para k = 3, obtenemos que s3 (x) = 1 + x +
+ . Esta es la
2
6
forma habitual en la que se escribe una suma parcial: siguiendo, de izquierda
a derecha, el orden creciente en las potencias de x, con lo que el termino independiente siempre quedar
a a la izquierda. Recuerda que, por el contrario, la
forma en la que Matlab trabaja con polinomios es siguiendo, de izquierda a
derecha, el orden decreciente en las potencias de x. As, si consideramos el polinomio asociado a un vector v, el termino independiente de dicho polinomio
es siempre la u
ltima componente de v, con lo que, en nuestro caso particular,
el vector de Matlab que representa a s3 (x) es [1/6 1/2 1 1]
La siguiente rutina nos permite construir un vector con los coeficientes de
la suma parcial de orden 10, invertir el orden de sus componentes para construir el vector que representar
a al polinomio s10 (x) y utilizar dicho vector
para representar dicha suma parcial. Adem
as, observa c
omo hemos a
nadido
el valor 0!, que se define como 1
n=[1 1:10]; % Vector de 11 componentes
v=1./cumprod(n); % Los primeros 11 coeficientes de la serie
a=v(length(v):-1:1); % a es el vector v le
do de dcha a izq
x=linspace(-2,3);
plot(x,polyval(a,x))
Un ejemplo ligeramente distinto al anterior es el de representar la su
X
(1)n x2n+1
, en el
ma parcial de grado 101 de la serie de potencias
(2n + 1)!
n=0
intervalo [0, 7]. En este caso, la suma parcial de grado 101 se obtiene al
50
X
(1)n x2n+1
calcular
. Observa que esta serie s
olo posee terminos de
(2n + 1)!
n=0
grado de impar, lo cual supone una notable diferencia respecto al ejemplo anterior. Adem
as, si consideramos el vector n=[0 50], las componentes
del vector cumprod(2*n+1) no se corresponden con los valores 1!, 3!, 5!, . . . ,

110

Sucesiones y Series

puesto que el vector 2*n+1 es [1 3 5 ... 101] y, por tanto, el vector


cumprod(2*n+1) es [1 13 135 ... 135 . . . 101]
Sin embargo, podemos construir el vector [1! 3! 5! . . . 101!], multiplicando, componente a componente, el vector cumprod(2*n+1) anterior por
el vector [1 12 124 ... 124 . . . 100].
Adem
as, para construir el vector que representar
a a la suma parcial de
grado 101, deberemos a
nadir en las posiciones pares de dicho vector el valor
0. As, teniendo tambien en cuenta que el orden debe ser el adecuado, la siguiente rutina nos sirve para alcanzar nuestro objetivo:

n=[0:50];
u=(-1).^n./(cumprod(2*n+1).*cumprod([1 2*n(2:51)]));
v=zeros(1,2*length(u));
v(2:2:length(v))=u;
a=v(length(v):-1:1);
x=0:0.01:7;
plot(x,polyval(a,x))

La gr
afica obtenida te debe resultar muy familiar.

zeros
El comando zeros(m,n) devuelve la matriz nula de m filas y n columnas. Si
x es un vector (o matriz) definido anteriormente, el comando zeros(size(x))
devuelve un vector (o matriz) cuyas componentes son todas nulas y que tiene
el mismo tama
no que x

111

4.5. Series de Taylor

4.4.1.

Ejercicios

1. Representa, en el intervalo [0.8, 0.8], la suma parcial de grado 10 de

X
la serie de potencias
xn . Representa en el mismo gr
afico la funci
on
n=0

1
f (x) =
, incluyendo una etiqueta para identificar cada una de
1x
ellas.

2. Representa, en el intervalo [0.5, 1], la suma parcial de grado 50 de la

X
(1)n x2n+1
serie de potencias
2n + 1
n=0

3. Representa, en el intervalo [4, 4], la suma parcial de grado 6 de la serie

X
(1)n x2n
. Una vez que hayas terminado, representa
de potencias
(2n)!
n=0
la suma parcial de orden 100.

4.5.

Series de Taylor

Si una funci
on f (x) es infinitamente derivable en un punto x0 R, se
define su desarrollo de Taylor en x0 como
f (x0 ) + f 0 (x0 ) (x x0 ) +

f 00 (x0 )
f (n (x0 )
(x x0 )2 + +
(x x0 )n + =
2!
n!
=

X
f (n (x0 )
n=0

n!

(x x0 )n

Observa que esto es una serie de potencias y, por tanto cada suma parcial, es
un polinomio. La suma parcial de orden k se denomina polinomio de Taylor
de orden k de la funci
on f (x) centrado en x0 .
As, el desarrollo en serie de Taylor en el punto x0 = 0 de la funci
on

n
2n+1
X
(1) x
f (x) = sen x es
. De aqu podemos obtener cualquier poli(2n + 1)!
n=0
nomio de Taylor de dicha funci
on desarrollado en 0. La siguiente rutina nos

112

Sucesiones y Series

permite representar los polinomios de Taylor correspondientes de grados 1, 3,


11 y 51
n=[0:25];
u=(-1).^n./(cumprod(2*n+1).*cumprod([1 2*n(2:26)]));
v=zeros(1,2*length(u));
v(2:2:length(v))=u;
a51=v(length(v):-1:1); % vector de longitud 52
a11=a51(41:52); % vector de longitud 12
a3=a11(9:12); % vector de longitud 4
a1=a3(3:4); % vector de longitud 2
x=-2*pi:0.01:2*pi;
y51=polyval(a51,x);
y11=polyval(a11,x);
y3=polyval(a3,x);
y1=polyval(a1,x);
plot(x,sin(x),x,y1,x,y3,x,y11,x,y51)
legend(sen x,Grado 1,Grado 3,Grado 11,Grado 51);
axis([-2*pi 2*pi -1.5 1.5])
Las primeras 4 lneas de esta rutina son esencialmente las mismas que las
de la rutina anterior. El vector a51 de longitud 52 que se construye despues
de ellas representa al polinomio de Taylor de grado 51. Para obtener a partir
de el, los vectores que representar
an a los polinomios de menor grado basta
con tomar la correspondiente parte final de a51, puesto que un polinomio se
puede representar a traves de un vector de Matlab donde las componentes
de dicho vector se corresponden con los coeficientes del polinomio ordenados,
de izquierda a derecha, en orden decreciente seg
un la potencia de x que le
acompa
na. Por u
ltimo, el comando axis permite ajustar la escala de los ejes.
Cuando veas el gr
afico, te dar
as cuenta que la curva y = sen x debera ser

4.5. Series de Taylor

113

azul, pero no se observa ninguna curva azul. Eso es debido a que el polinomio
de grado 51 pr
acticamente coincide con ella.

4.5.1.

Polinomios de Taylor simb


olicos

El paquete simb
olico tambien nos puede ayudar a determinar polinomios
de Taylor de un grado indicado, centrados en un punto dado. Por ejemplo, podemos obtener el polinomio de Taylor de grado 7, de la funci
on f (x) = sen x,
centrado en x0 = 0, con las instrucciones:
syms x;
T7=taylor(sin(x),8)
obteniendo
T7=x-1/6*x^3+1/120*x^5-1/5040*x^7
Por otro lado, si quisieramos obtener el polinomio de Taylor de grado 9, de
la funci
on f (x) = sen x, centrado en /4, podramos ejecutar las instrucciones
syms x;
T9=taylor(sin(x),pi/4,10)
Observa que la expresi
on que se obtiene es muy larga.
Adem
as, los comandos sym2poly y poly2sym nos permiten pasar, respectivamente, de la expresi
on simb
olica de un polinomio a su vector de Matlab
correspondiente y viceversa. Por ejemplo, una vez ejecutadas las instrucciones
anteriores, la instrucci
on
t7=sym2poly(T7)

114

Sucesiones y Series

nos devuelve el vector de Matlab que representa a dicho polinomio, es decir


t7=-1/5040

1/120

-1/6

taylor
El comando taylor(f(x)) calcula el polinomio de Taylor de grado 5 de
la funci
on f(x), centrado en x0 = 0. Podemos especificar tanto el grado del
polinomio de Taylor a determinar, as como el punto en el cual queramos
centrarlo. Por ejemplo, el comando taylor(f(x),10) determina el polinomio
de Taylor de grado 9, de la funci
on f(x), centrado en x0 = 0, mientras que el
comando taylor(f(x),pi,5) determinar
a el polinomio de Taylor de grado
4, de la funci
on f(x), centrado en .
sym2poly
El comando sym2poly nos permite obtener, a partir de un polinomio
simb
olico, el vector Matlab que lo representa.
poly2sym
Como te puedes imaginar, este comando convierte un vector Matlab en
el polinomio simb
olico que representa.

4.5.2.

Producto de series

Al multiplicar dos series de potencias f (x) =

n=0

obtenemos una nueva serie de potencias h(x) =

X
n=0

an xn y g(x) =

X
n=0

bn xn ,

cn xn . La suma parcial de

grado k de esta u
ltima serie la podemos obtener considerando los terminos,
hasta el grado k, que se obtienen al multiplicar entre s las sumas parciales de
grado k de f y de g. Esto es una multiplicaci
on de polinomios que, a traves
de los vectores de Matlab que representan a cada uno de ellos, lo podemos

4.5. Series de Taylor

115

hacer con el comando conv, cuya denominaci


on est
a relacionada con lo que
se conoce como la convoluci
on de funciones.
As, si p y q son dos vectores de Matlab asociados respectivamente a un
par de polinomios P (x) y Q(x), la instrucci
on r=conv(p,q) devuelve el vector r cuya longitud es length(p)+length(q)-1 y est
a asociado al polinomio
2
P (x) Q(x). Por ejemplo, siendo P (x) = x + 6x + 1 y Q(x) = 2x2 3x + 5
dos polinomios representados respectivamente por los vectores p=[1 6 1] y
q=[2 -3 5], la instrucci
on r=conv(p,q) nos devuelve el vector de Matlab
r=[ 2 9 -11 27 5 ] que es exactamente el vector que representa al polinomio P (x) Q(x) = 2x4 + 9x3 11x2 + 27x + 5
Por tanto, para obtener el polinomio de Taylor de grado 51 de la funci
on
2
h(x) = (x 2x + 1) sen x centrado en x0 = 0, podemos utilizar la siguiente
rutina. En ella, hacemos uso de la misma construcci
on realizada en la secci
on
anterior para obtener el polinomio de Taylor de grado 51 de la funci
on sen x
centrado en 0, representado por el vector a51 y tambien utilizamos que el polinomio de Taylor de grado 51 de la funci
on x2 2x + 1 coincide, en este caso,
con la propia funci
on, por ser esta un polinomio cuyo grado es menor o igual
que 51. Adem
as de determinar el polinomio de Taylor deseado y representado
en este caso por el vector c, lo representaremos en el intervalo [2, 2]
n=[0:25];
u=(-1).^n./(cumprod(2*n+1).*cumprod([1 2*n(2:26)]));
v=zeros(1,2*length(u));
v(2:2:length(v))=u;
a51=v(length(v):-1:1); % vector de longitud 52
b=[1 -2 1];
w=conv(b,a51);
c=w(length(w)-51:length(w));% solo los t
erminos hasta grado 51
x=-2*pi:0.01:2*pi; plot(x,polyval(c,x))

116

4.5.3.

Sucesiones y Series

Ejercicios

1. Representa en un mismo gr
afico la funci
on f (x) = ex en el intervalo
[2, 2] y sus polinomios de Taylor, centrados en x0 = 0, de grados 1, 3,
8 y 12. A
nade una etiqueta para poder identificarlos con facilidad y, si
fuera necesario, ajusta la escala de los ejes para mostrar el gr
afico de la
mejor forma posible.
2. Representa en un mismo gr
afico la funci
on f (x) = cos x en el intervalo
[2, 2] y sus polinomios de Taylor, centrados en x0 = 0, de grados 2,
6, 12 y 50. A
nade una etiqueta para poder identificarlos con facilidad
y, si fuera necesario, ajusta la escala de los ejes para mostrar el gr
afico
de la mejor forma posible. Adem
as, a
nade una cuadrcula al gr
afico e
imprmelo. Con la ayuda de una regla, determina el mayor valor R tal
que, para todo x [R, R] se verifique que |cos x P6 (x)| < 0.1. Por
u
ltimo, representa a mano en la gr
afica el intervalo [R, R] e indica el
valor de R correspondiente.
3. Representa en un mismo gr
afico la funci
on f (x) = ln x en el intervalo
[0.1, 4] y sus polinomios de Taylor centrados en 2 de grados 1, 3, 10 y
20. A
nade una etiqueta para poder identificarlos con facilidad y, si fuera
necesario, ajusta la escala de los ejes para mostrar el gr
afico de la mejor
forma posible.
4. Utiliza el paquete simb
olico para determinar el polinomio de Taylor de
grado 9 de la funci
on f (x) = arctg x, desarrollado en x0 = 0. Utiliza el comando sym2poly para obtener el vector correspondiente que
lo representa. Representa en un mismo, tanto la funci
on f como dicho
polinomio, en el intervalo [1.3, 1.3], a
nadiendo una etiqueta para identificarlos f
acilmente e imprime el gr
afico resultante. En la parte de abajo
de dicho folio, incluye a mano una explicaci
on acerca de por que ambas
curvas se separan en los extremos del intervalo, independientemente de
que aumente el grado del polinomio de Taylor.

4.5. Series de Taylor

117

5. Utiliza el producto de polinomios para calcular el polinomio de Taylor


de grado 15 centrado en x0 de la funci
on (x2 1) sen x cos x
Nota: empieza utilizando alguna igualdad trigonometrica

Captulo 5

Vectores y geometra
analtica
5.1.

Aritm
etica vectorial

Geometricamente, un vector es una magnitud con direcci


on y generalmente lo representaremos a traves de una flecha partiendo de un punto origen
arbitrariamente elegido hasta un punto de destino. As, podremos representar
gr
aficamente vectores especificando tanto el punto de origen como el punto
de destino. Si tomamos como punto de origen el origen de coordenadas, el
vector correspondiente se denomina vector de posici
on del punto de destino.
Analticamente, un vector en el plano es lo mismo que un vector de Matlab
de longitud 2 y un vector en el espacio, lo mismo que un vector de Matlab
de longitud 3.

Con la ayuda de la rutina arrow que descargamos anteriormente de la


central de archivos de Matlab (ver secci
on 1.3.5) podemos representar c
omodamente, tanto los vectores del plano, como los vectores en el espacio.

120

5.1.1.

Vectores y geometra analtica

Vectores en el plano

Siendo los vectores ~a = (4, 7) y ~b = (2, 3), representar los vectores ~a, ~b,
0.5 ~a y ~a + ~b siendo el origen com
un de todos ellos el origen de coordenadas.
Al tomar como origen de los vectores dados el origen de coordenadas, el
vector ~a es el vector de posici
on del punto (4, 7) y el vector ~b, el vector de posici
on del punto (2, 3). Podemos obtener la representaci
on pedida utilizando
la siguiente rutina:
axis equal; axis([-4 5 -2 12]); grid on;
a=[4 7]; b=[-2 3];
O=[0 0]; % La letra O denota el origen de coordenadas
arrow(O,a,EdgeColor,[1 0 0],FaceColor,[1 0 0]);
arrow(O,b,EdgeColor,[0 1 0],FaceColor,[0 1 0]);
arrow(O,0.5*a,EdgeColor,[0 0 1],FaceColor,[0 0 1]);
arrow(O,a+b);
legend(a,b,0.5 a,a+b)
Puesto que la representaci
on de cada una de las flechas se compone b
asicamente de un segmento y de un tri
angulo haciendo las veces de la punta
de la flecha correspondiente, hemos indicado el color (en RGB) de cada una
de ellas asignando los correspondientes valores a cada una de las variables
EdgeColor y FaceColor. Para la u
ltima flecha, hemos optado por dejar los
correspondientes valores por defecto, con lo que queda representada en negro.
Observa tambien que, en la primera lnea, hemos ajustado la ventana
para verlos de la mejor forma posible y que el trazo con el que aparecen en
el cartel es m
as grueso que si fueran un segmento, lo que hace m
as r
apida su
identificaci
on. Recuerda que si el cartel no aparece en el lugar m
as adecuado,
siempre puedes arrastrarlo hasta la posici
on que t
u quieras.

121

5.1. Aritmetica vectorial

5.1.2.

Vectores en el espacio

Representar los vectores ~a = (2, 3, 1), ~b = (1, 3, 5), ~c = (2, 4, 1),


~a + ~b y ~a + 0.2~b 0.3~c, utilizando el origen de coordenadas como punto de
origen de los mismos.
axis equal; axis([-3 4 -4 7 -6 6]); grid on;
a=[2 3 -5]; b=[1 -3 5]; c=[-2 4 -1];
O=[0 0 0]; % La letra O denota el origen de coordenadas
arrow(O,a,EdgeColor,[1 0 0],FaceColor,[1 0 0]);
arrow(O,b,EdgeColor,[0 1 0],FaceColor,[0 1 0]);
arrow(O,c,EdgeColor,[0 0 1],FaceColor,[0 0 1]);
arrow(O,a+b,EdgeColor,[1 1 0],FaceColor,[1 1 0]);
arrow(O,a+0.2*b-0.3*c);
legend(a,b,c,a+b,a+0.2*b-0.3*c)

5.1.3.

El producto escalar

Si ~a = (a1 , a2 , . . . , an ) y ~b = (b1 , b2 , . . . , bn) son dos vectores de longitud


n, representados respectivamente por los vectores de Matlab a y b, la insn
X
trucci
on sum(a.*b) devuelve
ai bi que es el producto escalar de dichos
i=1

vectores, en el plano si n = 2 y en el espacio si n = 3

5.1.4.

Angulos
y longitudes

Calcular la longitud de los vectores ~a = (2, 3, 5) y ~b = (1, 3, 5) y el


angulo que forman entre ellos
a=[2 3 -5]; b=[1 -3 5];
La=sqrt(sum(a.*a)) % Longitud de a
Lb=sqrt(sum(b.*b)) % Longitud de b
angulo=acos(sum(a.*b)/(La*Lb)) %
Angulo entre ellos

122

Vectores y geometra analtica

Utilizando esta rutina obtenemos los valores La, Lb y angulo en la ventana de comandos. Si quisieramos presentar los resultados en la ventana gr
afica
que genera la rutina de la secci
on 5.1.2, podemos a
nadir a la misma las tres
u
ltimas lneas de la rutina anterior y las lneas que indicamos a continuaci
on,
con lo que conseguiremos que aparezca en el gr
afico el valor del angulo que
~
forman los vectores ~a y b
T=[
Angulo(a,b) = ,num2str(angulo)];
text(5,-5,-10,T)

5.1.5.

El producto vectorial

Si u y v son dos vectores de Matlab de longitud 3, el comando cross(u,v)


devuelve el producto vectorial de los mismos.
cross
Si u y v son dos vectores de longitud 3, el comando w=cross(u,v) devuelve
el vector w cuyas componentes son las componentes del vector correspondiente
al producto vectorial de los vectores u y v en el espacio.

5.1.6.

Volumen de un paraleleppedo

Siendo ~a = (1, 0, 0), ~b = (1, 2, 0) y ~c = (1, 1, 3), determina el vector ~b ~c y


el volumen del paraleleppedo determinado por ~a, ~b y ~c
En la siguiente rutina utilizaremos que el volumen de dicho paraleleppedo
lo podemos determinar a traves de la igualdad V = |~a ~b ~c|
a=[1 0 0]; b=[1 2 0]; c=[1 1 3];
bporc=cross(b,c)
volumen=abs(sum(a.*bporc))

5.1. Aritmetica vectorial

5.1.7.

123

El producto escalar triple

La f
ormula indicada anteriormente para calcular el volumen de un paraleleppedo tambien se conoce como el producto escalar triple y se puede
comprobar que se puede calcular como

a1 a2 a3
a1 a2 a3



|~a ~b ~c| = b1 b2 b3 = det b1 b2 b3




c1 c2 c3
c1 c2 c3
siendo ~a = (a1 , a2 , a3 ), ~b = (b1 , b2, b3 ) y ~c = (c1 , c2, c3 ) tres vectores en el
espacio.

As, el volumen del paraleleppedo anterior tambien lo podemos calcular


como
a=[1 0 0]; b=[1 2 0]; c=[1 1 3];
volumen=det([a;b;c])
det
Siendo A una matriz cuadrada, la instrucci
on det(A) devuelve el determinante de dicha matriz.

5.1.8.

Ejercicios

Recuerda a
nadir un ttulo descriptivo en cada uno de los siguientes gr
aficos
y etiquetar convenientemente los ejes:
1. Tomando como origen de los vectores el origen de coordenadas, representa en un mismo gr
afico los vectores ~a = (1, 0, 0), ~b = (1, 2, 0), ~c = (1, 1, 3)
y ~a ~b. Determina el angulo que forman ~c y ~a ~b, a
nadiendo el valor
de dicho angulo como parte del gr
afico y a
nade un letrero con el que se
puedan identificar f
acilmente dichos vectores.

124

Vectores y geometra analtica




3 4
1
~
2. Representa los vectores ~a =
,
yb=
, 2 en el plano, tomando
2 5
2
como origen de los mismos el punto P = (2, 3). Determina el valor del
angulo que forman, a
nadiendo el valor de dicho angulo como parte del
gr
afico y a
nade un letrero con el que se puedan identificar f
acilmente
dichos vectores.

5.2.

Curvas parametrizadas

Las trayectorias que siguen cuerpos en movimiento se pueden describir a


traves de curvas y ciertas propiedades fsicas de dicho movimiento (velocidad,
aceleraci
on, ...) se pueden interpretar con la ayuda del c
alculo diferencial.
Matlab puede ser una herramienta u
til tanto en la visualizaci
on como en el
manejo de dichos conceptos.

5.2.1.

Representaci
on de una curva

Las curvas (en el sentido m


as amplio del termino) m
as simples, tanto en el
plano como en el espacio, son las rectas. El lugar geometrico de la recta que,
pasando por un un punto P0 , tiene por vector director el vector ~v , lo podemos
determinar como el de los puntos P tales que P = P0 + t ~v, para alg
un valor
real de t, habiendo indentificado el punto P con su vector de posici
on.
Por ejemplo, la recta del plano que, pasando por el punto P0 = (2, 3),
tiene por vector director el vector ~v = (4, 1), la podemos representar utilizando la siguiente rutina:
t=[-2 2];
x=2-4*t; y=-3+t;
plot(x,y); grid on; axis equal
De la misma forma, la recta en el espacio que, pasando por el punto

5.2. Curvas parametrizadas

125

P0 = (1, 3, 2), tiene por vector director el vector ~v = (2, 4, 1), la podemos
representar utilizando esta otra rutina:
t=[-2 2];
x=1+2*t; y=-3+4*t; z=2-t;
plot3(x,y,z); grid on; axis equal
Este gr
afico quiz
a no te resulte demasiado satisfactorio. Para intentar
darle un poco m
as de perspectiva, ejecuta la instrucci
on box on, con lo que
aparecer
a el gr
afico dentro de una caja. Adem
as, observa que la orientaci
on
de los ejes puede que no coincida con la que est
as acostrumbrado. Quiz
a te
resulte m
as familiar la orientaci
on que se obtiene al ejecutar la instrucci
on
view([145,30]). Incluso podemos ofrecer una visualizaci
on mejor si incluimos las proyecciones (en verde) de la recta sobre los planos visibles que, una
vez hemos cambiado el punto de vista, son el plano Z = 0 (el horizontal),
el plano X = 3 (el plano visible de la derecha) y el plano Y = 11 (el
plano visible de la izquierda. Todo ello lo podemos conseguir a
nadiendo las
siguientes lneas a nuestra rutina anterior:
box on;
view([145,30]); hold on;
plot3(x,y,0*z,:g) % Proyecci
on sobre Z=0
plot3(-3+0*x,y,z,:g) % Proyecci
on sobre X=-3
plot3(x,-11+0*y,z,:g) % Proyecci
on sobre Y=-11
El tercer argumento de la antepen
ultima lnea no puede ser simplemente 0
puesto que los vectores que figuren como argumentos de la instrucci
on plot3
deben ser del mismo tama
no. El vector 0*z tiene el mismo tama
no que el
vector z, pero siendo 0 el valor de todas sus componentes. Por esa misma
raz
on, el primer argumento de la pen
ultima lnea no puede ser simplemente -3 y el segundo argumento de la u
ltima lnea no puede ser simplemente -11

126

Vectores y geometra analtica

Tambien observa que, en cualquier caso, puesto que salvo que le indiquemos lo contrario Matlab unir
a los puntos consecutivos con una lnea,
para representar una recta basta con que el par
ametro t tome dos u
nicos
valores. En el caso de una curva, habr
a que considerar suficientes valores de
dicho par
ametro y as, podemos representar cualquier curva plana parametizada como (x(t), y(t)) o cualquier curva en el espacio parametrizada como
(x(t), y(t), z(t)), con instrucciones parecidas a las anteriores. Para una curva
plana podemos utilizar el siguiente esquema
t=[t0:paso:t1];
x=x(t); y=y(t);
plot(x,y); grid on; axis equal
y para una curva en el espacio
t=[t0:paso:t1];
x=x(t); y=y(t); z=z(t);
plot3(x,y,z); grid on; axis equal
sustituyendo los valores t0, paso y t1 por los que sean necesarios para que
la curva se observe de forma suave, y las funciones x(t), y(t) (y z(t) en el
caso de una curva en el espacio) por las correspondientes expresiones de la
parametrizaci
on de la curva en cuesti
on.
Por ejemplo, la curva plana cuyas ecuaciones parametricas vienen descri3t
3t2
tas por x(t) =
,
y(t)
=
, con t [0.5, 4], la podemos representar
1 + t3
1 + t3
utilizando la siguiente rutina
t=[-0.5:0.05:4];
x=3*t./(1+t.^3); y=3*t.^2./(1+t.^3);

5.2. Curvas parametrizadas

127

plot(x,y); grid on; axis equal


De forma an
aloga, la curva en el espacio descrita por las ecuaciones parametricas x = 2 cos t, y = 2 sen t, z = t/2, con t [0, 4], la podemos
representar como
t=linspace(0,4*pi);
x=2*cos(t); y=2*sin(t); z=t/2;
plot3(x,y,z); grid on; axis equal
view([145,30])
Podemos a
nadir las proyecciones sobre los planos visibles (en este caso son
Z = 0 el horizontal, X = 2 el de la derecha e Y = 2 el de la izquierda)
de forma an
aloga a la indicada anteriormente. En este caso, nos conformaremos u
nicamente con la proyecci
on (en verde) sobre el plano horizontal, pero
para darle mayor perspectiva a la representaci
on, a
nadiremos una serie de
varillas desde cada punto de la curva hasta el plano horizontal. Observa que
en las lneas siguientes, que a
nadiremos a las anteriores, utilizamos un nuevo
par
ametro s para seleccionar unos pocos puntos de dicha curva (20 en este
caso, mientras que la curva tiene 100)
hold on;
plot3(x,y,0*z,:g);
s=linspace(0,4*pi,20);
x=2*cos(s); y=2*sin(s); z=s/2;
stem3(x,y,z,b)
hold off
plot3
Con este comando, cuya sintaxis es la misma que plot, podemos representar puntos en el espacio. Siendo x, y, z, tres vectores de la misma longitud

128

Vectores y geometra analtica

n, la instrucci
on plot3(x,y,z) representa los n puntos cuyas coordenadas se
corresponden con los valores de las componentes de dichos vectores, uniendo
los puntos consecutivos con una lnea. Puedes obtener m
as informaci
on acerca
de este comando con la instrucci
on help plot3
box
La instrucci
on box on muestra los bordes de una caja que encerrara al
gr
afico que haya en la ventana gr
afica. Puedes eliminarla con box off
view
Los valores del azimut y del angulo de elevaci
on que Matlab utiliza
por defecto para las representaciones tridimensionales son, respectivamente,
37.5o y 30o. Estos pueden ser cambiados con el comando view o interactivamente tanto con la instrucci
on rotate3d on como pulsando sobre el icono
de la pantalla gr
afica cuyo identificador es Rotate 3D. Estos angulos se definen de la siguiente forma: si el punto de vista est
a situado sobre un punto
P , el segmento S que une P con el origen de coordenadas forma un angulo
con el plano horizontal Z = 0. Este angulo es positivo si P est
a por encima
del plano Z = 0 y negativo si P est
a por debajo: este angulo es el angulo
de elevaci
on. Adem
as, la proyecci
on de dicho segmento sobre el plano Z = 0
forma otro angulo con la parte de negativa del eje Y . Este angulo, medido
desde la parte negativa del eje Y y en el sentido contrario de las agujas del
reloj, es el azimut. Por ejemplo, la instrucci
on view([145,30]) establece el
o
valor del azimut en 145 y el del angulo de elevaci
on en 30o . Este punto de
vista y el que ofrece la instrucci
on view([120,30]) son los que habitualmente
utilizamos en la pizarra, en el cual la parte positiva del eje Z est
a orientada
hacia arriba, la parte positiva del eje Y est
a orientada ligeramente hacia la
derecha y la parte positiva del eje X, ligeramente hacia la izquierda. Si la
explicaci
on no te parece suficientemente clara, prueba a ejecutar la siguiente
rutina en la que se visualizan dichos elementos:

5.2. Curvas parametrizadas

axis([-1 6 -3 6 -1 6]); axis equal


view([120,30])
hold on
arrow([0 0 0],[5 0 0])
text(6,-0.25,0,Eje X)
arrow([0 0 0],[0 5 0])
text(1,4.75,0,Eje Y)
arrow([0 0 0],[0 0 5])
text(0,0.25,5.25,Eje Z)
L(1)=plot3(2,4,4,o);
plot3([2 2],[4 4],[4 0],:)
plot3([2 2],[4 0],[0 0],:)
plot3([2 0],[4 4],[0 0],:)
L(2)=plot3([2 0],[4 0],[4 0]);
L(3)=plot3([2 0],[4 0],[0 0],:g);
L(4)=plot3([0 0],[-2 0],[0 0],:r);
elev=acos(5*sqrt(2)/9);
azim=acos(-2*sqrt(2)/3);
t=linspace(0,elev,20);
plot3(cos(t),2*cos(t),sqrt(5)*sin(t),g)
L(5)=arrow([cos(t(19)),2*cos(t(19)),sqrt(5)*sin(t(19))],...
[cos(t(20)),2*cos(t(20)),sqrt(5)*sin(t(20))],...
EdgeColor,g,FaceColor,g);
u=[0:pi/12:azim]; su=length(u);
plot3(sin(u),-cos(u),0*u,r)
L(6)=arrow([sin(u(su-1)),-cos(u(su-1)),0],...
[sin(u(su)),-cos(u(su)),0],...
EdgeColor,r,FaceColor,r);
legend(L,P,S,Proyecci
on de S,...
Parte neg. eje Y,Elevaci
on,Azimut)
hold off

129

130

Vectores y geometra analtica

rotate3d
La instrucci
on rotate3d on o la pulsaci
on sobre el icono de la ventana
gr
afica cuyo identificador es Rotate 3D, permite modificar interactivamente
el punto de vista. Para ello, tras ejecutar dicha instrucci
on o tras pulsar sobre
dicho icono, s
olo tienes que pulsar con el bot
on izquierdo del rat
on sobre
la figura y arrastar el rat
on en la direcci
on deseada. Durante este proceso,
los valores del azimut y del angulo de elevaci
on aparecer
an en la esquina
inferior izquierda de la ventana gr
afica. Prueba a variar estos valores de forma
interactiva con las figuras anteriores hasta obtener el punto de vista que te
parezca m
as adecuado.
stem3
Siendo x, y y z tres vectores de longitud n, el comando stem3(x,y,z)
traza n lneas uniendo cada punto de coordenadas (x(i),y(i),z(i)) con el
punto de coordenadas (x(i),y(i),0), para los distintos valores de i desde
1 hasta n. En dos dimensiones, el comando correspondiente es stem

5.2.2.

Vector tangente a una curva

Dada una curva parametrizada, en el plano a traves de una expresi


on del
tipo c(t) = (x(t), y(t)) o en el espacio a traves de c(t) = (x(t), y(t), z(t)), se
define el vector tangente en un instante t0 como
c(t0 + h) c(t0 )
h0
h

c0 (t0 ) = lm

con lo que la ecuaci


on vectorial de la recta tangente a dicha curva en el instante
t0 es
(x, y) = (x(t0 ), y(t0)) + c0 (t0 ) con R
si la curva es plana, mientras que, si la curva es en el espacio, dicha ecuaci
on
vectorial es
(x, y, z) = (x(t0 ), y(t0), z(t0 )) + c0 (t0 ) con R

131

5.2. Curvas parametrizadas

Para representar la curva c(t) = (4 cos t, 2 sen t) con t [0, 2], su vector
tangente en el instante t0 = /6 y los vectores secantes
c


 
+h c
6
6
h

para los valores h = 0.1, h = 0.05 y h = 0.01, siendo c(/6) el origen com
un
de todos ellos, podemos tener en cuenta que, en cada instante t, el vector tangente a dicha curva es c0 (t) = (4 sen t, 2 cos t). As, la primera parte de la
siguiente rutina nos permite representar la curva y el vector c0 (/6) tomando
como punto base el punto c(/6), mientras que en el bucle for representamos
los tres vectores secantes indicados.
t=linspace(0,2*pi);
x=4*cos(t); y=2*sin(t);
x0=4*cos(pi/6); y0=2*sin(pi/6);
xprima=-4*sin(pi/6); yprima=2*cos(pi/6);
plot(x,y); axis equal; axis([-4 4 -3 3]); hold on;
arrow([x0 y0],[x0+xprima,y0+yprima]);
for h=[0.1 0.05 0.01];
vx=x0+(4*cos(pi/6+h)-4*cos(pi/6))/h;
vy=y0+(2*sin(pi/6+h)-2*sin(pi/6))/h;
arrow([x0 y0],[vx vy],EdgeColor,g,FaceColor,g);
end;
legend(Curva,Vector tangente,Vectores secantes)
Adem
as, si realizas a mano los c
alculos correspondientes, puedes comprobar
que la ecuaci
on de la recta tangente a la curva c(t) en el punto c(/6) es
3
y = 2 x + 4 que la puedes incorporar en rojo al gr
afico anterior sin m
as
que ejecutar las siguientes instrucciones:
x=[2 4]; plot(x,-sqrt(3)/2*x+4,r)

132

5.2.3.

Vectores y geometra analtica

Ejercicios

1. A continuaci
on te presentamos algunas curvas famosas. Representalas
e imprime los gr
aficos resultantes sin olvidarte de a
nadir en el ttulo,
tanto el nombre de la curva, como la parametrizaci
on utilizada. En todos
los casos, las constantes a y b son constantes positivas. Las siete u
ltimas
curvas est
an expresadas en polares. Recuerda que, dada una curva en
polares a traves de una expresi
on del tipo r = r(t), la correspondiente
parametrizaci
on en coordenadas cartesianas es
(
x = r(t) cos t
y = r(t) sen t
x = a cos t
con t [0, 2]
y = b sen t
(
x = a cosh t
Hiperbola (Rama de la derecha):
con t R
y = b senh t

3at

x = 1 + t3

Folium de Descartes:
con t R {1}

3at

y =
1 + t3
(
x = a sen2 t
Cisoide de Diocles:
con t (/2, /2)
y = a sen2 t tg t
(
x = a cos(2t)
Estrofoide:
con t (/2, /2)
y = a cos(2t) tg t
(
x = a (t sen t)
Cicloide:
con t (, )
y = a (1 cos t)
(
x = a cos3 t
Hipocicloide (o astroide):
con t (, )
y = a sen3 t

 

p

3 5
Lemniscata: r = a cos(2t) con t
,

,
4 4
4 4

a) Elipse:
b)

c)

d)
e)
f)
g)
h)

133

5.2. Curvas parametrizadas

i ) Cardioide: r = a (1 + cos t) con t [0, 2]


j ) Espiral de Arqumedes: r = a t con t 0
k ) Espiral hiperb
olica: r = a/t con t > 0
l ) Espiral logartmica: r = eat con t R
m) Rosa de tres petalos: r = a sen(3t) con t [0, ]
n) Rosa de cuatro petalos: r = a |sen(2t)| con t [0, 2]
2. Representa la curva plana parametrizada como x = cos t, y = cos(2t)
con t [0, 2] imprimiendo el gr
afico resultante. A mano, indica sobre
el dibujo (utilizando puntas de flecha) la direcci
on en la que se recorre
la curva cuando el par
ametro vara en el intervalo indicado. A mano,
o con el comando text, se
nala y etiqueta los puntos de la curva para
t = 0, t = /2, t = , t = 3/2 y t = 2. Esta curva es suave?
3. Representa la curva en el espacio definida por x = sen t, y = sen(2t),
z = sen(3t), con t [0, 2]. Utiliza el comando stem3 junto con la
proyecci
on de la curva sobre el plano Z = 0 para darle al gr
afico un
poco de perspectiva. Rota la curva para obtener el punto de vista desde
el que te parezca que se observa con m
as claridad e imprime el gr
afico
resultante. A mano, indica sobre el dibujo (utilizando puntas de flecha)
la direcci
on en la que se recorre la curva cuando el par
ametro vara en
el intervalo indicado. A mano, o con el comando text, se
nala y etiqueta
los puntos de la curva para t = 0, t = /2, t = , t = 3/2 y t = 2.
Esta curva es suave?
4. Representa la curva c(t) = (t2 , t3 ) con t [2, 2], su vector tangente en
el instante t0 = 1 y los vectores secantes
c(1 + h) c(1)
h
para los valores h = 0.1, h = 0.05 y h = 0.01, siendo c(1) el origen
com
un de todos ellos. Utiliza la misma escala en ambos ejes y a
nade un

134

Vectores y geometra analtica

letrero para identificar los elementos que componen el gr


afico. Adem
as,
calcula la ecuaci
on de la recta tangente a la curva c(t) en el punto c(1)
y a
nade dicha recta como un elemento m
as del gr
afico anterior.
5. Representa la curva c(t) = (2 cos t, 2 sen t, t/2) con t [0, 2], su
vector tangente en el instante t0 = y los vectores secantes
c( + h) c()
h
para los valores h = 0.3, h = 0.2 y h = 0.1, siendo el origen com
un de todos ellos el punto c(). Presenta el gr
afico correspondiente utilizando el
punto de vista que te parezca m
as adecuado, a
nadiendo cuantos elementos estimes oportunos para darle mayor perspectiva. Adem
as, calcula la
ecuaci
on de la recta tangente a la curva c(t) en el punto c() y a
nade
dicha recta como un elemento m
as del gr
afico anterior.

5.3.

Longitud y curvatura de una curva

Como ya adelant
abamos en la secci
on 3.3, podemos calcular la longitud
de una curva plana parametrizada como x = x(t), y = y(t) con t a
traves de
s
Z  2  2
dy
dx
+
dt
dt
dt

De la misma forma, si tenemos una curva en el espacio parametrizada


como x = x(t), y = y(t), z = z(t) con t , podemos determinar su
longitud a traves de
s
Z  2  2  2
dx
dy
dz
+
+
dt
dt
dt
dt

Al igual que all, insistamos de nuevo en que puede que tengamos que
recurrir a una aproximaci
on poligonal o a la evaluaci
on de esa integral definida
a traves de metodos numericos.

135

5.3. Longitud y curvatura de una curva

5.3.1.

Longitud de una elipse

Aproximar numericamente la longitud de la elipse

y2
x2
+
=1
4
9

Parametrizando la curva como x = 2 cos t, y = 3 sen t con 0 t 2 y


considerando una aproximaci
on poligonal dividiendo el intervalo [0, 2] en
1000 subintervalos, la siguiente rutina nos proporciona la correspondiente
aproximaci
on:
t=linspace(0,2*pi,1001);
x=2*cos(t); y=3*sin(t);
plot(x,y); axis equal
dx=diff(x); dy=diff(y); ds=sqrt(dx.^2+dy.^2);
L=sum(ds);
text(-1.8,0.2,[Longitud aprox. poligonal = ,num2str(L)])
La integral definida anteriormente indicada para calcular la longitud de
esta curva es
s
Z 2  2  2
Z 2 p
dy
dx
+
dt =
9 5 sin2 t dt
dt
dt
0
0

Puesto que no existe una primitiva de la funci


on 9 5 sin2 t en terminos de las funciones elementales, tenemos que recurrir a alguna aproximaci
on
numerica, con lo que podras utilizar la regla de Simpson que escribiste en el
ejercicio 2 de la secci
on 2.5 o alguno de los integradores numericos que incorpora Matlab, como quad o quad8. Observa que en la siguiente rutina hemos
utilizado quad8 y que hemos utilizado el comando fcnchk (puedes recordar
lo expuesto en la p
agina 52) para evitar tener que definir el integrando dentro
de un archivo .m:
L=quad8(fcnchk(sqrt(9-5*sin(t).^2)),0,2*pi);
t=linspace(0,2*pi,1001);

136

Vectores y geometra analtica

x=2*cos(t); y=3*sin(t);
plot(x,y); axis equal
text(-1.7,0.2,[Longitud aprox. integral = ,num2str(L)])
En ambos casos, obtenemos 15.8654 como aproximaci
on de la longitud
con cuatro decimales.

5.3.2.

Curvatura de una curva

Dada una curva parametrizada como c(t) = (x(t), y(t), z(t)) (considerando
como curvas en el plano aquellas para las que z(t) = 0), se define la curvatura
de dicha curva en cada instante como el valor
k(t) =

|c0 (t) c00(t)|


|c0 (t)|3

Calcular a mano la curvatura de la curva c(t) = (2 sen t, cos t, cos t) con


0 t 2. Utilizando el comando subplot representar en la primera subventana de un gr
afico dicha curva y, en la segunda subventana, la curvatura. Con
la ayuda del comando text se
nalar los puntos de la curva correspondientes
a los valores t = 0, t = /2, t = , t = 3/2. En la gr
afica de la curvatura
utiliza estos valores y t = 2 como las marcas del eje horizontal.
Como para esta curva, la curvatura es
k(t) =

|c0 (t) c00 (t)|


1
=
|c0 (t)|3
(1 + cos2 t)3/2

la siguiente subrutina nos permite realizar la tarea pedida:


t=linspace(0,2*pi,200);
subplot(2,1,1); plot3(2*sin(t),cos(t),cos(t));
grid on; hold on;
plot3([0 2 0 -2],[1 0 -1 0],[1 0 -1 0],.r);
text(0,1,0.8,\uparrow t=0)

137

5.3. Longitud y curvatura de una curva

text(2,0,-0.2,\uparrow t=\pi/2)
text(0,-1,-0.8,\downarrow t=\pi)
text(-2,0,-0.2,\uparrow t=3\pi/2)
subplot(2,1,2); plot(t,1./(1+cos(t).^2).^(3/2));
set(gca,XTick,[0:pi/2:2*pi])
Observa que las marcas en el eje horizontal de la segunda subventana
aparecen en coma flotante. Para que aparezcan como pi/2, pi, ... podemos
a
nadir la siguiente lnea a la rutina anterior:
set(gca,XTickLabel,[0|pi/2|pi|3*pi/2|2*pi])

5.3.3.

Crculo osculador de una curva plana

Representar en un mismo gr
afico
curva y = x2 con 2 x 2 y su
 la 
1 1
,
crculo osculador en el punto P =
2 4
Puedes comprobar que, en el caso de una curva de la forma y = f (x) que
podemos parametrizar como c(x) = (x, f (x), 0), podemos calcular la curvatura como
|f 00 (x)|
k(x) = 
3/2
1 + (f 0 (x))2
con lo que, en este caso, la curvatura es
k(x) =

cuyo valor para x =

2
(1 + 4x2 )3/2

1
1
es k =
2
2

!
2
2
Por otra parte, como el vector
,
es unitario y tangente a la curva
2
2
!


1 1
2 2
en el punto
,
, el vector ~n =
,
es unitario y perpendicular
2 4
2
2

138

Vectores y geometra analtica

a la curva en el punto P , con lo que el centro del crculo osculador es el punto


! 




1
1 1
2
1 5
2
,
+ 2
,
=
,
C = P + ~n =
k
2 4
2
2
2 4
1
y el radio es = 2, pudiendo parametrizar la circunferencia correspondiente
k
como


  1
5
x(t), y(t) =
+ 2 cos t, + 2 sen t con t [0, 2]
2
4

Finalmente, las siguientes instrucciones resuelven la tarea propuesta:

x=linspace(-2,2,400); % Par
ametro para la par
abola
t=linspace(0,2*pi,600); % Par
ametro para la circunferencia
plot(x,x.^2,-1/2+sqrt(2)*cos(t),5/4+sqrt(2)*sin(t));
axis equal

5.3.4.

Ejercicios

1. Aproximar la longitud de la curva c(t) = (t, t2 , t3 ) con 0 t 2 considerando la aproximaci


on poligonal que se obtiene al dividir el intevalo
[0, 2] en 1000 subintervalos iguales. A continuaci
on, aproxima dicha longitud a traves de la f
ormula integral de la longitud utilizando el comando
quad para aproximar el valor correspondiente. Representa dicha curva
e incluye en el gr
afico los valores obtenidos.
2. Determinar la curvatura k(t) de la curva c(t) = (sin t, cos t, sin2 t) con
0 t 2 y utiliza el comando subplot para representar la curva en
una subventana y la curvatura en otra. Etiqueta, con el comando text,
los puntos de la curva correspondientes a los valores 0, /2, , 3/2 y
2 del par
ametro t. Adem
as, coloca dichos valores de t en el eje T del
gr
afico correspondiente a la curvatura.
3. Representa en un mismo gr
afico la curva y = ln x con 0.2 x 4 y su
crculo osculador en el punto correspondiente para x = 2.

5.4. Superficies en el espacio

5.4.

139

Superficies en el espacio

Una vez que sabemos representar curvas, tanto en el plano como en el


espacio, dedicaremos la u
ltima secci
on de este captulo a la representaci
on de
superficies en el espacio.

5.4.1.

Representaci
on de un plano

Unos de los elementos m


as simples que podemos encontrarnos en el espacio
son los planos. Podemos describirlos analticamente a traves de una ecuaci
on
de la forma a x + b y + c z = d, para ciertos valores de las constantes a, b, c
y d. Un plano que, pasando por un punto P0 , es paralelo a los vectores u
~ y ~v,
lo podemos describir como los puntos P del espacio tales que, para ciertos valores de los par
ametros s y t verifican la ecuaci
on vectorial P = P0 +s~
u +t~v .
Como primer ejemplo, consideremos el plano de ecuaci
on x + 2y + z = 3.
Puesto que podemos despejar la variable z en terminos de las variables x e
y obteniendo z = 3 x 2y, utilizaremos una malla rectangular de puntos
del plano XY , para asignarle a cada punto (x0 , y0 ) de dicha malla, la altura
correspondiente al valor z0 = 3 x0 2y0 . Como el comando surf unir
a los
puntos consecutivos formando paralelogramos, nos basta con que nuestra malla tenga 4 puntos. Una vez realizada dicha asignaci
on, representaremos en
el espacio los puntos correspondientes a cada terna (x0 , y0 , z0 ), tal y como se
muestra a continuaci
on:
[x,y]=meshgrid(-4:8:4,-2:4:2);
z=3-x-2*y;
surf(x,y,z); view(120,20)
Como el punto de vista por defecto no es adecuado para este gr
afico, en
la u
ltima lnea hemos utilizado el comando view para seleccionar un punto
de vista m
as adecuado (puedes recordar los comentarios al respecto de los

140

Vectores y geometra analtica

comandos view y rotate3d que hacamos en las p


aginas 128 y 130, respectivamente). Te proponemos que experimentes con mallas m
as finas y pruebes a
sustituir el comando surf por el comando mesh. Por ejemplo, puedes ejecutar
[x,y]=meshgrid(-4:4:4,-2:2:2);
z=3-x-2*y;
mesh(x,y,z); view(120,20)
Consideremos ahora un plano descrito a traves de una ecuaci
on vectorial.
Por ejemplo, consideremos el plano que, pasando por el punto P0 = (1, 3, 2)

es paralelo a los vectores ~u = (0.2, 0.3, 0.5) y ~v = (0.4, 1/3, 2). En primer
lugar, debemos decidir un conjunto adecuado para los par
ametros s y t de
la correspondiente ecuaci
on vectorial: elegiremos para este caso el intervalo
[2, 2] tanto para s como para t, pero como los puntos consecutivos, por defecto ir
an unidos, nos basta con los extremos de dicho intervalo. Cada pareja
de valores (s, t) se corresponde con las coordenadas en el plano ST de cada
uno de los puntos de una malla uniforme, mientras que cada terna (x, y, z)
proporciona las coordenadas en el espacio de los puntos de una malla sobre
el plano a representar. Para observar las diferencias entre mesh y surf, representaremos en ventanas gr
aficas independientes las salidas de cada uno de
estos comandos utilizando la siguiente rutina:
[s,t]=meshgrid(-2:4:2);
x=1+0.2*s+0.4*t;
y=3+0.3*s-1/3*t;
z=-2-0.5*s+sqrt(2)*t;
figure(1); mesh(x,y,z);
figure(2); surf(x,y,z);
Est
an las ventanas gr
aficas superpuestas? Seguramente no estar
as muy
satisfecho con las figuras, porque el punto de vista est
a pr
acticamente conte-

5.4. Superficies en el espacio

141

nido en el plano y, por tanto, el plano m


as bien parece una recta, pero seguro
que ya sabes adecuar el punto de vista.
meshgrid
Este comando es la versi
on bidimensional del comando linspace. Siendo a
y b dos vectores de longitudes m y n respectivamente, la salida de la instrucci
on
[x,y]=meshgrid(a,b) son dos matrices x e y siendo las n filas de la matriz
x copias del vector a y las m columnas de la matriz y copias del vector b. En
nuestro primer ejemplo anterior, puesto que el vector a es el vector [-4 4] y
el vector b es el vector [-2 2], las matrices x e y son
!
!
4 4
2 2
x=
y=
4 4
2
2
En el caso en el que s
olo se utilice un vector como par
ametro de la instrucci
on
meshgrid, considerar
a que dicho vector corresponde tanto al vector a como al
vector b anteriormente indicados. Con esto, estamos considerando los puntos
(4, 2), (4, 2), (4, 2) y (4, 2). Si quieres ver c
omo es la malla de puntos
que se genera con meshgrid te proponemos que, por ejemplo, ejecutes las
siguientes instrucciones para visualizar los 25 puntos que componen la malla
siguiente:
[x,y]=meshgrid(-4:2:4,-2:2);
plot(x,y,ok)
surf
Siendo x, y y z tres matrices del mismo tama
no, la instrucci
on surf(x,y,z)
representa en una ventana gr
afica los puntos cuyas coordenadas son los valores de los elementos de las matrices de entrada, une los puntos adyacentes
con una lnea, coloreando cada una de las caras resultantes. Puesto que en el
ejemplo anterior s
olo hay una cara, no hay ning
un cambio de color. Si cambias la primera de las instrucciones de nuestro primer ejemplo anterior por

142

Vectores y geometra analtica

[x,y]=meshgrid(-4:4:4,-2:2:2); el plano correspondiente queda dividido


en 4 regiones, cada una de ellas de un color.
shading
El comando surf utiliza por defecto la opci
on shading faceted. La instrucci
on shading interp borra las lneas de cada cara e interpola el color
entre ellas.
mesh
Este comando es identico a surf salvo que las caras resultantes no se
rellenan de ning
un color.

5.4.2.

Representaci
on conjunta de dos planos

Representa los planos x + y + z = 1 y x 2y + 3z = 1 y calcula el angulo


entre ellos, incorporando dicho valor en el gr
afico.
El vector v~1 = (1, 1, 1) es perpendicular al primero de los planos, el vector
v~2 = (1, 2, 3) es perpendicular al segundo y el angulo entre ambos planos es
el mismo que el angulo entre v~1 y v~2 , pudiendo calcularlo con la ayuda del
producto escalar.
De cada una de las ecuaciones de los planos podemos despejar z como
funci
on de las variables x e y, obteniendo respectivamente z = 1 x y y
z = (1 x + 2y)/3. Para elegir la malla que nos permita visualizar porciones
de los planos en la parte en la que se intersecan, eliminemos z utilizando las

dos igualdades anteriores, obteniendo 2x + 5y = 2. Esta


es la ecuaci
on de
la proyecci
on sobre el plano XY de la recta intersecci
on de ambos planos.
As podemos, por ejemplo, elegir la regi
on [2, 2] [1, 1] en el plano XY
para construir la malla que nos permita realizar la representaci
on solicitada.
En la siguiente rutina representaremos ambos planos utilizando el comando

5.4. Superficies en el espacio

143

hold e incorporaremos el valor, en radianes, del angulo que determinan con


el comando text:
[x,y]=meshgrid(-2:0.1:2,-1:0.1:1);
z1=1-x-y; z2=(1-x+2*y)/3;
surf(x,y,z1); hold on;
surf(x,y,z2); hold off;
view(110,20)
v1=[1 1 1]; v2=[1 -2 3]; % vectores normales
L1=sqrt(sum(v1.*v1)); L2=sqrt(sum(v2.*v2));
angulo=acos(sum(v1.*v2)/L1/L2);
text(3,-1,-3,[
Angulo = ,num2str(angulo)]);

5.4.3.

Grafo de un campo escalar sobre R2

Dada una funci


on f : R2 R, su grafo definido como
{(x, y, z) R3 tales que z = f (x, y)}
es una superficie en el espacio. La representaci
on de este tipo de superficies,
sobre un dominio rectangular, es an
aloga a las anteriores. Observa que, en el
caso de que la funci
on f sea afn, la superficie es un plano pudiendo obtener
su representaci
on tal y como se ha comentado anteriormente.
Si queremos, por ejemplo, representar sobre el dominio [2, 2] [4, 4] la
funci
on f (x, y) = 2x2 y 2 y adem
as, queremos observar los cortes con los
planos verticales x = k, con los planos y = k y con los planos horizontales
z = k, para ciertos valores de la constante k, podemos utilizar la siguiente
rutina:
[x,y]=meshgrid(-2:0.1:2,-4:0.1:4);
z=2*x.^2+y.^2; surf(x,y,z)

144

Vectores y geometra analtica

Observa el gr
afico si ejecutas la instrucci
on shading interp. Con shading
faceted (que es la opci
on por defecto), las lneas sobre la superficie son las
intersecciones con los planos verticales x = k e y = k. Para mostrar los cortes
con planos horizontales, utilizaremos el comando contour3. Para ello, prueba
a a
nadir la siguiente lnea:
hold on; contour3(x,y,z,k);
Por otra parte, si quisieramos representar el cilindro parab
olico y = x2 ,
aunque no podemos interpretar esta superficie como el grafo de una funci
on z = f (x, y), s que podemos interpretarlo como el grafo de una funci
on
2
y = f (x, z) = x (aunque en este caso, f no dependa de z). En este caso, los
cortes con los planos verticales x = k son rectas paralelas al eje Z, as que nos
basta con dos valores de z para representar cada una de estas rectas. Podemos
utilizar la siguiente rutina:
[x,z]=meshgrid(-2:0.1:2,[-2 2]);
y=x.^2; surf(x,y,z)
Otro ejemplo de una situaci
on an
aloga es cualquier plano vertical, como
por ejemplo el plano de ecuaci
on x + 2y = 3, que podemos representar como
[y,z]=meshgrid(-1:2,-1:1);
x=3-2*y; surf(x,y,z)
En este ejemplo, hemos utilizado un incremento unitario tanto para la
variable x, como para la variable z. Te proponemos que cambies el tama
no
de la malla para observar el efecto que tiene sobre el gr
afico resultante.
La ecuaci
on cartesiana que caracteriza a la esfera de centro el origen y
2
radio 3 es x + y 2 + z 2 = 9. Esta superficie no es el grafo de una funci
on de

5.4. Superficies en el espacio

145

p
dos variables, aunque s que es la uni
on de los grafos de z = 9 x2 y 2 y
p
as
de z = 9 x2 y 2 , aunque en este caso dominio no es rectangular. M
adelante analizaremos estos casos con un poco m
as de profundidad, pero para representar ahora esta superficie vamos a ayudarnos del comando sphere
utilizando la siguiente rutina:
[x,y,z]=sphere(30);
surf(3*x,3*y,3*z);
axis equal;
shading interp
Puesto que con los ejes por defecto la superficie parece una espera achatada, hemos incluido la instrucci
on axis equal para que se muestre en su
aspecto real. Con la opci
on por defecto shading faceted podr
as ver 30 lneas
de longitud y latitud sobre la esfera.
Una variaci
on de este u
ltimo caso es la representaci
on del elipsoide de
x2 y 2 z 2
ecuaci
on
+ +
= 1, que puedes obtener sustituyendo la segunda lnea
16
9
4
de la rutina anterior por surf(4*x,3*y,2*z)
contour3
La instrucci
on contour3(x,y,f(x,y)), siendo x e y son dos matrices
del mismo tama
no, se puede utilizar para representar cortes horizontales y
equidistantes del grafo de la funci
on f . Podemos a
nadir un cuarto argumento escalar para especificar el n
umero de cortes deseados. Por ejemplo
contour3(x,y,f(x,y),20) representar
a veinte cortes horizontales. Si queremos especificar las alturas a las que queremos realizar dichos cortes, podemos
indicarlas en ese cuarto argumento utilizando, en vez de ser un escalar, un
vector. Por ejemplo contour3(x,y,f(x,y),[-10,0,3,4,5]), realizar
a cortes con los planos z = 10, z = 0, z = 3, z = 4 y z = 5. Adem
as, podemos
utilizar un quinto argumento para las opciones de estilo de lnea y de color.

146

Vectores y geometra analtica

Por ejemplo, contour3(x,y,f(x,y),20,r) representar


a los cortes correspondientes en rojo. Recuerda que puedes consultar las distintas opciones de
estilo de lnea y de color con el comando help plot.
sphere
La instrucci
on [x,y,z]=sphere(n), genera tres matrices x, y y z, de tama
no n n que, cuando se pasen al comando surf o mesh, generar
an una
esfera de centro el origen y radio 1. El valor por defecto para n es 20.

5.4.4.

Coordenadas cilndricas y esf


ericas

Las coordenadas cilndricas (r, , z), relacionadas con las coordenadas rectangulares a traves de
x = r cos, y = r sen, z = z
y las coordenadas esfericas (, , ), relacionadas con las coordenadas rectangulares a traves de
x = cos sen, y = sen sen, z = cos
proporcionan parametrizaciones naturales para algunas superficies importantes.
Conos
En coordenadas cilndricas, el cono z 2 = a2 (x2 + y 2 ), siendo a cualquier
constante positiva, podemos describirlo como z = a r con r 0 y siendo
cualquier valor entre 0 y 2. En la siguiente rutina, hemos representado la
mitad superior del cono correspondiente al valor a = 0.25
a=0.25;
[r,theta]=meshgrid(0:0.2:2,0:2*pi/20:2*pi);
x=a*r.*cos(theta);

5.4. Superficies en el espacio

147

y=a*r.*sin(theta);
z=a*r;
surf(x,y,z); axis equal;
La mitad inferior del cono se puede obtener multiplicando z por 1
Cilindros
Puesto que la ecuaci
on cartesiana que caracteriza al cilindro circular de
2
2
radio a > 0 es x + y = a2 , en coordenadas cilndricas la ecuaci
on caracterstica es r = a. La siguiente rutina sirve para representar la porci
on de
cilindro correspondiente para a = 2 en el rango 3 z 3. Observa que s
olo
se necesitan dos valores para z puesto que los cortes verticales son rectas.
a=2;
[theta,z]=meshgrid(0:2*pi/30:2*pi,-3:6:3);
x=a*cos(theta);
y=a*sin(theta);
surf(x,y,z); axis equal
En este caso, hasta con los ejes por defecto la figura parece un cilindro,
pero los tama
nos relativos de altura y anchura pareceran distorsionados.
Esferas y elipsoides
La ecuaci
on cartesiana caracterstica de una esfera de centro el origen y
radio a > 0 es x2 + y 2 + z 2 = a2 , con lo que la podemos describir utilizando
coordenadas esfericas como
x = a cos sen, y = a sen sen, z = a cos
con 0 2 y 0 . En la siguiente rutina hemos utilizado la instrucci
on axis equal para prevenir que la esfera parezca un elipsoide, obteniendo

148

Vectores y geometra analtica

la misma salida que con el comando sphere:


a=2;
[theta,phi]=meshgrid(0:2*pi/30:2*pi,0:2*pi/30:pi);
x=a*cos(theta).*sin(phi);
y=a*sin(theta).*sin(phi);
z=a*cos(phi);
surf(x,y,z); axis equal
La ecuaci
on cartesiana de un elipsiode es
(x x0 )2 (y y0 )2 (z z0 )2
+
+
=1
a2
b2
c2
La parametrizaci
on de dicho elipsoide utilizando coordenadas esfericas es
x = x0 + a cos sen, y = y0 + b sen sen, z = z0 + c cos
(y + 1)2
La siguiente rutina representar
a el elipsoide (x 1)2 +
+ 9z 2 = 25,
4
cuya ecuaci
on debe ser dividida entre 25 para escribirla en su forma general:
[theta,phi]=meshgrid(0:2*pi/30:2*pi,0:2*pi/30:pi);
x=1+5*cos(theta).*sin(phi);
y=-1+10*sin(theta).*sin(phi);
z=5/3*cos(phi);
surf(x,y,z); axis equal

5.4.5.

Curvas como intersecci


on de superficies

Por lo general, la intersecci


on de dos superficies es una curva en el espacio.
Aunque una representaci
on de las superficies que se intersecan puede dar una
buena representaci
on de la curva intersecci
on, para representarla hace falta
una parametrizaci
on de dicha curva.

5.4. Superficies en el espacio

149

Las secciones c
onicas son las curvas que se obtienen al cortar un cono con
un plano. Para representar la curva intersecci
on del cono z 2 = 9(x2 + y 2 )

con el plano z = x + y + 7 2, comencemos por representar ambas superficies


utilizando la siguiente rutina:
[x,y]=meshgrid(-6:0.4:6);
surf(x,y,x+y+7*sqrt(2)); % el plano
hold on;
surf(x,y,3*sqrt(x.^2+y.^2));% el cono
La ecuaci
on de la proyecci
on de la curva intersecci
on sobre el plano XY
p

2
2
es x + y + 7 2 = 3 x + y . Elevando al cuadrado los dos miembros de esta
ecuaci
on y obtenemos

98 + 14 2 (x + y) + (x + y)2 = 9(x2 + y 2 )
Para eliminar el termino xy que nos aparecera si desarroll
aramos, hagamos
el cambio de variables
u = x + y, v = x y
que nos transforma la ecuaci
on anterior en

9(u2 + v 2 )
98 + 14 2u + u2 =
2
que, tras simplificar, nos conduce a

(u 2 2)2 v 2
+
=1
36
28
que es la ecuaci
on de la elipse que podemos parametrizar, variando t en el
intervalo [0, 2], como

u = 2 2 + 6 cos t, v = 2 7 sen t
Llevando esto a las variables x, y y z nos conduce a

x = 2 + 3 cos t + 7sen t, y = 2 + 3 cos t 7sen t, z = 9 2 + 6 cos t

150

Vectores y geometra analtica

As, si a
nadimos las siguientes lneas a la rutina anterior, aparecer
a en el gr
afico la curva intersecci
on:
t=linspace(0,2*pi);
x=sqrt(2)+3*cos(t)+sqrt(7)*sin(t);
y=sqrt(2)+3*cos(t)-sqrt(7)*sin(t);
z=9*sqrt(2)+6*cos(t); plot3(x,y,z)

5.4.6.

Superficies de revoluci
on

Una superficie de revoluci


on es la que se obtiene al girar una curva en el
plano alrededor de una recta en el plano que no la corte. Por ejemplo, si una
curva contenida en el primer cuadrante es de la forma x = f (t), y = g(t) con
atb
y la curva no corta al eje X, podemos parametrizar la superficie de
revoluci
on que se obtiene al girar dicha curva alrededor del eje X como
x = f (t), y = g(t) cos , z = g(t) sen
siendo a t b, 0 2
y la curva no corta al eje Y podemos parametrizar la superficie de
revoluci
on que se obtiene al girar dicha curva alrededor del eje Y como
x = f (t) sen , y = g(t), z = f (t) cos
siendo a t b, 0 2
Un toro de revoluci
on es la superficie que se obtiene al girar una circunferencia alrededor de una recta que no la corta. As, si quisieramos representar
el toro que se obtiene al girar la circunferencia de centro el punto (3, 0) y
radio 1 alrededor del eje Y , podemos utilizar la siguiente rutina:

5.4. Superficies en el espacio

151

[t,theta]=meshgrid(0:pi/30:2*pi);
x=(3+cos(t)).*sin(theta);
y=sin(t);
z=(3+cos(t)).*cos(theta);
surf(x,y,z);
Si el gr
afico no corresponde a lo que esperabas, es debido a que, ni el
punto de vista es el m
as adecuado, ni las escalas por defecto son las mismas
en los tres ejes. Para ajustar el punto de vista puedes a
nadir view(-10,20) a
la rutina anterior y para ajustar las proporciones puedes hacer lo mismo con
axis equal
Las lneas que puedes observar en la superficie son las correspondientes a
t = constante y a = constante. Es una buena pr
actica asegurarte de que
sabes indicar cu
al es cada una. Si quisieras eliminarlas, recuerda que puedes
utilizar la instrucci
on shading interp y si las quieres volver a a
nadir, utiliza
shading faceted

5.4.7.

Superficies param
etricas

Las superficies que hemos visto en las subsecciones anteriores las podemos englobar dentro de las superficies parametricas. Siendo x(u, v), y(u, v) y
z(u, v) tres funciones de R2 en R, podemos considerar la superficie S definida
como


S = (x, y, z) R3 tales que x = x(u, v), y = y(u, z), z = z(u, v)

variando (u, v) en cierto subconjunto de R2 que denominaremos dominio parametrico. Cuando dicho dominio parametrico es rectangular de la forma
a u b, c v d, podemos representar la correspondiente superficie
S utilizando el siguiente esquema:

152

Vectores y geometra analtica

[u,v]=meshgrid(a:pasou:b,c:pasov:d);
surf(x(u,v),y(u,v),z(u,v))
Los valores pasou y pasov que determinan los incrementos en cada una
de las variables los deber
as elegir adecuadamente seg
un el contexto para que
obtengas una representaci
on de la superficie con la que se observe de la mejor
forma posible.
Las curvas que aparecen en la superficie son las correspondientes a las
condiciones u = constante y v = constante y siempre es una buena pr
actica
tener claro cuales son las curvas que corresponden a valores constantes de
cada una de las variables.

5.4.8.

Vector normal a una superficie param


etrica

Si consideramos el punto (x0 , y0 , z0 ) correspondiente a los valores u = u0


y v = v0 de la superficie parametrica


S = (x, y, z) R3 tales que x = x(u, v), y = y(u, z), z = z(u, v)

siendo a u b, c v d (es decir, x0 = x(u0 , v0 ), y0 = y(u0 , v0 ),


z0 = z(u0 , v0 )), las curvas del espacio c1 y c2 definidas respectivamente como


c1 (u) = (x, y, z) R3 tales que x = x(u, v0 ), y = y(u, v0), z = z(u, v0 )



c2 (v) = (x, y, z) R3 tales que x = x(u0 , v), y = y(u0 , v), z = z(u0 , v)

pasan ambas por (x0 , y0 , z0 ). Seg


un la subsecci
on 5.2.2, podemos determinar
tanto el vector v~1 tangente a la curva c1 en dicho punto, como el vector v~2
tangente a la curva c2 en dicho punto. Con la ayuda del comando cross,
podemos determinar un vector ~n perpendicular a v~1 y a v~2 , simult
aneamente.
Ambos vectores nos permitir
an construir el plano tangente a la superficie S
en el punto (x0 , y0 , z0 ) tal y como se indic
o en la subsecci
on 5.4.1

153

5.4. Superficies en el espacio

Supongamos, por ejemplo, que queremos representar el plano tangente a


la superficie z 2 = x2 + y 2 en el punto (3, 4, 5). Esta superficie la podemos
parametrizar como


S = (x, y, z) R3 tales que x = r cos , y = r sen , z = r

con r > 0 y 0 2. As, el punto (3, 4, 5) es el punto correspondiente a


4
r = r0 = 5 y = 0 = arctg y las curvas
3


3
4
3
c1 (r) = (x, y, z) R tales que x = r, y = r, z = r
5
5


c2 () = (x, y, z) R3 tales que x = 5 cos , y = 5 sen , z = 5
pasan por (3, 4, 5) puesto que cos 0 =

3
4
y sen 0 =
5
5


3 4
El vector
tangente a c1 (r) en el punto c1 (5) = (3, 4, 5) es
, ,1 ,
5 5
con lo que el vector v~1 = (3, 4, 5) tambien es tangente a c1 (r) en (3, 4, 5). El
vector c02 (0 ), tangente a c2 () en el punto c2 (0 ) = (3, 4, 5) es v~2 = (4, 3, 0).
As, un vector normal a la superficie S en el punto (3, 4, 5) es
c01 (5),



~i ~j ~k




3 4 5 = (15, 20, 25)


4 3 0

y, por tanto, el vector ~n = (3, 4, 5) tambien lo es. Para representar todo


esto en un gr
afico, podemos utilizar la siguiente rutina:
[r,theta]=meshgrid(0:0.5:8,0:pi/30:2*pi);
surf(r.*cos(theta),r.*sin(theta),r);
view(120,10); axis equal;
hold on;
plot3(3,4,5,*); % punto de tangencia
u=0:0.5:8; % parametro para c1

154

Vectores y geometra analtica

plot3(3/5*u,4/5*u,u,b); % la curva c1 en azul


v=0:pi/30:2*pi; % parametro para c2
plot3(5*cos(v),5*sin(v),5+0.*v,r); % la curva c2 en rojo
[s,t]=meshgrid(-1:0.1:1); % parametros plano tg
surf(3+3*s-4*t,4+4*s+3*t,5+5*s);

5.4.9.

Ejercicios

1. Representar el plano x + y z = 2 desde un punto de vista desde el que


se observe bien.
2. Representar el plano que pasa por el punto P0 = (1, 3, 2) y est
a determinado por los vectores u
~ = (1, 2, 0.5) y ~v = (3, 1, 2), desde un punto
de vista desde el que se observe bien.
3. Representar, en un mismo gr
afico, los planos cuyas ecuaciones generales
son x + y + z = 2 y 3x 4y + 5z = 8, ajustando el punto de vista
si lo crees conveniente. Calcula el angulo que forman e incorpora dicho
valor como parte del gr
afico. Adem
as, a
nade al gr
afico la recta intersecci
on de ambos planos, utilizando un color adecuado para que quede
suficientemente resaltada.
4. Representa cada una de las siguientes superficies con el comando surf
o con el comando mesh, con shading faceted o shading interp, de
forma que se vean lo mejor posible:
a) f (x, y) = (x2 y 2 )2 junto con 25 cortes horizontales.
b) x2 + y 2 = z 2
y2 z2

=1
4
9
2
2
d ) f (x, y) = xyex y junto con 20 cortes horizontales.
c) x2 +

e) el cilindro z = sen(3x) con 0 x 2, 1 y 1

5.4. Superficies en el espacio

155

5. Representar la parte de la esfera de radio 3 cuyas latitudes est


an entre
o
o
60 y 60
x2 + y 2
y el cilindro
9
2
2
y + z = 1. Obteniendo una parametrizaci
on de la curva intersecci
on
de ambas superficies, incorpora dicha curva en el gr
afico, destac
andola
con un color con el que se observe con claridad.

6. Representar en un mismo gr
afico el cono z 2 =

7. Representar en un mismo gr
afico la esfera de radio 3 y cuyo centro es el
(y + 1)2
punto (1, 1, 0) y el elipsoide (x1)2 +
+9z 2 = 25. Obteniendo
4
una parametrizaci
on de la curva intersecci
on de ambas superficies, incorpora dicha curva en el gr
afico, destac
andola con un color con el que
se observe con claridad.
8. Representar en un mismo gr
afico el paraboloide x2 + y 2 2z = 4 y la
superficie de ecuaci
on z = x y. Obteniendo una parametrizaci
on de
la curva intersecci
on de ambas superficies, incorpora dicha curva en el
gr
afico, destac
andola con un color con el que se observe con claridad.
9. Representar los s
olidos aparecidos en la secci
on 3.2.
10. Representar la superficie par
ametrica definida como x = u sen u cos v,
y = u cos u cos v, z = u sen v con 0 u, v 2. Imprime el gr
afico
resultante y destaca sobre el papel la curvas correspondientes a valores
constantes de los par
ametros.
11. Representa la cinta de M
oebius sabiendo que se puede parametrizar

como x = 2 cos + r cos 2 , y = 2 sen + r cos 2 , z = r sen 2 variando r


en el intervalo [ 12 , 12 ] y en el intervalo [0, 2]. Ajusta el punto de
vista para que se observe de la mejor forma posible, imprime el gr
afico
1
1
resultante y destaca, sobre el papel, las curvas r = 2 y r = 2 . Al final
del folio, escribe tus comentarios acerca de esta superficie, especialmente
acerca de la naturaleza de la curva que determina la frontera de esta
superficie.

156

Vectores y geometra analtica

12. Representa la parte del paraboloide hiperb


olico x2 y 2 + z 2 = 1 que
est
a bajo el rect
angulo 2 x 2, 3 y 3
13. Las funciones hiperb
olicas cosh t y senh t parametrizan las dos hojas
del paraboloide hiperb
olico x2 + y 2 z 2 = 1 de la siguiente forma:
x = cos senh t, y = sen senh t, z = cosh t
con t, R. Utiliza esta parametrizaci
on para representar una porci
on
de ambas hojas, por ejemplo, con 0 2, 2 t 2. Recuerda
que cosh2 t senh2 t = 1, para todo t R
14. Utiliza las funciones hiperb
olicas para representar el hiperboloide de
2
2
2
una hoja x + y z = 1
15. Representa en un mismo gr
afico la superficie x2 +y 2 +z 2 = 121, el punto
(2, 6, 9) de dicha superficie, destaca las curvas de longitud y latitud que
pasan por dicho punto y representa un vector normal a dicha superficie
en dicho punto, teniendo como origen del mismo el punto (2, 6, 9)

Captulo 6

C
alculo diferencial en varias
variables
En este captulo abordaremos el estudio de campos escalares definidos sobre R2 o sobre R3 (es decir, funciones de R2 en R o de R3 en R) y trabaremos
con los conceptos de vector gradiente, extremos libres y extremos condicionados. Aunque estos conceptos se definen en general para campos escalares
sobre espacios de dimensi
on n, para visualizarlos nos restringiremos al caso
n = 2.

6.1.

Funciones de dos variables

Recordemos que en la u
ltima secci
on del captulo anterior present
abamos
varias tecnicas para representar el grafo de una funci
on de dos variables defi2
nida sobre un dominio rectangular de R : si el dominio D es rectangular de
la forma D = [a, b] [c, d], un esquema del tipo
[x,y]=meshgrid(a:pasox:b,c:pasoy:d);
surf(x,y,f(x,y))

158

C
alculo diferencial en varias variables

es suficiente para representar el grafo de la funci


on f(x,y). En el caso en el
que el dominio D no sea rectangular, es aconsejable un cambio de coordenadas que permita la utilizaci
on del siguiente esquema an
alogo al anterior:
[s,t]=meshgrid(s0:pasos:s1,t0:pasot:t1);
x=x(s,t);
y=y(s,t);
z=f(x,y);
surf(x,y,z);
siendo el dominio D


(x, y) R2 tales que x = x(s, t), y = y(s, t) con (s, t) [s0 , s1 ] [t0 , t1 ]
p
As, para representar el grafo de la funci
on f (x, y) = 4 2x2 y 2 , debemos tener en cuenta que el dominio no es un rect
angulo sino el interior de
una elipse. En concreto


x2 y 2
2
(x, y) R tales que
+
1
2
4
r
con lo que x = cos, y = r sen, con r [0, 2], [0, 2] nos permite
2
parametrizar el dominio en cuesti
on y podramos obtener la gr
afica de este
campo escalar a traves de la siguiente rutina:
[r,theta]=meshgrid(0:0.1:2,0:pi/30:2*pi);
x=r/sqrt(2).*cos(theta);
y=r.*sin(theta);
z=sqrt(4-2*x.^2-y.^2);
surf(x,y,z)
Sin embargo, las lneas x = constante e y = constante no son las que
se observan sobre la superficie. Por otra parte, ni el dominio es siempre rectangular ni siempre es f
acil determinar un cambio de coordenadas que nos

6.1. Funciones de dos variables

159

permita utilizar un esquema como el anterior. Por ejemplo, el dominio de la


p
funci
on f : R2 R definida como f (x, y) = 3y 4 4y 3 + 6x2 y 20x3 no
es rectangular. Eres capaz de encontrar un cambio de coordenadas que te
permita representar esta funci
on sobre un dominio parametrico rectangular?
Yo no, pero antes de llegar a la representaci
on de esta funci
on empecemos por
otro caso m
as sencillo.

6.1.1.

Representaci
on sobre dominios perforados de R2

Supongamos que queremos representar el campo escalar f : R2 R definido como


x2
(x 1)2
f (x, y) = p
+p
(x 1)2 + (y + 1)2
x2 + y 2

Esta funci
on est
a definida en todo R2 salvo en un par de puntos. En concreto, el (0, 0) y el (1, 1) son los u
nicos puntos de R2 en los que la funci
on
no est
a definida. Si, por ejemplo, queremos representar esta funci
on sobre el
cuadrado [1, 2] [2, 1] y utilizamos lo aprendido en la secci
on anterior,
podramos recurrir a la siguiente rutina:
[x,y]=meshgrid(-1:0.1:2,-2:0.1:1);
z1=x.^2./sqrt(x.^2+y.^2);
z2=(x-1).^2./sqrt((x-1).^2+(y+1).^2);
z=z1+z2; surf(x,y,z)
Sin embargo, cuando la ejecut
aramos, Matlab nos avisara de un par de
errores al intentar dividir por cero, tanto en el punto (0, 0) como en el punto
(1, 1) y, al intentar representar la gr
afica, dejara un par de agujeros en los
puntos conflictivos. Para evitar esto, podemos sustituir la segunda y la tercera
lnea de la rutina anterior por las siguientes:
z1=x.^2./(sqrt(x.^2+y.^2)+realmin);
z2=(x-1).^2./(sqrt((x-1).^2+(y+1).^2)+realmin);

160

C
alculo diferencial en varias variables

sabiendo que realmin es el el n


umero positivo m
as peque
no del sistema
aritmetico en punto flotante que usa Matlab. Ejecuta ambas rutinas utilizando ventanas diferentes y compara ambos gr
aficos.

6.1.2.

Representaci
on sobre dominios no rectangulares de R2

p
Representar la funci
on f (x, y) = 3y 4 4y 3 + 6x2 y 20x3 sobre los puntos (x, y) de su dominio tales que 2 x 2, 2 y 2
En este caso, ni el dominio es rectangular ni sabemos de ninguna forma de
parametrizar el dominio. Sin embargo, si intentamos representar esta funci
on
sin tener en cuenta su dominio, utilizando por ejemplo una rutina como la
siguiente:
[x,y]=meshgrid(-2:0.1:2);
surf(x,y,sqrt(3*y.^4-4*y^3+6*x.^2.*y-20*x.^3));
obtenemos una superficie que se aproxima al grafo de la funci
on que queremos
representar. Sin embargo, los valores de f para los puntos que no son de su
dominio no son cero. Por ejemplo, la funci
on en el punto (1, 0) no est
a definida; es decir, que f (1, 0) no vale cero, en contra de lo que se observa en la
gr
afica que nos ofrece Matlab. Para hacer una representaci
on m
as exacta
de esta funci
on, haremos uso de los operadores relacionales que fueron presentados en la p
agina 26 construyendo la siguiente funci
on llamada rara que
guardaremos adecuadamente dentro del path:
function z=rara(x,y)
M=3*y.^4-4*y^3+6*x.^2.*y-20*x.^3;
z=ones(size(M))*NaN;
t=find(M>=0);
z(t)=sqrt(M(t));

6.1. Funciones de dos variables

161

Una vez guardada, puedes observar las diferencias entre las matrices z1 y
z2 construidas a continuaci
on:
[x,y]=meshgrid(-2:2);
z1=sqrt(3*y.^4-4*y^3+6*x.^2.*y-20*x.^3)
z2=rara(x,y)
As, para obtener la representaci
on pedida bastara con utilizar la siguiente
rutina:
[x,y]=meshgrid(-2:0.1:2);
surf(x,y,rara(x,y));
Para observar las curvas x = constante e y = constante de la funci
on
p
f (x, y) = 4 2x2 y 2 , lo u
nico que tienes que hacer es adecuar la construcci
on de la matriz M en la segunda lnea de la rutina rara, sustituyendo
dicha lnea por M=4-2*x.^2-y.^2;

6.1.3.

Curvas de nivel

Para representar las curvas de nivel de una funci


on f : R2 R dentro de
rect
angulo formado por los puntos (x, y) R2 tales que a x b, c y d,
podemos utilizar un esquema como el siguiente:
[x,y]=meshgrid(a:pasox:b,c:pasoy:d);
contour(x,y,f(x,y));
x2 y
sobre el cuadrado forx4 + y 2
mado por los puntos (x, y) R2 tales que 2 x 2, 2 y 2, podemos
utilizar la siguiente rutina:
As, para representar la funci
on f (x, y) =

162

C
alculo diferencial en varias variables

[x,y]=meshgrid(-2:0.1:2);
contour(x,y,x.^2.*y./(x.^4+y.^2+realmin));
donde hemos a
nadido en el denominador la constante realmin para evitar la
divisi
on por cero que se producira en el origen de coordenadas. Podramos
etiquetar cada una de las curvas de nivel seg
un la altura correspondiente sin
m
as que ejecutar la siguiente rutina:
[x,y]=meshgrid(-2:0.1:2);
[C,h]=contour(x,y,x.^2.*y./(x.^4+y.^2+realmin));
clabel(C,h)
Sin embargo, en la salida de esta u
ltima rutina se observan demasiadas curvas
de nivel. Para ajustar cu
ales son las curvas de nivel que nos gustara representar, construiremos un vector a en el que indicaremos cu
ales son las que
nos interesan y adem
as, indicaremos en otro vector b cu
ales de ellas queremos
que esten etiquetadas. As, ejecutando esta otra rutina, obtenemos el resultado deseado:
[x,y]=meshgrid(-2:0.1:2);
a=[-0.45:0.05:0.45]; % las curvas que queremos
[C,h]=contour(x,y,x.^2.*y./(x.^4+y.^2+realmin),a);
b=[-0.4:0.2:0.4]; % las etiquetas que queremos
clabel(C,h,b)
Podramos incluso representar una u
nica curva de nivel (por ejemplo, la de
altura 0.45 del ejemplo anterior) sin m
as que construir el vector a como un
vector de dos componentes, siendo ambas iguales a 0.45. En concreto, la siguiente rutina representa u
nicamente la curva f (x, y) = 0.45:
[x,y]=meshgrid(-2:0.1:2);

6.1. Funciones de dos variables

163

a=[0.45 0.45];
contour(x,y,x.^2.*y./(x.^4+y.^2+realmin),a);
Sin embargo, el algoritmo que utiliza Matlab para representar curvas de
nivel no funciona correctamente cuando intentamos representar la curva de
nivel f (x, y) = 0.5. Analizando la funci
on podemos llegar a la conclusi
on de
2
que esa curva es la curva y = x , pero observa lo que sucede si sustituyes el
vector a de la segunda lnea de la rutina anterior por a=[0.5 0.5]
Para representar en un mismo gr
afico la superficie z = f (x, y) y, por debajo, las curvas de nivel, podemos utilizar el comando surfc. Ejecutando la
instrucci
on help surfc puedes obtener m
as detalles respecto a este comando.
Para nuestro ejemplo, podemos utilizar la siguiente rutina:
[x,y]=meshgrid(-2:0.1:2);
surfc(x,y,x.^2.*y./(x.^4+y.^2+realmin),a);
contour
La instrucci
on contour(x,y,x), siendo x, y y z tres matrices del mismo
tama
no, representar
a varias curvas de nivel considerando los valores de z como
alturas sobre el plano. El n
umero de curvas puede ser especificado a
nadiendo
un cuarto par
ametro escalar; es decir contour(x,y,z,n) representar
a n curvas de nivel. Este cuarto par
ametro tambien puede ser un vector en el que
se indiquen las alturas de cada una de las curvas de nivel. Para representar
u
nicamente curva de nivel correspondiente a una altura h (es decir, la curva
f (x, y) = h), podemos ejecutar la instrucci
on contour(x,y,z,[h h])
clabel
Podemos etiquetar las alturas correspondientes a unas curvas de nivel
con el comando clabel(C,h), donde la matriz C y el vector h las podemos construir con el comando contour sin m
as que ejecutar la instrucci
on

164

C
alculo diferencial en varias variables

[C,h]=contour(x,y,z). El comando clabel etiquetar


a todas las curvas a
menos que le indiquemos lo contrario: la instrucci
on clabel(C,h,v) nos permite etiquetar u
nicamente las alturas que figuren en el vector v.

6.1.4.

Ejercicios

1. Representar la funci
on f (x, y) = xy 3 x3 y en el cuadrado formado por
los puntos (x, y) R2 tales que 3 x 3, 3 y 3. En otro
gr
afico, representa alguas curvas de nivel de dicha funci
on etiquetando
convenientemente cada una de ellas. En un tercer gr
afico, representa
conjuntamente la superficie y las curvas de nivel.
4xy
en el cuadrado formado por
+ 4y 2
los puntos (x, y) R2 tales que 1 x 1, 1 y 1. En otro
gr
afico, representa las curvas de nivel correspondientes a los valores
que van desde 0.9 hasta 0.9 con un incremento de 0.1, etiquetando
u
nicamente las correspondientes a las alturas 0.9, 0.5, 0, 0.5 y 0.9.
Indicaciones: utiliza una malla suficientemente fina (por ejemplo, con
incrementos correspondientes a 0.01) para obtener un detalle apropiado y utiliza shading interp y ajusta el punto de vista (por ejemplo,
view(20,30)) para observar la discontinuidad que esta funci
on presenta en el origen. No olvides utilizar realmin para evitar la divisi
on por
cero.

2. Representar la funci
on f (x, y) =

x2

3. Utiliza el comando contour para representar, dentro del cuadrado formado por los puntos (x, y) R2 tales que 1 x 1, 1 y 1, la
curva 2x2 + xy + y 4 = 0.5

6.2.

Derivadas en dos variables

Recordemos que, para el caso de una funci


on f : R R que sea derivable
en un punto x0 , podemos aproximar los valores de f en un entorno del punto

165

6.2. Derivadas en dos variables

x0 a traves de una expresi


on del tipo
f (x0 + x) f (x0 )
x0
x

f (x0 + h) f (x0 ) + p h, siendo p = lm

Si de la funci
on f no conocemos su expresi
on analtica, sino u
nicamente
sus valores en un conjunto de puntos, debemos aproximar el correspondiente
valor de p numericamente, utilizando para ello la derivaci
on numerica.
En el caso en el que f sea una funci
on de R2 en R, podemos considerar
una expresi
on an
aloga para aproximar los valores de f en puntos cercanos a
un punto (x0 , y0 ) dado:
f (x0 + h, y0 + k) f (x0 , y0 ) + p1 h + p2 k, siendo
f (x0 + x, y0 ) f (x0 , y0 )
f (x0 , y0 + y) f (x0 , y0 )
, p2 = lm
x0
y0
x
y

p1 = lm

De nuevo, en el caso en el que no conozcamos una expresi


on de la funci
on f , debemos recurrir a la derivaci
on numerica. El comando diff que
introducamos en la secci
on 1.4.1 y que nos serva, tanto para aproximar
numericamente la derivada de una funci
on f : R R, como para determinar
simb
olicamente su derivada, tambien nos sirve, tanto para aproximar numericamente las derivadas parciales de un campo escalar, como para determinar
simb
olicamente sus derivadas.

6.2.1.

Derivaci
on num
erica en dos variables

Para una funci


on f : R2 R se definen sus derivadas parciales, denotadas
f
f
y
respectivamente, como las funciones de R2
por fx y fy , o bien por
x y
en R definidas como
fx (x, y) =

f
f (x + x, y) f (x, y)
(x, y) = lm
x0
x
x

fy (x, y) =

f
f (x, y + y) f (x, y)
(x, y) = lm
y0
y
y

166

C
alculo diferencial en varias variables

As, para valores de x pr


oximos a cero, podemos representar una aproximaci
on de fx (x, y) en el rect
angulo formado por los puntos (x, y) de R2 tales que
a x b, c y d, a traves de una rutina que siga el siguiente esquema,
fijado el valor del paso pasoy:
n=100; deltax=(b-a)/n;
[x,y]=meshgrid(a:deltax:b+deltax,c:pasoy:d);
f=f(x,y); % esta matriz tiene 102 columnas
fx=diff(f,1,2)/deltax; % esta matriz tiene 101 columnas
x=x(:,1:n+1); y(:,1)=[];
surf(x,y,fx);
axis equal; shading interp;
Para comprender c
omo funciona esta rutina, observa que la matriz f es

f (a, c)
f (a + x, c)

f (a, c + pasoy ) f (a + x, c + pasoy )

..
..

.
.

f (a, d)

f (a + x, d)

f (a + (n + 2)x, c)

f (a + (n + 2)x, c + pasoy )

..

f (a + (n + 2)x, d)

y, por tanto, la instrucci


on M=diff(f,1,2) devolvera la matriz M cuya primera columna es la segunda columna de la matriz f menos la primera columna
de la matriz f; la segunda columna de la matriz M es la tercera columna de
la matriz f menos la segunda columna de la matriz f; y as sucesivamente. Si
dividimos esa matriz M entre x obtendremos una aproximaci
on de los valores
de fx en la malla meshgrid(a:deltax:b,c:pasoy:d)
De forma an
aloga, fijado el valor del paso pasox, podemos utilizar una
rutina que siga el siguiente esquema:
n=100; deltay=(d-c)/n;
[x,y]=meshgrid(a:pasox:b,c:deltay:d+deltay);

167

6.2. Derivadas en dos variables

f=f(x,y); % esta matriz tiene 102 filas


fy=diff(f,1,1)/deltay; % esta matriz tiene 101 filas
x(1,:)=[]; y=y(1:n+1,:);
surf(x,y,fy);
axis equal; shading interp;
Hemos tenido en cuenta que ahora la matriz f es

f (a, c)
f (a + pasox , c)

f (a, c + y)
f (a + pasox , c + y)

..
..

.
.

f (a, c + (n + 2)y) f (a + pasox , c + (n + 2)y)

f (b, c)
f (b, c + y)
..
.

f (b, c + (n + 2)y)

y que la instrucci
on N=diff(f,1,1) devolvera la matriz N cuya primera fila es la segunda fila de la matriz f menos la primera fila de la matriz f;
la segunda fila de la matriz N es la tercera fila de la matriz f menos la segunda fila de la matriz f; y as sucesivamente. Asi, dividiendo esa matriz
N entre y obtenemos una aproximaci
on de los valores de fy en la malla
meshgrid(a:pasox:b,c:deltay:d)
De forma an
aloga, podemos obtener aproximaciones para las parciales
segundas definidas como
fxx (x, y) =

2f
fx (x + x, y) fx (x, y)
(x, y) = lm
2
x0
x
x

fyx (x, y) =

2f
fx (x, y + y) fx (x, y)
(x, y) = lm
y0
yx
y

fxy (x, y) =

2f
fy (x + x, y) fy (x, y)
(x, y) = lm
x0
xy
x

fyy (x, y) =

fy (x, y + y) fy (x, y)
2f
(x, y) = lm
2
y0
y
y

con rutinas parecidas a las anteriores. En concreto, fijado el valor del paso
pasoy, para representar una aproximaci
on de fxx podemos utilizar una rutina

168

C
alculo diferencial en varias variables

que siga el siguiente esquema:


n=100; deltax=(b-a)/n;
[x,y]=meshgrid(a:deltax:b+2*deltax,c:pasoy:d);
f=f(x,y); % esta matriz tiene 103 columnas
fxx=diff(f,2,2)/(deltax^2);% esta matriz tiene 101 columnas
x=x(:,1:n+1); y(:,1:2)=[];
surf(x,y,fxx);
axis equal; shading interp;
para fyx :
n=100; deltax=(b-a)/n; deltay=(d-c)/n;
[x,y]=meshgrid(a:deltax:b+deltax,c:deltay:d+deltay);
f=f(x,y); % tiene 102 filas y 102 columnas
fxy=diff(diff(f,1,2),1,1)/(deltax*deltay); % 101 ff. y 101 cc.
x=x(1:n+1,1:n+1); y=y(1:n+1,1:n+1);
surf(x,y,fxy);
axis equal; shading interp;
para fxy :
n=100; deltax=(b-a)/n; deltay=(d-c)/n;
[x,y]=meshgrid(a:deltax:b+deltax,c:deltay:d+deltay);
f=f(x,y); % tiene 102 filas y 102 columnas
fxy=diff(diff(f,1,1),1,2)/(deltax*deltay); % 101 ff. y 101 cc.
x=x(1:n+1,1:n+1); y=y(1:n+1,1:n+1);
surf(x,y,fxy);
axis equal; shading interp;
y, fijado el valor del paso pasox, para fyy :

6.2. Derivadas en dos variables

169

n=100; deltay=(d-c)/n;
[x,y]=meshgrid(a:pasox:b,c:deltay:d+2*deltay);
f=f(x,y); % esta matriz tiene 103 filas
fyy=diff(f,2,1)/(deltay^2); % esta matriz tiene 101 filas
x(1:2,:)=[]; y=y(1:n+1,:);
surf(x,y,fyy);
axis equal; shading interp;
Podemos utilizar todo lo anterior para representar en un mismo gr
afico la
4
3
funci
on f (x, y) = x + y + 27xy y sus derivadas parciales, tanto de primer
como de segundo orden, sobre el conjunto D = [2, 1] [1, 1], a traves de
la siguiente rutina:
deltax=0.15; deltay=0.1;
[x,y]=meshgrid(-2:deltax:1+2*deltax,-1:deltay:1+2*deltay);
z=x.^4+y.^3+27*x.*y;
x=x(1:21,1:21); y=y(1:21,1:21); % Malla para D
f=z(1:21,1:21);
subplot(3,3,2); surf(x,y,f);
axis([-2 1 -1 1 -40 70]); title(f(x,y)=x^4+y^3+27xy)
z1=diff(z,1,2);
fx=z1(1:21,1:21)/deltax;
subplot(3,3,4); surf(x,y,fx);
axis([-2 1 -1 1 -60 40]); title(z=f x(x,y)))
z2=diff(z,1,1);
fy=z2(1:21,1:21)/deltay;
subplot(3,3,7); surf(x,y,fy);
axis([-2 1 -1 1 -60 40]); title(z=f y(x,y)))
z11=diff(z1,1,2);
fxx=z11(1:21,1:21)/(deltax^2);

170

C
alculo diferencial en varias variables

subplot(3,3,5); surf(x,y,fxx);
axis([-2 1 -1 1 0 50]); title(z=f {xx}(x,y));
z12=diff(z1,1,1);
fxy=z12(1:21,1:21)/(deltax*deltay);
subplot(3,3,6); surf(x,y,fxy);
axis([-2 1 -1 1 25 30]); title(z=f {xy}(x,y));
z21=diff(z2,1,2);
fyx=z21(1:21,1:21)/(deltax*deltay);
subplot(3,3,8); surf(x,y,fyx);
axis([-2 1 -1 1 25 30]); title(z=f {yx}(x,y));
z22=diff(z2,1,1);
fyy=z22(1:21,1:21)/(deltay^2);
subplot(3,3,9); surf(x,y,fyy);
axis([-2 1 -1 1 -10 10]); title(z=f {yy}(x,y));

6.2.2.

Derivaci
on simb
olica en dos variables

Al igual que para el caso de funciones de una variable, si tenemos una funci
on simb
olica de dos variables podemos obtener sus derivadas parciales (que
ser
an nuevas funciones simb
olicas) utilizando el comando diff. As, podemos
definir la funci
on f (x, y) = x4 + y 3 + 27xy de forma simb
olica utilizando las
instrucciones:
syms x y;
f=x^4+y^3+27*x*y;
y obtener sus derivadas parciales de primer orden a traves de
fx=diff(f,x)
fy=diff(f,y)
y sus derivadas parciales de segundo orden a traves de

6.2. Derivadas en dos variables

171

fxx=diff(diff(f,x),x)
fxy=diff(diff(f,y),x)
fyx=diff(diff(f,x),y)
fyy=diff(diff(f,y),y)
De la misma forma que el comando plot tiene su correspondiente versi
on
simb
olica en el comando ezplot para representar funciones simb
olicas de R
en R (ver p
agina 60), la versi
on simb
olica de los comandos surf y mesh son
respectivamente los comandos ezsurf y ezmesh, pudiendo utilizar estos para
la representaci
on de campos escalares simb
olicos definidos sobre R2 . Una vez
que hayamos definido las funciones simb
olicas anteriores, podemos obtener
un gr
afico como el de la subsecci
on anterior sin m
as que ejecutar las siguiente
rutina:
D=[-2 1 -1 1];
subplot(3,3,2); ezsurf(f,D)
axis([D -40 70]); title(f(x,y)=x^4+y^3+27xy)
subplot(3,3,4); ezsurf(fx,D)
axis([D -60 40]); title(z=f x(x,y))
subplot(3,3,7); ezsurf(fx,D)
axis([D -60 40]); title(z=f y(x,y))
subplot(3,3,5); ezsurf(fxx,D)
axis([D 0 50]); title(z=f {xx}(x,y))
subplot(3,3,6); ezsurf(fxy,D)
axis([D 25 30]); title(z=f {xy}(x,y))
subplot(3,3,8); ezsurf(fyx,D)
axis([D 25 30]); title(z=f {yx}(x,y))
subplot(3,3,9); ezsurf(fx,D)
axis([D -10 10]); title(z=f {yy}(x,y))

172

C
alculo diferencial en varias variables

ezsurf
Es la versi
on simb
olica del comando surf para representar campos escala2
res definidos sobre R . Por defecto, representa la funci
on simb
olica f sobre el
cuadrado [2, 2] [2, 2] utilizando una malla de 60 60. Por ejemplo,
los comandos
ezsurf(f)
ezsurf(f,[-3 3 -1 7],20)
representar
an la funci
on simb
olica f sobre [2, 2] [2, 2] utilizando
una malla de 60 60 y sobre [3, 3] [1, 7] utilizando una malla de 20 20,
respectivamente.
ezmesh
Es la extensi
on simb
olica del comando mesh para representar campos es2
calares definidos sobre R y su funcionamiento es an
alogo al comando ezsurf,
pero las caras no se rellenan con ning
un color.

6.2.3.

Plano tangente a un campo escalar sobre R2

Recordemos que, siendo f : R R una funci


on derivable en un punto x0
de su dominio la ecuaci
on de la recta tangente a la curva y = f (x) en el
punto (x0 , f (x0)) es y = f (x0 ) + f 0 (x0 ) (x x0 ). Pues bien, Si f : R2 R es
un campo escalar definido sobre R2 , (x0 , y0 ) es un punto de su dominio y f
es diferenciable en dicho punto, entonces la ecuaci
on del plano tangente a la
superficie z = f (x, y) en el punto (x0 , y0 , f (x0 , y0 ))) es
z = f (x0 , y0 ) +

f
f
(x0 , y0 ) (x x0 ) +
(x0 , y0 ) (y y0 )
x
y

As, utilizando la derivaci


on simb
olica, podemos utilizar un esquema como el
siguiente para representar, sobre el rect
angulo [a, b] [c, d] tanto la superficie
z = f (x, y) como el plano tangente a dicha superfice en (x0 , y0 ). Observa que

6.2. Derivadas en dos variables

173

para representar el plano nos basta con la malla menos fina posible:
syms x y;
p1=double(subs(diff(f(x,y),x),{x,y},{x0,y0}));
p2=double(subs(diff(f(x,y),y),{x,y},{x0,y0}));
[x,y]=meshgrid(a:pasox:b,c:pasoy:d);
surf(x,y,f(x,y)); hold on
[x,y]=meshgrid([a b],[c d]);
surf(x,y,f(x0,y0)+p1*(x-x0)+p2*(y-y0)); hold off
La principal dificultad a la hora de representar en un mismo gr
afico un
campo escalar y su plano tangente en un punto es que uno tiende a ocultar
al otro, especialmente en el caso en el que la superficie no sea convexa, por
ejemplo, en el caso de una superficie con forma de silla de montar.
Por ejemplo, supongamos que quieremos, en un mismo gr
afico, la super2
2
ficie z = x + y sobre el rect
angulo D = [3, 3] [3, 3] junto con su plano
tangente en el punto (1, 2, 5). Considerando la funci
on f (x, y) = x2 + y 2
f
f
y una vez comprobado que
(1, 2) = 2 y que
(1, 2) = 4, podemos
x
x
afirmar la ecuaci
on del plano tangente en cuesti
on es z = 52(x+1)+4(y 2)
(que tambien podemos escribir como z = 2x + 4y 5). La siguiente rutina
nos genera el gr
afico buscado:
[x,y]=meshgrid(-3:0.3:3,-3.0.3:3);
surf(x,y,x.^2+y.^2); hold on;
surf(x,y,-2*x+4*y-5); plot3(-1,2,5,og); hold off
Hemos intentado resaltar el punto de tangencia a
nadiendo la instrucci
on
2
2
plot3(-1,2,5,og). Observa que la superficie z = x + y es convexa y el
punto de vista es bastante aceptable. Sin embargo, supongamos que quisieramos hacer lo mismo con la superficie z = x2 y 2 sobre el mismo rect
angulo

174

C
alculo diferencial en varias variables

D anterior y siendo (1, 2, 3) el punto de tangencia. Considerando ahora el


g
campo escalar g(x, y) = x2 y 2 y una vez comprobado que
(1, 2) = 2
x
f
(1, 2) = 4 podemos asegurar que la ecuaci
on del plano tangente
y que
x
buscado es z = 3 2(x + 1) 4(y 2) (que tambien podemos escribir como
z = 2x 4y + 3). La siguiente rutina an
aloga a la anterior nos proporciona
el gr
afico deseado:
[x,y]=meshgrid(-3:0.3:3,-3.0.3:3);
surf(x,y,x.^2-y.^2); hold on;
surf(x,y,-2*x-4*y+3); plot3(-1,2,-3,or); hold off
pero en este caso es m
as complicado encontrar un punto de vista desde el cual
mostremos el gr
afico de forma aceptable. Gira el gr
afico (puedes consultar la
p
agina 128) para encontrar la que te parezca m
as conveniente.

6.2.4.

Plano tangente a una superficie param


etrica

Volviendo ahora a la subsecci


on 5.4.8 (ver p
agina 152), si consideramos el
punto (x0 , y0 , z0 ) correspondiente a los valores u = u0 y v = v0 de la superficie
parametrica


S = (x, y, z) R3 tales que x = x(u, v), y = y(u, z), z = z(u, v)

siendo a u b, c v d (es decir, x0 = x(u0 , v0 ), y0 = y(u0 , v0 ),


z0 = z(u0 , v0 )), los vectores v~1 y v~2 all indicados los podemos calcular como


x
y
z
(u0 , v0 ),
(u0 , v0 ),
(u0 , v0 )
v~1 =
u
u
u
v~2 =

x
y
z
(u0 , v0 ),
(u0 , v0 ),
(u0 , v0 )
v
v
v

As, con el comando cross podemos determinar un vector ~n = (nx, ny , nz )


perpendicular a v~1 y a v~2 simult
aneamente y determinar la ecuaci
on del plano

175

6.2. Derivadas en dos variables

tangente a S en el punto (x0 , y0 , z0 ):

nx

(x x0 , y y0 , z z0 ) ny = 0
nz
Reconsiderando el punto (3, 4, 5) de la superficie z 2 = x2 + y 2 parametrizada como


S = (x, y, z) R3 tales que x = r cos , y = r sen , z = r

con r > 0 y 0 2 y teniendo en cuenta que el punto (3, 4, 5) es el


4
correspondiente a r = r0 = 5 y = 0 = arctg , los vectores v~1 y v~2 son
3
respectivamente






 

x
4
y
4
z
4
3 4
v~1 =
5, arctg
,
5, arctg
,
5, arctg
=
, ,1
r
3
r
3
r
3
5 5
v~2 =







x
4
y
4
z
4
5, arctg
,
5, arctg
,
5, arctg
= (4, 3, 0)

As, un vector normal a la superficie S en el punto (3, 4, 5) es




~i ~j ~k


3 4


~n =
1 = (3, 4, 5)
5 5

4 3 0

y, por tanto, la ecuaci


on del plano tangente a la superficie S en el punto
(3, 4, 5) es

3

(x 3, y 4, z 5) 4 = 0
5

que podemos reescribir como 3x + 4y 5z = 0, pudiendo a


nadir esta ecuaci
on
como parte de un gr
afico.

176

C
alculo diferencial en varias variables

Para ilustrar todo esto con otro ejemplo, consideremos el trozo de la hoja
superior del hiperboloide de dos hojas descrito como


S = (x, y, z) R3 tales que x = cos usenh v, y = sen usenh v, z = cosh v
con (u, v) [0, 2] [0, 2] y supongamos que queremos representar, en un
mismo gr
afico, la superficie S y el plano tangente a dicha superficie en el
punto (x(0, 1), y(0, 1), z(0, 1)) = (senh 1, 0, cosh 1). Por tanto, la ecuaci
on del
plano tangente buscado es

nx

(x senh 1, y, z cosh 1) ny = 0
nz
siendo el vector ~n = (nx, ny , nz ) un vector perpendicular al vector



x
y
z
(0, 1),
(0, 1),
(0, 1) = (0, senh 1, 0)
u
u
u

y, simult
aneamente, al vector


x
y
z
(0, 1), (0, 1), (0, 1) = (cosh 1, 0, senh 1)
v
v
v
En resumidas cuentas, podemos tomar ~n = (senh 1, 0, cosh 1) y, por tanto,
la ecuaci
on del plano tangente buscado sera senh 1 x cosh 1 z + 1 = 0.
Para representar todos los elementos podemos utilizar la siguiente rutina:
[u,v]=meshgrid(0:pi/36:2*pi,0:0.1:2);
surf(cos(u).*sinh(v),sin(u).*sinh(v),cosh(v)); hold on;
[s,t]=meshgrid(-1:0.1:1);
surf(sinh(1)+cosh(1)*t,sinh(1)*s,cosh(1)+sinh(1)*t);
plot3(sinh(1),0,cosh(1),or);
T=[num2str(sinh(1)),*x-,num2str(cosh(1)),*z+1=0];
title([Plano tangente: ,T])

6.3. Vector gradiente

6.2.5.

177

Ejercicios

1. Representar en un mismo gr
afico la superficie z = sen(x2 +y 2 ) y su plano
tangente en el punto (1, 1, sin 2) desde el punto de vista que consideres
m
as adecuado, a
nadiendo la ecuaci
on de dicho plano como un elemento
m
as del gr
afico.
2. Representar en un mismo gr
afico la superficie parametrizada a traves
de x = 2 cos s sen t, y = sen s sen t, z = 2 cos t y su plano tangente
en el punto (x(0, /3), y(0, /3), z(0, /3)) desde el punto de vista que
consideres m
as adecuado, a
nadiendo la ecuaci
on de dicho plano como
un elemento m
as del gr
afico.
3. Representar en un mismo gr
afico el toro x = (3 + cos t) sin , y = sen t,
z = (3 + cos t) cos , con 0 t, 2, y su plano tangente en el punto
(x(/4, 0), y(/4, 0), z(/4, 0)) desde el punto de vista que consideres
m
as adecuado, a
nadiendo la ecuaci
on de dicho plano como un elemento
m
as del gr
afico.

6.3.

Vector gradiente

Si consideramos una funci


on f : R2 R, para cada punto (x0 , y0 ) en el
que las parciales sean funciones continuas se cumple que el vector gradiente


f
f
(x0 , y0 ),
(x0 , y0 )
f (x0 , y0 ) =
x
y
es un vector perpendicular a la curva f (x, y) = f (x0 , y0 ) en el punto (x0 , y0 ).
De la misma forma, si f : R3 R, para cada punto (x0 , y0 , z0 ) en el que las
parciales sean funciones continuas, se cumple que el vector gradiente


f
f
f
f (x0 , y0 , z0 ) =
(x0 , y0 , z0 ),
(x0 , y0 , z0 ),
(x0 , y0 , z0 )
x
y
z
es un vector perpendicular a la superficie f (x, y, z) = f (x0 , y0 , z0 ) en el punto
(x0 , y0 , z0 ). Veamos c
omo utilizar Matlab para visualizar esta propiedad.

178

C
alculo diferencial en varias variables

6.3.1.

Recta tangente a curvas planas de la forma f(x, y) = cte.

Retomemos el ejercicio 3 de la subsecci


on 6.1.4 (ver p
agina 164) para vol2
4
ver a considerar la curva 2x + xy + y = 0.5 y supongamos que queremos
trazar la recta tangente a dicha curva en el punto (0.5, 0), obteniendo la ecuaci
on de dicha recta.
Para ello, consideremos el campo escalar f : R2 R defnido como f (x, y) =
2x2 + xy + y 4 . Sabiendo que el vector gradiente de f en el punto (0.5, 0) es
el vector f (0.5, 0) = (2, 0.5), podemos afirmar que dicho vector (o cualquier
otro proporcional a el) es perpendicular a la curva f (x, y) = f (0.5, 0) en el
punto (0.5, 0), con lo que la ecuaci
on de la recta tangente buscada es
!
2
(x 0.5, y 0)
=0
0.5
que podemos reescribir como y = 4x + 2. Para representar la curva, la recta
tangente y un vector perpendicular a la misma (por comodidad hemos representado 1/4 f (0.5, 0)) podemos utilizar la siguiente rutina:
[x,y]=meshgrid(-1:0.1:1);
contour(x,y,2*x.^2+x.*y+y.^4,[0.5 0.5],r)
hold on; t=0.25:0.01:0.75; plot(t,2-4*t)
arrow([0.5 0],[1 1/8])
axis equal; axis([-1 1 -1 1])
Hemos incluido la u
ltima lnea para que, en el gr
afico, se observe con
claridad que el angulo que forma el vector con la recta tangente es un angulo
recto.

6.3.2.

Plano tangente a superficies de la forma f(x, y, z) = cte.

Al igual que una curva plana puede venir descrita como




(x, y) R2 tales que f (x, y) = cte.

6.3. Vector gradiente

179

siendo f : R2 R, una superficie en el espacio puede venir descrita como




(x, y, z) R3 tales que f (x, y, z) = cte.

siendo f : R3 R. Para representar las curvas de esa forma ya sabemos que


podemos recurrir al comando contour puesto que no son otra cosa que curvas
de nivel del campo escalar f . Pero, c
omo podemos representar las superficies de nivel de un campo escalar definido sobre R3 ?. Pues bien, ha llegado el
momento de utilizar el comando surfcv que est
a disponible desde que descargamos la rutina surfcv.m en la secci
on 1.3.5 y del que todava no habamos
dicho nada.
Para ilustrar tanto el manejo de este comando como la propiedad del gradiente para campos escalares definidos sobre R3 , supongamos que queremos
trazar la ecuaci
on del plano tangente a la superficie z 3 + 3x2 z = xy en el
punto (1, 4, 1) y determinar la ecuaci
on de dicho plano.
Si consideramos el campo escalar f (x, y, z) = z 3 +3x2 z xy definido sobre
R3 , podemos representar la superficie S formada por los puntos


S = (x, y, z) R3 tales que z 3 + 3x2 z xy = 0

dentro del cubo [0, 2] [3, 5] [0, 2], a traves de la siguiente rutina:
[x,y,z]=meshgrid(0:0.2:2,3:0.2:5,0:0.2:2);
surfcv(x,y,z,z.^3+3*x.^2.*z-x.*y,0)
axis equal; axis([0 2 3 5 0 2])
Adem
as, puesto que el vector gradiente de f en el punto (1, 4, 1) es


f
f
f
f (1, 4, 1))
(1, 4, 1),
(1, 4, 1),
(1, 4, 1) = (2, 1, 6)
x
y
z
podemos afirmar que la ecuaci
on del plano tangente a la superficie S en el

180

C
alculo diferencial en varias variables

punto (1, 4, 1) es

2

(x 1, y 4, z 1) 1 = 0
6

4 2x + y
). As,
que podemos escribir como 2x y + 6z = 4 (o como z =
6
podemos a
nadir el plano tangente y su correspondiente ecuaci
on a
nadiendo a
la rutina anterior, las siguientes lneas:
[x,y]=meshgrid(0:0.2:2,3:0.2:5);
hold on; surf(x,y,(4-2*x+y)/6);
plot3(1,4,1,ok)
title(Ecuaci
on del plano tangente: 2x-y+6z=4)
surfcv
Siendo x, y y z tres matrices definiendo las coordenadas para un campo
escalar f (x, y, z) definido sobre R3 , la instrucci
on surfcv(x,y,z,f,cte) representar
a, dentro del subconjunto del espacio determinado por x, y y z, la


superficie formada por los puntos (x, y, z) R3 tales que f (x, y, z) = cte

6.3.3.

Ejercicios

1. Representar la curva de ecuaci


on 3y 4 4y 3 + 6x2 y 20x3 + 15 = 0 en
el cuadrado [0, 2] [0, 2] y la recta tangente a dicha curva en el punto
(1, 1), determinando la ecuaci
on de dicha recta y a
nadiendola como un
elemento m
as del gr
afico.
2. Representar la superficie x2 + y 2 + z 3 2x + 4y + 3z + 1 = 0 y el
plano tangente en (1, 4, 0), determinando la ecuaci
on de dicho plano
y a
nadiendola como un elemento m
as del gr
afico. En otra figura, hacer
lo mismo, pero para el punto (1, 2, 1).

6.4. M
aximos y mnimos

181

3. Retomemos el ejercicio 8 de la subsecci


on 5.4.9 (ver p
agina 155) para
a
nadir al gr
afico all construido, la recta tangente a la curva intersecci
on,
en el punto (3, 1, 3), as como la ecuaci
on de dicha recta.

6.4.

M
aximos y mnimos

Los m
aximos y mnimos de una funci
on f (x, y) en un dominio cerrado y
acotado podemos visualizarlos f
acilmente a traves del grafo correspondiente
y/o de las curvas de nivel. Utilizando una malla y los comandos min y max
(ya comentados en la p
agina 32) podemos aproximar los valores de las coordenadas de tales puntos con una precisi
on determinada por lo fina que sea la
malla.

6.4.1.

Extremos de f(x, y) sobre un dominio rectangular

Supongamos que queremos determinar los extremos, sobre el cuadrado


[2, 2] [2, 2], de la funci
on f (x, y) = sen x + sen y + sen(x + y)
En primer lugar hagamos un par de representaciones de la funci
on propuesta: una en la que se muestre la superficie z = f (x, y) y otra en la que
se observen algunas de sus curvas de nivel. Para ello, podemos utilizar la siguiente rutina:
[x,y]=meshgrid(-2:0.2:2);
z=sin(x)+sin(y)+sin(x+y);
figure(1); surf(x,y,z)
figure(2); [C,h]=contour(x,y,z,20);
clabel(C,h)
A simple vista, podemos afirmar que en alg
un punto cercano al (1, 1) la
funci
on presenta un m
aximo y en alg
un punto cercano al (1, 1), un mnimo. A
nadiendo las siguientes lneas a la rutina anterior podemos encontrar

182

C
alculo diferencial en varias variables

el punto de los de la malla en el que la funci


on alcanza el m
aximo (podras
hacer algo similar para el mnimo?):
[valormax,ind]=max(z(1:prod(size(z))));
Mx=num2str(x(ind)); My=num2str(y(ind));
valormax=num2str(valormax);
T=[El m
aximo, ,valormax,, se alcanza en (,Mx,,,My,)];
figure(1); title(T)
Observa que la informaci
on que te proporciona esta rutina es que el punto
de entre los de la malla en el que se alcanza el m
aximo es el correspondiente
a las coordenadas (1, 1). Sin embargo, esto no quiere decir que el m
aximo
de esa funci
on se alcance en el punto (1, 1). Si pruebas con otras mallas m
as
finas, cambiando el paso que inicialmente hemos fijado 0.2 en la primera
lnea de la rutina, por otros valores menores, como por ejemplo, 0.1 o 0.05,
obtendr
as valores parecidos pero diferentes. Es un buen ejercicio determinar
ex
actamente cu
al es el punto de dicho cuadrado en el que la funci
on alcanza
su m
aximo absoluto y observar que los valores obtenidos para los distintos
pasos son realmente aproximaciones de dicho punto.
A estas alturas, poco habra que comentar acerca de los detalles tecnicos
de la rutina construida: el comando max ya fue presentado en la p
agina 32, el
comando prod, en la p
agina 92, y para el resto hemos utilizado la doble interpretaci
on que hace Matlab de las matrices, como tablas o como un vector.
Sin embargo, s que vamos a detenernos en aclarar c
omo deben ser interpretados de forma correcta los resultados obtenidos por esta rutina. En
concreto, si estamos interesados en determinar los extremos locales de un
campo escalar definido sobre R2 una mala interpretaci
on de los resultados
de la rutina anterior nos puede llevar a enga
no como se puede observar
si suponemos que estamos interesados en encontrar el m
aximo relativo de

6.4. M
aximos y mnimos

183

f (x, y) = x4 + 2x2 y 2 + y 4 x2 y 2 en el cuadrado [1.5, 1.5] [1.5, 1.5]. La


rutina anterior nos indica que, de entre los puntos de la malla, en el que la
funci
on alcanza su m
aximo es el punto (1.5, 1.5). Si sustituimos el cuadrado por el cuadrado [1, 1] [1, 1], la rutina nos devuelve el punto (1, 1).
Sin embargo, el u
nico m
aximo local que tiene ese campo escalar es el punto
(0, 0) (que es "m
aximo absoluto
en cualquier cuadrado que este estrictamente
# " #
2
2
2 2
contenido en
,

,
)
2
2
2
2

6.4.2.

Extremos de f(x, y) sobre un disco

Supongamos ahora que queremos encontrar los extremos del campo escalar
f (x, y) = x2 + 2y 2 4y 2 en el dominio formado por los puntos (x, y) R2
que cumplan que x2 + y 2 4. Este problema lo podemos afrontar de dos
formas distintas. La primera se basa en el hecho en el que el dominio lo podemos describir f
acilmente utilizando las coordenadas polares x = r cos ,
y = r sen con r [0, 2], [0, 2]. De esta forma, el dominio (r, ) es rectangular con lo que podemos aplicar lo aprendido en la subsecci
on anterior.
Para la segunda forma de abordar este problema definiremos la funci
on
a optimizar u
nicamente en los puntos del dominio, utilizando los operadores
relaciones. Esta segunda forma la comentaremos un poco m
as extensamente
en la subsecci
on siguiente. As, utilizando las coordenadas polares, la siguiente
rutina nos permite visualizar los valores de la funci
on f (x, y) en el dominio
propuesto:
[r,theta]=meshgrid(0:0.1:2,0:pi/72:2*pi);
x=r.*cos(theta); y=r.*sin(theta);
z=x.^2+2*y.^2-4*y-2;
surf(x,y,z);
[valormax,ind]=max(z(1:prod(size(z))));
Mx=num2str(x(ind)); My=num2str(y(ind));

184

C
alculo diferencial en varias variables

T=[El m
aximo, ,valormax,, se alcanza en (,Mx,,,My,)];
title(T); view(0,90); shading interp; axis equal;
La primera coordenada del punto en el que se alcanza el m
aximo (que
puede parecer un poco extra
na) debe interpretarse como 0. Otro tanto sucede si utilizas una rutina an
aloga para el mnimo. Tambien es buen ejercicio
determinar de forma analtica todos los extremos (locales y/o absolutos) de
este campo escalar en dicha regi
on para poder as comprobar los resultados
obtenidos.
Observa que no hace falta que el dominio tenga, necesariamente, que ser
circular. Este mismo metodo lo puedes utilizar siempre que el dominio pueda
ser f
acilmente parametrizable y el conjunto en el que se recorren los par
ametros sea rectangular. Pero, c
omo hacer una representaci
on del mismo estilo
para dominios m
as complicados?

6.4.3.

Extremos de f(x, y) sobre otros dominios

A la vista de las subsecciones anteriores, no es difcil realizar una primera aproximaci


on del punto en el que se alcanza un extremo absoluto de un
campo escalar definido sobre un dominio rectangular de R2 o parametrizable
de tal forma que el dominio parametrico sea rectangular. Para otros tipos de
dominios, utilizaremos la tecnica presentada en la subsecci
on 6.1.2 basada en
los operadores relacionales. Para ilustrarla supondremos que estamos interesados en determinar el m
aximo de la funci
on f (x, y) = x y sobre el conjunto
2
formado por los puntos (x, y) R tales que x3 y 3 + 6xy 0.
Para ello, consideramos la funci
on rara2 definida en la siguiente rutina:
function z=rara2(x,y)
M=x.^3-y.^3+6*x.*y;
z=ones(size(M))*NaN;

6.4. M
aximos y mnimos

185

t=find(M<=0);
z(t)=x(t)-y(t);
y la que se muestra a continuaci
on para determinar el m
aximo absoluto en
[2, 4] [4, 2]:
[x,y]=meshgrid(-2:0.05:4,-4:0.05:2);
z=rara2(x,y); surf(x,y,z);
[valormax,ind]=max(z(1:prod(size(z))));
Mx=num2str(x(ind)); My=num2str(y(ind));
valormax=num2str(valormax);
T=[El m
aximo, ,valormax,, se alcanza en (,Mx,,,My,)];
title(T); view(0,90); shading interp
axis equal; axis([-2 4 -4 2]);
Tambien es un problema interesante determinar analticamente los extremos (locales y/o absolutos) en dicha regi
on de este campo escalar y comprobar
los resultados obtenidos. Si quisieramos resolver el problema de la subsecci
on
anterior utilizando esta misma tecnica, u
nicamente tendramos que sustituir
la funci
on rara2 por rara3 definida como sigue:
function z=rara3(x,y)
M=x.^2+y.^2-4;
z=ones(size(M))*NaN;
t=find(M<=0);
z(t)=x(t).^2+2*y(t).^2-4*y(t)-2;

6.4.4.

Ejercicios

1. Representa la gr
afica de la funci
on f (x, y) = 2x3 + xy 2 + 5x2 + y 2 y,
en un gr
afico diferente, algunas de sus curvas de nivel. A continuaci
on,

186

C
alculo diferencial en varias variables

aproxima los extremos que dicha funci


on tenga dentro del rect
angulo
[2.5, 0.5] [3, 3]], determina analticamente las coordenadas de cada
uno de sus puntos crticos y clasifcalos. A
nade dichos puntos como
elementos de cada una de las gr
aficas anteriores.
2. Aproxima los extremos de la funci
on f (x, y) = exy en el conjunto formado por los puntos (x, y) del plano tales que 4x2 + y 2 1 generando
una gr
afica en la que se observen, de la mejor manera posible, tus resultados y que incluya las coordenadas de los extremos y los valores de
la funci
on en ellos:
a) utilizando coordenadas para parametrizar en dominio como un dominio rectangular.
b) definiendo una funci
on que s
olo este definida para los valores de
dicho conjunto.
3. El m
aximo absoluto de f (x, y) = 4x + y en 2x2 + xy + y 4 1/2 0 (la
curva es la del ejercicio 3 de la subsecci
!on 6.1.4 y el ejemplo de 6.3.1)

2 + 258 1
,
. El punto (1/2, 0) es m
aximo
se alcanza en el punto
32
4
local.

6.5.

Optimizaci
on num
erica

Recuerda que, en el caso en el que un campo escalar f : Rn R sea


diferenciable, decimos que un punto P0 es punto crtico de f si f (P0 ) = ~0,
y adem
as, si P0 es extremo local de f , entonces P0 es punto crtico de f .
Tambien podemos afirmar que si P0 = (x0 , y0 ) es un punto crtico de un
campo escalar f : R2 R y
kHf (P0 )k < 0, entonces P0 no es extremo local de f (es un punto de
silla)

187

6.5. Optimizaci
on numerica

kHf (P0 )k > 0 y

2f
(P0 ) > 0, entonces P0 es mnimo local de f
x2

kHf (P0 )k > 0 y

2f
(P0 ) < 0, entonces P0 es m
aximo local de f
x2

As, para determinar los puntos crticos de un campo escalar f : R2 R


tenemos que resolver el siguiente sistema, en las inc
ognitas x e y, de dos
ecuaciones (por lo general, no lineales):
f
(x, y) = 0,
x

f
(x, y) = 0
y

Recuerda que, siendo f : R R, para resolver una resolver una ecuaci


on de la forma f (x) = 0 podamos utilizar el comando fzero tal y como
coment
abamos en la subsecci
on 1.3.3 (ver p
agina 24 y siguientes) partiendo
de un punto inicial (o un intervalo en el cual hay un cambio de signo de
la funci
on). En el caso en el que F : R2 R2 , Matlab cuenta con el comando fsolve para resolver el sistema F (x, y) = (0, 0) (es decir, el sistema
F1 (x, y) = 0, F2 (x, y) = 0 siendo F1 y F2 cada uno de los dos campos escalares determinados por las componentes del campo vectorial F ), pero esta
instrucci
on viene dentro del paquete de optimizaci
on (Optimization Toolbox)
al que puede que no tengas acceso.
Por ello, vamos a utilizar que un punto (x0 , y0 ) es soluci
on del sistema F1 (x, y) = 0, F2 (x, y) = 0 si y s
olo si es mnimo del campo escalar
2
2
F (x, y) = (F1 (x, y)) + (F2 (x, y)) y que para minimizar campos escalares
podemos utilizar la instrucci
on fminsearch que, al igual que fzero, tambien
necesita de un punto inicial desde el que comenzar un proceso iterativo.
Por ejemplo, si quisieramos determinar y clasificar los puntos crticos de
f (x, y) = 2x + 4y + 4x2 y 2 + 2xy 2 x4 y 4 2x3 y 3 tendramos que resolver

188

C
alculo diferencial en varias variables

el sistema

f
(x, y) = 2 + 8x + 2y 2 4x3 6x2 y 3 = 0

o equivalentemente

(x, y) = 4 2y + 4xy 4y 3 6x3 y 2 = 0


y

1 + 4x + y 2 2x3 3x2 y 3 = 0

2 y + 2xy 2y 3 3x3 y 2 = 0

Este sistema lo resolveremos utilizando el comando fminsearch pero, para ello, necesitaremos un buen punto inicial desde el que iniciar un proceso
iterativo, por cada uno de los puntos del plano que sean soluci
on de dicho
sistema. Para hacernos una idea de por d
onde se encuentran, podemos representar las curvas que determinan cada una de las ecuaciones del sistema a
resolver, ejecutando las siguientes instrucciones:
[x,y]=meshgrid(-1:0.1:2,-1:0.1:2);
contour(x,y,1+4*x+y.^2-2*x.^3-3.*x.^2.*y.^3,[0 0],r); hold on
contour(x,y,2-y+2*x.*y-2*y.^3-3*x.^3.*y.^2,[0 0],g)
Observando as que uno de ellos se encuentra cerca del punto (1.5, 0.5),
otro cerca del punto (0.4, 0.7) y el u
ltimo, cerca del punto (1.5, 0.3), podemos utilizar la siguiente rutina para determinar con m
as precisi
on las coordenadas de dichos puntos crticos:
P=[1.5 0.5;-0.4 0.7;1.5 -0.3];
for i=1:size(P,1);
x=fminsearch((1+4*x(1)+x(2)^2-2*x(1)^3-3*x(1)^2*x(2)^3)^2+...
(2-x(2)+2*x(1)*x(2)-2*x(2)^3-3*x(1)^3*x(2)^2)^2,P(i,:));
P(i,:)=x; disp([Punto cr
tico: ,num2str(P(i,:))]);

6.5. Optimizaci
on numerica

189

hess=[8-12*P(i,1)^2-12*P(i,1)*P(i,2)^3,...
4*P(i,2)-18*P(i,1)^2*P(i,2)^2;...
4*P(i,2)-18*P(i,1)^2*P(i,2)^2,...
-2+4*P(i,1)-12*P(i,2)^2-12*P(i,1)^3*P(i,2)]
determinante=det(hess)
end;
A la vista de los resultados ofrecidos por esta rutina y teniendo en cuenta el criterio de clasificaci
on anteiormente comentado, ya no resulta difcil
completar la tarea propuesta.

6.5.1.

Ejercicios

1. Determinar y clasificar los puntos crticos, dentro del rect


angulo de
vertices (1.5, 0.5), (1, 0.5), (1, 1.5) y (1.5, 1.5) del campo escalar
f (x, y) = ex + y 4 x3 + 4cos y

Bibliografa
[1] Davis, Timothy A. y Sigmon, Kermit. Matlab Primer, 7th Edition. CRC
Press, Boca Raton, FL, 2004.
[2] Marchand, Patrick. Graphics and GUIs in Matlab, 3th Edition. CRC
Press, Boca Raton, FL, 2002.
[3] The Mathworks. Using Matlab Graphics, v7. The Mathworks, Inc. Natick, MA, Natick, 2006.
[4] Van Loan, Charles F. Introduction to Scientific Computing: A Matrix
Vector Approach Using Matlab, 2nd Edition. Prentice Hall, Upper Saddle
River, NJ, 1999.

Indice alfab
etico
concatenaci
on, 5
divisi
on matricial
elemento a elemento, 8
doc, 2
edit
lnea de comandos, 12
exponenciaci
on matricial
elemento a elemento, 8
exponencial, 13
format, 8
funci
on
exponencial, 13
logartmica, 13
funciones
definidas por ramas, 13
continuidad, 26
funciones cientficas, 12
funciones trigonometricas, 12
help, 1
helpdesk, 1
lnea de comandos
edit, 12

length, 4
logaritmo, 13
longitud, 4
lookfor, 1
multiplicaci
on matricial
elemento a elemento, 7
matriz por escalar, 7
operador :, 4
plot, 1
potencia, 8
raz cuadrada, 12
resta, 7
size, 4
subndices, 3
suma, 7
ttulo
de cada eje, 11
de un gr
afico, 11
tama
no, 4
title, 11
transpuesta, 9

194
type, 2
xlabel, 11
ylabel, 11
zlabel, 11

Indice alfabetico

You might also like