Professional Documents
Culture Documents
de C
alculo
25 de septiembre de 2012
Indice general
Introducci
on
1. Comandos b
asicos
IX
1.1. Documentaci
on y representaciones . . . . . . . . . . . . . . . .
1.1.2. Introducci
on de datos . . . . . . . . . . . . . . . . . . .
1.1.3. El operador : . . . . . . . . . . . . . . . . . . . . . . .
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
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
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.
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
1.1.3.
El operador :
5]
1.1. Documentaci
on y representaciones
1 2
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
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
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.
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
12
1.1.7.
Comandos b
asicos
1.1.8.
Funciones cientficas
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
x
tg x
si
4
4
f (x) =
si
<x
cos x
4
4
2
ex
si
<x3
2
14
Comandos b
asicos
1.1.10.
Parametrizaci
on de una circunferencia
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
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
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
1.2.2.
18
Comandos b
asicos
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
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
1.3.1.
Ejemplo de funci
on .m
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
1.3.2.
Funci
on .m con dos salidas
24
Comandos b
asicos
1.3.3.
La funci
on fzero.m de Matlab
1.3. Funciones .m
25
26
Comandos b
asicos
1.3.4.
Definici
on de funciones por ramas
sen x 2x + 1 si 0 x 2
f (x) =
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]
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.
28
Comandos b
asicos
1.3.6.
Ejercicios
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
1.4.1.
La primera derivada
1.4. Derivaci
on numerica
29
30
Comandos b
asicos
31
1.4. Derivaci
on numerica
1.4.2.
La segunda derivada
f (x + 2x) f (x + x) f (x + x) f (x)
x
x
f (x + 2x) 2f (x + x) + f (x)
(x)2
32
1.4.3.
Comandos b
asicos
Otros comandos b
asicos
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.
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
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
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
k2 =
n(n + 1)(2n + 1)
6
(2.2)
n(n + 1)(2n + 1) n 1
6n3
3
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
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
40
Integrales
es
q(x) =
x(x + 1)(2x + 1)
1
1
1
= x3 + x2 + x
6
3
2
6
(2.3)
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
42
Integrales
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
44
Integrales
Por otra parte, en este caso no es posible comprobar a mano los resultados,
2.1. Areas
2.1.7.
45
Ejercicios
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]
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
47
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
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
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.
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
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
2.3.
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
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
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.
52
Integrales
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
[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
[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
aproximaci
on incl
uyela como parte de un gr
afico en el que representa la
gr
afica de la funci
on del integrando.
55
2.4. Derivaci
on e integraci
on simb
olica
ceil(t) dt
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
2.4.1.
Obtenci
on de ayuda
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
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
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
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=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
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
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
2.5.
Integraci
on num
erica
63
2.5. Integraci
on numerica
2.5.1.
La regla de Simpson
h
Sn =
3
f (a) + 4
m
X
i=1
f (x2i1 ) + 2
m1
X
i=1
f (x2i) + f (b)
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
2.5. Integraci
on numerica
65
66
Integrales
2.5.2.
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 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
2.5. Integraci
on numerica
69
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
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
2.5.5.
Ejercicios
obtengamos la aproximaci
on del valor de
72
Integrales
/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
3.1.1.
Area
entre 2x y tg x
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)
74
Aplicaciones de la integral
3.1.2.
Area
entre x2 5 y ln x
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
Area
encerrada por una curva parametrizada
3.1.3.
b
0
x (t) y(t) dt =
1
x(t) y (t) dt =
2
0
b
a
3.1. Area
entre curvas
77
Utilizando la primera
de estas igualdades, el area pedida lo podemos deterZ
2
minar calculando
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
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.
79
3.2. C
alculo de vol
umenes
caso, se transforma en V =
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
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
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
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 =
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
83
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.
84
Aplicaciones de la integral
3.3.2.
...parametrizadas
85
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
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
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.
La distribuci
on exponencial
0
si x < 0
f (x) =
ex si x 0
F (x) =
si x < 0
1 ex si x 0
3.4.2.
87
La distribuci
on normal
(x)2
2 2
(t)2
2 2
dt
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.
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
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 =
4.2.
Series num
ericas
95
sn = a1 + a2 + + an =
n
X
k=1
sucesi
on de sumas parciales se suele representar por
an . Si la sucesi
on an
n=1
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
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
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
97
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
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
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...
4.3.1.
...de t
erminos positivos
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
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
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
k+1
f (x) dx Rk
f (x) dx
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
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
4.3.2.
...alternadas
X
se comete al aproximar el valor de la suma infinita S =
an a traves del
n=1
k
X
an , nunca supera
n=1
X
n=1
an
sk + sk+1
sk + sk + ak+1
ak+1
=
= sk +
2
2
2
4.3. Aproximaci
on de series...
105
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
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
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
X
n=0
an (x x0 )n = a0 + a1 (x x0 ) + a2 (x x0 )2 + + an (x x0 )n + . . .
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!
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
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.4.1.
Ejercicios
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.
X
(1)n x2n+1
serie de potencias
2n + 1
n=0
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
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.
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
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
n=0
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
115
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.
117
Captulo 5
Vectores y geometra
analtica
5.1.
Aritm
etica vectorial
120
5.1.1.
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.2.
Vectores en el espacio
5.1.3.
El producto escalar
5.1.4.
Angulos
y longitudes
122
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
5.1.6.
Volumen de un paraleleppedo
5.1.7.
123
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
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
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
5.2.1.
Representaci
on de una curva
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
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);
127
128
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:
129
130
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.
c0 (t0 ) = lm
131
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.
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
134
5.3.
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
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.1.
y2
x2
+
=1
4
9
136
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.
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) =
137
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.
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) =
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
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
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
5.4.
139
Superficies en el espacio
5.4.1.
Representaci
on de un plano
140
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-
141
142
5.4.2.
Representaci
on conjunta de dos planos
143
5.4.3.
144
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
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
5.4.4.
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);
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
5.4.5.
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 )
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
150
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
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
[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.
c2 (v) = (x, y, z) R3 tales que x = x(u0 , v), y = y(u0 , v), z = z(u0 , v)
153
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
154
5.4.9.
Ejercicios
=1
4
9
2
2
d ) f (x, y) = xyex y junto con 20 cortes horizontales.
c) x2 +
155
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
156
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.
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
159
6.1.1.
Representaci
on sobre dominios perforados de R2
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
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));
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
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);
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
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.
165
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
6.2.1.
Derivaci
on num
erica en dos variables
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
f (a, c)
f (a + x, c)
..
..
.
.
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)
167
f (a, c)
f (a + pasox , c)
f (a, c + y)
f (a + pasox , c + 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
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
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.
f
f
(x0 , y0 ) (x x0 ) +
(x0 , y0 ) (y y0 )
x
y
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
6.2.4.
x
y
z
(u0 , v0 ),
(u0 , v0 ),
(u0 , v0 )
v
v
v
175
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
x
4
y
4
z
4
5, arctg
,
5, arctg
,
5, arctg
= (4, 3, 0)
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.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
178
C
alculo diferencial en varias variables
6.3.1.
6.3.2.
179
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
6.4. M
aximos y mnimos
181
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.
182
C
alculo diferencial en varias variables
6.4. M
aximos y mnimos
183
,
)
2
2
2
2
6.4.2.
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.
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
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
187
6.5. Optimizaci
on numerica
2f
(P0 ) > 0, entonces P0 es mnimo local de f
x2
2f
(P0 ) < 0, entonces P0 es m
aximo local de f
x2
f
(x, y) = 0
y
188
C
alculo diferencial en varias variables
el sistema
f
(x, y) = 2 + 8x + 2y 2 4x3 6x2 y 3 = 0
o equivalentemente
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
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