Matlab A Través de Ejemplos-Cesar Perez
Matlab A Través de Ejemplos-Cesar Perez
Matlab A Través de Ejemplos-Cesar Perez
https://ingenieriacivilwil.blogspot.com/
César Pérez López
Instituto de Estudios Fiscales (lEF)
Universidad Complutense de Madrid
MATLAB
a través de ejemplos
MATLAB a través de ejemplos
ISBN: 978-84-9281-243-1
IBERGARCETA PUBLICACIONES, S.L., Madrid 2011
Edición: 1.ª
Impresión: 1.ª
N.º de páginas; 444
Formato: 17 x 24 cm
Materia CDU: 51 Matemáticas.
Reservados los derechos para todos los países de lengua española. De conformidad con lo dispuesto en el artículo 270 y siguie ntes del código
penal vigente, podrán ser castigados con penas de multa y privación de libertad quienes reprodujeren o plagiaren, en todo o e n parte, una obra
literaria, artística o científica fijada en cualquier tipo de soporte sin la preceptiva autorización. N inguna parte de esta publicación, incluido el
diseño de la cubierta, puede ser reproducida, almacenada o trasmitida de ninguna forma, ni por ningún medio, sea éste electró nico, químico,
mecánico, electro-óptico, grabación, fotocopia o cualquier otro, sin la previa autorización escrita por parte de la editorial.
Diríjase a CEDRO (Centro Español de Derechos Reprográficos), www.cedro.org, si necesita fotocopiar o escanear algún fragmento de esta
obra.
1ª edición, 1ª impresión
OI: 70-2011
ISBN: 978-84-9281-243-1
Nota sobre enlaces a páginas web ajenas: Este libro puede incluir referencias a sitios web gestionados por terceros y ajenos a IBERGARCETA
PUBLICACIONES, S.L., que se incluyen sólo con finalidad informativa. IBERGARCETA PUBLICACIONES, S.L., no asume ningún tipo de
responsabilidad por los daños y perjuicios derivados del uso de los datos personales que pueda hacer un tercero encargado del mantenimiento
de las páginas web ajenas a IBERGARCETA PUBLICACIONES, S.L., y del fu ncionamiento, accesibilidad y mantenimiento de los sitios web
no gestionados por IBERGARCETA PUBLICACIONES, S.L., directamente. Las referencias se proporcionan en el estado en que se encu entran
en el momento de publicación sin garantías, expresas o implícitas sobre la información que se proporcione en ellas.
INDICE
Integrales...................................................................................................................... 385
Integrales inmediatas, por cambio de variable y por partes ............................................ 387
Integrales por reducción y cíclicas ................................................................................ 389
Integrales racionales, irracionales y binomias ............................................................... 390
Integral definida y aplicaciones. Una variable .............................................................. 391
Longitud de un arco de curva ................................................................................... 391
Superficie entre dos curvas ...................................................................................... 395
Superficies de revolución ......................................................................................... 400
Volúmenes de revolución ......................................................................................... 401
Integrales curvilíneas ............................................................................................... 403
Integrales impropias ..................................................................................................... 404
Integrales dependientes de un parámetro ...................................................................... 405
Integración numérica aproximada ................................................................................. 407
Integrales especiales ..................................................................................................... 409
Integral definida y aplicaciones. Varias variables ......................................................... 412
Área de figuras planas y doble integración ................................................................... 413
Área de superficies por doble integración ................................................................ 415
Cálculo de volúmenes por integrales dobles ............................................................. 416
Cálculo de volúmenes e integrales triples ................................................................. 417
El teorema de Green ..................................................................................................... 419
Teorema de la divergencia ............................................................................................ 420
El teorema de Stokes .................................................................................................... 421
CAPITULO 1
INTRODUCCION Y ENTORNO
DE TRABAJO DE MATLAB
INTRODUCCIÓN A MATLAB
MATLAB es una plataforma de cálculo científico y programación de alto nivel a través
de un entorno interactivo que permite realizar tareas de cálculo complejas de forma más rápida que
con los lenguajes de programación tradicionales, como C, C++ y Fortran. Se trata de la plataforma
de cálculo más utilizada actualmente en las ciencias y la ingeniería.
Es posible usar MATLAB en una amplia gama de aplicaciones que incluyen cálculo
matemático, álgebra, estadística, econometría, control de calidad, series temporales, procesamiento
de señales e imágenes, comunicaciones, diseño de sistemas de control, sistemas de prueba y
medición, modelado y análisis financiero, biología computacional, etc. Los conjuntos de
herramientas complementarios llamados toolbox (colecciones de funciones de MATLAB para
propósitos especiales, que están disponibles por separado) amplían el entorno de MATLAB
permitiendo resolver problemas especiales en diferentes áreas de aplicación.
• Funciones para integrar los algoritmos basados en MATLAB con aplicaciones y lenguajes
externos, tales como C/C++, FORTRAN, Java, COM y Microsoft Excel
Figura 1-1
CAPÍTULO 1: INTRODUCCIÓN Y ENTORNO DE TRABAJO DE MATLAB 3
Figura 1-2
4 MATLAB A TRAVÉS DE EJEMPLOS
MATLAB posibilita ejecutar comandos o grupos de comandos uno a uno, sin compilar
ni enlazar, y repetir su ejecución hasta lograr la solución óptima.
• MATLAB Profíler - Registra el tiempo que tarda en ejecutarse cada línea de código
• Directory Reports - Explora todos los archivos de un directorio y crea informes sobre
la eficiencia del código, las diferencias entre los archivos, las dependencias de los
archivos y la cobertura del código
Figura 1-3
CAPÍTULO 1: INTRODUCCIÓN Y ENTORNO DE TRABAJO DE MATLAB 5
Figura 1-4
En la Figura 1-5 se observa un diagrama en el que se muestra una curva ajustada a las
diferencias de presión atmosférica promediadas entre Easter Island y Darwin en Australia.
Figura 1-5
En cuanto a acceso a datos, MATLAB es una plataforma eficiente para acceder a datos
de archivos, otras aplicaciones, bases de datos y dispositivos externos. Puede leer datos guardados
en los formatos más conocidos, tales como Microsoft Excel, archivos de texto ASCII o binarios,
archivos de imagen, sonido y vídeo, y archivos científicos como HDF y HDF5. Las funciones de
E/S de archivos binarios de bajo nivel le permiten trabajar con archivos de datos en cualquier
formato. Las funciones adicionales le permiten leer datos de páginas Web y XML.
Es posible llamar a otras aplicaciones y lenguajes, tales como C, C++, objetos COM,
DLLs, Java, FORTRAN y Microsoft Excel y acceder a sitios FTP y servicios Web. Utilizando el
Database Toolbox, incluso puede acceder a bases de datos ODBC/JDBC.
CAPÍTULO 1: INTRODUCCIÓN Y ENTORNO DE TRABAJO DE MATLAB 7
Visualización de datos
Todas las funciones gráficas necesarias para visualizar datos de ingeniería y científicos están
disponibles en MATLAB. Incluye funciones de representación de diagramas bidimensionales y
tridimensionales, visualización de volumen tridimensional, herramientas para crear diagramas en
forma interactiva y la posibilidad de exportar los resultados a los formatos gráficos más conocidos.
Es posible personalizar los diagramas añadiendo varios ejes, cambiando los colores de las líneas y
marcadores, añadiendo anotaciones, ecuaciones LaTeX, leyendas y trazando formas.
• Histogramas
• Polígonos y superficies
• Diagramas de dispersión/burbujas
• Animaciones
La Figura 1-6 muestra los diagramas lineales de los resultados de varias pruebas de emisión
de un motor, con una curva ajustada a los datos.
Figura 1-6
8 MATLAB A TRAVÉS DE EJEMPLOS
Figura 1-7
• Trazar formas
Figura 1-8
10 MATLAB A TRAVÉS DE EJEMPLOS
Cálculo numérico
MATLAB contiene funciones matemáticas, estadísticas y de ingeniería que soportan la
mayoría de las operaciones a realizar en estos campos. Estas funciones, desarrolladas por
matemáticos expertos, son el fundamento del lenguaje de MATLAB. Por citar algunos ejemplos,
MATLAB implementa siguientes funciones matemáticas y de análisis de datos en los siguientes
campos:
Figura 1-9
Es posible crear informes más complejos, tales como ejecuciones simuladas y varias
pruebas de parámetros, utilizando MATLAB Report Generator (disponible por separado).
Figura 1-10
Herramienta Descripción
Historial de comandos Permite ver los comandos introducidos durante la sesión en la ventana
de comandos, así como copiarlas y ejecutarlos (parte inferior derecha
de la Figura 1-11)
Ventana de comandos Ventana de ejecución de los comandos de MATLAB (parte central de
la Figura 1-11)
Espacio de trabajo Permite ver el contenido del espacio de trabajo (variables...) o
Workspace (parte superior derecha de la Figura 1-11)
Ayuda Ofrece ayuda y demos sobre MATLAB
Botón de inicio (Start) Permite ejecutar herramientas y acceder a documentación de los
componentes de MATLAB (Figura 1-12)
CAPITULO 1: INTRODUCCIÓN Y ENTORNO DE TRABAJO DE MATLAB 13
Figura 1-11
Figura 1-12
14 MATLAB A TRAVÉS DE EJEMPLOS
Cualquier entrada a ejecutar en MATLAB se escribe a la derecha del input del usuario
encabezado con el prompt “>>” obteniéndose la respuesta en las líneas inmediatamente inferiores.
Después de salida vuelve a aparecer el input de usuario para introducir más entradas (Figura 1-13).
Figura 1-13
Figura 1-14
Figura 1-15
16 MATLAB A TRAVÉS DE EJEMPLOS
El comando clc borra la ventana de comandos, pero no borra su contenido del área de
trabajo (el contenido permanece en memoria).
AYUDA EN MATLAB
Se puede obtener ayuda en Matlab a través del botón Ayuda de la barra de iconos oa
través de la opción Help de la barra de menús. Además, la ayuda también puede obtenerse a través
de comandos implementados como objetos de Matlab. El comando help ofrece ayuda general sobre
todas los comandos de Matlab (Figura 1-16). Haciendo clic sobre cualquiera de ellos, se obtiene su
ayuda particular. Por ejemplo, si hacemos clic sobre el comando graph2d, se obtiene la ayuda para
gráficos en dos dimensiones (Figura 1-17).
CAPÍTULO 1: INTRODUCCIÓN Y ENTORNO DE TRABAJO DE MATLAB 17
Figura 1-16
Figura 1-17
18 MATLAB A TRAVÉS DE EJEMPLOS
Se puede pedir ayuda sobre un comando específico (Figura 1-18) o sobre cualquier tema
del contenido (Figura 1-19) utilizando el comando help comando o help tema.
Figura 1-18
Figura 1-19
CAPÍTULO 1: INTRODUCCIÓN Y ENTORNO DE TRABAJO DE MATLAB 19
Figura 1-20
CAPITULO 2
NUMEROS, VARIABLES,
OPERADORES Y FUNCIONES
x+y
Suma
>> 4 + 8
ans
12
x-y Diferencia
>> 4-8
ans =
-4
x*y ó x y Producto
>> 4*8
ans =
32
22 MATLAB A TRAVÉS DE EJEMPLOS
x/y División
0.5000
x ^y Potencia
65536
format short Ofrece los resultados con 4 cifras decimales. Se trata del formato por defecto de
MATLAB
>> sqrt(23)
ans =
4.7958
ans =
4.795831523312719
22 MATLAB A TRAVÉS DE EJEMPLOS
x/y
División
>> 4/8
ans =
0.5000
x^y
Potencia
>> 4^8
ans =
55536
format short Ofrece los resultados con 4 cifras decimales. Se trata del formato por
defecto de MATLAB
>> sqrt(23)
ans =
4.7958
ans =
4.795831523312719
CAPITULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 23
ans =
4.795831523312719e+000
format short e Ofrece los resultados con 4 decimales más la potencia de 10 necesaria
ans =
4.7958e+000
ans =
4.79583152331272
format short g
Ofrece los resultados en formato corto óptimo
>> format short g; sqrt(23)
ans =
4.7958
format bank Ofrece los resultados con 2 cifras decimales
>> format hank; sqrt(23)
ans =
4.80
format rat Ofrece los resultados en forma de número racional aproximado
ans =
1151/240
format + Ofrece el signo de los resultados (+, -) e ignora la parte imaginaria de
los números complejos
>> format +; sqrt(23)
ans =
+
24 MATLAB A TRAVÉS DE EJEMPLOS
ans =
40132eee75770416
vpa ‘operaciones’ n Ofrece el resultado de las operaciones con n dígitos decimales exactos
ans =
4.7958315233127195416
MATLAB trabaja con números enteros y con funciones de variable entera de forma exacta.
Independientemente del formato de presentación de los resultados, los cálculos son exactos. De todas
formas, el comando vpa permite obtener salidas exactas con la precisión que se requiera.
En cuanto a las funciones con variable entera, las más importantes que contempla
MATLAB son las siguientes (las expresiones entre comillas tienen formato cadena);
>> rem(15,2)
ans =
ans =
-1
max(n1,n2)
Máximo de los números n1 y n2
>> max(17,12)
ans =
17
CAPITULO 2: NUMEROS, VARIABLES, OPERADORES Y FUNCIONES 25
>> min(17,12)
ans =
12
>> gcd(17,12)
ans =
1
>> lcm(17,12)
ans =
204
>> factorial(9)
ans =
362880
>> base2dec('abl2579',12)
ans =
32621997
26 MATLAB A TRAVÉS DE EJEMPLOS
>> dec2bin(213)
ans =
11010101
>> dec2hex(213)
ans =
D5
>> bin2dec('1110001')
ans =
113
>> hex2dec('FFAA23')
ans =
16755235
>> 1/6+1/5-2/10
ans =
1/6
MATLAB está tratando con racionales como cocientes de enteros y los mantiene en esta
forma durante los cálculos. De esta manera, no se arrastran errores de redondeo en los cálculos con
fracciones, que pueden llegar a ser muy graves, como demuestra la Teoría de errores. Una vez
habilitado el formato racional, las operaciones con racionales serán exactas hasta que no se habilite
otro formato distinto. Cuando está habilitado el formato racional, un número con coma flotante, o sea,
un número con punto decimal, se interpreta como exacto y MATLAB trata toda la expresión como
racional exacta representando el resultado en números racionales. A su vez, si existe un número
irracional en una expresión racional, MATLAB lo hace corresponder a la fracción más aproximada
para trabajar en formato racional. Consideramos los siguientes ejemplos:
ans =
91/625
>> 2.64/sqrt(25)+4/100
ans =
71/125
204/1943
MATLAB también trabaja con los números irracionales representando los resultados con la
mayor precisión que puede o con la precisión requerida por el usuario, teniendo presente la acotación
de que los irracionales no se pueden representar exactamente como la razón entre dos enteros. A
continuación se presenta un ejemplo.
>> sqrt(235)
ans =
15.3297
Existen constantes reales muy típicas que MATLAB representa como sigue:
28 MATLAB A TRAVÉS DE EJEMPLOS
pi
Número π = 3,1415926
>> 2*pi
ans =
6.2832
exp(1)
Número e = 2,7182818
ans =
2.7183
inf
Infinito (por ejemplo 1/0)
>> 1/0
ans =
Inf
NaN
Indeterminación (por ejemplo 0/0)
>> 0/0
ans =
NaN
ans =
2.2251e-308
>> realmax
ans =
1.7977e+308
MATLAB dispone de una gama de funciones de variable real predefinidas, que por
supuesto serán válidas para variables racionales, irracionales y enteras. En los párrafos
siguientes se presentan las más importantes.
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 29
Funciones trigonométricas
A continuación se presenta una tabla con las funciones trigonométricas y sus inversas
que incorpora MATLAB ilustradas con ejemplos.
Función Inversa
sin(x) Seno asin(x) Arco seno
>> sin(pi/2) >> asin(l)
ans = ans =
1 1.5708
ans = ans =
-1 3.1416
ans = ans =
1 1.5708
ans = ans =
-1 3.1416
ans = ans =
1.0000 0.7854
Funciones hiperbólicas
A continuación se presenta una tabla con las funciones hiperbólicas y sus inversas que
incorpora MATLAB ilustradas con ejemplos.
30 MATLAB A TRAVÉS DE EJEMPLOS
Función Inversa
sinh(x) Seno hiperbólico asinh(x) Arco seno hiperbólico
>> sinh (2) >> asinh(3.6269)
ans = ans =
3.6269 2.0000
cosh(x) Coseno hiperbólico acosh(x) Arco coseno hiperbólico
>> cosh(3) >> acosh(10.0677)
ans = ans =
10.0677 3.0000
ans = ans =
0.7616 1.0000
ans = ans =
0.0866 3.1415
ans = ans =
0.1314 2.7183
ans = ans =
Función Significado
exp(x) Función exponencial en base e (e^x)
>> exp(log(7))
ans =
7
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 31
log(x)
Función logaritmo en base e de x
>> log(exp(7))
ans
=
log10(x) Función logaritmo en base 10 de x
7
>> logl0(l000)
ans =
3
log2(x) Función logaritmo en base 2 de x
>> log2(2^8)
ans =
ans =
8
sqrt(x) Función raíz cuadrada de x
>> sqrt(2^8)
ans =
16
Función Significado
abs(x) Valor absoluto del real x
>> abs (-8)
ans =
8
floor(x)
El mayor entero menor o igual que el real x
>> floor(-23.557)
ans =
-24
32 MATLAB A TRAVÉS DE EJEMPLOS
ceil(x)
El menor entero mayor o igual que el real x
>> ceil (-23.557)
ans =
-23
round(x)
El entero más próximo al real x
>> round(-23.557)
ans =
-24
fix(x) Elimina la parte decimal del real x
>> fix(-23.557)
ans =
-23
rem(a,b) Da el resto de la división entre los reales a y b
>> rem(7,3)
ans =
>> sign(-23.557)
ans =
-1
La forma inicial de definir una variable es muy sencilla. Basta con utilizar la sintaxis
siguiente:
Variable = objeto
Variable = [v11 v12 v13 ... v1n; v21 v22 v23 ... v2n; ...]
Variable = [v11, v12, v13,..., v1n; v21, v22, v23,..., v2n; ...]
Vemos que en la ventana de espacio de trabajo (Workspace) se sitúan todas las variables
que vamos definiendo en la sesión. El valor de cualquiera de estas variables es recuperable
posteriormente tecleando su nombre sobre la ventana de comandos (Figura 2-2).
Figura 2-1
34 MATLAB A TRAVÉS DE EJEMPLOS
Una vez definida una variable, podemos operar sobre ella utilizándola como una variable
habitual en matemáticas teniendo presente que los nombres de las variables son sensibles a
mayúsculas y minúsculas. En la Figura 2-3 se observan algunas operaciones con variables
unidimensionales, vectoriales y matriciales. Es importante notar que al calcular el logaritmo de
V2 se cometió el error de usar la variable en minúsculas.
En MATLAB los nombres de las variables comienzan por una letra seguida de cualquier
número de letras, dígitos o subrayados hasta 31 caracteres como máximo.
También existen formas específicas de definición de variables vectoriales, entre las que
se encuentran las siguientes;
vectorl =
2 3 4 5 6
>> vector2=[2:2:8]
vector2 =
2 4 6 8
CAPÍTULO 2; NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 35
variable=linespace [a,b,n] Define el vector cuyos primero y último elementos son a y b, y que
tiene en total n elementos uniformemente espaciados entre sí
vector3 =
10 14 18 22 26 30
X =
2 3 4 5 6 7 8
>> X(3)
ans =
x(a:b) Devuelve los elementos del vector x situados entre el a-ésimo y el b-ésimo,
ambos inclusive
>> X(3:5)
ans =
4 5 6
x(a:p:b) Devuelve los elementos del vector x situados entre el a-ésimo y el b-ésimo,
ambos inclusive, pero separados de p en p unidades (a>b)
>> X(l:2:6)
ans =
2 4 6
x(b:-p:a) Devuelve los elementos del vector x situados entre el b-ésimo y el a-ésimo,
ambos inclusive, pero separados de p en p unidades y empezando por el b-
ésimo (b>a)
>> X(6:-2:l)
ans =
7 5 3
36 MATLAB A TRAVÉS DE EJEMPLOS
>> A=[3 5 7 4; 1 6 8 9; 2 6 8 1]
A =
3 5 7 4
1 6 8 9
2 6 8 1
>> A(2,4)
ans =
9
A(a:b,c:d) Define la submatriz de A formada por las filas que hay entre la a-ésima y la
b-ésima y por las columnas que hay entre la c- ésima y la d-ésima
>> A(l:2,2:3)
ans =
5 7
5 8
A(a:p:b,c:q:d) Define la submatriz de A formada por las filas que hay entre la a- ésima y la
b-ésima tomándolas de p en p, y por las columnas que hay entre la c-ésima y
la d-ésima tomándolas de q en q
>> A(l:2:3,1:2:4)
ans =
3 7
2 8
A([ab],[c d]) Define la submatriz de A formada por la intersección de las filas a-ésima y b-
ésima y las columnas c-ésima y d-ésima
>> A([2 3] , [2 4])
ans =
7 9
6 1
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 37
A([a b c ...], Define la submatriz de A formada por la intersección de las filias a, b, c, . . . y las
[e f g ...]) columnas e , f , g , . . .
>> A ( [ 2 3],[1 2 4])
ans =
1 6 9
2 6 1
A(:,c:d) Define la submatriz de A formada por todas las filas de A y por las columnas que
hay entre la c-ésima y la d-ésima
>> A ( : , 2 : 4 )
ans =
5 7 4
6 8 9
6 8 1
A(:,[c d e ...]) Define la submatriz de A formada por todas las filas de A y por las columnas c, d,
e, ...
>> A ( : , [ 2 , 3 ] )
ans =
5 7
6 8
6 8
A(a:b,:) Define la submatriz de A formada por todas las columnas de A y por las filas que
hay entre la a-ésima y la b-ésima
>> A(2:3, ;)
ans =
1 6 8 9
2 6 8 1
A([a b c ...],:) Define la submatriz de A formada por todas las columnas de A y por las filas a, b,
c, ...
>> A( [ l , 3 ] , :)
ans =
3 5 7 4
2 6 8 1
ans =
7
8
8
A(:) Define un vector columna cuyos elementos son las columnas de A situadas
por orden una debajo de otra
>> A ( : )
ans =
3
1
2
5
6
6
7
8
8
4
9
1
A(:,:)
Equivale a toda la matriz A
>> A ( : , :)
ans =
3 5 7 4
1 6 8 9
2 6 8 1
Al =
2 6
4 1
A2 =
3 8
5 9
>> [ A 1 , A 2 ]
ans =
2 6 3 8
4 1 6 9
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 39
ans =
2 0 0 0 0
0 0 0 0 0
0 0 9 0 0
0 0 0 8 0
0 0 0 0 7
ans =
1
0
2
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
eye(m,n) Crea la matriz de orden mxn con unos en la diagonal principal y ceros en el resto
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
ans =
0 0 0
0 0 0
40 MATLAB A TRAVÉS DE EJEMPLOS
ones(m,n)
Crea la matriz de orden mxn con todos sus elementos 1
>> ones (2,3)
ans =
1 1 1
1 1 1
rand(m,n)
Crea una matriz aleatoria uniforme de orden mxn
>> rand(4,5)
ans =
0.8147 0.6324 0.9575 0.9572 0.4218
0.9058 0.0975 0.9649 0.4854 0.9157
0.1270 0.2785 0.1576 0.8003 0.7922
0.9134 0.5469 0.9706 0.1419 0.9595
randn(m,n) Crea una matriz aleatoria normal de orden mxn
>> randn(4,5)
ans =
0.6715 0.4889 0.2939 -1.0689 0.3252
-1.2075 1.0347 -0.7873 -0.8095 -0.7549
0.7172 0.7269 0.8884 -2.9443 1.3703
1.6302 -0.3034 -1.1471 1.4384 -1.7115
flipud(A) Devuelve la matriz cuyas filas están colocadas en orden inverso (de arriba abajo)
a las filas de A
>> flipud(A)
ans =
-1 -3 2
2 0 8
1 3 5
fliplr(A) Devuelve la matriz cuyas columnas están colocadas en orden inverso (de izquierda
a derecha) a las de A
>> fliplr(A)
ans =
5 3 1
8 0 2
2 -3 -1
rot90(A)
Rota 90 grados la matriz A
>> rot90(A)
ans =
5 8 2
2 0 -3
1 2 -1
reshape(A,m,n) Devuelve la matriz de orden mxn extraída de la matriz A tomando elementos
consecutivos de A por columnas
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 41
ans =
1 3 5
2 0 8
-1 -3 2
NUMEROS ALEATORIOS
MATLAB incorpora funciones que posibilitan el trabajo con números aleatorios de
modo sencillo, Las funciones rand y randn son las funciones básicas que generan números
aleatorios distribuidos uniformemente y normalmente respectivamente. A continuación se
presentan las funciones más habituales para el trabajo con números aleatorios.
rand(n) Devuelve una matriz de dimensión nxn cuyos elementos son números
decimales aleatorios distribuidos uniformemente en el intervalo [0,1]
>> rand (3)
ans =
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
0.9134 0.2785 0.9649
rand(m,n) Devuelve una matriz de dimensión mxn cuyos elementos son números
decimales aleatorios distribuidos uniformemente en el intervalo [0,1]
>> rand(2,3)
ans =
0.1576 0.9572 0.8003
0.9706 0.4854 0.1419
rand(size(A)) Devuelve una matriz del mismo tamaño que la matriz A y cuyos elementos son números
decimales aleatorios distribuidos uniformemente en el intervalo [0,1]
>> rand(size(eye (3)))
ans =
>> rand('seed')
ans =
931316785
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 43
ans =
931316785
>> rand('seed')
ans =
1000
randn Devuelve un número decimal aleatorio distribuido según una normal de media
0 y varianza 1
>> randn
ans =
-0.4326
randn(n) Devuelve una matriz de dimensión nxn cuyos elementos son números decimales
aleatorios distribuidos según una normal de media 0 y varianza 1
ans =
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273
0.2877 1.1892 0.1746
randn(m,n) Devuelve una matriz de dimensión mxn cuyos elementos son números
decimales aleatorios distribuidos según una normal de media 0 y varianza 1
>> randn(2,3)
ans =
-0.1867 -0.5883 -0.1364
0.7258 2.1832 0.1139
randn(size(A)) Devuelve una matriz del mismo tamaño que la matriz A y cuyos elementos son
números decimales aleatorios distribuidos según una normal de media 0 y
varianza 1
>> randn(size(eye(3)))
ans =
931316785
>> randn('seed')
ans =
1000
OPERADORES
MATLAB es un lenguaje que incorpora operadores aritméticos, lógicos y relacionales de
igual forma que cualquier otro lenguaje. A continuación se enumeran los tipos de operadores citados
en el ámbito del lenguaje de MATLAB.
Operadores aritméticos
MATLAB incorpora los operadores aritméticos habituales (suma, resta, multiplicación y
división) para trabajar con números. Pero a la vez amplía el sentido de estos operadores para el
trabajo con escalares, vectores y matrices, tal y como se muestra en la tabla siguiente:
>> V1=A+c
V1 =
4 6 1 9
>> V2=A+B V2 =
5 -2 6 8
>> V3=A-c
V3 =
-2 0 -5 3
1
CAPITULO 2: NUMEROS, VARIABLES, OPERADORES Y FUNCIONES 45
>> V4=A-B
V4 =
* -3 8 -10 4
Producto de escalares o de matrices o de escalares por vectores o matrices
>> V3=A*c V3 =
3 9 -6 18
V4 =
4 -15 -16 12
V6 =
>> A.^c
ans =
1 27 -8 216
>> c.^A
ans =
>> V7=A./B
V7 =
0.2500 -0.6000 -0.2500 3.0000
>> V8=A.\B
V8 =
4.0000 -1.6667 -4.0000 0.3333
B =
>> A\B
ans =
ans =
ans =
Operadores lógicos
MATLAB también incorpora los operadores lógicos habituales utilizando la notación más
habitual para los mismos. Habitualmente los resultados de los operadores lógicos suelen ser 1 si cierto y
0 si falso. En la tabla siguiente se muestran estos operadores.
ans =
1
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 47
ans =
0
A|B Disyunción lógica (OR) o unión de A y B
>> (2>3)||(5>1)
ans =
1
xor(A,B) OR exclusivo (XOR) o diferencia simétrica de A y B (vale 1 si A o B,
pero no ambos, son 1)
>> xor ( (2>3), (5>1))
ans =
1
Operadores relaciónales
Asimismo MATLAB se ocupa de las operaciones relacionales que ejecutan comparaciones
elemento a elemento entre dos matrices y devuelven una matriz del mismo tamaño cuyos elementos
son ceros si la correspondiente relación es cierta, o unos si la correspondiente relación es falsa. Los
operadores relacionales también permiten comparar escalares con vectores o matrices, en cuyo caso
se compara el escalar con todos los elementos de la matriz. La tabla siguiente muestra los operadores
relacionales de MATLAB.
>> 3<5
ans =
1
>> 4>-6
ans =
0
> Mayor (sólo afecta a partes reales)
>> X=3*ones(3,3)
X =
48 MATLAB A TRAVÉS DE EJEMPLOS
3 3 3 3 3 3 3 3 3
>> X>[1 2 3; 4 5 6; 1 2 3]
ans =
1 1 0
0 0 0
1 1 0
VARIABLES SIMBOLICAS
Hasta ahora hemos manejado siempre variables numéricas. No obstante, MATLAB permite
manejar perfectamente el cálculo matemático simbólico, manipular con facilidad y rapidez las
fórmulas y expresiones algebraicas y realizar la mayoría de operaciones con las mismas.
Sin embargo, para realizar estas tareas es necesario disponer del módulo de MATLAB
Symbolic Math Toolbox. Para que una variable o expresión algebraica sea simbólica, previamente hay
que declararla como tal con el comando syms, con el comando sym o introduciéndola entre comillas.
En la tabla siguiente se presenta la sintaxis de los comandos de conversión a variables y expresiones
simbólicas.
CAPITULO 2; NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 49
ans =
2*x - 5*y
syms x y z...t real Convierte las variables x, y, z, t en simbólicas con valores reales
>> syms a b c real;
>> A = [ a b c ; c a b ; b c a ]
A =
[ a, b, c]
[ c, a, b]
[ b, c, a]
syms x y z...t unreal Convierte las variables x, y, z, t en simbólicas con valores no reales
syms
Lista las variables simbólicas en el espacio de trabajo
>> syms
rho =
5^(l/2)/2 + 1/2
S =
[ 1/2, 3/4, 1]
[ 0, 1/2, 1/10]
[ 1/5, 3/10, 2/5]
>> pretty(rho)
1/2
5 1
--- + -
2 2
digits Da la precisión actual para variables simbólicas
>> digits
Digits = 32
digits(d) Sitúa la precisión de las variables simbólicas en d dígitos decimales
exactos
>> digits(25)
>> digits
Digits = 25
vpa(‘expr’) Resultado numérico de la expresión con los dígitos decimales de
precisión situados en digits
>> phi = vpa('(l+sqrt(5))/2')
phi =
1.618033988749894848204587
También se puede utilizar la sintaxis f=función si todas las variables han sido definidas
previamente como simbólicas con syms. Posteriormente es posible realizar sustituciones en sus
argumentos de acuerdo a la notación que se presenta en la tabla siguiente.
>> f1='x^3'
f1 = x^3
>> f2='z^2+2*t'
f2 = z^2+2*t
>> syms x z t
>> g1=x^2
g1 = x^2
(x + 2*z + exp(t))^(1/2)
>> subs(f1,2)
ans =
subs(f,variable, valor)
Sustituye en la ecuación de f la variable por el valor
>> subs(f1,x,3)
ans =
27
subs(f,{x,y,...}, {a,b,...}) Sustituye en la ecuación de fias variables {x,y,...} por los
valores {a,b, ..}
ans =
>>f+g
ans =
x + cos (x) + 3*x^2 - x^3 + 1
>>f+g+h
ans =
cos(x) + loq(x) + 3*x^2 - x^3 + 1
>> f-g
ans =
x - cos (x) - x^2 + x^3 + 1
>> f-g-h
ans =
2*x - cos(x) - loq(x) - x^2 + x^3 + 1
>> f*g
ans =
(cos(x) + 2*x^2 - x^3)*(x^2 + x + 1)
f*g*h*... Realiza el producto f*g*h*...
>> f*g*h
ans =
-(x - log(x))* (cos(x) + 2*x^2 - x^3)*(x^2 + x + 1)
f/g Realiza el cociente entre f y g (f/g)
>> f/g
ans =
(x^2 + x + l)/(cos(x) + 2*x^2 - x^3)
ans =
-(x^2 + x + l)/((x - loq(x))*(cos(x) + 2*x^2 - x^3))
>> f^2
ans
(x^2 + x + 1)^2
CAPITULO 2: NUMEROS, VARIABLES, OPERADORES Y FUNCIONES 53
>> f^g
ans =
(x^2 + x + l)-^(cos{x) + 2*x^2 –x^3)
ans =
cos(x) + (cos(x) + 2*x^2 - x^3)^2 + 2*x^2 – x^3 + 1
compose(f,g,u) Función compuesta de f y g, tomando la expresión u como
dominio d e f y g
>> compose (f,g,h)
ans =
cos(log(x) - x) + 2*(x - log(x))^2 + (x - log(x))^3 +
(cos(log(x)
>> finverse(f)
Warning: finverse (x^2 + x + 1) is not unique.
ans =
(4*x - 3)^(l/2)/2 - 1/2
load Lee todas las variables del fichero MATLAB.mat Lee todas las
load fichero load fichero X Y Z load variables del fichero .mat especificado Lee las variables X, Y, Z
fichero -ascii load fichero -mat S = del fichero .mat dado Lee el fichero como ASCII sea cual sea su
load(...) extensión Lee el fichero como .mat sea cual sea su extensión
Devuelve el contenido de un fichero .mat en la variable S
saveas(h,'f.ext') saveas(h,'f,'formato') Salva la figura o modelo h como el fichero f.ext Salva la figura o
modelo h como el fichero f con el formato especificado
El comando save es el instrumento esencial para guardar datos en ficheros .mat tipo
MATLAB (sólo legibles por el programa MATLAB) y en ficheros tipo ASCII (legibles por
cualquier aplicación). Por defecto, el almacenamiento de las variables suele realizarse en ficheros
con formato MATLAB .mat. Para almacenar variables en ficheros con formato ASCII es necesario
utilizar el comando save con las opciones que se presentan a continuación:
Ejercicio 1. Calcular el valor de 7 elevado a la potencia 400 con 500 cifras decimales exactas.
ans =
1.094500604336113085424254456486662175299754873359706186335419407515439
06316349209002147856846968715280739995373528253861552495710170702637728
89172085286838471044006674397286276116996066357907929105887893308827487
56981780249770882233963982655555969164735367924371346327397193899696906
30523317113111727683195819839003492006097994729312240001*10^338
En este caso no son necesarias 500 cifras para expresar el valor exacto
del resultado. Se observa que es suficiente con 338 cifras. Si se quiere el
resultado con menos cifras exactas que las que tiene el número realmente, MATLAB
completa el resultado con potencias de 10. Veamos:
ans =
1.09450060433611308542425445648666217529975487*10^338
Ejercicio 2. Calcular el máximo común divisor y el mínimo común múltiplo de los números 1000,
500 y 625
>> gcd(gcd(1000,500),625)
ans =
125
Como la función gcd sólo admite dos argumentos en MATLAB, hemos aplicado la
propiedad: gcd(a,b,c) = gcd(gcd(a,b),c) = gcd(a,gcd(b,c)). Como la propiedad es análoga para el
mínimo común múltiplo: lcm(a,b,c) = lcm(lcm(a,b),c) = lcm(a,lcm(b,c)). Realizamos su cálculo de la
forma siguiente:
>> lcm(lcm(1000,500),625)
ans =
5000
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 55
Ejercicio 1. Calcular el valor de 7 elevado a la potencia 400 con 500 cifras decimales exactas.
ans=
1.094500604336113085424254456486662175299754873359706186335419407515439
06316349209002147856846968715280739995373528253861552495710170702637728
89172085286838471044006674397286276116996066357907929105887893308827487
56981780249770882233963982655555969164735367924371346327397193899696906
30523317113111727683195819839003492006097994729312240001*10^338
En este caso no son necesarias 500 cifras para expresar el valor exacto
del resultado. Se observa que es suficiente con 338 cifras. Si se quiere el
resultado con menos cifras exactas que las que tiene el número realmente, MATLAB
completa el resultado con potencias de 10. Veamos:
ans =
1.09450060433611308542425445648666217529975487*10^338
Ejercicio 2. Calcular el máximo común divisor y el mínimo común múltiplo de los números 1000, 500
y 625
>> gcd(gcd(1000,500),625)
ans =
125
Como la función gcd sólo admite dos argumentos en MATLAB, hemos aplicado la
propiedad: gcd(a,b,c) = gcd(gcd(a,b),c) = gcd(a,gcd(b,c)). Como la propiedad es análoga para el
mínimo común múltiplo: lcm(a,h,c) = lcm(lcm(a,b),c) = lcm(a,lcm(b,c)).rsalizanemos su cálculo de
la forma siguiente:
>> lcm(lcm(1000,500),625)
ans =
5000
56 MATLAB A TRAVÉS DE EJEMPLOS
Ejercicio 3. ¿Es primo el número 99.991? Hallar los factores primos del número 135.678.742
ans =
99991
>> factor(135678742)
ans =
2 1699 39929
Se observa que 99991 es número primo porque al descomponerlos en factores primos resulta
ser el único factor primo de sí mismo. También se observa que el número 135678742 tiene tres factores
primos.
Ejercicio 4. Hallar el resto de la división de 2134 entre 3. ¿Es divisible por 17 el número 2 32 - 1?
Hallar también el número N que al dividirlo por 16, 24, 30 y 32 da de resto 5.
ans =
ans =
3 5 17 257 65537
Para resolver la última parte del problema, calculamos el mínimo común múltiplo de todos
los números y le sumamos 5.
>> N=5+lcm(16,lcm(24,lcm(30,32)))
CAPITULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 57
N = 485
Ejercicio 5. Calcular el valor que ofrece MATLAB por defecto para el factorial de 100. Calcularlo
también con 70 y con 200 cifras significativas.
>> factorial(100)
ans =
9.3326e+157 >>
vpa(factorial(100))
ans =
ans =
9.332 6215443944102188325606108575267240944254854960571509166910400408*10^ 157
>> vpa(factorial(100),200)
ans =
9.332621544394410218832560610857526724094425485496057150916691040040799
50642429371486326940304505128980429892969444748982587372043112366414775
61877016501813248*10^157
Como se trata de una operación entre números en sistemas de numeración con bases distintas,
habrá que convertirlos todos base 10 y realizar la operación para calcular el resultado en base 10.
Posteriormente se pasa el resultado a base 5.
>>
R10=base2dec('a25aaf6',16)+base2dec('6789aba',12)+base2dec('35671',8) +
base2dec('1100221',3) - 1250
R10 =
190096544
>> R5=dec2base(R10,5)
58 MATLAB A TRAVÉS DE EJEMPLOS
R5 =
342131042134
Utilizamos la estrategia del ejercicio anterior. En primer lugar, realizamos la operación con todos los
números a base 10 y por último pasamos el resultado a base 13.
>>
R10=vpa(base2dec('666551',7)*base2dec('aal99800a',11)+79*base2dec('fffa
aal25',16)/(base2dec('33331',4)+6))
R10 =
275373340490851.53125
>> R13=dec2base(275373340490852, 13)
R13 =
BA867963C149
6
Ejercicio 8. Realizar las siguientes operaciones con números racionales:
a) 3/5+2/5+7/5
b) 1/2+1/3+1/4+1/5+1/6
c) 1/2-1/3+1/4-1/5+1/6
d) (2/3-l/6)-(4/5+2+l/3)+(4-5/7)
a)
>> format rat
>> 375+2/5+7/5
ans =
12/5
b)
>> 1/2+1/3+1/4+1/5+1/6
ans =
29/20
c)
>> 1/2-1/3+1/4-1/5+1/6
ans =
23/60
CAPITULO 2; NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 59
d)
>> (2/3-1/6)-(4/5+2+1/3)+(4-5/7)
ans =
137/210
23/60
>> simplify(sym((2/3-1/6)-(4/5+2+1/3)+(4-5/7)))
ans =
137/210
a) 3/a+2/a+7/a
b) 1/(2a)+1/(3a)+1/(4a)+1/(5a)+1/(6a)
c) 1/(2a)+1/(3b+1/(4a)+1/(5b)+1/(6c)
a)
>> syms a
>> simplify(3/a+2/a+7/a)
ans =
12/a
>> 3/a+2/a+7/a
ans =
12/a
>> Ra=simple(3/a+2/a+7/a)
60 MATLAB A TRAVÉS DE EJEMPLOS
Ra =
12/a
b)
>> simplify(l/(2*a)+l/(3*a)+l/(4*a)+l/(5*a)+l/ (6*a))
ans =
29/ (20*a)
>> Rb=simple(1/(2*a)+1/(3*a)+1/(4*a)+1/(5*a)+1/(6*a))
Rb =
29/ (20*a)
c)
>> syms a b c
>> pretty(simplify(1/(2*a)+l/(3*b)+l/(4*a)+l/(5*b)+l/(6*c)))
3 8 1
--- + ---- + ----
4 a 15 b 6c
>> pretty(simple(1/(2*a)+l/(3*b)+l/(4*a)+l/(5*b)+1/(6*c)))
3 8 1
--- + ---- + ----
4a 15b 6c
a)
>> syms a b
>> pretty(simple((l-a^9)/(l-a^3)))
6 3
a + a + 1
b)
>> pretty(simple((3*a+2*a+7*a)/(a^3+a)))
12
------
2
a + 1
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 61
c)
2
a + 3 a + 3
-----------
3
(a + 1)
d)
>> pretty(simple((1+a/(a+b)+ a^2/(a+b)^2)))
2
2 a + b a
------- + 1
2
(a + b)
a) 3 √a a + 2 √a − 5√a + 7√a
b) √2 + 3√2 − √2/2
d) √3a √27a
e) √a ∛a
f) √(𝑎5 √𝑎)
a)
Utilizamos el comando simplify o el comando simple.
>> syms a b m
1/2
7 a
b)
>> pretty(simplify(sym(sqrt(2)+3*sqrt(2)-sqrt(2)/2)))
1/2
7 2
------
2
62 MATLAB A TRAVÉS DE EJEMPLOS
c)
>> syms a b m
>> pretty (simplify(4*a^(1/3)-3*b^(1/3)-5*a^(1/3)-2*b^(1/3)+m*a^(1/3)))
1 1
- --
3 1/3 3
a m - a -5b
d)
>> pretty(simplify(sqrt(3*a)*sqrt(27*a))) 9 a
e)
>> pretty (simplify (a^(l/2)*a^(l/3)))
5
-
6
a
f)
>> pretty (simplify (sqrt (a*(a^(l/5)))))
/ 6 \ l/2
| - |
| 5 |
\ a /
En estos casos de racionalización, el simple uso del comando simplify resuelve los
problemas. También se puede usar cl comando radsimp.
a)
>> simplify(sym( 2/sqrt(2)))
ans =
2^ (1/2)
b)
>> simplify(sym(3/sqrt(3)))
ans =
3^(1/2)
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 63
c)
>> syms a
>> simplify (sym(a/sqrt(a)))
ans =
a^(1/2)
a=
b=
>> c=sin(a)+b,d=cosh(a),e=log(b),f=c.*d,g=c./d,h=d.^2
c=
2.7183 5.4366 8.1548 10.8731 13.5914
d=
1.0e+006 *
e=
f=
1.0e+007 *
Su sexto elemento
Sus elementos situados entre el cuarto y el séptimo ambos inclusive
Sus elementos situados entre el segundo y el noveno ambos inclusive de tres en tres
Los elementos del apartado anterior, pero de mayor a menor
>>x=(1:10)
x=
1 2 3 4 5 6 7 8 9 10
> > x (6 )
ans =
>> x(4:7)
ans =
4 5 6 7
Hemos obtenido los elementos dcl vector x situados entre el cuarto y el séptimo, ambos inclusive.
>> x(2:3:9)
ans =
2 5 8
Hemos obtenido los elementos del vector x situados entre el segundo y el noveno, ambos inclusive,
pero separados de tres en tres unidades.
>> x(9:-3:2)
ans =
9 6 3
Hemos obtenido los elementos del vector x situados entre el noveno y el segundo, ambos inclusive,
pero separados de tres en tres unidades y empezando por el noveno.
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 65
Ejercicio 15. Dada la matriz 2x3cuyas filas son los seis primeros números impares consecutivos, se pide:
Si llamamos C a la matriz obtenida anteriormente, construir una matriz D extrayendo las columnas impares de la matriz
C, una matriz E formada por la intersección de las dos primeras filas de C y sus columnas tercera y quinta, y una matriz
F formada por la intersección de las dos primeras filas y las tres últimas columnas de la matriz C.
Construir la matriz diagonal G tal que los elementos de su diagonal principal son los mismos que los de la diagonal
principal de D.
Construimos la matriz H, formada por la intersección de la primera y tercera filas de C y sus segunda, tercera y quinta
columnas.
Consideramos en primer lugar la matriz 2x3 cuyas filas son los 6 primeros impares
consecutivos:
>> A=[1 3 5;7 9 11]
A =
1 3 5
7 9 1
1
Ahora vamos a anular el elemento (2,3), o sea, su último elemento:
>> A(2,3)=0
A =
1 3 5
7 9 0
A continuación, consideramos la matriz B transpuesta de A:
>> B=A'
B =
1 7
3 9
5 0
Ahora construimos una matriz C, formada por la matriz B y la matriz identidad de orden 3
adosada a su derecha:
>> C=[B eye(3)]
C =
66 MATLAB A TRAVÉS DE EJEMPLOS
1 7 1 0 0
3 9 0 1 0
5 0 0 0 1
Vamos a construir una matriz D extrayendo las columnas impares de la matriz C, una matriz
E formada por la intersección de las dos primeras filas de C y sus columnas tercera y quinta, y una
matriz F formada por la intersección de las dos primeras filas y las tres últimas columnas de la matriz
C:
>> D=C(:,1;2:5)
D =
1 1 0
3 0 0
5 0 1
E =
1 0
0 0
F =
1 0 0
0 1 0
Ahora construimos la matriz diagonal G tal que los elementos de su diagonal principal son
los mismos que los de la diagonal principal de D:
>> G=diag(diag(D))
G =
1 0 0
0 0 0
0 0 1
H =
7 1 0
0 0 1
CAPITULO 2: NUMEROS, VARIABLES, OPERADORES Y FUNCIONES 67
Ejercicio 16. Construir una matriz I formada por la matriz identidad de orden 5x4 y las matrices
nula y unidad del mismo orden adosadas a su derecha. A continuación, extraer la primera fila de
I y, por último, formar la matriz J con las filas impares y las columnas pares de Y y calculamos su
orden (tamaño).
Adicionalmente, construir una matriz aleatoria K de orden 3x4 e invertir primero el orden de sus
filas, después el orden de sus columnas y después el orden de sus filas y columnas a la vez. Por
último, hallar la matriz L de orden 4x3 cuyas columnas resultan de tomar los elementos de las
columnas de K consecutivamente.
>>
D=C(:,1:2:5)
D =
1 1 0
3 0 0
5 0 1
E=
1 0
0 0
F=
1 0 0
0 1 0
Ahora construimos la matriz diagonal G tal que los elementos de su diagonal principal son
los mismos que los de la diagonal principal de D:
>> G=diag(diag(D))
G=
1 0 0
0 0 0
0 0 1
A continuación, construimos la matriz H, formada por la intersección de la primera y tercera
filas de C y sus segunda, tercera y quinta columnas:
>> H=C ([1 3], [2 3 5])
H=
7 1 0
0 0 1
68 MATLAB A TRAVÉS DE EJEMPLOS
Ahora construimos una matriz I formada por la matriz identidad de orden 5x4 y las matrices
nula y unidad del mismo orden adosadas a su derecha. A continuación, extraemos la primera fila de I
y, por último, formamos la matriz J con las filas impares y las columnas pares de Y y calculamos su
orden (tamaño).
>> I = [eye(5,4) zeros(5,4) ones(5,4)]
ans =
1 0 0 0 0 0 0 0 1 1 1 1
0 1 0 0 0 0 0 0 1 1 1 1
0 0 1 0 0 0 0 0 1 1 1 1
0 0 0 1 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 1 1 1 1
> > I ( 1, : )
ans =
1 0 0 0 0 0 0 0 1 1 1
>>
J=I(1:2:5,2:2:12)
J = 0 0 0 0 1 1
0 0 0 0 1 1
0 0 0 0 1 1
>> size(J)
ans =
3 6
>>
K=rand(3,4)
K =
>> K(3:-1:1,:)
ans =
>> K(:,4:-1:1)
CAPITULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 69
>> K(3:-l;l,4:-1:1)
ans =
>>L=reshape(K,4,3)
L =
Ejercicio 17. Dada la matriz cuadrada de orden 3, cuyas filas son los 9 primeros números naturales, obtener su
inversa, su transpuesta y su diagonal. Trasformarla en u n a matriz triangular inferior y en otra superior y
rotarla 90 grados. Obtener la suma de los elementos de la primera fila y la suma de los elementos de la diagonal.
Extraer la submatriz cuya diagonal son los elementos a11 y a22 y extraer también la submatriz cuyos elementos
de la diagonal son a11 y a33.
>> M=[l,2,3;4,5,6;7,8,9]
M =
1 2 3
4 5 6
7 8 9
>> A=inv(M)
1.0e+016 *
1 4 7
2 5 8
3 6 9
>> V=diag(M)
V =
1
5
9
>> TI=tril(M)
TI =
1 0 0
4 5 0
7 8 9
>> TS=triu(M)
TS =
1 2 3
0 5 6
0 0 9
>> TR=rot90(M)
TR =
3 6 9
2 5 8
1 4 7
>> s=M(1,1)+M(1,2)+M(1,3)
s =
6
>>
sd=M(1,1)+M(2,2)+M(3,3)
sd =
15
>> SM=M(1:2,1:2)
SM =
1 2
4 5
Ejercicio 18. Dada la matriz cuadrada de orden 3, cuyas filas son los 9 primeros números naturales
(sin el cero), identificar sus valores menores que 5.
Si consideramos ahora el vector cuyos elementos son los 9 primeros números naturales (sin el
cero) y el vector con los mismos elementos de mayor a menor, identificar los valores resultantes
de restar a los elementos del segundo vector la cantidad 1 si el correspondiente elemento del primer
vector es mayor que 2, o la cantidad 0 si es menor o igual que 2.
ans =
1 1 1
1 1 0
0 0 0
Los elementos de la matriz X que son mayores o iguales que los de la matriz [1 2 3; 4 5 6;
7 8 9] se corresponden con un 1 en la matriz respuesta. El resto de tos elementos se corresponden
con un 0 (el resultado de la operación sería el mismo si comparamos el escalar 5 con la matriz [1 2
3; 4 5 6; 7 8 9], mediante la expresión >> X= 5 ; X> = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] ).
ans =
1 1 1
1 1 0
0 0 0
A =
1 2 3 4 5 6 7 8 9
B =
9 8 7 6 5 4 3 2 1
Y =
0 0 0 0 1 1 1 1 1
Z =
9 8 6 5 4 3 2 1 0
72 MATLAB A TRAVÉS DE EJEMPLOS
Los valores de Y iguales a 1 se corresponden con los elementos de A mayores que 4. Los
valores de Z resultan de restar a los correspondientes elementos de B la cantidad 1 si el
correspondiente elemento de A es mayor que 2, o la cantidad O si el correspondiente elemento de A
es menor o igual que 2.
Ejercicio 19. Si consideramos ahora el vector A cuyos elementos son los 9 primeros números
naturales (sin el cero), identificar sus valores mayores que 2 y menores que 6.
Si llamamos P al vector de la misma dimensión que A que asocia un 1 a los resultados identificados
en el apartado anterior y un cero al resto, identificar cuándo A o P, pero no ambos, valen 1.
>> A=1:9;P=(A>2)&(A<6)
P =
0 0 1 1 1 0 0 0 0
>> P=(A>=1)&(A<6),xor(A,P)
P =
1 1 1 1 1 0 0 0 0
ans =
0 0 0 0 0 1 1 1 1
Ejercicio 20. Hallar la matriz diferencia entre una matriz aleatoria cuadrada de orden 4 y una
matriz aleatoria normal de orden 4. Calcular la transpuesta y la inversa de la citada diferencia.
Comprobar que la inversa está correctamente calculada.
>> A=rand(4)-randn(4)
A =
Calculamos la inversa y la multiplicamos por la matriz inicial para comprobar que resulta la
matriz identidad.
>> B=inv(A)
B =
>> A*B
ans =
>> B*A
ans =
>> A'
ans =
Ejercicio 21. Dada la función f(x) = x3 calcular f(2) y f(b+2). Consideramos ahora la función de
dos variables f(a,b) = a+b y queremos calcular f(4,b),f(a,5) y (f(3,5).
>> f='x^3'
f =
x^3
>> A=subs(f,2)
A =
8
>> syms b
74 MATLAB A TRAVÉS DE EJEMPLOS
>> B=subs(f,b+2)
B=
(b+2)^3
>> syms a b
>> subs(a+b,a,4)
ans =
4+b
>> subs(a+b,{a,b},{3,5})
ans =
Ejercicio 22. En el ejemplo siguiente, dadas las funciones f(x)=x 2 +x, g(x)=x 3 +1 y
h(x)=Sen(x)+Cos(x), calcularemos (f+g)(x), (f -g+h)(x), (f/g)(x), f(g(x-1)), f(h(π/3)) y f(g(h(Sen(x)))).
>> syms x
>> f=x^2;g=x^3+1; h=sin(x)+cos(x);
>> suma=f+g
suma =
x^2+x^3+l
combinada =
>> compuesta=subs(compose(g,f),x-1)
compuesta =
(x-1)^6+1
>> compuesta1=subs(compose(f,h),pi/3)
compuesta1 =
1.8660
CAPÍTULO 2: NÚMEROS, VARIABLES, OPERADORES Y FUNCIONES 75
>> compuestal=subs(compose(f,h),'pi/3')
compuesta1 =
(sin((pi/3))+cos((pi/3)))^2
>> compuesta2=subs(compose(f,compose(g,h)),'sin(x)')
compuesta2 =
((sin(sin(x))+cos(sin(x)))^3+1)^2
Ejercicio 23. Hallar la función inversa de f(x) = Sen(x2) y comprobar que el resultado es correcto.
>> syms X
>> f=sin(x^2)
f =
sin(x^2)
>> g=finverse(f)
g =
asin(x)^(1/2)
>> compose(f,g)
ans
= x
ans =
sin (cos(tan(x^2)^(l/4)))
>> simple(compose(g,f))
ans =
tan(sin(cos(x^(1/2)))^2)^(1/2)
>> F=finverse(f)
76 MATLAB A TRAVÉS DE EJEMPLOS
F =
acos(asin(x))^2
>>G=finverse(g)
G =
atan(x^2)^(1/2)
Ejercicio 25. Dada la función h definida por: h(x,y)= (cos(x2-y2), sin(x2-y2)); calcular h(1,2),
h(-Pi,Pi) y h(cos(a2), cos(1-a2)).
>> syms x y a
h =
>> subs(h,{x,y},{1,2})
ans =
subs(h,{x,y},{-pi,pi}) ans
=
1 0
>> pretty (simple (subs (h,{x,y},{cos(a^2),cos(l-a^2)})))
+- 22 2 2 2 2 2 2 - +
| cos(- cos(1-a) + cos(a ) ), sin(-cos(1 - a) + cos(a ) ) |
+- -+
Ejercicio 26. Generar un vector que sea una matriz fila de 10 números aleatorios uniformes y generar otro
vector que sea la matriz de unos de orden 10. Guardar ambos vectores como variables en un archivo de
formato MATLAB y en otro archivo de formato ASCII. Por último, leer en MATLAB los dos archivos
guardados previamente.
P =
Columns 1 through 9
0.6797 0.6551 0.1626 0.1190 0.4984 0.9597 0.3404
0.5853 0.2238
Column 10
0.7513
CAPITULO 2: NUMEROS, VARIABLES, OPERADORES Y FUNCIONES 77
q =
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
Ahora guardamos los resultados anteriores como variables de un archivo en formato MATLAB
(extensión .mat) de nombre archivo1. También guardamos los resultados anteriores como variables
de un archivo en formato ASCII (extensión .txt) de nombre archivo2.txt.
Posteriormente, estos archivos podrían leerse e incorporar sus variables al espacio de trabajo
de la siguiente forma:
NUMEROS COMPLEJOS Y
FUNCIONES DE VARIABLE
COMPLEJA
NÚMEROS COMPLEJOS
MATLAB implementa de modo sencillo el trabajo con números complejos
en forma binómica representando la unidad imaginaria mediante los símbolos i o j.
Los números complejos pueden tener parte real simbólica o parte imaginaria
simbólica o ambas, realizándose las operaciones tanto en modo exacto como en
modo decimal con la precisión que se fije con el comando format. Por lo tanto,
también será posible trabajar con los números complejos en formato racional exacto
a través del comando format rat.
Figura 2-4
Función Inversa
sin(z) Seno asin(z) Arco seno
ans = ans =
0 + 1.3130i ans =
0.0277 + 0.1635i
Función Inversa
sinh(z) Seno hiperbólico asinh(z) Arco seno hiperbólico
>> asinh(0.6350 + 1.2985i)
>> sinh(1+i) ans =
ans = 1.0000 + 1.0000i
0.6350 + 1.2985i
cosh(z) Coseno hiperbólico acosh(z) Arco coseno hiperbólico
>> cosh(1-i) >> acosh(0.8337 - 0.9889i)
82 MATLAB A TRAVÉS DE EJEMPLOS
ans = ans =
Función Significado
exp(z) Función exponencial en base e (e^x)
>> exp(1-i)
ans =
1.4687 - 2.2874i
ans =
2.1505 + 0.3411i
>> sqrt{l+i)
ans =
1.0987 + 0.4551i
Función Significado
abs(Z) Módulo del complejo Z
>> abs(12.425-8.263i)
ans =
14.9217
>> angle(12.425-8.263i)
ans =
-0.5869
>> conj(12.425-8.263i)
ans =
12.4250 + 8.2630i
>> real(12.425-8.263i)
ans =
12.4250
imag(Z) Parte imaginaria del complejo Z
>> imag(12.425-8.263i)
ans =
-8 .2630
floor(Z) Aplica la función floor a real(Z) y a imag(Z)
>> floor(12.425-8.263i)
ans =
12.0000 - 9.0000i
ans =
15.1888
sort(V) Ordena deforma ascendente las componentes de V. Para complejos
hace la ordenación según los valores absolutos
ans =
Columns 1 through 2
Columns 3 through 4
ans =
-23 0 1 12 16
sum(V) Suma las componentes de V
>> sum([1-i 1+1 3-5i 6i])
ans =
5.0000 + 1.00001
ans =
prod(V)
Multiplica los elementos de V, con lo que n! =prod(1:n)
>> prod([1-i 1+i 3-5i 6i])
ans =
60.0000 +36.0000i
>> prod([l, 0, -23, 12, 16])
ans =
0
cumsum(V) Da el vector de sumas acumuladas de V
ans =
Columns 1 through 2
Columns 3 through 4
ans =
1 1 -22 -10 6
cumprod(V) Da el vector de productos acumulados de V
1 0 0 0 0
Vt-1)
>> diff([1-i 1+i 3-51 6i])
ans =
0 + 2.0000i 2.0000 - 6.0000i -3.0000 +11.0000i
>> diff([1, 0, -23, 12, 16])
ans =
-1 -23 35 4
ans =
-1.0000 -12.0000 6.0000 19.5000 4.0000
88 MATLAB A TRAVÉS DE EJEMPLOS
-3.0000 +10.5000i
>> del2([1, 0, -23, 12, 16])
ans =
-25.5000 -5.5000 14.5000 -7.7500 -30.0000
ans =
Columns 1 through 3
Column 4
3.0 + 5.00001
ans =
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 89
Columns 1 through 3
6.0000 14.8435 +35.7894i -15.3435 -23.8824i
Columns 4 through 5
-15.3435 +23.8824i 14.8435 -35.7894i
Columns 1 through 3
1.2500 + 0.2500i 0.7500 + 1.2500i 0.7500 - 3.2500i
Column 4
-1.7500 + 0.7500i
>> ifft([1, 0, -23, 12, 16])
ans =
Columns 1 through 3
1.2000 2.9687 - 7.1579i -3.0687 + 4.7765i
Columns 4 through 5
Columns 1 through 3
1.2500 + 0.2500i 0.7500 + 1.2500i 0.7500 - 3.2500i
Column 4
-1.7500 + 0.7500i
>> ifft2([1, 0, -23, 12, 16])
ans =
Columns 1 through 3
1.2000 2.9687 - 7.1579i -3.0687 + 4.7765i
Columns 4 through 5
Z =
1.0000 – 1.0000i 0 + 3.0000i 5.0000
-1.0000 + 1.0000i 0 0 + 2.0000i
6.0000 - 5.0000i 0 + 8.0000i -7.0000
>> Z=[1-i 3i 5-12i;-1+i 0 2i;6-5i 8i -7+6i]
Z =
1.0000 - 1.0000i 0 + 3.0000i 5.0000 -12.0000i
-1.0000 + 1.0000i 0 0 + 2.0000i
6.0000 - 5.0000i 0 + 8.0000i -7.0000 + 6.0000i
ans =
Z1 =
1 3 5
-1 0 2
6 8 -7
>> max(Z1)
ans =
6 8 5
>> min(Z)
ans =
>> min(Z1)
ans =
-1 0 -7
>> mean(Z)
ans =
2.0000 - 1.6667i 0 + 3.6667i -0.6567 - 1.3333i
>> mean(Z1)
ans =
2.0000 3.6667 0
>> median(Z)
ans =
-1.0000 + 1.0000i 0 + 3.0000i -7.0000 + 6.0000i
>> median(Zl)
ans =
1 3 2
>> sum(Z)
ans =
6.0000 - 5.0000i 0 +11.0000i -2.0000 - 4.0000i
>> sum(Z1)
ans =
6 11 0
> prod{Z)
ans =
1.0e+002 *
0.1000 + 0.1200i 0 -2.2800 + 0.7400i
>> prod(Z1)
ans =
-6 0 -70
>> cumsum(Z)
ans =
1.0000 – 1.0000i 0 + 3.0000i 5.0000 -12.0000i
0 0 + 3.0000i 5.0000 -10.0000i
6.0000 - 5.0000i 0 +11.0000i -2.0000 -4.0000i
>> cumsum(Z1)
ans =
1 3 5
0 3 7
cumprod(V) 6 la matriz
Da 11 de0 productos acumulados de las columnas de Z
>> cumprod(Z)
ans =
1.0e+002 *
0.0100 - 0.0100i 0 + 0.0300i 0.0500 - 0.1200i
0 + 0.0200i 0 0.2400 + 0.1000i
0.1000 + 0.1200i 0 -2.2800 + 0.7400i
>> cumprod(Zl)
ans =
1 3 5
-1 0 10
-6 0 -70
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 93
>> diff(Zl)
ans =
-2 -3 -3
7 8 -9
gradient(Z) Aproxima la matriz de gradientes de las columnas de Z
>> gradient(Z)
ans =
-1.0000 + 4.0000i 2.0000 - 5.5000i 5.0000 -15.0000i
1.0000 - 1.0000i 0.5000 + 0.5000i 0 +2.0000i
-6.0000 +13.0000i -6.5000 + 5.5000i -7.0000 -2.0000i
>> gradlent(Z1)
ans =
2.0000 2.0000 2.0000
1.0000 1.5000 2.0000
2.0000 -6.5000 -15.0000
del2(V) Aproxima la matriz de laplacianos de las columnas de Z
>> del2(Z)
ans =
3.7500 - 6.7500i 1.5000 - 2.0000i 1.0000 - 7.2500i
2.0000 – 1.2500i -0.2500 + 3.5000i -0.7500 – 1.7500i
2.0000 - 5.7500i -0.2500 - 1.0000i -0.7500 - 6.2500i
>> del2 (Z1)
ans =
2.2500 2.7500 -1.5000
2.5000 3.0000 -1.2500
-2.0000 -1.5000 -5.7500
fft(Z) Matriz con las transformadas discreta de Fourier de las columnas de Z
>> fft(Z)
ans =
6.0000 - 5.0000i 0 + 11.0000i -2.0000 - 4.0000i
3.6962 + 7.0622i -6.9282 - 1.0000i 5.0359 -22.0622i
-6.6962 - 5.0622i 6.9282 - 1.0000i 11.9641 - 9.9378i
>> fft(Z1)
94 MATLAB A TRAVÉS DE EJEMPLOS
ans =
6.0000 11.0000 0
-1.5000 + 6.0622i -1.0000 + 6.9282i 7.5000 - 7.7942i
-1.5000 - 6.0622i -1.0000 - 6.9282i 7.5000 + 7.7942i
>> ifft2(Zl)
ans =
1.8889 0.0556 + 1.0585i 0.0556 - 1.0585i
0.5556 - 0.5774i 0.8889 - 1.5396i -1.9444 + 0.0962i
0.5556 + 0.5774i -1.9444 - 0.0962i 0.8889 + 1.5396i
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 95
Z =
>> Z1=[1,1,2;3,2,-1;1,2,3]
Z1 =
1 1 2
3 2 -1
1 2 3
>> sin(Z)
ans =
1.0e+002 *
0.0130 - 0.0063i 0.0130 + 0.0063i 0 + 0.0363i
0.2847 + 1.9969i 0.2483 - 0.1136i 0 - 0.0118i
0 + 0.0118i 0 + 0.0363i 0 + 0.1002i
>> sin(Z1)
ans =
>> cos(Z)
ans =
1.0e+002 *
0.0083 + 0.0099i 0.0083 - 0.0099i 0.0376
-1.9970 + 0.2847i -0.1136 - 0.2481i 0.0154
0.0154 0.0376 0.1007
>> cos(Zl)
ans =
ans =
0.2718 - 1.0839i 0.2718 + 1.0839i 0 + 0.9640i
-0.0000 - 1.0000i -0.0005 + 1.0004i 0 - 0.7616i
0 + 0.7616i 0 + 0.9640i 0 + 0.9951i
>> tan(Zl)
ans =
>> csc(Z)
ans =
0.6215 + 0.3039i 0.6215 - 0.3039i 0 - 0.2757i
0.0007 - 0.0049i 0.0333 + 0.0152i 0 + 0.8509i
0 - 0.8509i 0 - 0.2757i 0 - 0.0998i
>> csc(Z1)
ans =
>> sec(Z)
ans =
0.4983 - 0.5911i 0.4983 + 0.5911i 0.2658
-0.0049 - 0.0007i -0.0153 + 0.0333i 0.6481
0.6481 0.2658 0.0993
CAPITULO 3: NUMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 97
>> sec(Zl)
ans =
1.8508 1.8508 -2.4030
-1.0101 -2.4030 1.8508
1.8508 -2.4030 -1.0101
>> cot(Z)
ans =
0.2176 + 0.8680i 0.2176 – 0.8680i 0 – 1.0373i
-0.0000 + 1.0000i -0.0005 – 0.9996i 0 + 1.3130i
0 – 1.3130i 0 – 1.0373i 0 – 1.0050i
>> cot(Z1)
ans =
0.6421 0.6421 -0.4577
-7.0153 -0.4577 -0.6421
0.6421 -0.4577 -7.0153
ans =
0.6662 – 1.0613i 0.6662 + 1.0613i 0 + 1.4436i
0.4592 – 2.5998i 0.4539 + 2.1986i 0 – 0.8814i
0 + 0.8814i 0 + 1.4436i 0 + 1.8184i
>> asin(Zl)
ans =
>> acos(Z)
ans =
0.9046 + 1.0613i 0.9046 - 1.0613i 1.5708 - 1.4436i
1.1115 + 2.5998i 1.1169 - 2.1986i 1.5708 + 0.8814i
1.5708 - 0.8814i 1.5708 - 1.4436i 1.5708 - 1.8184i
ans =
0 0 0 + 1.31701
0 + 1.7627i 0 + 1.3170i 3.1416
0 0 + 1.3170i 0 + 1.7627i
98 MATLAB A TRAVÉS DE EJEMPLOS
ans =
1.0172 - 0.4024i 1.0172 + 0.4024i -1.5708 + 0.5493i
1.5030 - 0.1335i 1.4670 + 0.2006i 0 - Infi
0 + Infi -1.5708 + 0.5493i -1.5708 + 0.3466i
>> atan(Zl)
ans =
0.7854 0.7854 1.1071
1.2490 1.1071 -0.7854
0.7854 1.1071 1.2490
acsc(z) Función arco cosecante
>> acsc(Z)
ans =
0.4523 + 0.5306i 0.4523 - 0.5306i 0 - 0.4812i
0.0661 + 0.1332i 0.0982 - 0.1996i 0 + 0.8814i
0 - 0.8814i 0 - 0.4812i 0 - 0.3275i
>> acsc(Zl)
ans =
1.5708 1.5708 0.5236
0.3398 0.5236 -1.5708
1.5708 0.5236 0.3398
asec(z) Función arco secante
>> asec(Z)
ans =
1.1185 - 0.5306i 1.1185 + 0.5306i 1.5708 + 0.4812i
1.5047 - 0.1332i 1.4726 + 0.1996i 1.5708 - 0.8814i
1.5708 + 0.8814i 1.5708 + 0.4812i 1.5708 + 0.3275i
>> asec(Zl)
ans =
0 0 1.0472
1.2310 1.0472 3.1416
0 1.0472 1.2310
acot(z) Función arco cotangente
>> acot(Z)
Warning: Singularity in ATAN. This warning will be removed in
CAPITULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 99
a future release.
Consider using DBSTOP IF NANINF when debugging.
> In acot at 13
ans =
ans =
>> sinh(Z)
ans =
0.6350 - 1.2985i 0.6350 + 1.2985i 0 + 0.9093i
9.6189 + 2.8131i -2.3707 - 2.8472i 0 - 0.8415i
0 + 0.8415i 0 + 0.9093i 0 + 0.1411i
>> sinh(Zl)
ans =
>> cosh(Z)
ans =
0.8337 – 0.9889i 0.8337 + 0.9889i -0.4161
9.6667 + 2.7991i -2.459i – 2.7448i 0.5403
0.5403 -0.416i -0.9900
>> cosh(Zl)
ans =
ans =
1.0839 - 0.2718i 1.0839 + 0.2718i 0 - 2.1850i
0.9958 + 0.0026i 1.0047 + 0.0364i 0 - 1.5574i
0 + 1.5574i 0 - 2.1850i 0 - 0.1425i
>> tanh(Zl)
ans =
>> csch(Z)
ans =
0.3039 + 0.62151 0.3039 - 0.6215i 0 - 1.0998i
0.0958 - 0.02801 -0.1727 + 0.2074i 0 + 1.1884i
0 - 1.18841 0 - 1.0998i 0 - 7.0862i
>> csch(Zl)
ans =
>> sech(Z)
ans =
0.4983 + 0.5911i 0.4983 - 0.5911i -2.4030
0.0954 - 0.0276i -0.1811 + 0.2021i 1.8508
1.8508 -2.4030 -1.0101
>> sech(Zl)
ans =
ans =
0.8680 + 0.2176i 0.8680 - 0.2176i 0 + 0.4577i
1.0042 - 0.0027i 0.9940 - 0.0360i 0 + 0.6421i
0 - 0.6421i 0 + 0.4577i 0 + 7.0153i
CAPITULO 3: NUMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 101
>> coth(Zl)
ans =
>> aslnh(Z)
ans =
1.0613 - 0.6662i 1.0613 + 0.6662i 1.3170 + 1.5708i
2.5932 - 1.1027i 1.1836 + 1.0969i 0 - 1.5708i
0 + 1.5708i 1.3170 + 1.5708i 1.7627 + 1.5708i
>> aslnh(Zl)
ans =
>> acosh(Z)
ans =
1.0613 - 0.9046i 1.0613 + 0.9046i 1.4436 + 1.5708i
2.5998 - 1.1115i 2.1986 + 1.1169i 0.8814 - 1.5708i
0.8814 + 1.5708i 1.4436 + 1.5708i 1.8184 + 1.5708i
>> acosh(Zl)
ans =
0 0 1.3170
1.7627 1.3170 0 + 3.14161
0 1.3170 1.7627
atanh(z) Función arco tangente hiperbólica
>> atanh(Z)
ans =
0.4024 - 1.0172i 0.4024 + 1.0172i 0 + 1.1071i
0.0656 - 1.4377i 0.0964 + 1.3715i 0 - 0.7854i
0 + 0.7854i 0 + 1.1071i 0 + 1.2490i
>> atanh(Zl)
ans =
Inf Inf 0.5493 + 1.5708i
0.3466 + 1.5708i 0.5493 + 1.5708i -Inf
Inf 0.5493 + 1.5708i 0.3466 + 1.5708i
102 MATLAB A TRAVÉS DE EJEMPLOS
>> acsch(Z)
ans =
0.5306 + 0.4523i 0.5306 - 0.4523i 0 - 0.5236i
0.0672 + 0.1334i 0.1019 - 0.2003i 0 + 1.5708i
0 - 1.5708i 0 - 0.5236i 0 - 0.3398i
>> acsch(Zl)
ans =
>> asech(Z)
ans =
0.5306 + 1.1185i 0.5306 - 1.1185i 0.4812 - 1.5708i
0.1332 + 1.5047i 0.1996 - 1.4726i 0.8814 + 1.5708i
0.8814 - 1.5708i 0.4812 - 1.5708i 0.3275 - 1.5708i
>> asech(Zl)
ans =
0 0 0 + 1.04721
0 + 1.23101 0 + 1.04721 0 + 3.14161
0 0 + 1.04721 0 + 1.23101
acoth(z) Función arco cotangente hiperbólica
>> acoth(Z)
ans =
0.4024 + 0.5536i 0.4024 - 0.5536i 0 - 0.4636i
0.0656 + 0.1331i 0.0964 - 0.1993i 0 + 0.7854i
0 - 0.7854i 0 - 0.4636i 0 - 0.3218i
>> acoth(Zl)
ans =
Función Significado
exp(z)
Función exponencial en base e (e^x)
>> exp(Z)
ans =
1.4687 - 2.2874i 1.4687 + 2.2874i -0.4161 + 0.9093i
19.2855 + 5.6122i -4.8298 - 5.5921i 0.5403 - 0.8415i
0.5403 + 0.8415i -0.4161 + 0.9093i -0.9900 + 0.1411i
>> exp(Zl)
ans =
ans =
0.3466 - 0.7854i 0.3466 + 0.7854i 0.6931 + 1.5708i
1.9033 - 1.1071i 1.4979 + 1.1071i 0 - 1.5708i
0 + 1.5708i 0.6931 + 1.5708i 1.0986 + 1.5708i
>> log(Zl)
ans =
0 0 0.6931
1.0986 0.6931 0 + 3.1416i
0 0.6931 1.0986
ans =
0.1505 - 0.3411i 0.1505 + 0.3411i 0.3010 + 0.6822i
0.8266 - 0.4808i 0.6505 + 0.4808i 0 - 0.6822i
0 + 0.6822i 0.3010 + 0.6822i 0.4771 + 0.6822i
>> log10 (Zl)
ans =
0 0 0.3010
0.4771 0.3010 0 + 1.3644i
0 0.3010 0.4771
>> pow2(Z)
ans =
>> sqrt(Z)
ans =
1.0987 – 0.4551i 1.0987 + 0.4551i 1.0000 + 1.0000i
2.2032 – 1.3617i 1.7989 + 1.1118i 0.7071 – 0.7071i
0.7071 + 0.7071i 1.0000 + l.0000i 1.2247 + 1.2247i
>> sqrt(Zl)
ans =
1.0000 1.0000 1.4142
1.7321 1.4142 0 + 1.0000i
1.0000 1.4142 1.7321
Función Significado
abs(Z)
Módulo del complejo Z
>> abs (Z)
ans =
1.4142 1.4142 2.0000
6.7082 4.4721 1.0000
1.0000 2.0000 3.0000
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 105
>> abs(Zl)
ans =
1 1 2
3 2 1
1 2 3
>> angle(Z)
ans =
-0.7854 0.7854 1.5708
-1.1071 1.1071 -1.5708
1.5708 1.5708 1.5708
ans =
0 0 0
0 0 3.1416
0 0 0
conj(Z) Conjugado del complejo Z
>> conj(Z)
ans =
>> conj(Zl)
ans =
1 1 2
3 2 -1
1 2 3
real(Z)
Parte real del complejo Z
>> real(Z)
ans =
1 1 0
3 2 0
0 0 0
>> real(Zl)
ans =
1 1 2
3 2 -1
1 2 3
imag(Z) Parte imaginaria del complejo Z
>> imag(Z)
104 MATLAB A TRAVÉS DE EJEMPLOS
ans =
0 0 1.0000
pow2(x) 1.5850
Función potencia1.0000
de base 2 de x 0 + 4.5324i
0 1.0000 1.5850
>> pow2(Z)
ans =
1.5385 - 1.2779i 1.5385 + 1.2779i 0.1835 + 0.9830i
-4.2054 + 6.8055i -3.7307 + 1.4427i 0.7692 – 0.6390i
0.7692 + 0.6390i 0.1835 + 0.9830i -0.4870 + 0.8734i
>> pow2(Z1)
ans =
>> sqrt(Z)
ans =
1.0987 – 0.4551i 1.0987 + 0.4551i 1.0000 + 1.0000i
2.2032 – 1.3617i 1.7989 + 1.1118i 0.7071 – 0.7071i
0.7071 + 0.7071i 1.0000 + 1.0000i 1.2247 + 1.2247i
>> sqrt(Zl)
ans =
Función Significado
abs(Z) Módulo del complejo Z
ans =
1.4142 1.4142 2.0000
6.7082 4.4721 1.0000
1.0000 2.0000 3.0000
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 105
ans =
1 1 2
3 2 1
1 2 3
ans =
-0.7854 0.7854 1.5708
-1.1071 1.1071 -1.5708
1.5708 1.5708 1.5708
>> angle(Z1)
ans =
0 0 0
0 0 3.1416
0 0 0
conj(Z) Conjugado del complejo Z
>> conj(Z)
ans =
>> conj(Z1)
ans =
1 1 2
3 2 -1
1 2 3
real(Z) Parte real del complejo Z
>> real(Z)
ans =
1 1 0
3 2 0
0 0 0
>> real(Z1)
ans =
1 1 2
3 2 -1
1 2 3
imag(Z) Parte imaginaria del complejo Z
>> Imag(Z)
106 MATLAB A TRAVÉS DE EJEMPLOS
ans =
-1 1 2
-6 4 -1
1 2 3
>> Imag(Zl)
ans =
0 0 0
0 0 0
0 0 0
ans =
ans =
12 12 24
37 24 -13
12 24 37
>> ceil(12.357*Z)
ans =
ans =
13 13 25
38 25 -12
13 25 38
round(Z)
Aplica la función round a real(Z) y a imag(Z)
>> round(12.357*Z)
ans =
12.0000 - 12.0000i 12.0000 + 12.0000i 0 + 25.0000i
37.0000 - 74.0000i 25.0000 + 49.0000i 0 - 12.0000i
0 + 12.0000i 0 + 25.0000i 0 + 37.0000i
>> round(12.357*Zl)
ans =
CAPITULO 3: NUMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 107
12 12 25
37 25 -12
12 25 37
fix(Z) Aplica la función fix a real(Z) y a imag(Z)
>> fix(12.357*Z)
ans =
ans =
12 12 24
37 24 -12
12 24 37
A+B
Suma de variables matriciales
>> A=[1+i, 1-i, 2i; -i,-3i,6-5i;2+3i, 2-3i, i]
A =
1.0000 + 1.0000i 1.0000 - 1.0000i 0 + 2.0000i
0 - 1.0000i 0 - 3.0000i 6.0000 - 5.0000i
2.0000 + 3.0000i 2.0000 - 3.0000i 0 + 1.0000i
B =
A1 =
1 6 2
3 5 0
2 4 -1
108 MATLAB A TRAVÉS DE EJEMPLOS
B1 =
-3 -6 1
-3 -5 2
12 14 -10
>> A+B
ans =
>> A1+B1
ans =
-2 0 3
0 0 2
14 18 -11
>> A-B
ans =
1.0000 1.0000 0
-1.0000 -7.0000 4.0000
-6.0000 + 9.0000i -3.0000 - 2.0000i -1.0000
>> A1-B1
ans =
4 12 1
6 10 -2
-10 -10 9
A*B Producto de variables matriciales
>> A*B
ans =
>> A1*B1
ans =
3 -8 -7
-24 -43 13
-30 -46 20
A^n Potencia enésima de la variable matricial A
>> A^3
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 109
ans =
1.0e+002 *
>> A1^3
ans =
155 358 46
159 347 30
106 232 19
ans =
Columns 1 through 2
Columns 3 through 4
ans =
1 0 0 0 0
P^A Escalar p elevado a la variable matricial A
>> 3^A
ans =
0.0159 – 1.2801i -0.5297 + 2.8779i -1.9855 + 3.0796i
-10.3372 + 0.4829i 17.0229 +12.9445i 14.7327 +20.1633i
-5.0438 + 0.2388i 7.0696 + 6.9611i 5.7189 + 9.5696i
>> 3*A1
ans =
1.0e+003 *
2.2230 4.9342 0.4889
2.1519 4.7769 0.4728
1.4346 3.1844 0.3156
A’ Variable matricial transpuesta de la variable A
>> A’
ans =
ans =
110 MATLAB A TRAVÉS DE EJEMPLOS
1 3 2
6 5 4
2 0 -1
Variable matricial inversa de la variable matricial A
>> A^-1
ans =
>> A1^-1
ans =
>> A*A^-1
ans =
1.0000 0.0000 - 0.0000i -0.0000 + 0.0000i
-0.0000 - 0.0000i 1.0000 + 0.0000i 0.0000
0.0000 + 0.0000i 0.0000 1.0000 + 0.0000i
>> A1*A1^-1
ans =
1.0000 -0.0000 0
-0.0000 1.0000 0
A\B -0.0000 -0.0000 -11.0000
Si A es cuadrada A\B=(A )*B y si A no es cuadrada A\B es la
solución en el sentido de mínimos cuadrados del sistema AX=B
>> A\B
ans =
-0.9000 -15.3000i 6.8000 + 1.1000i 1.0500 - 3.6500i
-10.6000 - 5.2000i 5.2000 - 4.1000i -2.5500 - 2.3500i
5.9000 - 0.7000i 0.2000 + 3.4000i 2.2000 - 0.1000i
>> A1\B1
ans =
-8.6471 -10.5882 7.2353
4.5882 5.3529 -3.9412
-10.9412 -13.7647 8.7059
>> B/A
ans =
3.0000 - 5.0000i -0.5000 - 1.0000i -0.5000 + 2.0000i
5.0000 + 27.0000i 5.6000 + 2.7000i -3.2000 - 8.9000i
-2.5000 + 43.5000i 6.3000 + 6.6000i -2.1000 -17.2000i
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 111
>> A'\B'
ans =
3.0000 + 5.0000i 5.0000 -27.0000i -2.5000 -43.5000i
-0.5000 + 1.0000i 5.6000 - 2.7000i 6.3000 - 6.6000i
-0.5000 - 2.0000i -3.2000 + 8.9000i -2.1000 +17.2000i
>> B1/Al
ans =
>> A1'\B1'
ans =
Ejercicio 1. Dados los números complejos z 1=1-i y z2= 5i, calcular: z 13, z12/z24,
z11/2,z33/2, ln(z 1+z 2) ,sen(z1-z2) y tanh(z 1/z2).
>> Z1=1-i
Z1 =
1.0000 - 1.0000i
>> Z2=5i
Z2 =
0 + 5.0000i
>> Z1^3
ans =
-2.0000 - 2.0000i
>> Z1^2/Z2^4
ans =
0 - 0.0032i
>> sqrt(Zl)
ans =
1.0987 - 0.4551i
>> sqrt(Z2^3)
112 MATLAB A TRAVÉS DE EJEMPLOS
ans =
7.9057 - 7.9057i
>> log(Z1+Z2)
ans =
1.4166 + 1.3258i
>> sin(Zl-Z2)
ans =
1.6974e+002 -1.0899e+002i
>> tanh(Z1/Z2)
ans =
-0.2052 - 0.1945i
𝑖 8 −𝑖 −8
+1,i Sen(1+i) , (2 + Ln(i)) 1/i , (l + i) i , iLn (1+i) , (l +√3i) 1-i
3−4𝑖
>> (i[^8-i^(-8))/(3-4*i) + 1
ans =
>> i^(sin(1+i))
ans =
-0.16665202215166 + 0.32904139450307i
>> (2+log(i))-(1/i)
ans =
1.15809185259777 - 1.56388053989023i
>> (1 + 1)^i
ans =
0.42882900629437 + 0.15487175246425i
>> i^(log(1+i))
ans =
0.24911518828716 + 0.15081974484717i
>> (1+sqrt(3)*i)^(1-i)
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 113
ans =
5.34581479196611 + 1.97594883452873i
Ejercicio 3. Hallar parte real, parte imaginaria, módulo y argumento de los siguientes
complejos:
ans =
0 1.9759 -1.0000 0
ans =
ans=
0 0.3541 -1.5708 0
Obtener eM y Ln(M).
>> C=M^2
C =
-30 -36 -42
-66 -81 -96
-102 -126 -150
>> D=M^(1/2)
D =
0.8570 - 0.2210i 0.5370 + 0.2445i 0.2169 + 0.7101i
0.7797 + 0.6607i 0.9011 + 0.8688i 1.0224 + 1.0769i
0.7024 + 1.5424i 1.2651 + 1.4930i 1.8279 + 1.4437i
>> 2^M
ans =
0.7020 - 0.6146i -0.1693 - 0.2723i -0.0407 + 0.0699i
-0.2320 - 0.3055i 0.7366 - 0.3220i -0.2947 - 0.3386i
-0.1661 + 0.0036i -0.3574 - 0.3717i 0.4513 - 0.7471i
>> (-2)^M
ans =
17.3946 - 16.8443i 4.3404 - 4.5696i -7.7139 + 7.7050i
1.5685 - 1.8595i 1.1826 - 0.5045i -1.2033 + 0.8506i
-13.2575 + 13.1252i -3.9751 + 3.5607i 6.3073 - 6.0038i
>> log(M)
ans =
0 + 1.5708i 0.6931 + 1.5708i 1.0986 + 1.5708i
1.3863 + 1.5708i 1.6094 + 1.5708i 1.7918 + 1.5708i
1.9459 + 1.5708i 2.0794 + 1.5708i 2.1972 + 1.5708i
>> exp(M)
ans =
0.5403 + 0.8415i -0.4161 + 0.9093i -0.9900 + 0.1411i
-0.6536 - 0.7568i 0.2837 - 0.9589i 0.9602 - 0.2794i
0.7539 + 0.6570i -0.1455 + 0.9894i -0.9111 + 0.4121i
>> logm(M)
ans =
-5.4033 - 0.8472i 11.9931 - 0.3109i -5.3770 + 0.8846i
12.3029 + 0.0537i -22.3087 + 0.8953i 12.6127 + 0.4183i
-4.7574 + 1.6138i 12.9225 + 0.7828i -4.1641 + 0.6112i
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 115
>> expm(M)
ans =
Ejercicio 5. Consideramos el vector V suma del vector complejo Z= (i,-i, i) y el vector real
R=(0,1,1). Hallar la media, mediana, desviación típica, varianza, suma, producto,
máximo y mínimo de los elementos de V, así como su gradiente, la transformada
discreta de Fourier y su inversa.
>> Z=[i,-i,i]
>> R=[0,1,1]
R=
0 1 1
>> V=Z+R
V =
ans =
0.6667 - 0.3333i
1.0000 + 1.0000i
1.2910
1.6667
2.0000 - 1.0000i
0 - 2.0000i
1.0000 + 1.0000i
0 - 1.0000i
>> gradient(V)
ans =
>> fft(V)
ans =
>> ifft(V)
116 MATLAB A TRAVÉS DE EJEMPLOS
ans =
1 0 0 0 1 0 0 1 2 −𝑖 𝑖 −𝑖
A l = [0 1 0] A 2 = [0 0 1] B 1 = [ 0 −1 3] B2 =[ 0 0 𝑖 ]
0 0 1 0 0 0 0 0 0 0 0 𝑖
1 −1 0 0 2 1
C 1 = [−1 𝑠𝑞𝑟𝑡(2)𝑖 𝑠𝑞𝑟𝑡(2)𝑖 ] C 2 = [1 0 0]
0 0 −1 1 −1 0
Calcular inicialmente A1+A2, B1-B2 y C1+C2.
Posteriormente calcular AB - BA, A2 + B2 + C2, ABC, sqrt(A)+ sqrt(B) - sqrt(C), eA (eB+ eC), sus
inversas y sus transpuestas.
>> A1=eye(3)
A1 =
1 0 0
0 1 0
0 0 1
>> A= A1+A2
A =
1 1 0
0 1 1
0 0 1
B1 =
0 1 2
0 1 3
0 0 0
>> B=B1-B2
1.0000 -1.0000 0
-1.0000 0 + 1.4142i 0 - 1.4142i
0 0 -1.0000
>> C=C1+C2
C =
1.0000 1.0000 1.0000
0 0 + 1.4142i 0 - 1.41421
1.0000 -1.0000 -1.0000
>> M1=A*B-B*A
M1 =
0 -1.0000 - 1.0000i 2.0000
0 0 1.0000 - 1.0000i
0 0 0
>> M2=A^2+B^2+C^2
M2 =
118 MATLAB ATRAVÉS DE EJEMPLOS
>> M3=A*B*C
M3 =
5.0000 + 1.0000i -3.5858 + 1.0000i -6.4142 + 1.0000i
3.0000 - 2.0000i -3.0000 + 0.5858i -3.0000 + 3.4142i
0 - 1.0000i 0 + 1.0000i 0 + 1.0000i
>> M4=sqrtm(A)+sqrtm(B)-sqrtm(C)
M4 =
0.6356 + 0.8361i -0.3250 - 0.8204i 3.0734 + 1.2896i
0.1582 - 0.1521i 0.0896 + 0.5702i 3.3029 - 1.8025i
-0.3740 - 0.2654i 0.7472 + 0.3370i 1.2255 + 0.1048i
>> M5=expm(A)*(expm(B)+expm(C))
M5 =
14.1906 - 0.0822i 5.4400 + 4.2724i 17.9169 - 9.5842i
4.5854 - 1.4972i 0.6830 + 2.1575i 8.5597 - 7.6573i
3.5528 + 0.3560i 0.1008 - 0.7488i 3.2433 - 1.8406i
>> inv(A)
ans =
1 -1 1
0 1 -1
0 0 1
>> inv(B)
ans =
0 - 1.0000i -1.0000 - 1.0000i -4.0000 + 3.0000i
0 -1.0000 1.0000 + 3.0000i
0 0 0 + 1.0000i
>> inv(C)
ans =
0.5000 0 0.5000
0.2500 0 - 0.3536i -0.2500
0.2500 0 + 0.3536i -0.2500
1 0 0 1 0 0 1 0 0
0 1 0 0 1 0 0 1 0
0 0 1 0 0 1 0 0 1
>> A'
ans =
0 0 0
0 1 0
0 1 1
>> B’
ans =
0 – 1.0000i 0 0
1.0000 + 1.0000i -1.0000 0
2.0000 - 1.0000i 3.0000 + 1.0000i 0 + 1.0000i
>> C’
ans =
1.0000 0 1.0000
1.0000 0 – 1.4142i -1.0000
1.0000 0 + 1.4142i -1.0000
1 0 0
1+𝑖 2+𝑖
A= [0 1 0] B= [ ]
3+𝑖 4+𝑖
0 0 1
Aplicar las funciones seno, exponencial de base, logaritmo, raíz cuadrada, módulo, argumento y
funciones de redondeo a sus elementos.
Calcular eB y Ln(A).
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
0 2 3
4 5 6
7 8 9
>> sin(A)
ans =
120 MATLAB A TRAVÉS DE EJEMPLOS
B =
>> sin(B)
ans =
1.2985 + 0.6350i 1.4031 - 0.4891i
0.2178 - 1.1634i -1.1678 - 0.7682i
ans =
1.0e+003 *
0.0027 0.0074 0.0201
0.0546 0.1484 0.4034
1.0966 2.9810 8.1031
>> exp(B)
ans =
>> log(B)
ans =
>> sqrt(B)
ans =
>> abs(B)
ans =
1.4142 2.2361
3.1623 4.1231
>> imag(B)
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 121
ans=
1 1
1 1
>> fix(sin(B))
ans =
1.0000 1.0000
0 - 1.0000i - 1.0000
>>
ceil(log(A))
ans =
0 1 2
2 2 2
2 3 3
>> sign(B)
ans =
ans =
1.0e+002 *
-0.3071 + 0.4625i -0.3583 + 0.6939i
-0.3629 + 1.0431i -0.3207 + 1.5102i
>> logm(A)
ans =
-5.6588 + 2.7896i 12.5041 - 0.4325i -5.6325 - 0.5129i
12.8139 - 0.7970i -23.3307 + 2.1623i 13.1237 - 1.1616i
-5.0129 - 1.2421i 13.4334 - 1.5262i -4.4196 + 1.3313i
Sen(z) = 2
>> vpa(solve('sin(z)=2'))
ans =
1.315957896924815708625046347308*i + 1.5707963267948966192313216915398
1.5707963267948966192313216916398 - 1.316957896924815708625046347308*i
122 MATLAB A TRAVÉS DE EJEMPLOS
ans =
-1
- 1/2 - (3^(1/2)*i)/2
1/2 - (3^(1/2)*i)/2
- 1/2 + (3^(1/2)*i)/2
1/2 + (3^(1/2)*i)/2
ans =
0.69314718055994530941723212145818*i
>>solve('x^4+l=0')
ans =
>> pretty(solve('x^4+l=0'))
+- -+
| 1/2 / i 1 \ |
| 2 |-- -- | |
| \ 2 2 / |
| |
| 1/2 / i 1 \ |
| 2 | - - - | |
| \ 2 2 / |
CAPÍTULO 3: NÚMEROS COMPLEJOS Y FUNCIONES DE VARIABLE COMPLEJA 123
| 1/2 /1 i\ |
| 2 |- - -| |
| \2 2/ |
| |
| 1/2 / i 1 \ |
| 2 | - + - | |
| \ 2 2 / |
+- -+
>> solve('x^4-l=0')
ans =
-1
1
-i
i
>> vpa(solve('x^5-2-2*i=0'))
ans0.19259341768888084906125263406469*1
= + 1.2159869826496146992458377919696
-0.87055056329612413913627001747975*1 - 0.87055056329612413913627001747975
0.55892786746600970394985946846702*1 - 1.0969577045083811131206798770216
0.55892786746600970394985946846702 - 1.0969577045083811131206798770216*i
1.2159869826496146992458377919696*1 + 0.19259341768888084906125263406469
>> vpa(solve('x^5+l-sqrt(3)*1=0'))
ans =
0.46721771281818786757419290603946*1 + 1.0493881644090691705137652947201
1.1424056652180689506550734259384*1 - 0.1200716738059215411240904754285
0.76862922680258900220179378744147 - 0.85364923855044142809268986292246*1
- 0.99480195671282768870147766609475*1 - 0.57434917749851750339931347338896
0.23882781722701229856490119703938*1 - 1.1235965399072191281921551333441
ans =
- 0.5*tanh(conj(log((a^2 + 2.0*a*b*i - 1.0*b^2) / (a^2 + b^2))))*i +
(0.5*((a^2 + 2.0*a*b*i - 1.0*b^2)^2/(a^2 + b^2)^2 - l)*i)/((a^2 +
2.0*a*b*i - 1.0*b^2)^2/(a^2 + b^2)^2 + 1)
ans =
-0.62107490808037524310236676683417
CAPITULO 4
GRAFICOS
Asimismo, es posible elegir ventanas y posiciones para los gráficos, elegir características de
líneas y marcadores, situar límites de ejes, marcas y mallas, situar anotaciones, etiquetas y leyendas,
exportar gráficos a distintos formatos y otras posibilidades que se irán mostrando a lo largo del
capítulo.
»x=[12584341232];
> > bar(x)
126 MATLAB A TRAVÉS DE EJEMPLOS
» X = -2.9:0.2:2.9;
» bar(x,exp( - X . *x))
bar(...,anchura) Gráfico con anchura de las barras dada. Por defecto, la anchura es 0,8 y
la anchura 1 provoca que las barras se toquen
bar(...,'estilo') Gráfico con estilo para las barras dado. Los estilos son ‘group ’ (estilo por
defecto con barras verticales agrupadas) y ‘stack’ (barras apiladas). Si la
matriz Y es (m,n), el gráfico agrupado tiene m grupos de n barras
verticales
» A=[1 6 12 5 7; 3 2 6 5 3] ;
» bar(A,'stack')
» bar(A,'qroup')
CAPITULO 4: GRÁFICOS 127
bar(.„,color) Las barras son todas del color especificado (r=rojo, g=verde, b=azul,
c=cyan, m=magenta y=yellow, k=black y w=white)
barh(„.) Gráficos de barras horizontales
» barh(A,'group')
128 MATLAB A TRAVÉS DE EJEMPLOS
» Y=randn(100);
» hist(Y)
» hist(Y, 8)
[n,x] = hist(...) Devuelve los vectores n y x con las frecuencias asignadas a cada caja del
histograma y los valores en los que se centran las cajas
CAPITULO 4: GRÁFICOS 129
» x-[3 5 12 4 7 10];
» pie (X)
errorbar(x,y,e) Realiza el gráfico del vector x contra el vector y con los errores especificados
en el vector e. Pasando por cada punto (xi,yi) se dibuja una línea vertical de
longitud 2ei cuyo centro es el punto (xi.yi)
-4:.2:4;
>> X =
y=(1/sqrt(2*pi))*exp(-(x.^-2)/2); e=rand(size(x))/10;
errorbar(x,y,e)
130 MATLAB A TRAVES DE EJEMPLOS
stem(X,Y) Dibuja el gráfico de racimo relativo al vector Y cuyos elementos son dados a
través del vector X
stairs(Y) Dibuja el gráfico escalonado relativo al vector Y
stairs(X,Y) Gráfico escalonado del vector Y con elementos a través del vector X
» x=-3:0.1:3; stairs(x,exp(-x .^2))
CAPÍTULO 4: GRÁFICOS 131
» y=randn(1000,1)*pi; rose(y)
» z=eig(randn(20,20)); compass(z)
feather(Z) o Es igual que compás, con la única diferencia de que el origen de las flechas no
feather(X,Y) o está en el origen de coordenadas, sino que salen de puntos igualmente
feather(Z,S) o espaciados de una línea horizontal
feather(X,Y,S) » z=eig(randn(20,20)) ; feather(z)
plot(Y) Gráfica los elementos del vector Y contra sus índices, es decir, da
la gráfica del conjunto de puntos (t,y,) t=1,2,...n (n=length(Y)). Es
útil para graficar series temporales. Si Y es una matriz, plot(Y)
realiza un gráfico para cada columna de Y, presentándolos todos
sobre los mismos ejes. Si los componentes del vector Y son
complejos, plot(Y) es equivalente a plot(real(Y),imag(Y))
plot(X1,Y1,S1,X2,Y2,S2,... Combina, sobre los mismos ejes, los gráficos definidos para las
tripletas (Xi,Yi,Si). Se trata de una forma de representar varias
funciones sobre el mismo gráfico
fplot(‘f ',[xmin, xmax]) Grafica la función explícita y=f(x) en el intervalo de variación de x
dado
» fplot ('x*sin(1/x) ', [0,pi/16])
fplot(‘f ,[xmin, xmax, ymin, Grafica la función explícita y=^f(x)en los intervalos de variación de
ymax], S) x e y dados, con las opciones de color y caracteres dadas por S
fplot(‘f ,[xmin, xmax],.. ,n) Grafica f con la tolerancia t como n+1 puntos como mínimo
fplot(‘ [f1,f2,...,fn] ’,[xmin, Grafica las funciones f1,f2, ...,f0 sobre los mismos ejes en los
xmax, ymin, ymax], S) intervalos de variación de x e y especificados y con las opciones de
color y caracteres definidas en S
CAPÍTULO 4: GRÁFICOS 135
» ezplot ('x^2/(x^2-l)')
ezplot(‘f',[xmin, xmax, ymin, Gráfica la función explícita y=f(x) o implícita f(x,y)=k en los
ymax]) intervalos de variación de x e y dados (o no dados)
» ezplot('x^2+y"3=l/2',[-10,10,-8,8])
» ezplot ('x^2-y^4=l')
CAPÍTULO 4: GRÁFICOS 137
» ezplot ('y^4-x^4-24*y^2+25*x^2=0')
138 MATLAB A TRAVÉS DE EJEMPLOS
CURVAS ALABEADAS
MATLAB incorpora comandos que permiten representar curvas alabeadas en tres dimensiones.
En la tabla siguiente se presentan los más importantes.
»X = [0 1 1 2;1 1 2 2; 0 0 1 1];
Y = [1 1 1 1; 1 0 1 0; 0 0 0 0];
Z = [l l l l; 1 0 1 0; 0 0 0 0];
» plot3(X,Y,Z)
fill3(X1,Y1,Z1,C1, X2,Y2,Z2, Dibuja el polígono compacto cuyos vértices vienen dados por los
C2,...) puntos (Xi, Yi, Zi, Ci)
ezplot3(x(t),y(t),z(t)) Dibuja la curva alabeada definida por sus tres componentes
paramétricas
ezplot3(x(t),y(t),z(t), Dibuja la curva alabeada definida por sus tres componentes
[tmin,tmax]) paramétricas para una campo de variación del parámetro dado
También se utiliza el comando mesh para representar un gráfico de malla, que viene definido
por una función z=f(x,y), de tal forma que los puntos de la superficie se representan sobre una rejilla,
resultado de levantar los valores de z dados por f(x,y) sobre los correspondientes puntos del plano (x,y).
El aspecto de un gráfico de malla es como una red de pesca, con los puntos de la superficie sobre los
nudos de la red. Realmente, es un gráfico de superficie cuyo grafo tiene forma de red.
Asimismo, es posible representar las curvas de nivel de una superficie mediante el comando
contour. Estas curvas se caracterizan porque son puntos (x,y) sobre las cuales el valor de f(x,y) es
constante.
La tabla siguiente muestra los comandos de MATLAB para representar mallas, curvas de
nivel y superficies, tanto en coordenadas explícitas como paramétricas.
» r= (0:0.1;2*pi) ';t-(-pi:0.1:2*pi);
X=cos(r)*cos(t);Y=sin(r)*sin(t);Z=ones(1,size(r))'*t;
>> contour (X,Y,Z)
contourf(...) Dibuja un gráfico de contorno y rellena las áreas entre las isolíneas
» r=(0:0.1:2*pi)';t=(-pi:0.1:2*pi);
X=cos(r)*cos(t);Y=sin(r)*sin(t);Z=ones(1,size(r))'*t;
>> contourf (X,Y,Z)
CAPÍTULO 4: GRÁFICOS 149
trimesh(Tri,X,Y,Z,C) Muestra triángulos definidos en la matriz Tri como una malla. Cada fila
de la matriz Tri define una cara triangular simple y C define los colores
como en surf. El argumento C es opcional
trisurf(Tri,X,Y,Z,C) Muestra triángulos definidos en la matriz Tri como una superficie. Cada
fila de la matriz Tri define una cara triangular simple y C define los
colores como en surf. El argumento C es opcional
150 MATLAB A TRAVÉS DE EJEMPLOS
[X,Y,Z]= cylinder Da las coordenadas del cilindro unidad Da las coordenadas del cilindro
[X,Y,Z] = cylinder(r(t)) generado por la curva r Da las coordenadas del cilindro generado por la
[X,Y,Z] = cylinder(r(t),n) curva r con n puntos en la circunferencia sección horizontal alineado con
el eje Z (n= 20 por defecto)
Gráfica los cilindros anteriores
cylinder(...)
» t - 0:pi/10:2*pi;
[X,Y,Z] - cylinder(2+cos(t));
surf (X,Y,Z)
slice(X,Y,Z,V,sx,sy,sz) Dibuja cortes definidos por los vectores (sx,sy,sz) en el volumen V definido
slice(V,XI,YI,ZI)
por los arrays tridimensionales (X,Y,Z)
Dibuja cortes en el volumen V definidos por las matrices (XI, Y1,Z1) que
generan una superficie
slice(X,Y7,V,XI,YI,ZI)
Dibuja cortes definidos por las matrices (XI, YI,ZI) que generan una
superficie en el volumen V definido por los arrays tridimensionales (X Y,Z)
slice(...,'método') Dibuja cortes según el método de interpolación especificado (linear para
lineal, cubic para cúbica y nearest para vecino)
GRÁFICOS ESPECIALIZADOS
box on, box off Habilita y deshabilita cajas en los ejes para gráficos 2-D y 3-D
comet(y) Realiza el gráfico de cometa
cometa relativo
relativo al
al vector
vectorde
defrecuencias
frecuenciasYYRealiza
Realizaelelgráfico
gráficode
de
comet(x,y) cometa relativo
relativo al
alvector
vectorde
defrecuencias
frecuenciasY Ycuyos
cuyos elementos son dados a través
elementos son dados a través del del
vector X
>> t = -pi:pi/200:pi;comet(t,tan(sin(t))-sin(tan(t)))
154 MATLAB A TRAVÉS DE EJEMPLOS
» ezmesh('sqrt(x^2 + y^2)')
CAPÍTULO 4: GRÁFICOS 155
scatter(X,Y,S,C) Gráfico de dispersión para los vectores (X, Y) según los colores C el área
scatter(X,Y) de cada marcador S. También se puede obtener el gráfico relleno (opción
scatter(X,Y,S) fill) y utilizar distintos tipos de marcadores
scatter(...,marcador)
scatter(...,'filled')
scatter3(X,Y,Z,S,C) Gráfico de dispersión tridimensional para los vectores (X, Y, Z) según los
scatter3(X,Y,Z) colores C y el área de cada marcador S. También se puede obtener el
scatter3(X,Y,Z,S) gráfico relleno (opción fill) y utilizar distintos tipos de marcadores
scatter3(...,marcador)
scatter(...,'filled')
CAPÍTULO 4: GRÁFICOS 159
» x=(O:O.1:4);
>> scatter(x, cos(x))
» x=(0:0.1:2*pi);
>> scatterS(x, cos(x),sin(x))
OPCIONES DE GRÁFICOS 2D Y 3D
Matlab presenta muchas posibilidades de manejo de opciones gráficas como títulos,
etiquetas, colocación, punto de vista, etc. La tabla siguiente presenta las más importantes.
title(‘texto’) Añade el texto como título del gráfico en la parte superior del mismo en gráficos
2-D y 3-D
xlabel(‘texto’) Sitúa el texto al lado del eje x en gráficos 2-D y 3-D
ylabel(‘texto’) Sitúa el texto al lado del eje y en gráficos 2-D y 3-D
zlabel(‘texto’) Sitúa el texto al lado de eje z en un gráfico 3-D
clabel(C,h) Rota etiquetas y las sitúa en el interior de las líneas de contorno
160 MATLAB A TRAVÉS DE EJEMPLOS
clabel(C,h,v) Crea etiquetas sólo para los niveles de contorno dados por el vector v y
las rota y sitúa en el interior de las líneas de contorno
datetick(eje) Etiqueta las marcas del eje especificado (‘x’, y’ o ‘z’) basándose en el
máximo y el mínimo del eje especificado
datetick(eje, fecha) Etiqueta las marcas del eje especificado (‘x’, ‘y’ o ‘z’) con el formato de
fecha dado (un entero entre 1 y 28)
legend('cadena1', Sitúa las leyendas especificadas por las cadenas en n gráficos
'cadena2',...) consecutivos
legend(h, 'cadena1', Sitúa las leyendas especificadas por las cadenas en los gráficos
'cadena2',...) manejados según el vector h
legend('off). Elimina las leyendas de los ejes actuales
text(x,y,‘texto’) Sitúa el texto en el punto (x,y) dentro del gráfico 2-D
text(x,y,z,‘texto’) Sitúa el texto en el punto (x,y,z) en el gráfico 3-D
gtext(‘texto’) Permite situar el texto en un punto seleccionado con el ratón dentro de un
gráfico 2-D
grid Sitúa rejillas en los ejes de un gráfico 2-D o 3-D. La opción grid on
coloca las rejillas y greed off las elimina. La opción grid permuta entre on
y off
hold Permite mantener el gráfico existente con todas sus propiedades, de modo
que el siguiente gráfico que se realice se sitúe sobre los mismos ejes y se
superponga al existente. La opción hold on activa la opción j hold off la
elimina. La opción hold permuta entre on y off. Válido para 2-D y 3-D
axis([xmin xmax ymin Sitúa los valores máximo y mínimo para los ejes X, Y y Z en el gráfico
ymax zmin zmax] corriente
axis(‘auto’) Sitúa los ejes en la escala automática por defecto (la dada por xmin =
min(x), xmax = max(x) e y libre)
axis(axis) Congela el escalado de ejes en los límites corrientes, de tal forma que al
situar otro gráfico sobre los mismos ejes (con hold en on) la escala no
cambie
V=axis Da el vector V de 4 elementos, conteniendo la escala del gráfico corriente
axis(‘off) Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el
título del gráfico y los textos situados en él con text y gtext
axis(‘on’) Coloca de nuevo las etiquetas, marcas y rejillas de los ejes
subplot(m,n,p) Divide la ventana gráfica en mxn subventanas y coloca el gráfico
corriente en la ventana p-ésima, empezando a contar por la parte
superior izquierda y de izquierda a derecha hasta acabar la línea, para
pasar a la siguiente
plotyy(X1,Y1,X2,Y2) Etiqueta la gráfica de X1 contra Y1 en la izquierda, y la gráfica de X2
contra Y2 en la derecha.
plotyy(X1,Y1,X2,Y2, Igual que el comando anterior, pero la función puede ser plot, loglog,
'función') semilogx, semilogy, ítem o cualquier h=function(x,y). Igual que el
plotyy(X1,Y1,X1,Y2, comando anterior, pero usando cada función fi para el par (XiYi)
'función1','función2')
axis([xmin xmax ymin Sitúa los intervalos de variación de los ejes en los valores indicados.
ymax zmin zmax]) También acepta las opciones ‘ij’, ‘square’, ‘equal’, etc, idénticas a las
ya vistas para dos dimensiones
view([x,y,z]) Sitúa el punto de vista de la figura en el punto de coordenadas
cartesianas (x,y,z)
view([az, el]) Sitúa el ángulo de vista de la figura en el punto de azimut (rotación
horizontal) ‘az’ y elevación (elevación vertical) ‘el’
hidden Controla la presencia de las líneas ocultas en el gráfico. Dichas líneas
aparecen con hidden on y desaparecen con hidden off
figure(h) 0 h=figure Crea la figura como un objeto de nombre h, y la sitúa como figura
corriente. Se utiliza el comando gcf(h) para referir cualquier propiedad
a la figura h. El comando close(h) cierra la figura h. El comando
whitebg(h) cambia el color del fondo de la figura h. El comando clf
cierra la figura corriente. El comando graymon sitúa la escala de
grises. El comando newplot determina los ejes para hacer una nueva
figura. El comando refresh redibuja la figura
axes(e) o e=axes Crea los ejes como un objeto de nombre e en la figura corriente. Se
utiliza el comando gca(e) para referir cualquier propiedad a los ejes e.
Se utiliza el comando cla para borrar todos los objetos referentes a los
ejes corrientes
l=line(x,y) o Crea, como un objeto de nombre l, la línea que une los puntos (X,Y) en
l=line(x,y,z) el plano o (X, Y, Z) en el espacio
p=patch(X,Y,C) 0 Crea un área poligonal opaca que está definida por el conjunto de
patch(X,Y,Z,C) puntos (X,Y) en el plano o (X,Y,Z) en el espacio, y cuyo color está dado
por C, como un objeto de nombre p
s=surface(X,Y,Z,C) Crea la superficie paramétrica definida por X, Y y Z y cuyo color está
dado por C como un objeto de nombre s
i=image(C) Crea la imagen definida por los colores dados en la matriz C como un
objeto de nombre i
t=text(x,y,’cadena’) o Crea el texto definido por la cadena, localizado en el punto (x,y) del
t=text(x,y,z’cadena’) plano, o en el punto (x,y, z) del espacio
set(h, ‘propiedad1’, Sitúa las propiedades especificadas en el objeto h (gca para límites de
‘propiedad2’,...) ejes, gcf para colores, gco, gcbo, gcbd, etc.)
get(h, ‘propiedad’) Devuelve el valor corriente de la propiedad dada para el objeto h
object=gco Devuelve el objeto actual de la figura actual
rotate(h, [a, e], α, Rota el objeto h un ángulo a, según los ejes de azimut a y elevación e,
[P,q,r]) siendo el origen el punto (p,q,r)
reset(h) Actualiza todas las propiedades asignadas al objeto h y coloca sus
propiedades por defecto
delete(h) Borra el objeto h
CAPÍTULO 4: GRÁFICOS 163
Asimismo, las propiedades más típicas a situar en los objetos gráficos de MATLAB son las
siguientes:
» subplot (2,2,1);
ezplot('sin(x)',[-2*pi 2*pi])
subplot (2,2,2);
ezplot('cos(x)[-2*pi 2*pi])
subplot (2,2,3);
ezplot ('csc(x)', [-2*pi 2*pi])
subplot (2,2,4);
ezplot('sec(x)',[-2*pi 2*pi])
» [X,Y]=meshgrid(-2:0.05:2)
Z=X.^2-Y.^2;
subplot(2,2,1)
surf(X,Y,Z)
subplot(2,2,2)
surf(X,Y,Z),view(-90,0)
subplot(2,2,3)
surf(X,Y,Z),view(60,30)
subplot(2,2,4)
surf(X,Y,Z),view(-10,30)
166 MATLAB A TRAVÉS DE EJEMPLOS
» [X,Y]=meshgrid( -2:0.05:2);
Z=x.^2-y.^2;
surf(X,Y,Z),shading interp,brighten(0.75),colormap(gray(5))
(𝑥−1)2 𝑦 2
f (x, y ) =
(𝑥−1)2 +𝑦 2
» [x,y]=meshgrid(0:0.05:2,-2:0.05:2);
» z=y.^2.*(x-l).^2./(y.^2+(x-l).^2);
» mesh(x,y,z),view([-23,30])
CAPITULO 4: GRÁFICOS 167
» ezsurf('y ^2*(x-l)^2/(y^2+(x-l)^2)')
[1−𝑐𝑜𝑠(𝑥)]𝑆𝑒𝑛(𝑦)
f (x, y) =
𝒙𝟑 +𝒚𝟑
» [x,y] =meshgrid(l/100:0.0009:1/100,-1/100:0.0009:1/100)
» z=(1-cos(x)),*sin(y)./(x.^3+y. ^3);
» surf(x,y,z)
» view([50,-15])
168 MATLAB A TRAVÉS DE EJEMPLOS
Ejercicio 3. Representar sobre el mismo gráfico y de forma adyacente las curvas en polares:
r =√Cos(2a) y r = Sen(2a)
» a=0:.1:2*pi;
» subplot(1,2,1)
» r=sqrt(cos(2*a));
» polar(a,r)
» title(' r = sqrt(Cos(2a))')
» subplot(1,2,2)
» r=sin(2*a);
» polar(a,r)
» title(' r = Sen(2a)')
Para ver la intersección de las dos curvas, las representamos ambas sobre los mismos
ejes.
» a=0:.l:2*pi;
» r=sqrt(cos(2*a));
» polar(a,r)
» hold on;
» r=sin(2*a);
» polar(a,r)
CAPITULO 4: GRAFICOS 169
Ejercicio 4. Representar el volumen engendrado al girar la cúbica 12x - 9x2 + 2x3 alrededor del
eje OX, comprendida entre x=0 y x=5/2
x2 𝑦2
Ejercicio 5. Representar los volúmenes engendrados al girar la elipse: + =1
4 9
Representamos sobre el mismo gráfico las figuras generadas, pero solamente en su mitad
positiva. El volumen final será el doble del representado. La ecuación de la figura de revolución
alrededor del eje OX es y2+z2 = 9(1-x /4), y se parametriza así:
La ecuación de la figura de revolución alrededor del eje OY se escribe como x2+z2= 4(1-
y2/4), y se parametriza así:
» [x,y]=meshgrid(-3:.1:3);
» z=(1/2)*(x.^2+y.^2);
» mesh(x,y,z)
» hold on;
» z=2*ones(size(z));
» mesh(x,y,z)
» view(-10,10)
Hacemos una representación gráfica del recinto, con el plano en cartesianas y el cilindro
parametrizado.
» t=(0:.1:2*pi);
» u=(0:.1:10);
» x=4*cos(t)'*ones(size(u));
» y=4*sin(t)'*ones(size(u));
» z=ones(size(t))'*u;
» mesh(x,y,z)
» hold on;
» [x,y]=meshgrid(-4:.1:4);
» z=x+y+2;
» mesh(x,y,z)
» set(gca,'Box','on');
» view(15,45)
172 MATLAB A TRAVÉS DE EJEMPLOS
» [x,y]=meshgrid(-1/2:.02:1/2,-1/4:.01:1/4);
» z=x.^2 + 4*y.^2;
» mesh(x,y,z)
» hold on;
» y=x.^2;
» mesh (x,y,z)
» hold on;
» x=y.^2;
» mesh (x,y,z)
» set (gca, 'Box', 'on')
» view(-60,40)
CAPÍTULO 4: GRÁFICOS 173
» fplot([x^2,sqrt(x)][0,1.2])
» fplot([(4*x)^(l/2),3-x]',[0,4,0,4])
x 5 -x 2 y 2 +y 5 = 0
x4 + x 2 y - y 5 + y 4 = 0
174 MATLAB A TRAVÉS DE EJEMPLOS
» ezplot ('x^5-x^2*y^2+y^5',[-1,1,-1,1])
» ezplot('t*sin(t)t*cos(t)')
» ezpolar('1-cos(t)')
176 MATLAB A TRAVÉS DE EJEMPLOS
» ezplot3('cos(t)','sin(t),'t',[0,6*pi])
CAPITULO 5
EXPRESIONES ALGEBRAICAS,
POLINOMIOS, ECUACIONES Y
SISTEMAS
MATLAB incorpora una amplia gama de comandos que permiten trabajar con
expresiones algebraicas. Es posible simplificar al máximo una expresión, expandirla o
factorizarla adecuadamente. La tabla siguiente presenta los comandos más habituales
para el trabajo con expresiones algebraicas.
6 (x + 4) (x - 1)
2 2
x + x y + y
--------------
2 2
(x + y) (x + y )
>> pretty (factor (x^3+y^3))
2 2
(x + y) (x - x y + y )
ans =
>> simplify(log(exp(a+log(exp(c)))))
ans =
log(exp (a + c))
simple(expr) Simplifica al máximo la expresión algebraica mostrando las
reglas que se utilizan
>> syms a positive;
f = (l/a^3 + 6/a^2 + 12/a + 8)^(1/3);
>> simplify(f)
ans =
>> simple(f)
simplify:
(2*a + 1)/a
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 179
radsimp:
simplify(100):
1/a + 2
combine(sincos):
combine (sinhcosh):
combine (ln):
factor:
expand:
combine:
rewrite(exp);
(12/a + 6/a^2 + 1/a^3 + 8)^(1/3)
rewrite(sincos):
rewrite(sinhcosh):
rewrite(tan):
mwcos2sin:
(12/a + 6/a^2 + l/a^3 + 8)^(l/3)
180 MATLAB A TRAVÉS DE EJEMPLOS
collect(a):
ans =
1/a + 2
>> g=simple(f)
g =
l/a + 2
>> collect(f)
ans =
(2*t)*x + t
horner(expr) Factoriza la expresión en su forma de Horner
>> syms x;
f = x^3 - 6*x^2 + ll*x - 6;
>> horner (f)
ans =
x*(x*(x - 6) + 11) - 6
POLINOMIOS
MATLAB implementa comandos específicos para el trabajo con polinomios en
tareas como la búsqueda de sus raíces, evaluación, diferenciación e interpolación. La
tabla siguiente presenta la sintaxis y ejemplos de los comandos más importantes que
involucran polinomios.
ans =
ans =
1 -3 0 2 -7 12
q=conv(u,v) Da los coeficientes del polinomio producto de los dos polinomios
cuyos coeficientes vienen dados por los vectores u y v
>> u=[3 -1 4 2];v=[2 14 6 8 3];
>> p=conv(u,v)
P =
6 1 19 22 36 33 41 28 6
>> poly2sym(p)
ans =
6*x^8 + x^7 + 19*x^6 + 22*x^5 + 36*x^4 + 33*x^3 + 41*x^2
+ 28*x + 6
q =
r =
>> poly2sym(q)
ans =
>> poly2sym(r)
ans =
p =
1 -8 17 2 -24
>> poly2sym(p)
ans =
ans
4 -24 34 2
ans =
ans =
>> k=polyder(u,v)
k =
>> poly2sym(k)
ans =
48*x^7 + 7*x^6 + 114*x^5 + 110*x^4 + 144*x^3 + 99*x^2 +
82*x + 28
>> [q,d]=polyder(u,v)
q=
-12 3 -30 -10 8 -29 -30 -4
d =
4 4 17 32 60 76 106 120 100
48 9
CAPÍTULO 5: EXPRESIONES ALGEBRÁICAS, POLINOMOS, ECUACIONES... 183
P =
>> [p,S,u]=polyfit(u,V,3)
P =
S =
R: [4x4 double]
df: 0
normr: 1.2686e-014
u =
2.0000
2.1602
y = polyval(p,x) Evalúa el polinomio p en x
y = polyval(p,x,[ ],u) Evalúa el polinomio p en x con media u para el error
[y,delta] = Evalúa el polinomio p en x con varianza S para el error y
polyval(p,x,S) con un error y± delta en el resultado
[y,delta] = Evalúa el polinomio p en x con media u y varianza S para el
polyval(p,x,S,u) error y con un error y ± delta en el resultado
>> p=[2 0 -1 7 9]
p =
2 0 -1 7 9
>> poly2sym(p)
ans =
>> polyval(p,10)
ans =
19979
>> x=[1 2 3; 4 5 6; 7 8 9]
184 MATLAB A TRAVÉS DE EJEMPLOS
x =
1 2 3
4 5 6
7 8 9
>> p=[2 0 -1 7 9]
p =
1 0 -1 7 9
>> A=polyval(p,X)
A =
17 51 183
533 1269 2607
4811 8193 13113
𝑏(𝑠) 𝑟1 𝑟1 𝑟𝑛
= + +...+ +k(s)
𝑎(𝑠) 𝑠−𝑝1 𝑠−𝑝2 𝑠−𝑝𝑛
[b,a] = residue(r,p,k)
Convierte la expansión racional a polinomios de coeficientes b y a
r =
0.4751 - 0.6032i
0.4751 + 0.6032i
0.0745
p =
0.3705 + 1.2240i
0.3705 - 1.2240i
-0.4076
k =
u=
r =
0.6662 + 1.4813i
0.6662 - 1.4813i
-0.6662 + 0.8326i
-0.6662 - 0.8326i
-0.5000
INTERPOLACION POLINOMICA
MATLAB implementa comandos específicos, tanto algebraicos como gráficos,
para el trabajo con interpolación polinómica. La tabla siguiente presenta la sintaxis y
ejemplos de los comandos más importantes para la interpolación polinómica.
2.5000 0.5252
3.0000 0.1411
3.5000 -0.3078
4.0000 -0.7568
4.5000 -0.8579
5.0000 -0.9589
5.5000 -0.6192
6.0000 -0.2794
6.5000 0.1888
7.0000 0.6570
7.5000 0.8232
8.0000 0.9894
8.5000 0.7007
9.0000 0.4121
9.5000 -0.0660
10.0000 -0.5440
servicios = 10:10:30;
salarios = [150.697 199.592 187.625
179.323 195.072 250.287
203.212 179.092 322.767
226.505 153.706 426.730
249.633 120.281 598.243];
w = interp2 (servicios,anos,salarios,15,1975)
w =
190.6288
Vi = Da el vector Vi tal que (Xi, Yi, Zi) es el conjunto total de puntos
interp3(X,Y,Z,V,Xi, hallados por interpolación tridimensional del conjunto de puntos
Yi,Zi) resultante de aplicar la función tridimensional V a los puntos
(X,Y,Z)
Vi = Supone que X=1:n, Y=1:m, Z=1:py (n,m,p) = tamaño de V
interp3(V,Xi,Yi,Zi)
Interpolación recursiva tridimensional n veces
Vi = interp3(V,n) Interpolación mediante los métodos especificados
Vi =
En el ejemplo siguiente se calcula y representa la matriz de puntos
interp3(...,método)
volumétrica w=f(x,y,z) de interpolación tridimensional entre los
puntos (x,y,z,t) dados por los valores que toma la función
predefinida en MATLAB `flor´ para valores de x entre 0.1 y 10
separados medio punto y para valores de y y z entre -3 y 3
separados también en medio punto.
>>[x,y,z,v] = flow(lO);
[xi,yi,zi] = meshgrid(.1:.5:10,-3:.5:3,-3:.5:3);
vi = interp3 (x, y, z, V, xi, yi, zi) ;
slice(xi,yi,zi,vi, [6 9.5],2, [-2 .2]), shading flat
188 MATLAB A TRAVÉS DE EJEMPLOS
[xi,yi] = meshgrid(ti,ti);
zi = griddata(x,y,z,xi,yi);
mesh(xi,yi,zi), hold on, plot3(x,y,z, ' o' ) ,
hold off
Métodos generales
A continuación se presentan los comandos más habituales en MATLAB para
resolver ecuaciones y sistemas
solve(‘ecuación’,’x’)
Resuelve la ecuación en la variable x
ans =
asin(r/p)
pi - asin(r/p)
syms x ; soIve(ecu(x),x)
Resuelve la ecuación ecu(x)=0 en la variable x
ans =
acos((8192*r)/1433639)
-acos({8192*r)/1433639)
solve(‘ec1,ec2,...,ecn’, ‘x1, Resuelve n ecuaciones simultáneas ec1,...,ecn
x2,...,xn’) (sistema en las variables x1,...,xn)
>> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x +
3 = 0')
x =
1
3
y =
1
-3/2
x =
1
3
y =
1
-3/2
X = linsolve(A,B) Resuelve A *X=B para una matriz cuadrada A,
siendo B y X matrices
Resolvemos el sistema:
2x + y + z + t = 1
x + 2y + z + t = 2
x + y + 2z + t = 3
x + y + z + 2t = 4
>>
A=[2,l,l,l;l,2,l,l;l,l,2,l;l,l,l,2] ;B=[1,2,3,4]
linsolve(A,B)
ans =
-1
0
1
2
X =
1.5708
[x, feval]=fzero(fun,x0) Da también el valor de la función objetivo en x
>> [Xf] =fzero('sin(x)-1', pi/2)
X =
1.5708
f =
0
bicg(A,b,tol) ans =
bicg(A,b,tol,maxit) 0
0
0
0
ans =
bicg(A,b,tol,maxit,M)
bicg(A,b,tol,maxit,M1 ,M2) 1.0e+016 *
4.1449 - 0.7033i
bicg(A,b,tol,maxit,M1,M2,x0) -7.1997 + 1.2216i
3.2729 - 0.5553i
-0.4360 + 0.0740i
[x,f] = bicg(A,b,...)
Resuelve el sistema inv(M) *A *x = inv(M) *b
Resuelve el sistema inv(M) *A *x = inv(M) *b
con M=M1*M2
Resuelve el sistema inv(M) *A *x = inv(M) *b
con M=M1 *M2 y valor inicial x0
Resuelve el sistema y f indica el resultado
(0=convergencia, 1=no convergencia,
2=convergencia condicionada,
3=estancamiento y 4=números muy extremos)
>> [x,f]=bicg(A,B, 1e-009, 100)
x =
1.0e+016 *
4.1449 - 0.7033i
-7.1997 + 1.2216i
3.2129 - 0.5553i
-0.4360 + 0.0740i
f =
bicgstab(A,b,tol) ans =
bicgstab(A,b,tol,maxit) 1.0e+011 *
0.6696 – 0.4857i
-1.1631 + 0.8437i
0.5287 – 0.3835i
-0.0704 + 0.0511i
4. 1449 – 0.7033i
bicgstab(A,b,tol,maxit,M1,M2) -7.1997 + 1.2216i
3.2729 – 0.5553i
-0.4360 + 0.0740i
bicgstab(A,b,tol,maxit,M1,M2,x0)
Resuelve el sistema inv(M) *A *x = inv(M) *b
[x,f] = bicgstab(A,b,...) Resuelve el sistema inv(M) *A *x = inv(M) *b
con M=M1*M2
Resuelve el sistema inv(M) *A = inv(M) *b
con M=M1 *M2 y valor inicial x0
[x,f,relres] = bicgstab(A,b,...) Resuelve el sistema y f indica el resultado
(0=convergencia, 1=no convergencia,
[x,f,relres,iter] = bicgstab(A,b,...) 2=convergencia condicionada,
3=estancamiento y 4=números muy extremos)
Devuelve también el residuo relativo
norm(b-A *x)/norm(b)
Devuelve también el número de iteraciones
X =
1.0e+016 *
4.1449 - 0.7033i
-7.1997 + 1.2216i
3.2729 - 0.5553i
-0.4360 + 0.0740i
f =
3
r =
26.0415
i =
18
196 MATLAB A TRAVÉS DE EJEMPLOS
f =
r =
i =
1.1869 - 0.0910i
0.4295 - 0.0705i
-0.5402 - 0.0362i
0.1364 + 0.0274i
f =
0
r =
0.6981
i =
Método residual
A continuación se presentan los comandos que aporta MATLAB para resolver
ecuaciones y sistemas por el método residual.
x =
1.0e+016 *
0.4810 - 4.0071i
-0.8356 + 6.9603i
0.3798 - 3.1640i
-0.0506 + 0.4215i
f =
r =
19.5999
i =
11
X = gmres(A,b) Intenta resolver el sistema Ax=b por el método
residual mínimo generalizado
gmres(A,b,tol) Resuelve Ax=b especificando la tolerancia
gmres(A,b,tol,maxit) Resuelve Ax=b especificando la tolerancia y
el número máximo de iteraciones
gmres(A,b,tol,maxit,M) Resuelve el sistema inv(M) *A*x = inv(M)*b
Resuelve el sistema inv(M) *A*x = inv(M)*b
gmres(A,b,tol,maxit,M1,M2) con M=M1*M2
Resuelve el sistema inv(M) *A *x = inv(M)*b
gmres(A,b,tol,maxit,M1,M2,x0) con M=M1 *M2 y valor inicial x0
Resuelve el sistema y f indica el resultado
[x,f] = gmres(A,b,...) (0=convergencia, 1=no convergencia,
2=convergencia condicionada,
3=estancamiento y 4=números muy extremos)
CAPÍTULO 5: EXPRESIONES ALGEBRÁICAS, POLINOMOS, ECUACIONES... 199
1.5504 + 0.0085i
-0.2019 - 0.2433i
-0.2532 + 0.0423i
0.0982 + 0.0169i
f =
3
r =
0.6981
i =
1 4
x =
0.0748 - 0.0070i
200 MATLAB A TRAVÉS DE EJEMPLOS
-0.0761 - 0.0001i
0.5934 - 0.1085i
-0.1528 + 0.0380i
f =
1
r =
0.0592
i =
1000
X =
0.0121 - 0.0004i
0.0035 - 0.0001i
0.1467 - 0.0061i
0.0001 + 0.0039i
CAPITULO 5: EXPRESIONES ALGEBRÁICAS, POLINOMOS, ECUACIONES... 201
f =
r =
0.8325
i=
ans =
0.4857
0
0.5714
Ya sabemos que otro tipo de sistemas lineales especiales son los sistemas
homogéneos. El sistema A.X=B se dice homogéneo si el vector de términos
independientes B es nulo, con lo que todo sistema homogéneo será de la forma A.X=0.
En un sistema homogéneo, el rango de la matriz de los coeficientes y el rango de la
matriz ampliada con la columna de los términos independientes siempre coinciden. Si
aplicamos el teorema de Rouché-Frobenius, un sistema homogéneo tendrá una única
solución cuando el determinante de la matriz A sea distinto de cero. Esa solución única
es el vector nulo, ya que la solución nula siempre la tienen los sistemas homogéneos. Un
sistema homogéneo tendrá infinitas soluciones cuando el determinante de la matriz A es
cero. En este caso, las infinitas soluciones se calculan igual que en los sistemas generales
(comando solve), o también utilizando la función nuil (A).
>> A=[2,1,1,1;1,2,1,1;1,1,2,1,-1,1,1,2];
>> B=[2, 1,1, 1,1;1,2,1,1,1;1,1,2,1,1;1,1,1,2,1];
>> [rank(A), rank(B)]
ans =
4 4
Observamos que los rangos de las dos matrices coinciden con el número de
incógnitas. El teorema de Rouché-Frobenius asegura entonces que el sistema es
compatible determinado con solución única. Podemos calcular la solución de la siguiente
forma:
>> B=[l 1 1 1]';
>> linsolve(A,B)
ans =
0.2000
0.2000
0.2000
0.2000
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 205
ans =
0.2000
0.2000
0.2000
0.2000
>> bicg(A,B)
bicg converged at iteration 1 to a solution with relative residual 0
ans =
0.2000
0.2000
0.2000
0.2000
>> pcg(A,B)
ans =
0.2000
0.2000
0.2000
0.2000
>> lsqr(A,B)
ans =
0.2000
0.2000
0.2000
0.2000
>> qmr(A,B)
ans =
0.2000
0.2000
0.2000
0.2000
>> gmres(A,B)
gmres converged at iteration 1 to a solution with relative residual
1.5e-016
ans =
206 MATLAB A TRAVÉS DE EJEMPLOS
0.2000
0.2000
0.2000
0.2000
>> symmlq(A,B)
symmlq converged at iteration 1 to a solution with relative residual 0
ans =
0.2000
0.2000
0.2000
0.2000
Observamos que los rangos de las dos matrices coinciden con le número de
incógnitas. El teorema de Rouché-Frobenius asegura entonces que el sistema es
compatible determinado con solución única. Podemos calcular la solución de la siguiente
forma:
>> A = [ l , 2 , 3 ; l , 3 , 8 ; 2 , 3 , l ; 5 , 6 , 4 ] ;
>> B=[6 19 -1 5]';
>> linsolve(A,B)
ans =
1.0000
-2.0000
3.0000
>> det(A)
ans =
5.5511e-016
X =
-z1/5
y =
(3*z1)/5
z =
z1
{(-z1/5,3z1/5,z1)}z1 ϵ R
>> syms x y z t a b
>> pretty(expand((x+1)*(x+2)))
2
X + 3 x + 2
>> pretty(expand((x+1)/(x+2)))
X 1
----- + ------
x + 2 x + 2
208 MATLAB A TRAVÉS DE EJEMPLOS
>> pretty(expand(sin(x+y)))
sin(x) cos(y) + cos(x) sin(y)
>> pretty(expand(cos(2*x)))
2
2 cos(x) - 1
>> pretty(expand(exp(a+log(b))))
exp(a) b
>> pretty(expand(log(x/(1-x)^2)))
log(x) - 2 log(1 - x)
>> pretty(expand((x+1)*(y+z)))
xy + xz + y + z
>> syms x y
>> pretty(factor(6*x^2+18*x-24))
6 (x + 4) (x - 1)
>> pretty(factor(x^4-y^4))
2 2
(x - y) (x + y) (x + y)
>> pretty(factor (x^3+y^3))
2 2
(x + y) (x - x y + y)
>> pretty(factor((x^3-y^3)/(x^4-y^4)))
2 2
x + x y + y
----------------
2 2
(x + y) (x + y )
>> syms x y a b c
>> simplify (sin (x) ^2 + cos(x)^2)
ans =
>> pretty(simplify(exp(a+log(b*exp(c)))))
b exp (a + c)
>> pretty(sym(simple(cos(3*acos(x) )) ))
3
4 x - 3 x
>> pretty (simple ( (x^2-y^2) / (x-y)^3 ))
x + y
--------
2
(x - y)
>> syms a x y z
>> pretty (collect (a^3*x-x+a^3+a, x))
3 3
(a - 1) x + a + a
4 4
- -
3 3
y + 2 z - x y + x
----------------------
x
x + 3 x + 2
>> p = x*y+z*x*y+y*x^2-z*y*x^2+x+z*x;
210 MATLAB A TRAVÉS DE EJEMPLOS
2
(1 - z) x y + (z + 1) X y + (z + 1) x
>> f = a*log(x)-log(x)*x-x;
>> pretty(collect(f,log(x)))
(a - x) log(x) - x
aln(x)+3ln(x)-ln(1-x)+ln(1+x)/2
>> pretty(sym(simple(a*log(x)+3*log(x)-log(1-x)+log(1+x)/2)))
log(x + 1)
---------- - log(1 - x) + 3 log(x) + a log(x)
2
x =
a =
>> pretty(sym(simple(a*log(x)+3*log(x)-log(1-x)+log(1+x)/2)))
/ x – 1 \
- log | --------------- |
| 3 a 1/2 |
\ x x (x + 1) /
>> pretty(simple(expand(sym(sin(3*x)*cos(5*x)))))
sin (8 x) sin (2 x)
---------- - --------
2 2
CAPÍTULOS: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 211
>> pretty(simple(expand(((cot(a))^2+(sec(a))^2-(csc(a))^2))))
1
--- - 1
2
cos(a)
>> pretty(simple(expand(x/(x+y)-y/(x-y)+2*x*y/(x^2-y^2))))
1
>> pretty(simple(expand((l+a^2)/b + (l-b^2)/a- (a^3-b^3)/(a*b))))
1 1
-- + --
a b
r =
12.1229
-5.7345
-0.3884
>> p2 = [ 2 - 3 4 -5 11];r=roots(p)
r =
1.2817 + 1.0040i
1.2817 - 1.0040i
-0.5317 + 1.3387i
-0.5317 - 1.3387i
r =
-1.0000
-0.8413 + 0.5406i
-0.8413 - 0.5406i
-0.4154 + 0.9096i
-0.4154 - 0.9096i
0.1423 + 0.9898i
0.1423 - 0.9898i
0.6549 + 0.7557i
0.6549 - 0.7557i
0.9595 + 0.2817i
0.9595 – 0.2817i
>> Y1=polyval(p1,eye(3))
Y1 =
>> Y2=polyval(p2,ones(3))
Y2 =
CAPÍTULO 5: EXPRESIONES ALGEBRÁICAS, POLINOMOS, ECUACIONES... 213
9 9 9
9 9 9
9 9 9
>> Y3=polyval(p3,rand(3))
Y3 =
1.1050 1.3691 1.0000
1.3368 1.0065 1.0013
1.0 1.0000 1.6202
>> d1=polyder(pl)
d1 =
3 -12 -72
>> pretty(poly2sym(d1'x'))
3 x - 12 x - 72
>> d2=polyder(p2)
d2 =
8 -9 8 -5
>> pretty(poly2sym(d2,'x'))
3 2
8x - 9x + 8 x - 5
>> d3=polyder(p3)
d3 =
1 1 0 0 0 0 0 0 0 0
0 0
>> pretty(poly2sym(d3,'x'))
10
11 X
Ejercicio 10. Consideramos los puntos del intervalo [0 5] separados en una décima.
Interpolar la función error en estos puntos y ajustar un polinomio de grado 6 a los
mismos. Representar la curva original y la interpolada en el mismo gráfico.
p =
214 MATLAB A TRAVÉS DE EJEMPLOS
Ejercicio 11. Calcular el polinomio interpolador de segundo grado que pasa por los
puntos (-1,4), (0,2), y (1,6) en el sentido de mínimos cuadrados.
>> x=[-1,0,1];y=[4,2,6];p=poly2sym(polyfit(x,y,2))
P =
3*x^2+x+2
Ejercicio 12. Representar 200 puntos de interpolación cúbica entre los puntos (x,y)
dados por los valores que toma la función exponencial e para 20 valores de x
igualmente espaciados entre 0 y 2. Utilizar interpolación cúbica.
puntos =
1.0000 0 0
1.0002 0.0209 0.0209
1.0009 0.0419 0.0419
1.0020 0.0629 0.0627
1.0035 0.0839 0.0836
1.0055 0.1049 0.1043
1.0079 0.1260 0.1250
1.0108 0.1471 0.1456
1.0141 0.1683 0.1660
1.0178 0.1896 0.1863
1.0220 0.2110 0.2064
1.0267 0.2324 0.2264
1.0317 0.2540 0.2462
1.0373 0.2756 0.2657
1.0433 0.2974 0.2851
1.0498 0.3194 0.3042
1.0567 0.3414 0.3231
1.0641 0.3636 0.3417
1.0719 0.3860 0.3601
1.0802 0.4085 0.3782
1.0890 0.4312 0.3960
1.0983 0.4541 0.4135
1.1080 0.4772 0.4307
1.1183 0.5006 0.4476
1.1290 0.5241 0.4642
1.1402 0.5479 0.4805
216 MATLAB A TRAVÉS DE EJEMPLOS
Ejercicio 15. Hallar el polinomio de grado 3 que mejor ajusta la nube de puntos (i,
i2) par 1 ≤ i ≤ 7, en el sentido de mínimos cuadrados. Hallar su valor para x=10 y
representar gráficamente la curva de ajuste.
>> x=(l:7);y=[1,4,9,15,25,36,49];p=vpa(poly2sym(polyfit(x,y,2)))
P =
x^2 - 0.000000000000009169181662272871686413366801652*x +
0.000000000000020761891472015924526365781895317
ans =
100.0000
>> solve('sin(x)*cos(x)=0'
ans =
[ 0]
[ l/2*pi]
[-l/2*pi]
218 MATLAB A TRAVÉS DE EJEMPLOS
>> solve('sin(x)=a*cos(x)','x')
ans =
atan(a)
>> solve('sen(x)+cos(x)=sqrt(3)/2')
ans =
[1/2*3^(1/2)]
[1/2*3^(1/2)]
Ejercicio 17. Hallar al menos dos soluciones para cada una de las dos ecuaciones
trigonométrica y exponencial siguientes:
xSen(x)=1/2 y 2x^3 =4(23x)
>> vpa(solve('2^(x-'3)=4*2^(3*x)','x'))
ans =
2.0
-1 . 0
-1 . 0
Para la primera ecuación no obtenemos soluciones, pero para la segunda sí.
Para analizar mejor la primera ecuación, realizamos una representación gráfica para
ver de forma aproximada los intervalos donde caen las posibles soluciones.
>> fplot ('[x*sin(x)-1/2,0]',[0,4*pi])
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 219
Se observa que hay una solución entre 0 y 2, otra entre 2 y 4, otra entre 4 y 8,
y así sucesivamente. Vamos a calcular tres de ellas con el comando fzero.
>> s1=fzero('x*sin(x)-1/2',2)
s1 =
0.7408
>> s2=fzero('x*sin(x)-1/2',4)
s2 =
2.9726
>> s3=fzero('x*sin(x)-1/2',6)
s3 =
6.3619
Ejercicio 18. Resolver cada una de las dos ecuaciones logarítmica e irracional
siguientes:
x3/2log(x) = X log(x3/2), sqrt[1-x]+sqrt[1+x] = a
>> vpa(solve('x^(3/2)*log(x)=x*log(x)^(3/2)'))
ans =
1.0
0.318131505204764135312 55425158766 - 1.3372357014306894089011621431937*i
cos(x/12)/exp(x2/16) =y
-5/4 +y = sen(x3/2)
>> [x,y]=solve ('cos(x/12)/exp(x^2/l6)=y','-5/4+y=sin (x^(3/2))')
X =
0.34569744170126319331033283636228*i - 0.18864189802267887925036526820236
y =
0.0086520715192230549621145978569268*i + 1.0055146234480859930589058368368
>>[x,y,z]=solve('a^2*x^2-b^2*y^2=a^2*b^2','x^2-y'2=r^2','z^2=2*p*x','x,y,z')
x =
z =
x1 - x2 + x3 = 1
4x1 +5x2 - 5x3 = 4
2x1 + x2 - x3 = 2
x1 + 2x2 - 2x3 = 1
>> A=[1,-1,1;4,5,-5;2,1,-1;1,2,-2]
A =
1 -1 1
4 5 -5
2 1 -1
1 2 -2
>>B=[1,-1,1,1;4,5,-5,4,-2,1,-1,2;1,2,-2,1]
B =
1 -1 1 1
4 5 -5 4
2 1 -1 2
1 2 -2 1
ans =
2 2
Vemos que el rango de A y el de B coinciden y su valor es 2, que es menor
que el número de incógnitas del sistema (3). Por lo tanto, el sistema tendrá infinitas
soluciones (compatible indeterminado). Intentamos resolverlo con el comando solve:
>>[x1,x2,x3]=solve('xl-x2+x3=1', '4*x1 + 5*x2-5*x3=4' , '2*x1+x2-x3=2',
'x1+2*x2-2*x3=l', 'x1' , 'x2' , ’x3')
Warnlng: 4 equations in 3 variables.
x1 =
1
222 MATLAB A TRAVÉS DE EJEMPLOS
x2 =
x3 =
z
Las infinitas soluciones se obtienen al dar al parámetro x3 los infinitos
valores reales ({1,z,z} ∀zϵR ). Obsérvese que la solución trivial {1,0,0} se obtiene
para el valor del parámetro igual a cero.
x + 2y + 3z + t = 6
x + 3y + 8z + t =19
>> A= [1,2,3,1;1,3,8,1]
A =
1 2 3 1
1 3 8 1
>> B=[l,2,3,l,6;l,3,8,l,19]
B =
1 2 3 1 6
1 3 8 1 19
ans =
2 2
Vemos que el rango de A y el de B coinciden y su valor es 2, que es menor
que el número de incógnitas del sistema (4). Por lo tanto, el sistema tiene infinitas
soluciones (compatible indeterminado). Intentamos resolverlo:
>> [x,y,z,t]=solve('x+2*y+3*z+t=6','x+3*y+8*z+t=l9','x','y','z','t')
Warning: 2 equations in 4 variables. New variables might be introduced.
x =
7*z1 - z2 - 20
y =
z2
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 223
z =
13 - 5*zl
t =
zl
{7zl-z2-20,z2,13-5zl,zl} ∀z1,z2 ϵ R
3x1 + x2 + x3 - x4 = 0
2x1 + x2 - x3 + x4 = 0
x1+ 2x2 + 4x3 + 2x4 =0
2x1 + x2 - 2x3 - x4 = 0
>> det([3,1,1,-1;2,1,-1,1,-1,2, 4, 2; 2,1,-
2,-1])
ans = -30
Como el determinante de la matriz de los coeficientes es no nulo, el sistema
sólo tiene la solución trivial:
>>[x1,x2,x3,x4]=solve('3*x1+x2+x3-x4=0','2*x1+x2-x3+x4=0','xl+2*x2-
4*x3-2*x4=0 ' , 'x1-x2-3*x3-5*x4=0','x1','x2','x3','x4')
x1 =
x2 =
x3 =
x4 =
0
224 MATLAB A TRAVÉS DE EJEMPLOS
mx + y + z = 1
x + my + z = m
x + y + m z = m^2
>> syms m
A =
1,m]
[m, 1, 1]
[1, m, 1]
[1, 1, m]
>> det(A)
ans =
m^3 - 3*m + 2
ans =
-2
1
1
>> B=[m,1,1,1;l,m,l,m;1,l,m,m^2]
B =
[ m, 1, 1, 1]
[ 1, m, 1, m]
[ 1, 1, m, m^2]
ans =
>> rank(subs(B,{m},{-2}))
ans =
3
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 225
Vemos que el rango de las dos matrices es distinto, con lo que el sistema es
incompatible (no tiene solución) para m=-2.
ans =
>> rank(subs(B,{m},{1}))
ans =
1
Ahora el rango de las dos matrices es 1, que es menor que el número de
incógnitas. Luego, el sistema tiene infinitas soluciones (compatible indeterminado).
Las hallamos sustituyendo m=1 en el sistema inicial:
>> [x,y,z]=solve('x+y+z=l’x','y',’z')
Warning: 1 equations in 3 variables. New variables might be introduced.
x =
1 - z2 - z1
y =
z2
z =
z1
{1-z2-z1,z2,z1} ∀ Z1,Z2ϵR
>> [x,y,z]=solve('m*x+y+z=l','x+m*y+z=m','x+y+m*z=m^2’,'x','y','z')
X =
- (m + 1) / (m + 2)
226 MATLAB A TRAVÉS DE EJEMPLOS
y =
1/(m + 2)
z =
my =m
(1 + m) x -z=m
y +z=m
>> syms m
>> A=[0,m,0;m+l,0,-l;0,l,l]
A =
[ 0, m, 0]
[m + 1, 0, -1]
[ 0, 1, 1]
>> det(A)
ans =
- m^2 - m
ans =
-1
0
Vemos que los valores de m que determinan el rango de la matriz de los
coeficientes del sistema son m=-1 y m=0.
B =
[ 0, m, 0, m]
[ m + 1, 0, -1, m]
[ 0, 1, 1, m]
>> rank(subs(A,{m},{-1}))
ans =
2
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 227
>> rank(subs(B,{m},{-1}))
ans =
3
En el caso m = - 1 , vemos que el sistema no tiene solución (es incompatible)
porque el rango de la matriz de los coeficientes del sistema es 2 y el de la matriz
ampliada es 3.
ans =
0
Al ser el determinante nulo, el sistema tiene infinitas soluciones:
>> [x,y,z]=solve('x-z=0','y+z=0','x','y','z')
Warning: 2 equations in 3 variables. New variables might be introduced.
x =
z1
y =
-z1
z =
z1
Luego, las infinitas soluciones vendrán dadas cuando el parámetro z varía en
los números reales. El subespacio de soluciones de dimensión 1 es:
{zl,-zl,zl} ∀zl ϵR
X=
(2*m - 1)/(m + 1)
y =
1
z=
m - 1
>> A=[2,1,1,1;1,2,1,1;1,1,2,1;1,1,1,2];
>> B=[2,1,1,1,1;1,2,1,1,1;1,1,2,1,1;1,1,1,2,1];
>> [rank(A), rank(B)]
ans =
4 4
>> b=[l,1,1,1]' ;
Vemos que las matrices A y B (ampliada) tienen rango 4, que, además,
coincide con el número de incógnitas. Luego, el sistema tiene solución única (es
compatible determinado con el mismo número de ecuaciones y de incógnitas). Para
calcular su solución se utiliza cualquiera de los múltiples comandos vistos.
>> X = nnls(A,b)
X=
0.2000
0.2000
0.2000
0.2000
>> X = bicg(A,b)
x =
0.2000
0.2000
0.2000
0.2000
CAPÍTULO 5: EXPRESIONES ALGEBRAICAS, POLINOMOS, ECUACIONES... 229
>> x = bicgstab(A,b)
bicgstab converged at iteration 0.5 to a solution with relative
residual 0
x =
0.2000
0.2000
0.2000
0.2000
>> X = pcg(A,b)
x =
0.2000
0.2000
0.2000
0.2000
>> gmres(A,b)
gmres converged at iteration 1 to a solution with relative residual O
ans =
0.2000
0.2000
0.2000
0.2000
>> x = lsqr(A,b)
lsqr converged at iteration 2 to a solution with relative residual O
x =
0.2000
0.2000
0.2000
0.2000
>> A\b'
ans =
0.2000
0.2000
0.2000
0.2000
CAPITULO 6
MATRICES, ESPACIOS
VECTORIALES Y
APLICACIONES LINEALES
La matriz:
𝑎11 𝑎12 𝑎13 ⋯ 𝑎1𝑛
𝑎21 𝑎22 𝑎23 … 𝑎2𝑛
A= ( A i j ) = 𝑎31 𝑎32 𝑎33 … 𝑎3𝑛 i= 1,2,...,m j = 1,2,...,n
⋮ ⋮ ⋮ ⋱ ⋮
[𝑎𝑚1 𝑎𝑚2 𝑎𝑚3 ⋯ 𝑎𝑚𝑛 ]
V = [ v l , v 2,..., v n ]
V = [ v l , v 2 ,..., v n ]
232 MATLAB A TRAVÉS DE EJEMPLOS
A =
B =
>> A+B
ans =
0 9.0000 5.0000
1.0000 + 2.0000i 1.0000 - 3.0000i 9.0000 - 3.0000i
0 -4.0000 4.0000 - 1.0000i
A-B Diferencia de las matrices A y B
>> A-B
ans =
-2.0000 5.0000 -1.0000
-1.0000 -1.0000 + l.0000i 7.0000 + 3.0000i
6.0000 6.0000 4.0000 + l.0000i
A*B Producto de las matrices A y B
>> A*B
ans =
0 + 7.0000i -5.0000 -14.0000i 4.0000 -23.0000i
-23.0000 -42.0000 + 1.0000i -3.0000 - 6.0000i
-8.0000 + 1.0000i -13.0000 - 2.0000i 10.0000 - 7.0000i
ans =
>> expm(A)
ans =
1.0e+003 *
0.5710 + 0.0674i 0.7081 - 0.0337i 1.7019 - 0.0338i
0.5710 + 0.0674i 0.7081 - 0.0337i 1.7018 - 0.0337i
0.5710 + 0.0675i 0.7082 - 0.0337i 1.7018 - 0.0337i
expm1(A) eA calculada a través de aproximantes de Padé
> expml(A)
ans =
1.0e+003 *
-0.0006 1.0956 0.0064
-0.0005 + 0.0008i -0.0005 - 0.0008i 2.9800
0.0191 0.0017 0.0536
logm(A) Logaritmo neperiano de la matriz A
>> logm(A)
ans =
1.3756 + 0.0063i 2.4201 + 0.4906i -1.7163 - 0.4969i
-0.9903 + 0.1445i 1.7284 - 0.2954i 1.3413 + 0.1509i
0.6464 - 0.0412i -0.6375 - 0.1572i 2.0705 + 0.1984i
sqrtm(A) Raíz cuadrada de la matriz cuadrada A
>> sqrtm(A)
ans =
1.1538 - 0.0556i 2.4904 + 0.3474i -0.8158 - 0.2918i
-0.6332 + 0.2331i 1.5192 - 0.3779i 1.9424 + 0.1449i
0.8187 - 0.0083i -0.2678 - 0.0893i 2.2775 + 0.0975i
funm(A, ‘función’) Aplica la función a la matriz cuadrada A. Las funciones que se
pueden utilizar son EXP, LOG, COS, SIN, COSH, SINH,
SQRTM y EXPM
>> funm(A,'log')
ans =
1.3756 + 0.0063i 2.4201 + 0.4906i -1.7163 - 0.4969i
-0.9903 + 0.1445i 1.7284 - 0.2954i 1.3413 + 0.1509i
0.6464 - 0.0412i -0.6375 - 0.1572i 2.0705 + 0.1984i
>> funm (A, 'sinh')
ans =
1.0e+002 *
2.8840 + 0.3729i 3.4704 - 0.1953i 8.5505 - 0.1776i
2.8821 + 0.3256i 3.5574 - 0.1265i 8.4652 - 0.1992i
2.8359 + 0.3291i 3.5556 - 0.1738i 8.5133 - 0.1553i
>> funm(A,'cos')
234 MATLAB A TRAVÉS DE EJEMPLOS
ans =
ans =
-1.0000 0 + 1.0000i 3.0000
7.0000 0 – 1.0000i 1.0000
2.0000 8.0000 4.0000
>> Inv(A)
ans =
-0.0430 - 0.0266i -0.1465 - 0.0133i 0.3145 + 0.0400i
0.1373 - 0.0102i -0.0564 - 0.0051i 0.0441 + 0.0154i
-0.0020 + 0.0225i 0.1240 + 0.0113i 0.0031 - 0.0338i
>> A*inv(A)
??? undefined function or method ’INV' for Input
argumenta of type
'double'.
>> A*inv(A)
ans =
>> svd(A)
ans =
9.7269
5.6228
2.7434
[U,S,V]=svd(A) Da la matriz diagonal S de valores singulares de A
(ordenados de mayor a menor) y las matrices U y V tales que
A=U*S*V’
>> [U,S,V]=svd(A)
U =
-0.1891 - 0.4193i -0.6966 - 0.5354i -0.0595 + 0.1139i
-0.5350 - 0.5583i 0.3725 + 0.1937i -0.4752 - 0.0029i
-0.2989 - 0.3181i 0.2210 - 0.0543i 0.8621 - 0.1204i
S =
9.7269 0 0
0 6.6228 0
0 0 2.7434
V =
>> rcond(A)
ans =
0.1796
>> norm(A,1)
ans =
14
>> norm(A,inf)
ans =
10
236 MATLAB A TRAVES DE EJEMPLOS
-0.4082
Z=null(A, ‘r’) Da una base racional del núcleo de A
ans =
-0.5206 0.2496
-0.2148 0.8872
-0.8263 -0.3879
subspace(A,B) Da el ángulo entre los subespacios especificados por las
columnas de A y de B. Si A y B son vectores, da el ángulo
formado por ambos
>> subspace(A,B)
ans =
1.1728e-015
rref(A) Da la matriz reducida escalonada de Gauss-Jordan por filas
de A. El número de filas no nulas de rref(A) es el rango de A
>> rref ([1 2 3;4 5 6;7 8 9])
ans =
1 0 -1
0 1 2
0 0 0
A^p Matriz A elevada a la potencia escalar p
>> A^3
ans =
1.0e+002 *
1.8600 - 0.1200i 1.0400 + 0.5400i 2.2200 - 0.4200i
0.6400 - 0.1000i 2.1400 - 0.2000i 2.3400 + 0.3000i
0.8200 + 0.2400i 0.9200 - 0.1800i 3.3800 - 0.0600i
p^A Escalar p elevado a la matriz A
>> 3^A
ans =
1.0e+003 *
1.2568+ 0.1484i 1.5585 - 0.0742i 3.7457 - 0.0742i
1.2568+ 0.1484i 1.5586 - 0.0742i 3.7455 - 0.0742i
1.2568+ 0.1485i 1.5586 - 0.0742i 3.7456 - 0.0742i
diag(V,k) Construye una matriz cuadrada diagonal de orden n+|k| con
los n elementos del vector V en la késima diagonal. Si k=0 la
diagonal es la principal, si k >0 la diagonal está por encima
de la principal k unidades. Si k<0 la diagonal está por debajo
de la principal k unidades. Además diag(V,0)=diag(V)
ans =
238 MATLAB A TRAVÉS DE EJEMPLOS
1 0 0 0 0 0
0 2 0 0 0 0
0 0 3 0 0 0
0 0 0 4 0 0
0 0 0 0 5 0
0 0 0 0 0 6
ans =
0 1 0 0 0 0 0
0 0 2 0 0 0 0
0 0 0 3 0 0 0
0 0 0 0 4 0 0
0 0 0 0 0 5 0
0 0 0 0 0 0 6
0 0 0 0 0 0 0
ans =
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0
0 0 3 0 0 0 0 0
0 0 0 4 0 0 0 0
triu(A,k) 0 0
Construye una0matriz0triangular
5 0
superiorlos 0
con 0
elementos
0 0 0 0 0 6 0 0
de A que están por encima de su késima diagonal. Si k=0 la
diagonal es la principal, si k>0 la diagonal está por encima
de la principal k unidades. Si k<0 la diagonal está por debajo
de la principal k unidades. Además triu(A,0)=triu(V)
>> triu([1 2 3 ;4 5 6; 7 8 9],1)
ans =
0 2 3
0 0 6
0 0 0
ans =
0 2 3
0 0 6
0 0 0
ans =
0 2 3
4 5 6
0 8 9
CAPITULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 239
ans =
1 0 0
4 5 0
7 8 9
ans =
1 2 0
4 5 6
7 8 9
ans =
0 0 0
4 0 0
7 8 0
>> A+B
ans =
[a + b, a + b + 2, a + b + 4]
[a + b, a + b - 2, a + b - 4]
[ 2, 4, 6]
ans =
0
>> rank(A)
ans =
2
>> trace(A)
ans =
2*a + 2
>> triu(A, 2)
ans =
[ 0, 0, a + 2]
[ 0, 0, 0]
[ 0, 0, 0]
32
-3 6 -3
A =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 241
>> eig(B)
ans =
0
1
a + 1
[V,D] = eig(A) Halla la matriz diagonal D de autovalores de A y una
matriz V cuyas columnas son los autovectores
correspondientes, cumpliéndose que A*V=V*D
>> [V, D]=eig{A)
V =
D =
2.4021 0 0 0
0 -0.0346 0 0
0 0 -0.7158 0
0 0 0 -0.4400
>> [V1,D1]=eig(B)
VI 1 =
[ -a, a^2, 1]
[ 1, -a, 1]
[ 0, 1, 0]
D1 =
eig(A,B) Devuelve un vector con los autovalores generalizados de
[ 0, las
0, matrices
0] cuadradas A y B. Los autovalores
[ 0,
generalizados
1, 0]
de A y B son las raíces del polinomio en X
det(λ*C-A)
[ 0, 0, a + 1]
>> C=randn(4)
242 MATLAB A TRAVÉS DE EJEMPLOS
c =
>> eig(A,C)
ans =
0.6654 + 0.6533i
0.6654 - 0.6533i
0.0259
0.1997
[V,D]=eig(A,B) Halla la matriz diagonal D de autovalores generalizados
de A y B y una matriz V cuyas columnas son los
autovectores correspondientes, cumpliéndose A*V=B*V*D
>> [V2,D2]=eig(A,C)
V2 =
D2 =
0.6654 + 0.6533i 0 0
0
0 0.6654 - 0.6533i 0
0
0 0 0.0259
0
0 0 0
0.1997
AA =
Q =
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 243
1.0000 0 0 0
0 1.0000 0 0
0 0 0.5000 0
0 0 0 1.0000
B2 =
[U,T] = schur(A) Halla una matriz T y una matriz unitaria U tales que A =
U*T*U' and U’*U = eye(U). Si A es compleja, T es una
matriz triangular superior con los autovalores de A en la
diagonal. Si A es real, la matriz T tiene los autovalores de
A en la diagonal, y los correspondientes autovalores
complejos se corresponden con los bloques diagonales 2x2
de la matriz T
>> [U,T] = schur(A)
D =
T =
2.402 1 -0.8133 -0.6225 -0.1304
0 -0.0346 -0.1940 0.2110
0 0 -0.7158 0.3496
0 0 0 -0.4400
schur(A) Devuelve la matriz T del apartado anterior solamente
>> schur(A)
ans =
2.402 1 -0.8133 -0.6225 -0.1304
0 -0.0346 -0.1940 0.2110
0 0 -0.7158 0.3496
0 0 0 -0.4400
T1 =
P =
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 245
1.0000 0 0 0
0 -0.7007 0.1180 -0.7036
0 -0.0982 -0.9928 -0.0687
0 -0.7066 0.0210 0.7073
H =
0.8147 -1.2135 -0.8559 0.1663
-1.2926 0.8399 1.2997 0.0668
0 0.6987 -0.0233 -0.3394
0 0 0.0323 -0.4196
[L,U] = lu(A) Descompone la matriz A en el producto A=L*U
(descomposición LU de A), siendo U una matriz triangular
superior y L una matriz pseudotriangular inferior
(triangularizable mediante permutación)
>> [L,U] = lu(A)
L =
U =
L =
1.0000 0 0 0
0.9917 1.0000 0 0
0.8920 -0.3250 1.0000 0
0.1390 -0.4552 0.2567 1.0000
U =
P =
0 0 0 1
0 1 0 0
1 0 0 0
0 0 1 0
246 MATLAB A TRAVÉS DE EJEMPLOS
Q =
R =
Q =
R =
E =
0 0 0 1
0 0 1 0
1 0 0 0
0 1 0 0
>> jordan(A)
ans =
-0.0346 + 0.0000i 0 0 0
0 2.4021 - 0.0000i 0 0
0 0 -0.4400 + 0.0000i 0
0 0 0 -0.7158 - 0.0000i
>> [V,J]=jordan(A)
V =
J =
-0.0346 + 0.0000i 0 0 0
0 2.4021 - 0.0000i 0 0
0 0 -0.4400 + 0.0000i 0
0 0 0 -0.7158 - 0.0000i
condeig(A) Vector con los números de condición para los autovalores
de A
>> condeig(A)
ans =
1.0733
1.1338
1.7360
1.6539
[V,D,s]=condeig(A)
Equivale a [V,D] =eig(A) y s=condeig(A)
>> [V, D, s]=condeig(A)
V =
-0.6621 -0.7149 0.1745 0.1821
-0.4819 -0.0292 -0.6291 -0.9288
-0.2766 0.6972 0.5995 0.3178
-0.5029 -0.0438 -0.4630 0.0570
D =
2.4021 0 0 0
0 -0.0346 0 0
0 0 -0.7158 0
0 0 0 -0.4400
s =
1.0733
1.1338
1.7360
1.6539
[U,V,X,C,S]= Da las matrices unitarias U y V, la matriz cuadrada X y las
gsvd(A,B) matrices diagonales no negativas C y S tales que A =
U*C*X', B = V*S*X' y C'*C + S'*S = I. A es (m,p), B es
(n,p), U es (M,M), V es (n,n), X es (p,q) y q=min(m+n,p)
[U,V,X,C,S]= Resultado anterior cuando m o n≥p. Uy V tienen a lo sumo
gsvd(A,B,0) p columnas y Cy S tienen a lo sumo p filas
248 MATLAB A TRAVÉS DE EJEMPLOS
V =
D =
2.4021 0 0 0
0 -0.7158 0 0
0 0 -0.4400 0
0 0 0 -0.0346
0 =
S =
2.6201 0 0 0
0 0.8590 0 0
0 0 0.3796 0
0 0 0 0.0306
V =
H =
1 1 1 1
1 - 1 1 - 1
1 1 - 1 - 1
1 - 1 - 1 1
hankel(V) Matriz cuya primera columna es el vector V y cuyos elementos
son cero por debajo de la primera antidiagonal. La matriz
Hankel(C,R) tiene como primera columna el vector C y como
última fila el vector R
250 MATLAB A TRAVÉS DE EJEMPLOS
>> hankel([12345])
ans =
1 2 3 4 5
2 3 4 5 0
3 4 5 0 0
4 5 0 0 0
hilb(n) 5
Matriz0 de 0
Hilbert de0 orden0n tal que Aij=1/(i+j-1)
>> hilb(4)
ans =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
invhilb(n) Inversa de la matriz de Hilbert de orden n
>> invhilb(4)
ans =
16 -120 240 -140
-120 1200 -2700 1680
240 -2700 6480 -4200
-140 1680 -4200 2800
magic(n) Matriz mágica de orden n. Sus elementos son los enteros
desde 1 hasta n con iguales sumas de filas y columnas
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
rosser Matriz 8x8 con un autovalor doble, otro nulo, tres casi
iguales, otro muy pequeño y dos opuestos
>> rosser
ans =
611 196 -192 407 -8 -52 -49 29
196 899 113 -192 -71 -43 -8 -44
-192 113 899 196 61 49 8 52
407 -192 196 611 8 44 59 -23
-8 -71 61 8 411 -599 208 208
-52 -43 49 44 -599 411 208 208
-49 -8 8 59 208 208 99 -911
29 -44 52 -23 208 208 -911 99
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 251
ans =
1 6 7 8
2 1 6 7
3 2 1 6
4 3 2 1
wilkinson(n) Matriz de Wilkinson (simétrica tridiagonal con pares de
autovalores cercanos pero no iguales)
>> wilkinson(5)
ans =
2 1 0 0 0
1 1 1 0 0
0 1 0 1 0
0 0 1 1 1
0 0 0 1 2
A =
1 2 -3 4
3 -1 2 1
1 -5 8 -7
2 3 1 -1
>> det(A)
ans =
0
252 MATLAB A TRAVÉS DE EJEMPLOS
>> B=[l,2,2,l;3,4,4,3;l,0,0,l]
B =
1 2 2 1
3 4 4 3
1 0 0 1
>> rank(B)
ans =
>> A=[2,3,4,-1,1;3,4,7,-2,-1;1,3,-1,1,8;0,5,5,-1,4]
A =
2 3 4 -1 1
3 4 7 -2 -1
1 3 -1 1 8
0 5 5 -1 4
>> rank(A)
ans =
ans =
75
Luego una base de la variedad lineal estará formada por los vectores {{3,4,7,-2,-1},
{1,3,-1,1,8},{0,5,5,-1,4}}
>> det([2,3,-1;0,0,1;2,1,0])
ans =
Los vectores forman una base. Para hallar las componentes del vector {3,5,1} en
dicha base se realizan las siguientes operaciones;
>> inv([2,0,2;3,0,1;-1,1,0])*[3,5,1]'
ans =
1.7500
2.7500
-0.2500
>> B=[1,0,0;-1,1,0;0,1,-1]
B =
1 0
0
-1 1 0
0 1 -1
>> B1=[1,0,-1;2,1,0;-l, 1, 1]
Bl =
254 MATLAB A TRAVÉS DE EJEMPLOS
1 0 -1
2 1 0
-1 1 1
>> A=inv(B1')*B'
A =
-0.5000 1.5000 2.5000
0.5000 -0.5000 -0.5000
-0.5000 1.5000 1.5000
Para hallar las componentes del vector {2,1,3} en base B en la base B1 a partir
de la matriz A de cambio de base, realizamos la siguiente operación:
>> inv(B1')*B'*[2,l,3]'
ans =
8
-1
5
ans =
>> (d/2)*det([0,0,1;5,1,1;3,7,1])
ans =
16
0 −3 −1 −3 −1
(−3 3 −3 −3 −1)
2 2 −1 1 2
Se trata de encontrar una base para su núcleo y la dimensión de dicho núcleo, así
como la imagen de los vectores {4,2,0,0,-6} y {1,2,-1,-2,3} mediante dicha aplicación.
Hallar también una base para la imagen de f y su dimensión.
>> A=[0,-3,-1,-3,-1;-3, 3,-3,-3,-1;2,2,-1,1, 2]
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 255
A =
0 -3 -1 -3 -1
-3 3 -3 -3 -1
2 2 -1 1 2
>> null(A)
ans =
-0.5397 -0.1251
-0.2787 -0.2942
-0.0266 -0.6948
0.0230 0.6021
0.7936 -0.2292
Los dos vectores de la salida anterior forman la base del núcleo y por la tanto la
dimensión del núcleo es 2.
ans =
0
0
0
ans =
-2
9
11
>> rank(A)
ans =
ans =
-9
256 MATLAB A TRAVÉS DE EJEMPLOS
Por tanto, los vectores {{0 -3 -2};{-3 3 2}; {-1 -3 -1}} forma una base de la
imagen de f.
Para hallar la matriz de f, hay que considerar los vectores transformados por f
de los de la base canónica:
>> f
f =
[ a + b, b + c, a + c]
ans =
10 1
>> subs(f,{a,b,c},{O,1,O})
ans =
1 1 0
>> subs(f,{a,b,c},{0,0,1})
ans =
0 1 1
1 1 0
A= (0 1 1)
1 0 1
>> A^5
ans =
11 10 11
11 11 10
10 11 11
>> expm(A)
ans =
1 −2 0 𝑑
f[(a,b,c),(d,e,f)]= (a,b,c)( 0 0 4) ( 𝑒 )
−1 0 3 𝑓
1 −1 3 𝑎
g ( a , b , c ) = ( a , b , c ) (−1 1 3) (𝑏 )
3 3/2 4 𝑐
>> A=[1,-2,0;0,0,4;-1,0,-3]
A =
1 -2 0
0 0 4
-1 0 -3
>> det(A)
ans =
B =
258 MATLAB A TRAVÉS DE EJEMPLOS
ans =
-2.2500
>> det([1,-1;-1,1])
ans =
0
Una forma cuadrática es definida positiva si, y sólo si, todos sus autovalores
son positivos estrictamente. Una forma cuadrática es definida negativa si, y sólo si,
todos sus autovalores son negativos estrictamente.
Una forma cuadrática es semidefinida positiva si, y sólo si, todos sus
autovalores son no negativos. Una forma cuadrática es semidefinida negativa si, y
sólo si, todos sus autovalores son no positivos.
>> eig(B)
ans =
-0.8569
0.4071
6.4498
M =
>> transpuesta=M'
transpuesta =
>> inversa=inv(M)
inversa =
1.0e+003 *
0.3000 -0.9000 0.6300
-0.9000 2.8800 -2.1000
0.6300 -2.1000 1.5750
>> M*inv(M)
ans =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
>> determinante=det(M)
determinante =
2.6455e-006
260 MATLAB A TRAVÉS DE EJEMPLOS
>> rango=rank(M)
rango =
>> traza=trace(M)
traza =
0.6762
>> vsingulares=svd(M)
vsingulares =
0.6571
0.0189
0.0002
>> condicion=cond(M)
condicion =
3.0886e+003
Para el cálculo de la norma, hallamos la norma, la 1-norma, la
norma infinita y la F-norma:
>> norm(M)
ans =
0.6571
>> norm(M,1)
ans =
0.7833
>> norm(M,inf)
ans =
0.7833
>> norm(M,'fro')
ans =
0.6573
>> M^3
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 261
ans =
>> logm(M)
ans =
>> sqrtm(M)
ans =
ans =
1.4679 0.3550 0.2863
0.3550 1.2821 0.2342
0.2863 0.2342 1.1984
>> expm1(M)
ans =
>> expm2(M)
ans =
>> expm3(M)
ans =
262 MATLAB A TRAVÉS DE EJEMPLOS
Como vemos, la matriz exponencial coincide para todos los métodos utilizados.
M =
>> transpuesta=M'
transpuesta =
>> inversa=inv(M)
inversa =
determinante =
1/378000
>> rango=rank(M)
rango =
3
CAPITULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 263
>> traza=trace(M)
traza =
71/105
>> vsingulares=svd(M)
vsingulares =
(1030177/(49787136*(1045602865/351298031616 +
(102103^(1/2)*i)/49787136)^(1/3)) + (1045602865/351298031616 +
(102103^(l/2)*i)/49787136)^(l/3) + 12703/88200)^(1/2)
>> M^3
ans =
>> log(M)
ans =
>> sqrt(M)
ans =
a b c
A =[ 3c a − 3c b ]
3b −3b + 3c a − 3c
A =
[a, b, c]
[3*c, a - 3*c, b]
[3*b, 3*c - 3*b, a - 3*c]
>> transpose(A)
ans =
>> pretty(det(A))
3 2 2 2 3 2 3
a - 6 a c + 3 a b – 9 a b c + 9 a c + 3 b + 9 b c + 9 c
>> pretty(trace(A))
3 a - 6 c
>> rank(A)
ans =
3
>> simplify(inv(A))
ans =
[ (a*2 - 6*a*c + 3*b^2 - 3*b*c + 9*c^2)/(c^2* (9*a + 9*b) - c*(6*a^2 + 9*b*a) + 3*a*b^2 +
a^3 + 3*b^3 + 9*c^3) , - (a*b - 3*c^2)/(c^2* (9*a + 9*b) - c*(6*a^2 + 9*b*a)
+
3*a*b^2 + a^3 + 3*b^3 + 9*c^3), (b^2 + 3*c^2 - a*c) / (c^2* (9*a + 9*b) - c*(6*a^2
+
9*b*a) + 3*a*b^2 + a^3 + 3*b^3 + 9*c^3)]
[ (3*b^2 + 9*c^2 - 3*a*c)/(c^2*(9*a + 9*b) - c*(6*a^2 + 9*b*a) + 3*a*b^2 +
a^3 + 3*b^3 + 9*c^3) , - (c* (3*a + 3*b) - a^2) / (9*b*c^2 - 6*a^2*c + a* (3*b^2 - 9*b*c
+
9*c^2) + a^3 + 3*b^3 + 9*c^3) , -(a*b - 3*c^2)/(c^2* (9*a + 9*b) - c*(6*a^2 +
9*b*a) + 3*a*b^2 + a^3 + 3*b^3 + 9*c^3)]
[ -(3*a*b - 9*c^2)/(c^2* (9*a + 9*b) - c*(6*a^2 + 9*b*a) + 3*a*b^2
+
a^3 + 3*b^3 + 9*c^3) , (3*b^2 + 3*a*b - 3*a*c) / (c^2* (9*a + 9*b) - c*(6*a^2 + 9*b*a) +
3*a*b^2 + a^3 + 3*b^3 + 9*c^3) , -(c*(3*a + 3*b) - a^2)/(9*b*c^2 - 6*a^2*c + a* (3*b^2 -
9*b*c + 9*c^2) + a^3 + 3*b^3 + 9*c^3) ]
CAPITULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 265
A =
[ cosh(a), sinh(a)]
[ sinh(a), cosh(a)]
B =
[ sinh(a), cosh(a)]
[ cosh(a), sinh(a)]
>> M1 =A-'2+B''2
M1 =
[ 2*cosh(a)^2 + 2*sinh(a)^2, 4*cosh(a)*sinh(a)]
[ 4*cosh(a) *sinh(a) , 2*cosh(a)^2 + 2*sinh(a)^2]
>> pretty(simplify(M1))
+- -+
| 2 |
| 4 sinh(a) + 2, 2 sinh(2 a) |
| |
| 2 |
| 2 sinh(2 a), 4 sinh(a) + 2 |
+- -+
>> M2=A^2-B^2
M2 =
266 MATLAB A TRAVÉS DE EJEMPLOS
[0, 0]
[0, 0]
ans =
>> [simplify(B^2),simplify(B^3),simplify(B^4)]
ans =
𝑐𝑜𝑠ℎ(n𝑎) 𝑠𝑖𝑛ℎ(n𝑎)
An = B n = [ ]
𝑠𝑖𝑛ℎ(2𝑎) 𝑐𝑜𝑠ℎ(2𝑎)
>> simplify(inv(A))
ans =
[ cosh(a), -sinh(a)]
[ -sinh(a), cosh(a)]
>> simplify(inv(B))
ans =
[ -sinh(a), cosh(a)]
[ cosh(a), -sinh(a)]
>> simplify(det(A))
ans =
>> simplify(det(B))
ans =
-1
>> simplify(trace(A))
ans =
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 267
2*cosh(a)
>> simplify(trace(B))
ans =
2*sinh(a)
>> simplify(exp(A))
ans =
[ exp(cosh(a)), exp(sinh(a))]
[ exp(sinh(a)), exp(cosh(a))]
>> simplify(exp(B))
ans =
[ exp(sinh(a)), exp(cosh(a))]
[ exp(cosh(a)), exp(sinh(a))]
>> A=randn(3)
A =
-0.4326 0.2877 1.1892
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273
V =
D =
-1.6984 0 0
0 0.2233 + 1.0309i 0
0 0 0.2233 - 1.0309i
-1.6984 0 0
0 0.2233 1.0309
0 -1.0309 0.2233
1 0 0
0 1 0
0 0 1
B =
-0.4326 0.2877 1.1892
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273
T =
-1.6984 0.2644 -1.2548
0 0.2233 0.7223
0 -1.4713 0.2233
>> poly(A)
ans =
R =
E =
1 0 0
0 1 0
0 0 1
>> A*E
ans =
>> Q*R
ans =
-0.4326 0.2877 1.1892
-1.6656 -1.1465 -0.0376
0.1253 1.1909 0.3273
270 MATLAB A TRAVÉS DE EJEMPLOS
>> B=hess(A)
B =
-0.4326 -0.1976 1.2074
1.6703 -1.2245 0.1544
0 -1.0741 0.4053
V =
D =
1 .0000 0 0
0 -0.4722 0
0 0 -2.1176
>> A*V
ans =
-1.2245 -0.0803 0.1699
-0.0137 -1.1082 -2.2872
-0.3649 -0.3334 0.8801
>> B*V*D
ans =
-1.2245 -0.0803 0.1699
-0.0137 -1.1082 -2.2872
-0.3649 -0.3334 0.8801
0.2874
1.0
3.4799
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 271
U =
T =
ans =
L =
1.0000 0 0
-0.1429 1.0000 0 Matriz triangular inferior
-0.2857 0.5263 1.0000
U =
272 MATLAB A TRAVÉS DE EJEMPLOS
0 1 0
1 0 0
0 0 1
ans =
-7 3 1 -7 3 1
1 5 -2 1 5 -2 Tenemos que P*A=L*U
2 2 -2 2 2 -2
Q =
-0.1361 -0.8785 -0.4579
0.9526 -0.2430 0.1831
-0.2722 -0.4112 0.8700
R =
-7.3485 1.6330 1.7691
0 -5.9442 2.3366 Matriz triangular superior
0 0 -0.6410
E =
1 0 0
0 1 0
0 0 1
>> [A*E,Q*R]
ans =
Luego, A*E=Q*R.
>> R = chol(A)
P =
1.0000 0 0
0 -0.9615 0.2747
0 0.2747 0.9615
H =
ans =
Lu e go PH P’= A y P ’P= I.
>> [U,S,V]=svd(A)
U =
S =
7.8306 0 0
0 6.2735 0 Matriz diagonal
0 0 0.5700
V =
>> U*S*V
ans =
>> x = pinv(A)
x =
ans =
1 0 0
A=[0 cos(𝑎) −𝑠𝑒𝑛(𝑎)]
0 𝑠𝑒𝑛(a) cos(𝑎)
A =
[ 1, 0, 0]
[ 0, cos(a),-sin(a)]
[ 0, sin(a), cos(a)]
>> eigensys(A)
ans =
[ 1]
[cos(a)+1/2*(-4*sin(a)^2)^(1/2) ]
[cos(a)-1/2*(-4*sin(a)^2)^(1/2) ]
>> pretty(simple(poly(A)))
3 2 2
x - 2 x cos (a) + x - x + 2 x cos(a) - 1
>> jordan(A)
ans =
[1, 0, 0]
[0, cos(a)+l/2*(-4*sin(a)^2)^(l/2), 0]
[0, 0, cos(a)-l/2*(-4*sin(a)^2)^(l/2) ]
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 275
>> simple(svd(A))
ans =
[ 1]
[ 1/2*(4*cos(a-conj(a))+2*(-2 + 2*cos(2*a-2*conj(a)))^(1/2))^(1/2) ]
[ 1/2*(4*cos(a-conj(a))-2*(-2 + 2*cos(2*a-2*conj(a)))^(1/2))^(1/2)]
Hallar la matriz de paso V, comprobar el resultado y ver que los valores propios de
la matriz inicial son los elementos de la diagonal de la matriz semejante a la dada.
A =
3 -1 0
-1 2 -1
0 -1 3
V =
1 -1 1
2 0 -1
1 1 1
J =
1 0 0
0 3 0
0 0 4
>> eig(A)
ans =
1.0000
3.0000
4.0000
276 MATLAB A TRAVÉS DE EJEMPLOS
>> inv(V)*A*V
ans =
1.0000 0 -0.0000
0 3.0000 0
0 0 4.0000
Ejercicio 9. Hallar una matriz diagonal semejante a cada una de las siguientes
matrices:
0 −𝑟 𝑞 0 1 −sen(a)
cos(𝑎) −𝑠𝑒𝑛(𝑎)
A= [ 𝑟 0 −𝑝] B=[ −1 0 cos(𝑎) ] C=[ ]
𝑠𝑒𝑛(𝑎) cos(𝑎)
−𝑞 𝑝 0 −sen(a) cos(𝑎) 0
>> A=sym('[0,-r,q;r,0,-p;-q,p,0]');
>> [V,J]=jordan(A)
V =
J =
[ -(- p^2 - q^2 - r^2)^(1/2), 0, 0]
[ 0,(- p^2 - q^2 - r^2)^(1/2), 0]
[ 0, 0, 0]
J =
[0, 0, 0]
[0, 0, 0]
[0, 0, 0]
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 277
[cos(a)]
[sin(a)]
[ 1]
Hemos calculado una base del núcleo de B, que está formada por un único
vector, luego, la dimensión del núcleo de B es 1:
>> det (B)
ans =
0
Analizamos ahora la matriz C :
>> C=sym('[cos(a),-sin(a);sin(a),cos(a)]');
>> [V,J]=jordan(C)
V =
[1/2, 1/2]
[i/2,-i/2]
J =
[ cos(a) - sin(a)*i, 0]
[ 0, cos (a) + sin(a)*i]
3 2 2 2
X +(p + q + r )x
>> pretty(simple(sym(poly(B))))
3
x
278 MATLAB A TRAVÉS DE EJEMPLOS
2
X - 2 cos(a) X + 1
ans =
1.0e+003 *
-0.0010 -1.0200 0.2600
0.0002 0.0000 0.0518
0.0011 0.0001 -0.0518
0.0017 1.0000 0.0000
0.0026 1.0000 -0.0000 + 0.0000i
0.0028 1.0199 -0.0000 - 0.0000i
0.0042 1.0200 -0.0000 + 0.0000i
0.0043 1.0200 -0.0000 - 0.0000i
1 0 0
0 0 0
f(ab,c) = (a,b,c ) ( )
0 0 1
0 0 0
Hallar el núcleo y las dimensiones del núcleo y la imagen de f.
0
0
0
CAPÍTULO 6: MATRICES, ESPACIOS VECTORIALES Y APLICACIONES LINEALES 279
>> rank(A)
ans =
>> det([1,0;0,1])
ans =
1 0 0 a
G(a,b,c) =(a,b,c)(0 2 2) (b)
0 2 2 c
clasificarla y hallar su ecuación reducida, su rango y su signatura.U
G =
1 0 0
0 2 2
0 2 2
>> det(G)
ans =
0
280 MATLAB A TRAVÉS DE EJEMPLOS
>> det([1,0;0,2])
ans =
2
J =
0 0 0
0 1 0
0 0 4
0 0 0 𝑥
h ( x , y , z ) = ( x , y , z ) (0 1 0) (𝑦)= x 2 + 4 z 2
0 0 4 𝑧
>> rank(J)
ans =
LIMITES DE SUCESIONES Y
FUNCIONES. CONTINUIDAD.
UNA Y VARIAS VARIABLES
LIMITES
MATLAB incorpora funciones que permiten trabajar con límites y con
límites laterales. Esto posibilita, además del cálculo de los propios límites de
sucesiones y funciones, analizar la continuidad y derivabilidad de funciones, así
como analizar el carácter de las series numéricas y series de potencias. La tabla
siguiente presenta las funciones más habituales de MATLAB relativas a límites.
>> syms X a
limit((x-l)/(x^(1/2)-1),X,1)
ans =
2
limit(función, a) Calcula el límite de la función de variable x, indicada
por su expresión analítica, cuando la variable x
tiende hacia el valor a
>> l i m i t ( ( x - 1 ) /(x^(1/2)-1),1)
ans =
2
limit(función,x,a,’right’) Calcula el límite de la función de variable x, indicada
por su expresión analítica, cuando la variable x
tiende al valor a por la derecha
>> syms x
limit((exp(1/x)),X,0, 'right')
ans =
Inf
limit(función,x,a,’left’) Calcula el límite de la función de variable x, indicada
por su expresión analítica, cuando la variable x
tiende al valor a por la izquierda
>> l i m i t ( ( e x p ( 1 / x ) ) , x , 0 , ' l e f t ' )
ans =
0
3+𝑛 𝑛 3+𝑛 𝑛 𝑛 1
3 3
− √𝑛 + √1+𝑛 𝑛!
lim ( ) , lim ( ) , lim √ , lim , lim
𝑛→∞ −1+𝑛 𝑛→∞ −1+𝑛 𝑛 −√𝑛+√1+𝑛 𝑛𝑛
𝑛→∞ 𝑛→∞ 𝑛→∞
>> syms n
ans =
exp(4)
ans =
1/exp(2)
ans =
ans =
ans =
0
En el último límite se ha utilizado la fórmula de Sterling para aproximar el factorial.
n !≈ e - n √2π n
|𝑥| 𝑥−1 𝑥
lim , lim |𝑥 2 − 𝑥 − 7| , lim , lim √𝑒
𝑠𝑒𝑛(𝑥) 𝑥→3 𝑥 𝑛 −1 𝑥→0
𝑥→1 𝑥→1
>> limit(abs(x)/sin(x),x,0)
ans =
NaN
>> syms x
>> limit(abs(x)/sin(x),x,O)
ans =
NaN
>> limit(abs(x)/sin(x),x,0,'left')
ans =
-1
>> limit(abs(x)/sin(x),x,0,'right')
ans =
ans =
284 MATLAB A TRAVÉS DE EJEMPLOS
>> limit((x-l)/(x^n-1),x,1)
ans =
1/n
>> limit(exp(1)^(1/x),x,0)
ans =
NaN
>> limit(exp(l)^(l/x),x,0,'left')
ans =
>> limit(exp(l)^(l/x),x,0,'right')
ans =
Inf
SUCESIONES DE FUNCIONES
MATLAB permite utilizar los comandos sobre límites de sucesiones y
funciones vistos en la tabla anterior para estudiar la convergencia de sucesiones de
funciones.
>>
fplot ('[(x^2+x),(x^2+2*x)/2, (x^2+3*x)/3,(x^2+4*x)/4, (x^2+5*x)/5, (x^2+
5*x)/5, (x^2+6*x)/6, (x^2+7*x)/7, (x^2+8*x)/8, (x^2+9*x)/9]', [-2,2,-2,2])
CAPÍTULO 7: LÍMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 285
>> limit((x^2+n*x)/n,n,inf)
ans =
X
ans =
CONTINUIDAD
El cálculo de límites es una herramienta necesaria para abordar el concepto de
continuidad. Formalmente una función f se dice continua en el punto x=a si se
verifica:
Lim f (x) = f(a)
x→ a
En otro caso, se dice discontinua en el punto. Es decir, que para que una
función sea continua en x=a, la función/ha de estar definida, ha de existir el límite
(finito) de f en el punto x=a y el valor del límite ha de coincidir con el valor de la
función en el punto. Si existe el límite de f(x) cuando x→a, pero es distinto de f(a) (o
f(a) no está definida), f es discontinua en x=a, y se dice que f presenta una
discontinuidad evitable en x=a. La forma de evitar la discontinuidad es redefinir f(a)
convenientemente.
Si existen los dos límites laterales de f en x=a (finitos o infinitos), pero son
distintos, entonces la discontinuidad de f en x=a se denomina de primera especie. La
diferencia entre los valores de los dos límites laterales distintos se llama salto. Si la diferencia es
finita, se dice que la discontinuidad es de primera especie con salto finito. Si la
diferencia es infinita, se dice que la discontinuidad es de primera especie de salto
infinito. Si alguno de los límites laterales no existe, se dice que la función es
discontinua de segunda especie.
CAPÍTULO 7: LÍMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 287
ans =
sin(a)/a
>> limit(sin(x)/x,x,O)
ans =
1
Por lo tanto, la función f(x)=Sen(x)/x presenta una discontinuidad evitable en
x=0, que se evita definiendo f(0)=1. En el resto de los puntos reales la función es
continua. La gráfica de la función corrobora estos resultados.
>> fplot('sin(x)/x',[-6*pi,6*pi])
C o mo s e gu n d o ej e mp l o s e co mp ru eb a q u e l a f u n ci ó n f (x ) = x√e n o es
continua en el punto x = 0 ya que los límites laterales no coinciden (uno es cero y el
otro infinito).
288 MATLAB A TRAVÉS DE EJEMPLOS
>> syms x
>> limit((exp(1/x)),x,0,'right')
ans =
inf
ans =
>> syms x a
>> limit(sin(1/x),x,a)
ans =
sin(1/a)
ans =
limit(sin(1/x), x = 0)
>> limit(sin(1/x),x,0,'left')
ans =
NaN
>> limit(sin(1/x),x,0,'right')
ans =
NaN
Vemos que en x=0 no existe el límite, ni existe el límite por la izquierda, ni
existe el límite por la derecha. Luego, la función presenta una discontinuidad de
segunda especie en x=0. La representación gráfica corrobora este resultado.
>> fplot('sin(l/x)',[-pi/6,pi/6])
CAPÍTULO 7: LÍMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 289
1+𝑛 1 2𝑛 𝑛
lim [ 𝑛
, (1 + 𝑛) , 2𝑛−1]
𝑛→∞
>> syms n
>> V=[limit((n+1)/n,inf),limit((1+1/n)^(2*n),inf),limit(n/(2*n -l),inf)]
V =
[ 1, exp(2), 1/2]
Como segundo ejemplo calculamos el límite siguiente;
𝑛 𝑛 𝑛 1
𝑛 1 + 𝑛2
lim [ √ , √ , √5𝑛 , ]
𝑛→∞ 1+ 𝑛2 𝑛 𝑛2
VI =
[ 1, 1, 1, 1]
Como tercer ejemplo calculamos lim f(x) para la función f:R→ R 2 definida
x→0
por:
𝑠𝑒𝑛(𝑥) 𝑥
f(x) = , √1 + 𝑥
𝑥
>> syms X
>> V3= [limit(sin(x)/x,x,0),limit((1+x)^(1/x),x,0)]
V3 =
[1, exp(l)]
definida por:
[ 2, e x p ( 1 ) - 1 ]
CAPITULO 7: LÍMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 291
Una condición necesaria para que una función de varias variables tenga
limite en un punto, es que todos los límites iterados tengan el mismo valor (el valor
del limite de la función, si éste existe). También puede ocurrir que la función tenga
limite direccional según la dirección de varias curvas, que dicho límite sea distinto
para distintas curvas, o bien que no exista para alguna de ellas.
Otra condición necesaria para que una función de varias variables tenga
límite en un punto es que todos los límites direccionales, según las direcciones de
todas las curvas, tengan el mismo valor (el valor del límite de la función, si éste
existe). Por lo tanto, para demostrar que una función no tiene límite basta ver que los
límites iterados no existen, o si existen, no son iguales. Tampoco la función tendrá límite
si algún límite direccional no existe o si existen límites distintos para direcciones
distintas. Otro procedimiento práctico para calcular el límite de una función de varias
variables consiste en cambiar las variables cartesianas por variables polares, para
facilitar así las operaciones.
>> syms x y
>> limit(limit((x*y)/(x^2+y^2),x,0),y,0)
ans =
0
>> limit(limit((x*y)/(x^2+y^2),y,0),x,0)
ans =
0
292 MATLAB A TRAVÉS DE EJEMPLOS
m/(1+m^2)
Se observa que los límites direccionales dependen del parámetro m, con lo
que serán distintos para distintos valores de m (para las distintas rectas consideradas).
Luego, se concluye que la función no tiene límite en (0,0).
C o mo s e gu n d o ej e mp l o h al l a mo s l i m f ( x, y) p ar a l a f u n ci ó n f : R 2 → R
(x, y)→ (0,0)
definida por:
(𝑦 2 −𝑥 2 )2
f(x,y)
𝑥 2 +𝑦 4
>> syms x y
>> limit (limit((y^2-x^2)^2/(y^4+x^2),x,0),y,0)
CAPITULO 7: LÍMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 293
ans =
>> limit(limit((y^2-x^2)^2/(y^4+x^2),y,0),x,0)
ans =
0
Como los límites iterados son distintos, se concluye que la función no tiene límite
en el punto (0,0).
>> limit(limit((x^2+2*y),x,1),y,2)
ans =
>> limit(limit((x^2+2*y),y,2),x,1)
ans =
5
ans =
a^2 + 2*b
>> limit(limit((x^2+2*y),y,b),x,a)
ans =
a^2 + 2*b
>> f='x^2+2*y'
f =
x^2+2*y
>> subs(f,{x,y},{a,b})
ans =
a^2 + 2*b
Hemos visto que los límites iterados coinciden y su valor coincide con el
valor de la función en el punto genérico ( a,b) de R 2 , es decir, l i m f ( x, y )
(x,y)→(0,0)
ans =
16/81
>> limit((3*n^3+7*n^2+l)/(4*n^3-8*n+5),n,inf)
ans =
3/4
ans =
1/2
1
296 MATLAB A TRAVÉS DE EJEMPLOS
x−√2+𝑥 𝑥 [sen[(ax)2 ] e𝒙 −1
lim ,lim √1 + 𝑥 ,lim ,lim
x→2 −3+√1+4𝑥 x→0 x→0 5−8𝑛+4𝑛3 x→0 log(1+x)
Inicialmente, tenemos dos indeterminaciones del tipo 0/0 y una de la forma 1∞.
>> syms x
ans =
9/8
>> limit((1+x)^(1/x))
ans =
exp (1)
ans =
a^2
>> limit((exp(1)^x-1)/log(1+x))
ans =
log(3060513257434037/1125899906842624)
>> vpa(limit((exp(1)^x-1)/log(1+x)))
ans =
1. 0000000000000001101889132838495
𝑥𝑛
g n (x) = (1+𝑥𝑛 ) x > 0
ans =
0.5 si x = 1
f(x) = 1 si x>1
0 si 0 < x < 1
(𝑦 2 −𝑥)2
f(x,y) =
𝑥 2 +𝑦 4
ans =
1
298 MATLAB A TRAVÉS DE EJEMPLOS
>> limit(limit((y^2-x)^2/(y^4+x^2),x,0),y,0)
ans =
Hemos visto que los límites iterados son iguales. A continuación, calculamos
los límites direccionales según la familia de rectas y=mx:
>> limit(((m*x)^2-x)^2/((m*x) ^4+x^2),x,0)
ans =
>> limit(((m*x)-x)^2/((m*x)^2+x^2),x,0)
ans =
(m - 1)^2/(m^2 + 1)
(𝑥)2 𝑦
f(x,y)= (𝑥)2 +𝑦 2
ans =
>> limit(limit((x^2*y)/(x^2+y^2),x,0),y,0)
ans =
>> limit(((x^2)*(m*x))/(x^2+(m*x)^2),x,0)
ans =
ans =
0
Vemos que los límites iterados y los límites direccionales según las direcciones
de rectas y parábolas coinciden y valen todos cero. Ello nos lleva a sospechar que el
límite de la función puede ser cero. Para corroborarlo, transformamos la función a
coordenadas polares y hallamos el límite en polares:
>> syms a r;
>>limit(limit(((r^2)*(cos(a)^2)*(r)*(sin(a)))/((r^2)*(cos(a)^2)+(r^2)
* (sin(a)^2)),r,0),a,0)
ans =
0
Se concluye por tanto que el límite es cero en el punto (0,0).
Este es un ejemplo en el que como último recurso se ha utilizado la
transformación a coordenadas polares. Se han usado como direcciones familias de rectas y
parábolas, pero podrían usarse otras. El cambio a polares resulta crucial a la hora de
determinar límites de funciones de varias variables. Como se observa, hay criterios
suficientes para ver que una función no tiene límite en un punto. Pero, sin embargo, no
tenemos condiciones necesarias y suficientes para garantizar la existencia de dicho límite.
(𝑥−1)2 𝑦 2
f(x,y)= (𝑥−1)2 +𝑦 2
>> syms x y m a r
ans =
0
>> limit(limit(y^2*(x-1)^2/(y^2+(x-1)^2),y,0),x,0)
ans =
>> limit((m*x)^2*(x-1)^2/((m*x)^2+(x-1)^2),x,0)
ans =
ans =
0
300 MATLAB A TRAVÉS DE EJEMPLOS
ans =
0
El límite vale cero en el punto (1,0). A continuación se grafica la superficie,
y se observa la tendencia a 0 en un entorno de (1,0):
1
f(x,y)= 𝑥 si x ≠ 0 y f(x) = 1 si x = 0
1+ √𝑒
El único punto problemático es x=0. Ahora, la función sí existe en x=0 (vale 1).
Vamos a intentar hallar los límites laterales cuando x→0:
>> syms x
>> limit(1/(1+exp(1/x)),x,0,'right')
ans =
0
>> limit(1/(1+exp(1/x)),x,0,'left')
War ning: Could not attach the property of being close to the limit
point to limit variable
[limit]
CAPÍTULO 7: LÍMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 301
ans =
1
Figura 14-10
>> limit(limit((1-cos(x))*sin(y)/(x^3+y^3),x,0),y,0)
ans =
>> limit(limit((1-cos(x))*sin(y)/(x^3+y^3),y,0),x,0)
ans =
0
>> syms m
ans =
m/(2*(m^3 + 1))
302 MATLAB A TRAVÉS DE EJEMPLOS
>> syms x y a b m
ans =
ans =
ans =
ans =
-(sin(a)*(cos(a) - l))/(2*a^3)
>> f=(1-cos(x))*sin(y)/(x^3+y^3)
f =
>> subs(f,{x,y},{a,a})
ans =
- (sin(a)*(cos(a) - 1))/(2*a^3)
La función puede ser continua en puntos del tipo (a,a). Faltaría ver que los
límites direccionales no dependen de ninguna dirección pasando la curva a
coordenadas polares.
CAPITULO 7: LIMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD... 303
>> ezsurf((1-cos(x))*sin(y)/(x^3+y^3),[10,100,10,100])
304 MATLAB A TRAVÉS DE EJEMPLOS
CAPITULO 8
syms x;
symsum(x^k/sym('k!') , k, 0, inf)
» symsum(k^2,k)
ans =
k^3/S - k^2/2 + k/6
r = symsum(S) Suma la serie S respecto de su variable simbólica
k (determinada por findsym) desde 0 hasta k-1
» r=symsum(k^2)
r =
k^3/3 - k^2/2 + k/6
306 MATLAB A TRAVÉS DE EJEMPLOS
» syms k n
>> symsum(k,0,n-1)
ans =
(n*(n - 1)) /2
𝑎(𝑛+1)
∑∞
𝑛=1 𝑎(𝑛) es convergente si lim <1
𝑛→∞ 𝑎(𝑛)
𝑎(𝑛+1)
∑∞
𝑛=1 𝑎(𝑛) es divergente si lim >1
𝑛→∞ 𝑎(𝑛)
En caso de que el límite sea 1, no se puede asegurar nada acerca del sentido
de la convergencia de la serie.
𝑛
Como primer ejemplo analizamos la convergencia de la serie ∑∞
𝑛=1 2𝑛
𝑎(𝑛+1)
Mediante el criterio del cociente calculamos lim
𝑛→∞ 𝑎(𝑛)
>> syms n
» f='n/2^n'
f =
n/2^n
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
1/2
» syms n k
ans =
2 - (2*(k + 1))/2^k
>> symsum(n/2^n,0,inf)
ans =
𝑛
∑∞
𝑛=0 = 2
2𝑛
𝑛𝑛
Como segundo ejemplo analizamos la convergencia de la serie ∑∞
𝑛=1 𝑛!
𝑎(𝑛+1)
Mediante el criterio del cociente calculamos lim
𝑛→∞ 𝑎(𝑛)
>> syms n
>> f=n^n/sym('n!')
f =
n^n/factorial(n)
>> limit(subs(f,n+^1)/subs(f,n),inf)
ans =
exp(1)
𝑎(𝑛+1)
∑∞
𝑛=1 𝑎(𝑛) es convergente si lim [𝑛 (1 − )] > 1
𝑛→∞ 𝑎(𝑛)
𝑎(𝑛+1)
∑∞
𝑛=1 𝑎(𝑛) es divergente si lim [𝑛 (1 − )] < 1
𝑛→∞ 𝑎(𝑛)
En caso de que el límite sea 1, no se puede asegurar nada acerca del sentido
de la convergencia de la serie.
1+𝑛
Como ejemplo hallamos el carácter de la serie ∑∞
𝑛=1 𝑛(2+𝑛)(3+𝑛)
>> syms n
» f='(1+n)/(n*(2+n)*(3+n))'
f =
(1+n)/(n*(2+n)* (3+n))
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
ans =
ans =
17/36
CAPÍTULO 8: SERIES NUMÉRICAS, SERIES DE POTENCIAS Y DESARROLLOS EN SERIE 309
Criterio de la raíz
El criterio de la raíz o criterio de Cauchy también mejora el criterio del
cociente y a veces el criterio de Raabe para analizar la convergencia de una serie. En
caso de obtener límite 1 en el criterio del cociente u otro criterio semejante, puede
utilizarse el criterio de la raíz, que dice lo siguiente:
𝑛
∑∞
𝑛=1 𝑎(𝑛) es convergente si lim √𝑎(𝑛) < 1
𝑛→∞
𝑛
∑∞
𝑛=1 𝑎(𝑛) es divergente si lim √𝑎(𝑛) > 1
𝑛→∞
En caso de que el límite sea 1, no se puede asegurar nada acerca del sentido
de la convergencia de la serie.
5
Como primer ejemplo analizamos el carácter de la serie ∑∞
𝑛=1 2𝑛
>> syms n
>> limit((5/2^n)^(1/n),inf)
ans =
1/2
» f='5/2^n'
f =
5/2^n
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
1/2
>> limit(n*(1-subs(f,n+1)/subs(f,n)),inf)
310 MATLAB A TRAVÉS DE EJEMPLOS
ans =
Inf
» limit((5/2^n)^(1/n),inf)
ans =
1/2
>> symsum(5/2^n,1,inf)
ans =
ans =
tan (p)
Luego, para valores de p tales que tan(p)<1 la serie converge. Dichos valores
cumplen 0<p<Pi/4. Y para valores de p tales que Tan(p)>1 la serie diverge. Dichos
valores cumplen Pi/4<p<Pi/2. MATLAB no ofrece el resultado exacto ni el
aproximado de la suma de esta serie.
>> simplify(symsum(tan(p+q/n),n,1,inf))
ans =
El criterio de mayoración de Gauss dice que toda serie mayorada por una
convergente es convergente (an es mayorada por b„ si an < b n para todo n). Además,
toda serie minorada por una divergente es divergente ( an es minorada por hn si a„ >
b„ para todo n).
f =
1/(1+n^ (1/2))^2
>> limit(n*(1-subs(f,n+1)/subs(f,n)),inf)
ans =
1
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
1
Se observa que todos los límites son 1. Luego, de momento no puede asegu-
rarse nada acerca de la convergencia de la serie.
>> limit(subs(f,n)/(1/n),inf)
ans =
1
Como el límite es mayor que cero, la serie inicial es también divergente, y no
es sumable.
>> limit(subs(f,n)^l/n,inf)
ans =
>> f='1/(n*log(n))'
f =
1/(n*log(n))
>> 2^n*subs(f,2^n)
ans =
l/log(2^n)
Entonces nuestra serie tiene el mismo carácter que la serie de término general
1/(nlog(2)), que está minorada por la serie armónica divergente de término general
1/n ya que:
1 1
𝑛𝑙𝑜𝑔(2)
>𝑛
∞
(−1)1+𝑛
∑
1 + 2𝑛2
𝑛=1
» f='abs((-l)^(l+n)/(l+2*n^2))'
f =
314 MATLAB A TRAVÉS DE EJEMPLOS
abs(( - 1) ^ (l+n)/(l+2*n^2))
>> limit(subs(f,n)/(l/n^2),inf)
ans =
1/2
Como el límite es mayor que cero, la serie de términos positivos considerada
es convergente, luego, la serie inicial es absolutamente convergente y, por lo tanto,
convergente.
1
Haciendo a(n) = (- l)1+n y b ( n ) = , tenemos que ∑ a ( n ) tiene las sumas parciales
𝑛
acotadas y que { b ( n ) } es monótona decreciente con límite 0.
SERIES DE POTENCIAS
∑ a(n)x n
(4)2𝑛
∑∞𝑛=1 (x-3)n
𝑛+2
f =
(4^(2*n))*((x-3)^n)/(n+2)
ans =
16*x - 48
La serie será convergente cuando |16 x - 48| < 1. Para hallar los valores
extremos del intervalo de convergencia resolvemos las ecuaciones siguientes;
>> [solve('16*x-4 8=l'),solve('16*x-48=-l')]
ans =
[ 49/16, 47/16]
g1 =
1/(n + 2)
1
Tenemos que analizar la serie numérica de términos positivos ∑∞𝑛=1
𝑛+2
Observamos que los criterios del cociente y de Raabe dan límite 1 y por lo
tanto hay que utilizar otro criterio alternativo
>> limit(simplify(subs(g1,n+1)/subs(g1,n)), n, inf)
ans =
316 MATLAB A TRAVÉS DE EJEMPLOS
>> limit(n*(1-subs(g1,n+1)/subs(g1,n)),inf)
ans =
1
Vamos a aplicar el criterio de comparación de segunda especie, comparando la
serie del problema con la armónica divergente de término general 1/n:
>> limit(subs(g1,n)/(1/n),inf)
ans =
92 =
(-l)^n/(n + 2)
−1𝑛
Tenemos que analizar la serie alternada ∑∞
𝑛=1 𝑛+2
Por el criterio de Dirichlet, la serie de término general (-1)n tiene sus sumas
parciales acotadas, y la sucesión de término general 1/(n+2) es decreciente hacia 0.
Luego, la serie alternada converge. El intervalo de convergencia de la serie de potencias
ha resultado ser [47/16, 49/16).
>> syms X
» f=sinh(x)
f =
sinh(x)
>> taylor(f,13)
ans =
318 MATLAB A TRAVÉS DE EJEMPLOS
» syms x
» f=1/(1+x)
f =
1/(x + 1)
>> pretty(taylor(f,6,2))
2 3 4 5
(x - 2) x (x - 2) (x - 2) (x - 2) 5
------- - - - -------- + -------- - ---------- + -
27 9 81 243 729 9
𝑛𝑛 (3+2𝑛)
∑∞
𝑛=1 ∑∞
𝑛=1
3𝑛 𝑛! 7𝑛 (1+𝑛)
f =
n^n/ (3^n*factorial(n))
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
exp(1)/3
El límite es menor que 1, con lo que la serie resulta ser convergente. Por lo
tanto podemos intentar calcular su suma exacta como sigue:
>> vpa(simplify(symsum(f,1,inf)))
ans =
1.6250941822939141659377675737628
f =
CAPITULO 8: SERIES NUMÉRICAS, SERIES DE POTENCIAS Y DESARROLLOS EN SERIE 319
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
1/7
ans =
0.38339728069096678282849845975009
>> syms n;
>> p=sym('p','real');
» f=n/p^n
f =
n/p^n
>> limit(subs(f,{n},{n+1})/subs(f,{n},{n}),n,inf)
ans =
1/p
ans =
>> vpa(simplify(limit(subs(f,{n},{n+1})/subs(f,{n},{n}),n,inf)))
ans =
1/p
Luego, si p > 7, la serie converge, si p < 7, la serie diverge y si p=1, obtenemos
la serie de término general n, que diverge. Cuando p es mayor que 1, hallamos la suma
de la serie:
>> vpa(simplify(symsum(f,1,inf)))
ans =
numeric::sum(factorial(n + p)/(p^(1.0*n)*factorial(p)),
p = 1..Inf)/factorial(n)
Luego, s i p > 1 las dos series convergen y si p < l las series divergen. La
primera serie tiene suma, pero la segunda no.
>> syms n
» f=(l+l/n)^(-n^2)
f =
1/(1/n + 1)^(n^2)
>> limit(subs(f,n+l)/subs(f,n),inf)
ans =
1/exp (1)
ans =
0.81741943329783346091309999437311
Vamos a aplicar el criterio del cociente a la segunda serie:
» f=(((n+1)/n)^(n+1)-(n+1)/n)^(-n)
CAPÍTULO 8: SERIES NUMÉRICAS, SERIES DE POTENCIAS Y DESARROLLOS EN SERIE 321
f =
>> limit(subs(f,n+1)/subs(f,n),inf)
ans =
l/(exp(l) - 1)
1.1745855750875866746226188496682
f =
(n^(l/n) - l)^n
ans =
0
Como el límite es menor que 1, la serie es convergente y sumable. La suma
se calcula de la forma siguiente:
>> vpa(symsum(f,1,inf))
ans =
0.29759749220552960849982457076294
>> limit(subs(f,n)^(1/n),inf)
ans =
exp(1)
ans =
>> limit(subs(f,n+l)/subs(f,n),inf)
ans =
>> limit(n*(1-subs(f,n+1)/subs(f,n)),inf)
ans =
Los criterios de la raíz y del cociente no nos dicen nada, pero el de Raabe ya
nos asegura la convergencia (límite mayor que 1). Por lo tanto, la serie es sumable.
>> vpa(symsum(f,1,inf))
ans =
6.522882114579748712610480224049
ans =
∑∞ ∞ 𝑛 𝑛
𝑛=1 𝑎(𝑛) y ∑𝑛=1[2 𝑎(2 )] tienen el mismo carácter.
f =
1/ (n*log(n)^p)
1
-------
n p
log(2 )
Cuando p < 1 , esta serie está minorada por la serie divergente armónica de
término general = 1 / n p . Luego, diverge, y la inicial también.
Cuando p > l , esta serie está mayorada por la serie convergente armónica de
término general np = 1 / n p . Luego, converge, y la inicial, también.
f =
1/(n*log(n))
>> pretty((2^n)*subs(f,{n},{2^n}))
1
-------
n
log(2 )
324 MATLAB A TRAVÉS DE EJEMPLOS
Como esta serie está minorada por la armónica divergente de término general
1/n, entonces diverge. Y la inicial también diverge.
Haciendo:
n
a(n) =−11+𝑛 y b (n ) = (1+n)2
tenemos que ∑ a(n) tiene las sumas parciales acotadas y que { b ( n ) } es monótona
decreciente con límite 0.
f =
n/ (n + x)^2
» limit(n*(1-subs(f,n+l)/subs(f,n)),inf)
ans =
>> limit(subs(f,n+l)/subs(f,n),inf)
ans =
ans =
ans =
Inf
f =
>> vpa(symsum(f,1,inf))
ans =
-0.12931985286416790881897546186484
∞
1
∑ 𝑥 2𝑛−1
(−5)𝑛
𝑛=0
f =
x^(2*n + 1)/(-5)^n
>> limit(subs(f,{n},{n+1})/subs(f,{n},{n}),n,inf)
ans =
-x^2/5
>> pretty(simplify(subs(f,{x},{sqrt(5)})))
1/2
5
-----
n
(-1)
>> pretty(simplify(subs(f,{x},{-sqrt(5)})))
n 1/2
-(-1) 5
326 MATLAB A TRAVÉS DE EJEMPLOS
f =
log(x + 1)
>> pretty(taylor(f))
5 4 3 2
X X X X
- - - + - - -- + x
5 4 3 2
>>pretty(taylor(f,8))
7 6 5 4 3 2
X X X X X X
-- - -- + -- - -- + -- - -- + x
7 6 5 4 3 2
» f=1/(2-x)
f =
-1/(x - 2)
» pretty(taylor(f,7,1))
2 3 4 5 6
X + (x - 1) + (x - 1) + (x - 1) + (X - 1) + (x - 1)
>> f=sin(x);
>> pretty(taylor(f,8,pi))
3 5 7
(pi - x) (pi - x) (pi - x)
pi - X - --------- + --------- - ---------
5 120 5040
DERIVADAS
MATLAB permite trabajar con derivadas a través de un grupo de
comandos que habilita especialmente para esta tarea tan importante en el mundo
del cálculo y sus aplicaciones. La derivada de una función real en un punto mide el
índice instantáneo de cambio de esa función en un entorno del punto; es decir,
cómo cambia la variable dependiente como consecuencia de un pequeño cambio de
la variable independiente. Geométricamente, la derivada de una función en un
punto representa la pendiente de la tangente a dicha función en el punto. El origen
de la idea de derivada proviene precisamente del intento de trazar la recta tangente
en un punto dado a una curva dada.
La función f(x) definida en un entorno del punto x=a se dice derivable en a
si existe:
𝑓(𝑎+ℎ)−𝑓(𝑎)
lim = f ´(a)
ℎ→∞ ℎ
>> syms x
>> syms x
>> diff(sin(x^2),x,2)
ans =
2*cos(x^2) - 4*x^2*sin(x^2)
R = jacobian(w,v) Halla la matriz jacobiana de w respecto de v
>> syms x y z
>> jacobian( [x*y*z; y; x+z],[x y z])
ans =
[ y*z, x*z, x*y]
[ 0, 1, 0]
[ 1, 0, 1]
Y = diff(X) Calcula las diferencias entre elementos adyacentes del vector X:
[X(2)-X(1), X(3)-X(2), X(n)-X(n-1)]. S i X e s una matriz
(m,n), diff(X) devuelve la matriz de diferencias por filas:
[X(2:m,:)-X(1:m-1:)]
x = [1 2 3 4 5 ] ;
y = diff(x)
y =
1 1 1 1
x = [1 2 3 4 5 ] ;
z = diff(x,2)
z =
0 0 0
Como primer ejemplo consideramos la función f(x)= -3x4 -11x3 + 27x2+ 10x-24
y representamos su función derivada en el intervalo [-4,5].
>> x=-4:0.1:5;
>> f=x.^5-3*x.^4-11 *x.^3+27*x.^2+10*x-24;
>> df=diff(f)./diff(x);
>> plot(x,f)
2 cot (2 x)
>> f='l/x^2'
f =
l/x^2
330 MATLAB A TRAVÉS DE EJEMPLOS
>> [diff(f),diff(f,2),diff(f,3),diff(f,4)]
ans =
[ -2/x^3, 6/x^4, -24/x^5, 120/x^6]
DERIVADAS PARCIALES
Los comandos que aporta MATLAB para la derivabilidad vistos
anteriormente, pueden utilizarse para realizar la derivación parcial.
>> syms x y
>> f=sin(x*y)+cos(x*y^2)
f =
sin(x*y)+cos(x*y^2)
>> diff(f,x)
ans =
cos (x*y)*y-sin(x*y^2)*y^2
>> diff(f,y)
ans =
cos(x*y)*x-2*sin(x*y^2)*x*y
>> diff{diff(f,x),x)
ans =
-sin(x*y)*y^2-cos(x*y^2)*y^4
>> diff(diff(f,y),y)
ans =
-sin(x*y)*x^2-4*cos(x*y^2)*x^2*y^2-2*sin(x*y^2)*x
>> diff(diff(f,x),y)
ans =
-sin(x*y)*x*y+cos(x*y) -2*cos(x*y^2)*x*y^3-2*sin(x*y^2)*y
>> diff(diff(f,y),x)
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 331
ans =
-sin(x*y)*x*y+cos (x*y)-2*cos(x*y^2)*x*y^3-2*sin(x*y^2)*y
>> diff(diff(diff(diff(f,x),x),y,y))
ans =
sin(x*y)*y^3*x-3*cos(x*y)*y^2 +2*cos(x*y^2)*y^7*x+6*sin(x*y^2)*y^5
Las tangentes horizontales para las que x 0 → ∞ son las asíntotas horizontales
de la curva y=f(x). Su ecuación será y=f(x 0), cuando x0 → ∞.
Las tangentes verticales para las que f(x 0) → ∞ son las asíntotas verticales de
la curva y=f(x). Su ecuación será x=x 0 , siendo x 0 un valor tal que lim f(x) = ∞.
x→x0
Las asíntotas oblicuas de la curva y=f(x) en el punto x=x 0 tienen la ecuación
y=mx+n, donde
y
m = lim — y n = lim(y - mx)
X→ ∞ x x→ ∞
𝑥3
f(x) =
𝑥 2 −1
>> f = ' x ^ 3 / ( x ^ 2 - 1 ) ’
f =
x^3/(x^2-1)
ans =
NaN
Por lo tanto, no hay asíntotas horizontales. Para ver si las hay verticales,
analicemos los valores de x que hacen y infinito:
>> solve('x^2-1')
ans =
[ 1]
[-1]
Las asíntotas verticales serán las rectas x=1 y x = - 1 . Veamos ahora si existen
asíntotas oblicuas:
>> limit (x^3/(x^2-1) /x,X , inf)
ans =
CAPITULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 333
ans =
0
La recta y = x es la asíntota oblicua. Ahora, se analizarán los máximos y
mínimos, puntos de inflexión e intervalos de crecimiento y concavidad:
>> solve(diff(f))
ans =
[ 0]
[ 0]
[ 3^( 1 / 2 )]
[ -3^(l/2)]
ans =
0 2.5981 -2.5981
>> [numeric(subs(f,sqrt(3))),numeric(subs(f,-sqrt(3)))]
ans =
2.5981 -2.5981
Por lo tanto, el punto máximo es (-√3, -2.5981) y el punto mínimo es (√3, 2.5981).
ans =
[ 0]
[ i*3^(1/2)]
[-i*3^(1/2)]
>> subs(diff(f,3),0)
ans =
-6
La curva será creciente cuando y’> 0, es decir, en los intervalos definidos por
(-∞,-√3) y (√3,∞).
La curva será decreciente cuando y’< 0, es decir, en los intervalos definidos por
( - √ 3 , - l ) , (-1,0), ( 0 , 1 ) y ( 1 , √3).
>> pretty(simple(diff(f,2)))
2
x( x + 3)
2 --------------
2 3
(X - 1)
La curva será cóncava cuando y”>0, es decir, en los intervalos (-1,0) y (1, ∞).
La curva será convexa cuando y”< 0, es decir, en los intervalos (0,1) y (- ∞,-1).
La curva tiene tangentes horizontales en los tres puntos que anulan la primera
derivada. Las ecuaciones de las tangentes horizontales son y=0, y=2.5981 e y=-2.5981.
>> fplot('[x-3/(x-2-1),x,2.5981,-2.5981]',[-5,5,-5,5])
336 MATLAB A TRAVÉS DE EJEMPLOS
𝜕𝑓 𝑓(𝑎+ℎ,𝑏)−𝑓(𝑎,𝑏)
(a,b) = lim
𝜕𝑥 ℎ→∞ ℎ
𝜕𝑓 𝑓(𝑎,𝑏+ℎ)−𝑓(𝑎,𝑏)
(a,b) = lim
𝜕𝑦 ℎ→∞ ℎ
𝝏𝒇 𝝏𝒇 𝝏𝒇
(𝐷𝒇)𝒗 = ( , ,…, )∙(v1 ,v 2,...,v n) =(𝛁𝒇) · 𝑣
𝝏𝒙𝟏 𝝏𝒙𝟐 𝝏𝒙𝒏
𝜕𝑓 𝜕𝑓 𝜕𝑓
(∇𝑓) = ( , ,…, ) se denomina vector gradiente de f
𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 337
𝝏𝒇 𝝏𝒇 𝝏𝒇
(𝐷𝒇)𝒗 = ( 𝑑𝑥1 + 𝑑𝑥2 + ⋯ + 𝑑𝑥𝑛 )
𝝏𝒙𝟏 𝝏𝒙𝟐 𝝏𝒙𝒏
>> syms x y z
an s =
2*z - y - x
diff(f(x,y,z,...),x,n) Derivada parcial enésima de f respecto a x
ans =
2
diff(f(x1,x2,x3,...),xj) Derivada parcial de f respecto a xj
ans =
X + 2*y - z
diff(f(x1,x2,x3,...),xj,n) Derivada parcial enésima de f respecto a xj
ans =
2
diff(diff(f(x,y,z,...),x),y)) Derivada parcial de f respecto a x y a y sucesivamente
ans =
2xy
f(x,y) = s i ( x , y ) ≠ (0,0) y f(0,0) = 0
√x2 +y2
>> syms X y
>> pretty(simplify(diff ((2*x*y)/(x^2+y^2)^(1/2),x)))
3
2 y
-------
3
-
2
2 2
(x + y)
ans =
NaN
ans =
0
El límite de la derivada parcial no existe en (0,0), luego se concluye que la
función no es diferenciable.
ans =
>> limit(limit((2*x*y)/(x^2+y^2)^(l/2),y,0),x,0)
ans =
0
CAPITULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 339
>> limit((2*x*(m*x))/(x-2+(m*x)-2)-(1/2),x,0)
ans =
>> limit(subs(f,{x,y},{r*cos(a),r*sin(a)}),r,0)
ans =
0
Los límites iterados y los direccionales valen todos cero, y al cambiar la
función a coordenadas polares, el límite en el origen resulta ser cero, que coincide
con el valor de la función en el origen.
Hemos visto un ejemplo de función continua no diferenciable.
1
f(x,y,z) =
√𝑥 2 +𝑦 2 +𝑧 2
verifica la ecuación:
𝜕2 𝑓 𝜕2𝑓 𝜕2 𝑓
+ + =0
𝜕𝑥 2 𝜕𝑦 2 𝜕𝑧 2
>> syms x y z
>> f=1/(x^2+y^2+z^2)^(1/2)
f =
1 / ( x ^ 2 + y^2+ z ^ 2 ) ^ ( 1 / 2 )
>> diff(f,x,2)+diff(f,y,2)+diff(f,z,2)
ans =
(3*x^2)/(x^2 + y^2 + z^2)^(5/2) - 3/(x^2 + y^2 + z^2)^(3/2) +
(3*y^2)/(x^2 + y^2 + z^2)^(5/2) + (3*z^2) / (x^2 + y^2 + z^2)^(5/2)
>> simplify(diff(f,x,2)+diff(f,y,2)+diff(f,z,2))
ans =
1
f(x,y,z) =
√𝑥 2 +𝑦 2 +𝑧 2
en el punto (2,1,1) según la dirección del vector v= (l,l, 0 ). Hallar también el vector
gradiente de f.
𝜕𝑓 𝜕𝑓 𝜕𝑓
(𝑫𝑓)𝑣 = ( , , … , )∙(v1,v2,...,vn) =(∇𝑓) · 𝒗
𝜕𝑥 𝜕𝑥 𝜕𝑥 1 2 𝑛
𝛛𝐟 𝛛𝐟 𝛛𝐟
(𝜵𝐟) = ( , , … , 𝛛𝐱 ) se denomina vector gradiente de f.
𝛛𝐱𝟏 𝛛𝐱𝟐 𝐧
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 341
f =
Gradiente_f =
[ -x/(x^2 + y^2 + z^2)^(3/2), -y/(x^2 + y^2 + z^2)^(3/2), -z/(x^2 +
y^2 + z^2)^(3/2)]
>> Gradiente_f_p=subs(Gradiente_f,{x,y,z},{2,l,l})
Gradiente_f_p =
>> Derivada_direccional_p=dot(Gradiente_f_p,[1,1,0])
Derivada_direccional_p =
-0.2041
𝝏𝒇 𝝏𝒇 𝝏𝒇
(𝛁𝒇) = ( , , … , 𝝏𝒙 ) se anula en el punto (a 1,a2,...,an).
𝝏𝒙𝟏 𝝏𝒙𝟐 𝒏
f ( x , y , z ) = x 2 + x y + y 2 + z2
>> syms X Y z
>> f=x-2+y-2+z-2+x*y
f =
x-2 + x*y + y-2 + z-2
z =
0
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 343
f =
>> diff(f,x)
ans =
2*x + y
>> H=simplify([diff(f,x,2),diff(diff(f,x),y),diff(diff(f,x),z);
diff(diff(f,y),x),diff(f,y,2),diff(diff(f,y),z);
diff(diff(f,z),x),diff(diff(f,z),y),diff(f,z,2)])
H =
[ 2, 1, 0]
[ 1, 2, 0]
[ 0, 0, 2]
>> def(H)
ans =
6
Hemos visto que la matriz hessiana es constante (no depende del punto en
que se aplique), por lo tanto, su valor en el origen ya está hallado. El determinante es
distinto de cero, con lo que no habrá extremos degenerados.
>> eig(H)
ans =
1
2
3
g =
Inline function:
g(t) = t^2
g =
Inline function:
g(f, theta) = sin(2*pi*f + theta)
g =
Inline function:
g(x, P1) = x^P1
3.1416
X =
3.1416
fval =
-1.0000
f =
1
x =
1.0000
>>[x,feval]=fminsearch(inline('(100*(l-x^2)^2
+ (1-x)^2)'),3)
x =
1.0000
feval =
2.3901e-007
>>[x,feval,f]=fminsearch(inline('(100*(l-x^2)^2
+ (1-x)^2)'),3)
x =
1.0000
feval =
2.3901e-007
f =
1
>>
[x,feval,f,output]=fminsearch(inline('(100*(
1-
x-2)-2+(l-x)^2)'),3)
x =
1.0000
feval =
2.39010-007
f =
1
output =
iterations: 18
funcCount: 36
algorithm: 'Nelder-Mead simplex direct
search'
message: [1x196 char]
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 347
x =
1.5708
x =
1.5708
feval =
6.12320- 017
x =
1.5708
feval =
6.1232e-017
exitflag =
1
>> [x,feval,exitflag,output] = fzero(@cos,[1
2])
x =
1.5708
feval =
6.12320- 017
exitflag =
output =
intervaliterations: 0
iterations: 5
funcCount; 7
algorithm:'bisection,
interpolation'message: 'Zero found in the
interval [1, 2]'
348 MATLAB A TRAVÉS DE EJEMPLOS
>> x = fminbnd(inline('cos(x)'),3,4)
X =
3.1416
>>[x,fval,f]=fminbnd(@cos,3,4,optimset('TolX',1e-8,...
'Display','iter'));
f ( x ) = 100(x2 - x1 2 )2 + (1-x1)2
X =
1. 00 00 1 .0 00 0
fval =
8.1777e-010
X =
3.1416
1.5708
g 2 ( x 1 , x 2, . . . , x n )=0
G 4 ( x 1 , x 2, . . . , x n )=0
350 MATLAB A TRAVÉS DE EJEMPLOS
Sean:
... H n = H
f(x,y,z) = x + z
sujeta a la restricción:
x2 + y 2 +z2 = 1
f =
x + z
>> g = x ^ 2 + y ^ 2 + z ^ 2 - l
g=
>> L=f+p*g
L =
> [x,y,z,p]=solve(diff(L,x),diff(L,y),diff(L,z),diff(L,p),x,y,z,p)
x =
-2^(1/2)/2
2^(1/2)/2
y =
2^(1/2)/2
-2^(1/2)/2
352 MATLAB A TRAVÉS DE EJEMPLOS
z =
0
0
p =
2^(1/2)/2
-2^(1/2)/2
f =
x + z
ans =
-0.7071
ans =
0.7071
>> syms x y z
ans =
>> syms x y z
>> J=jacobian([exp(x),cos(y),sin(z)],[x,y,z])
J =
354 MATLAB A TRAVÉS DE EJEMPLOS
[ exp(x), 0, 0]
[ 0, -sin(y), 0]
[ 0, 0, C O S (z)]
>> subs(J,{x,y,z},{0,-pi/2,0})
ans =
1 0 0
0 1 0
0 0 1
𝑔̅ : U ⊂ Rn→ Rm . y 𝑓 :̅ V ⊂ Rn→ RP ,
D(𝑓 ̅ o 𝑔̅ ) ( 𝑥̅ 0 ) = D 𝑓 (̅ 𝑦̅0) D 𝑔̅ ( 𝑥̅ 0)
>> syms x y u
>> f=x^2+y
f =
x^2 + y
CAPITULO 9: DERIVACION EN UNA Y VARIAS VARIABLES. APLICACIONES 355
h =
[ sin(3*u), cos(8*u)]
>> g=compose(h,f)
g =
J =
>> H=subs(J,{x,y},{0,0})
H =
0 3
0 0
̅, 𝒚
(𝒙 ̅) → [ F1(𝒙
̅, 𝒚
̅) , . . . , Fm(𝒙
̅, 𝒚
̅) ]
Como ejemplo vamos a mostrar que cerca del punto (x,y,u,v)=(1,1,1,1) se puede
resolver el sistema:
xy + yvu2 = 2
xu3 +y2v4 =2
de manera única para u y v como funciones de x e y (u=u(x,y), v=v(x,y)).
356 MATLAB A TRAVÉS DE EJEMPLOS
Las funciones son derivables y con derivada continua. Nos falta ver que el
jacobiano correspondiente tiene determinante distinto de 0 en el punto (1,1,1,1).
f =
v*y*u^2 + x*y - 2
>> g=x*u^3+y^2*v^4-2
g =
x*u^3 + v^4*y^2 - 2
>> J=simplify(jacobian([f,g],[u,v]))
J =
[ 2*u*v*y, u^2*y]
[ 3*u^2*x, 4*v^3*y^2]
>> D=det(subs(J,{x,y,u,v},{1,1,1,1}))
D =
𝒙𝟒 +𝒚𝟒
u(x, y) = , v(x, y) = Sen(x) + Cos(y)
𝒙
Las condiciones que tiene que cumplir serán las hipótesis del teorema de la
función inversa. Las funciones son derivables con función derivada continua, salvo
acaso en x=0. Ahora vamos a plantear el jacobiano de la transformación directa
∂(u(x,y), v(x,y))/∂(x, y):
>> syms x y
J =
[ 3*x-2-l/x-2*y^4, 4*y-3/x]
[ cos(x), -sin(y)]
>> pretty(det(J))
4 4 3
3 sin(y) X - sin(y) y + 4 y cos(x) x
- ------------------------------------
2
X
>> I=simple(inv(J));
>> pretty(simple(det(I)))
2
X
- ---------------------------
4 4 3
3 sin (y) X - sin (y) y + 4 y cos (x) x
358 MATLAB A TRAVÉS DE EJEMPLOS
ans =
0.38210611216717
>> numeric(subs(subs(symdiv(1,determ(J)),pi/4,'x'),-pi/4,'y'))
ans =
0.38210611216717
C o mo ej e mp l o co n s i d er a mo s l a f u n ci ó n f ( x, y ) = f ( x, y ) = e - ( x + y ) y l a
transformación u=u(x,y)=x+y, v=v(x,y)=x para finalmente hallar f(u,v).
Calculamos la transformación inversa y su jacobiano para aplicar el teorema
del cambio de variable:
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 359
>> syms x y u V
>> [x,y]=solve('u=x+y,v=x','x','y')
x =
v
y =
u-v
>> jacobian([v,u-v],[u,v])
ans =
[ 0, 1]
[ 1, -1]
>> f=exp(x-y);
>> pretty(simple(subs(f,{x,y},{v,u-v})* abs(det(jacobian(
[v,u-v],[u,v])))))
exp (2 v - u)
(x1,...,xn) →f(x1,...,x n)
𝜕𝑦 1 𝜕2 𝑓
f ( 𝑥̅ ) = f ( 𝑎̅) + ∑𝑛𝑖=1 (𝑎̅)𝑡𝑖 + ! ∑𝑛𝑖=1 ∑𝑛𝑗=1 (𝑎)𝑡𝑖 𝑡𝑗
𝜕𝑥𝑖 2 𝜕𝑥𝑖 𝜕𝑥𝑗
1 𝜕3 𝑓
+ ! ∑𝑛𝑖=1 ∑𝑛𝑗=1 ∑𝑛𝑘=1 (𝑎̅)𝑡𝑖 𝑡𝑗 + R ( k + 1 )
3 𝜕𝑥𝑖 𝜕𝑥𝑗 𝜕𝑥𝑘
R=resto
>> pretty(simplify(subs(f,{x,y),{1,0})+subs(diff(f,x),{x,y},{1,0})*(x-
1)
+subs(diff(f,y),{x,y},{1,0})*(y)+1/2*(subs(diff(f,x,2),{x,y},{l,0})*
(x-l) ^2+subs (diff (f, x, y) , {x, y}, {1, 0}) * (x-l) * (y) +
subs (diff (f, y, 2) , {x, y}, {1, 0}) * (y)^2) ) )
2
2 y
( x - l ) - -- + 1
2
𝜕𝑓(𝑥,𝑦) 𝜕𝑓(𝑥,𝑦)
grad(f) = ∆f(x,y) = 𝑖+ 𝑗
𝜕𝑥 𝜕𝑦
𝜕𝑃 𝜕𝑁 𝜕𝑃 𝜕𝑀 𝜕𝑁 𝜕𝑃
ro t F( x, y,z) = ∆ x F( x, y,z ) = ( − )𝑖 − ( − )𝑗 + ( − )𝑘
𝜕𝑦 𝜕𝑧 𝜕𝑥 𝜕𝑧 𝜕𝑥 𝜕𝑦
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 361
𝜕2 𝜕2 𝜕2
laplacian= ∆2 = ∆.∆ =( + + )
𝜕𝑥 2 𝜕𝑦 2 𝜕𝑧 2
gradiente =
[ x/(- x^2 - y^2 - z^2 + l)^(3/2), y/(- x^2 - y^2 - z^2 + l)^(3/2),
z/(- x^2 - y^2 - z^2 + l)^(3/2)]
>> pretty(gradiente)
+- -+
| x y z |
| ----------------------, --------------------, ----------------------- |
| 3 3 3 |
| -- -- -- |
| 2 2 2 |
| 2 2 2 2 2 2 2 2 2 |
| ( - x - y - z + l ) { - x - y - z + 1 ) ( - x - y - z + 1 ) |
+- -+
>> laplaciano=simplify([diff(f,x,2)+diff(f,y,2)+diff(f,z,2)])
laplaciano =
𝑥
𝐹̅ (x,y,z) = arctg 𝑖̅ + ln√𝑥 2 + 𝑦 2 𝑗̅+𝑘̅
𝑦
>> M=atan(x/y)
M =
atan(x/y)
>> N=log(sqrt(x^2+y^2))
N =
log((x-2 + y-2)^(l/2))
>> P=1
P =
1
>> Rotacional=simplify([diff(P,y)-diff(N,z),diff(P,x)-
diff(M,z),diff(N,x)-diff(M,y)])
Rotacional =
[ 0, 0, (2*x)/(x^2 + y^2)]
>> pretty(Rotacional)
+- -+
| 2x |
| 0, 0, --------- |
| 2 2 |
| x + y |
+- -+
>> Divergencia=simplify(diff(M,x)+diff(N,y)+diff(P,z))
Divergencia =
(2*y)/(x^2 + y^2)
>> pretty(Divergencia)
2y
------------
2 2
x + y
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 363
Cilíndricas a rectangulares:
x = rcosθ
y = rsenθ
z=z
Rectangulares a cilíndricas:
r = √(x2 + y2)
θ = arctg (y/x)
z = z3
Esféricas a rectangulares:
x = ρ sen ϕ cos θ
y = ρ sen ϕ sen θ
z = ρ cos ϕ
Rectangulares a esféricas:
ρ =√(x2+y2+z2)
θ = arctg (y/x)
364 MATLAB A TRAVÉS DE EJEMPLOS
𝑧
ϕ = arccos
√x2 + y2 + z2
f=
x*z - 1
>>
ecuacion=simplify(subs(f,{x,y,z},{r*sin(a)*cos(t),r*sin(a)*sin(t),r*cos
(a)}))
ecuación =
r^2*cos(a)*sin(a)*cos(t) - 1
>> pretty(ecuación)
2
r cos(a) sin(a) cos(t) ~ 1
g =
x^2 + y^2 + z^2 - 1
>>
ecuacion1=simplify(subs(g,{x,y,z},{r*sin(a)*cos(t),r*sin(a)*sin(t),r*co
s(a)}))
ecuacion1 =
r^2 - 1
>> pretty(ecuacion1)
2
r - 1
X =
-1
Y =
1.2246e-016
Z =
X =
0.7854
Y =
0.6155
Z =
1.7321
>> [X,Y,Z]=cart2pol(1,1,1)
X =
0.7854
Y =
1.4142
366 MATLAB A TRAVÉS DE EJEMPLOS
z =
x =
-0.3268
Y =
0.7142
f =
x^2*sin (1/x)
ans =
ans =
0
>>
>> limit(f,x,0)
ans =
ans =
0
Luego, se concluye que:
𝑓(0+ℎ)−𝑓(0)
𝑙𝑖𝑚 = f'(0) = 0
ℎ→0 ℎ
>> pretty(simple(limit((subs(f,{x},{a+h})-subs(f,{x},{a}))/h,h,a)))
/ 1 \ / 1 \
4 a sin| --- | - a sin| - |
\ 2a / \ a /
4 𝑥 2 +1
Log[Sen(2x)], xtan(x), √ , Log[x + √(x2 +1)]
3 𝑥 2 +2
>> pretty(simple(diff('log(sin(2*x))','x')))
0 cot(2 x)
>> pretty(simple(diff('x^'tanx','x')))
tanx
x tanx
-----------
x
>> pretty(simple(diff('(4/3)*sqrt((x^2-l)/(x^2+2))','x')))
4---------------------
0 1/2 2 3/2
(X - 1) (X + 2)
1
-----------
2 1/2
(x + 1)
>> f='1/x';
>> [diff(f),diff(f,2),diff(f,3),diff(f,4),diff(f,5)]
ans =
-l/x^2 2/x^3 -6/x^4 24/x^5 -120/x^6
Ya tenemos clara la formación de la derivada enésima, que será [(-1)n n!] /xn+1
>> f='exp(x/2)';
>> [diff(f),diff(f,2),diff(f,3),diff(f,4),diff(f,5)]
ans =
>> f='(1+x)/(1-x)';
>> [simple(diff(f)),simple(diff(f,2)),simple(diff(f,3)),simple(diff(f,4))]
ans =
2/ (-1+X)^2 -4/(-1+X)^3 12/(-1+X)^4 -48/(-1+x)^5
Hallar también los x para los que las tangentes a la curva g(x) = (x2 - x - 4)/(x - 1) sean
horizontales y verticales. Hallar sus asíntotas.
>> f='2*x^3+3*x^2-12*x+7';
>> g=diff(f)
g=
6*x-2+6*x-12
>> subs(g,-1)
ans =
-12
>> subs(f,-1)
ans =
20
Hemos visto que la pendiente de la recta tangente en el punto x = -1 es -12, y
que la función en x = -1 vale 20, luego, la ecuación de la tangente a la curva en el
punto (-1,20) será:
y - 2 0 = - 12( x - ( - l ) )
>> solve(diff(g))
ans =
[ 3]
[-1]
>> subs(g,3)
ans =
>> subs(g,-l)
ans =
-3
Las dos tangentes horizontales tendrán de ecuaciones:
ans =
1
Por lo tanto, la tangente vertical tendrá de ecuación x=1.
Si para x=1 el valor de g(x) es infinito, la tangente vertical será una asíntota
vertical.
subs(g,1)
ans =
ans =
0
Luego, existe la asíntota oblicua y= x.
Sea x uno de los sumandos. El otro será a-x. Se pide que la suma x3+(a-x)3
sea mínima.
>> syms x a;
>> f='x^3+(a-x)^3'
f =
x^3+(a-x)^3
>> solve(diff(f,'x'))
ans =
l/2*a
f='200*(2*x+2*(1600/x))'
f =
200*(2*x+2*(1600/x))
ans =
[ 40]
[-40]
ans =
20 -20
>> sy ms x y h k
>> li mit (( su bs( f, {x, y} ,{ h ,0} ) - 0)/ h, h, 0)
ans =
0
>> li mit (( su bs( f, {x, y} ,{ 0 ,k} ) - 0)/ k, k, 0)
ans =
0
Hemos visto que los límites de las dos expresiones anteriores cuando h->0 y
k->0, respectivamente, son ambos cero. Es decir:
f(h, 0) − f(0,0) = 𝜕𝑓
lim = (0,0) = 0
h→0 h 𝜕𝑥
f(0, k) − f(0,0) = 𝜕𝑓
lim = (0,0) = 0
h→0 h 𝜕𝑦
Vemos que las dos derivadas parciales en el origen son iguales y valen cero.
Pero la función no es diferenciable en el origen, porque no es continua en
(0,0), ya que no existe su límite cuando (x,y)->(0,0). Veamos:
>> syms m
ans =
m^2/(m^2 + 1)
>> f=exp(-(x-2+y^2)/8)*(cos(x)^2+sin(y)^2)
f =
>> pretty(simple(diff(f,x)))
2 2
x cos (x) + x sin (y) + 4 sin (2 x)
-----------------------------------
/ 2 2 \
| x y |
4 exp | —— + —— |
\ 8 8 /
>> pretty(simple(diff(f,y)))
2 2
y eos (x) + y sin (y) – 4 sin (2 y)
/ 2 2 \
| x y |
4 exp | — + — |
\ 8 8 /
>> pretty(simple(diff(diff(f,x),y)))
3 2
x y cos (x) + x y sin (y) - 4 x sin (2 y) + 4 y sin (2 x)
---------------------------------------------------------
/ 2 2 \
| x y |
16 exp | — + — |
\ 8 8 /
>> pretty(simple(diff(diff(f,x),x)))
2 2
x cos (2 x) x cos (2 y) 2
2 cos (2 y) - 34 cos (2 x) + 8 x sin (2 x) + -------- -------------- + x - 4
2 2
----------------------------------------------------------------------------
/ 2 2 \
| x y |
16 exp | — + — |
\ 8 8 /
>> pretty(simple(diff(diff(f,y),y)))
2 2
y cos(2x) y cos(2y) 2
2 cos (2 x ) - 34 cos (2 y) + 8 y sin (2 y)- - - - - - - - - - - + ----------- y + 4
2 2
---------------------------------------------------------------------------------------
/ 2 2 \
| x y |
16 exp | — + — |
\ 8 8 /
376 MATLAB A TRAVÉS DE EJEMPLOS
>> pretty(simple(diff(diff(diff(f,x),y),y)))
2 2
(8x + 32 sin(2x) + 4x cos(2x) - 68 x cos(2y) - 8 y sin(2x) - 2 x y +
/ / 2 2 \ \
2 2 | | x y | |
16 x y sin(2 y) - x y cos (2 x) + x y cos (2 y) ) /| 128 exp | — + — | |
\ \ 8 8 / /
>> pretty(simple(diff(diff(diff(diff(f,x),x) , y) , y) ))
2 2 2
(272 COS(2x) – 272 COS(2y) + 2 x y - 64x sin(2x) + 64y sin(2y) - 4x COS(2x) +
2 2 2 2 2 2 2
68 x cos(2y) - 68y cos(2x) + 4 y cos(2y ) - 8 x - 8 y + x y cos(2x) -
/ / 2 2 \\
2 2 2 2 | | x y ||
X y cos(2 y) + 16 x y sin (2 x) - 16 x y sin (2 y) + 32) /| 512 exp | — + — ||
\ \ 8 8 //
>> pretty(simple(diff(diff(diff(diff(diff(f,x),x),x),y),y)))
3 2 3
- (96 x + 2432 sin (2 x) + 2 x y + 816 x cos (2 x) - 816 x cos (2 y) - 4 x cos (2 x) +
3 2 2 2 3 3 2
68 X cos (2 y) - 96 x sin (2 x) - 608 y sin (2 x ) - 2 4 x y - 8 x + x y cos (2 x) -
3 2 2 2 2
x y cos (2 y) + 24 x y sin (2 x) + 192 x y sin (2 y) - 204 x y cos (2 x) +
/ / 2 2 \ \
2 3 | | x y | |
12 x y cos (2y) - 16 x y sin (2y)) / | 2048 exp | — — + —— | |
\ \ 8 8 / /
>> subs(diff(diff(diff(diff(diff(f,x),x),x),y),y),{x,y},{pi/3,pi/6})
ans =
-0.5193
>> subs(diff(diff(diff(diff(f,x),x),y),y),{x,y},{pi/3,pi/6})
ans =
-0.3856
>> subs(diff(diff(diff(f,x),y),y),{x,y},(pi/3,pi/6})
ans =
0.0250
>> subs(diff(diff(f,y),y),{x,y},{pi/3,pi/6})
ans =
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 377
0.5534
>> subs(diff(diff(f,x),x),{x,y},{pi/3,pi/6})
ans =
1.1481
>> subs(diff(diff(f,x),y),{x,y},{pi/3,pi/6})
ans =
-0.0811
>> subs(diff(f,y),{x,y},{pi/3,pi/6})
ans =
0.6745
>> subs(diff(f,x),{x,y},{pi/3,pi/6})
ans =
-0.8399
y =
0
0
0
0
378 MATLAB A TRAVÉS DE EJEMPLOS
Luego, los posibles puntos extremos son: (0,0), (-2,0), (2,0) y (-3,0).
>> f=-120*x^3-30*x^4+18*x^5+5*x^6+30*x*y^2
f =
5*x^6+18*x^5-30*x^4-120*x^3+30*x*y^2
>>
H=simplify([diff(f,x,2),diff(diff(f,x),y);diff(diff(f,y),x),diff(f,y,
2) ] )
H =
>> det(subs(H,{x,y},{0,0}))
ans =
0
El origen resulta ser un punto degenerado, pues el determinante de la matriz
hessiana se anula en (0,0).
>> det(subs(H,{x,y},{-2,0}))
ans =
57600
ans =
-480
-120
>> det(subs(H,{x,y},{2,0}))
ans =
288000
>> eig(subs(H,{x,y},{2,0}))
ans =
120
2400
ans =
-243000
>> eig(subs(H,{x,y},{-3,0}))
ans =
-180
1350
f(x,y,z) = √[( x 2 + y 2 ) - z ]
>> f=(x^2+y^2)^(1/2)-z
f =
(x^2+y^2)^(1/2) - z
g1 =
x^2 + y^2 - 16
g2 =
x + y + z - 10
>> L=f+p*g1+q*g2
L =
- 2^(1/2)/8 - 1/8
y =
z =
2*2^(1/2)
P =
2*2^(1/2)
q =
10 - 4*2^(1/2)
CAPÍTULO 9: DERIVACIÓN EN UNA Y VARIAS VARIABLES. APLICACIONES 381
(-(l+√2)/8, 1,2√2)
Ahora, vamos a ver qué tipo de extremo es. Para ello, los sustituimos en la
función objetivo.
>> syms X y z
>> vpa(subs(f,{x,y,z},{-2^(l/2)/8 - 1/8,1,2*2^(1/2)}))
ans =
-1.78388455796197398228741803905
u/3 + v/3
y =
u/3 - (2*v)/3
ans =
[ 1/3, 1/3]
[ 1/3,-2/3]
>> f=10^(x-y);
>> pretty(simple(subs(f,{x,y},{u/3 + v/3,u/3 - (2*v)/3})*
abs(det(jacobian([u/3 + v/3,u/3 - (2*v)/3],[u,v])))))
V
10
---
3
>>
f=exp(x+y^2)
f =pretty(simplify(subs(f,{x,y},{0,0})+subs(diff(f,x),{x,y},{0,0})*(x)
>>
subs(diff(f,y),{x,y},{0,0})*(y)+l/2*(subs(diff(f,x,2),{x,y},{0,0})*
(x)^2+subs(diff(f,X,y),{x,y},{O,O})*(x)*(y)+
subs(diff(f,y,2),{x,y},{0,0})* (y)^2)))
2
x 2
— + x + y + 1
2
>> syms X y z r t a
>> f=r^2*(l + sin(t)
)
f =
r^2*(sin(t) + 1)
>> cartesianas=simpllfy(subs(f,{r,t},{sqrt(x^2+y^2),atan(y/x)}))
cartesianas =
>> pretty(cartesianas)
2 2 / y \
(x + y ) | ------------------+ 1 |
| / 2 \l/2 |
| | y | |
| x | — + 1 | |
| | 2 | |
\ \ x / /
Ejercicio 14. Hallar los vectores tangente, normal principal y binormal (unitarios)
de la cúbica alabeada: x=t, y=t 2 , z=t3.
V =
[ t, t^2, t^3]
tan =
[ 1, 2*t, 3*t^2]
tu =
[1/(l+4*t^2+9*t^4)^(1/2),2*t/(1+4*t^2+9*t^4)^(1/2),3*t^2/(1+4*t^2+9*t^4
)^(l/2)]
Para hallar la normal unitaria de ecuación ( (v’ Λ v”) Λ v’)/(|v’ Λ v”| |v’| ) se
hace:
>> vl=cross(diff(V),diff(V,2));
>> nu=simple(cross(vi,tan)/(sqrt(dot(vi,vi))*sqrt(dot(tan,tan))))
nu =
[(-2*t-9*t^3)/(9*t^4+9*t^2+l)^(1/2)/(l+4*t^2+9*t^4)(1/2),
(l-9*t^4)/(9*t^4+9*t^2+l)^(1/2)/(l+4*t^2+9*t^4)^(1/2),
(6*t^3+3*t)/(9*t^4+9*t^2+l)^(1/2)/(l+4*t^2+9*t^4)^(1/2)]
También puede calcularse la binormal unitaria mediante (v’ Λ v”)/|v’ Λ v”| como
sigue:
>> bu=simple(v1/sqrt(dot(vi,vi)))
bu =
[3*t^2/(9*t^4+9*t^2+l)^(1/2)
3*t/(9*t^4+9*t^2+l)(1/2),1/(9*t^4+9*t^2+l)^(1/2)]
Hemos calculado los elementos del triedro de Frenet para una curva
alabeada.
CAPITULO 10
INTEGRACION EN UNA Y
VARIAS VARIABLES.
APLICACIONES
INTEGRALES
MATLAB permite trabajar con integrales en una y varias variables a través
de un grupo de comandos que habilita especialmente para esta tarea. El programa
intenta calcular las primitivas de las funciones siempre y cuando no sean muy
complicadas algebraicamente. En caso de que el cálculo de la función integral no
sea posible de forma simbólica porque no se puede encontrar la función primitiva
correspondiente, MATLAB habilita un grupo de comandos que permiten calcular
las integrales aproximadas mediante los algoritmos iterativos más comunes del
cálculo numérico.
La tabla siguiente muestra los comandos más habituales que utiliza
MATLAB para la integración en una y varias variables.
>> syms x
>> int((tan(x))^2,x)
ans =
tan(x) - x
>> int ('(tan(x))^2’,'x')
ans =
tan(x) - x
386 MATLAB A TRAVÉS DE EJEMPLOS
ans =
atan(tan(x))*tan(y) - 2*y*atan(tan(x))
+ y*tan(x)
ans =
atan(tan(x))*tan(y) -2*y*atan(tan(x)) +
y*tan(x)
syms x a b, int(f(x), x, a, b) ∫
Calcula la integral definida f(x)dx
>> syms x
>> int ( (cos(x))^2,x,-pi,pi)
ans =
pi
ans =
pi^2
int(int(¡nt(....int(‘f(x,y,..^)’, ‘x’, ‘a’, ‘b’), ‘y’,
Halla ∫∫ ... ∫ f(x,y,... ,z) dxdy...dz
‘c’, ‘d’),...), ‘z’, ‘e’, ‘f)
>> int (int (int ( (cos (x+y+z) ) ^2,x,-
pi,pi),y,-pi/2,pi/2),z,-2*pi,2*pi)
ans =
4*pi^3
syms x y z a b c d e f ,
Halla ∫∫...∫ f(x,y,...,z) dxdy ...dz
int(int(int(....int(f(x,y,...,z), x, a, b),
y, c, d),...), z, e, f) > > syms x y z
>> int(int(int((cos(x+y+z))^2,X,-pi,pi),y,
-pi/2,pi/2),z,-2*pi,2*pi)
ans =
4*pi^3
>> pretty(simple(int(‘1/sqrt(x^2+l)’)))
asinh(x)
>> pretty(simple(int(‘log(x)/x^(1/2)’)))
1/2
2 x (log(x) - 2)
>> pretty(simple(int('l/((2+x)*(l+x)^(l/2))')))
1/2
2 atan( (x + 1) )
>> pretty(simple(int('x^3*sqrt(l+x^4)')))
3
-
2
4
( x + 1)
----------
6
/ X \2
atan| - |
\ 2 /
---------------
4
>> pretty(simple(int(cos(x)^3/sin(x)^(1/2),x)))
1/2 2
2 sin(x) (cos(x) + 4)
-------------------
5
Como tercer ejemplo se calculan las integrales siguientes resolubles
habitualmente por partes:
>> pretty(simple(int('exp(x)*cos(x)','x')))
>> pretty(simple(int('(5*x^2-3)*4^(3*x+1)',’x')))
3x 2 2 2
3 4 (45 log(4) x - 30 log(4) x - 27 log(4) + 10)
-------------------------------------------------
3
27 log(4)
∫sen 13
∫ ∫
(x)cos15(x)dx, x7 (m + nx)1/2 dx, e12xcos11 (x) dx
>> I=int('sin(x)^13*cos(x)^15','x')
I =
cos(x)^18/6006 - (cos(x)^16*sin(x)^12)/28 - (3*cos(x)^16*sin(x)^10)/182 -
(5*cos(x)^16*sin(x)^8)/728 - (5*cos(x)^16*sin(x)^6)/2002
(3*cos(x)^16*sin(x)^4)/4004 - (3*cos(x)^l6)/16016
>> pretty(simple(I))
16 2 12 10 8 6
(cos(x) (8 cos(x) - 1716 sin(x) - 792 sin(x) - 330sin(x) - 120sin(x)
4
36 sin(x) - 9))/48048
>> syms x m n
>> pretty(simple(int(x^7*sqrt(m+n*x),x)))
390 MATLAB A TRAVÉS DE EJEMPLOS
/ 3
| -
| 2 7 6 5 2 2 3 4 4
\ 2 (m + n x) (- 2048 m + 3072 m n x - 3840 m n x + 4480 m n x - 5040 m n x +
\
|
2 5 5 6 6 7 7 | 8
5544 m n x - 6006 m n x + 6435 n x ) / / (109395 n )
>> pretty(simple(int('exp(12*x)*cos(x)^11','x')))
11 10 9
(exp(12 x) (2894432580 cos(x) + 2653229865 cos(x) sin(x) + 1415055928 cos(x) +
8 7 6
1061291946 cos(x) sin(x) + 527896512 cos(x) + 307939632 cos(x) sin(x) +
5 4 3
131193216 cos(x) + 54663840 cos(x) sin(x) + 17149440 cos(x) + 709632 cos(x) -
3
4287360 sin(x) + 4346496 sin(x))) / 63918719475
>> I1=int((3*x^4+x^2+8)/(x^4-2*x^2+1),x)
I 1 =
2 *x - (6*x)/(x^2 - 1) + atan(x*i)*i
>> pretty(simple(I1))
6x
3x - ------- + atan(x i) i
2
x - 1
>> I2=int(sqrt(9-4*x^2)/x,x)
CAPITULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 391
I2 =
>> pretty(simple(I2))
/ / 1 \1/2 \
| 3 | — | |
| | 2 | |
| \ x / | 2 1/2
2 acosh | ------------ | + (9 - 4 x )
\ 2 /
La tercera integral es un caso típico de integral binomia
I3 =
>> pretty(simple(I3))
5
-
4
3 6 3
4(5 X + 3) (375 x - 200 x + 96)
-----------------------------
73125
𝑏
L= ∫ √[1 + 𝑓(𝑥)2𝑓]𝑑𝑥
𝑎
Para una curva plana con coordenadas paramétricas x=x(t) y=y(t), la longitud
del arco de curva comprendida entre los puntos relativos a los v alores t=t0 y t=t1 del
parámetro viene dada por la expresión:
392 MATLAB A TRAVÉS DE EJEMPLOS
𝒕
L =∫𝟎 𝟏 √𝒙′ 𝒕𝟐 + 𝒚′𝒕𝟐 dt
Para una curva en coordenadas polares de ecuación r=f(a), la longitud del arco
de curva comprendida entre los puntos relativos a los valores a=a 0 y a=a1 del parámetro
viene dada por la expresión:
𝒂
L = ∫𝒂 𝟏 √𝑟 2 + 𝑟′𝑎2 dt
𝟎
Para una curva alabeada con coordenadas paramétricas x=x(t) y=y(t) z=z(t), la
longitud del arco de curva comprendida entre los puntos relativos a los valores t=t 0 y
t=t1 del parámetro viene dada por la expresión:
𝒕 2
L =∫𝟎 𝟏 √𝑥 ′ 𝑡 2 + 𝑦 ′𝑡 + 𝑧′𝑡 2 dt
Se trata de calcular la longitud del arco de cable entre las dos torres.
Comenzamos realizando la representación gráfica de la catenaria en el
intervalo [-40,40].
>> syms X
>> ezplot(100*cosh(x/100), [-40,40])
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 393
>> f=100*cosh(x/100)
f =
100*cosh(x/100)
>> pretty(simple(int((1+diff(f,x)^2)^(l/2),x,-40,40)))
/ 2 \
200 sinh| - |
\ 5 /
>> vpa(int((1+diff(f,x)^2)^(l/2),x,-40,40))
ans =
82.15046516056310170804200276894
>>
pretty(simple(int('(diff(t,t)^2+diff((4/3)*t^(3/2),t)^2+diff ((1/2)*t^2,t)
^2)^(l/2)’t',0,2)))
/ 3 \
| - |
| 4 |
| 3 | 1/2
Log | ------------- -- | + 2 13 - 1
| 3 |
| - |
| / 1/2 1/2 \2 |
| | 4 3 39 | |
| | ------+ ------- | |
\ \ 3 3 / /
ans =
4.8157033654708774362587208533845
Como tercer ejemplo hallamos la longitud del arco definido para valores
desde a=0 hasta a=2pi en la cardioide de ecuaciones polares r=3-3cos(a).
El área comprendida entre una curva de ecuación y=f(x) y el eje x viene dada, de
forma general, por la integral:
396 MATLAB A TRAVÉS DE EJEMPLOS
𝑏
S =|∫𝑎 𝑓(𝑥)𝑑𝑥 |
siendo x=a y x=b las abscisas de los puntos de corte de la curva con el eje de abscisas.
para los valores correspondientes del parámetro t = a y t=b, en los puntos de corte.
Si la curva viene en coordenadas polares r=f(a), el área viene dada por la integral:
𝟏 𝑏
S = ∫𝑎 𝑓(𝑎)2 𝑑𝑥
𝟐
siendo x=a y x=b las abscisas de los puntos de corte de las dos curvas.
Es muy importante tener en cuenta el signo de las funciones a la hora de
delimitar los recintos para el cálculo de las correspondientes áreas. Nunca se deben
sumar valores negativos de áreas con valores positivos. Se dividirá la región de
integración en las subregiones necesarias para que no se computen simultáneamente
áreas positivas y negativas. Las áreas que resulten negativas se consideran en módulo.
Como primer ejemplo calculamos el área delimitada por las dos curvas
2 3
siguientes: f(x)=2-x y g(x)= x
>> fplot('[2-x^2,x]',[-2*pi,2*pi])
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 397
>> solve('2-x^2=x')
ans =
-2
1
ans =
9/2
>> x=(0:.1:2*pi);
>> t=(0:.l:2*pi);
>> x=cos(t).*(2-cos (2*t))./4;
398 MATLAB A TRAVÉS DE EJEMPLOS
>> y=sin(t).*(2+cos(2*t))./4;
>> plot (x,y)
A =
- (3*sin(t)*(2*sin(t)^2 - l))/4
>> B=simple(diff('sin(t)*(2+cos(2*t))/4'))
B =
(3*cos(t)^3)/2 - (3*cos(t))/4
>> L=8*int('sqrt((-(3*sin(t)*(2*sin(t)^2 - 1))/4)^2+((3*cos(t)^3)/2
(3*cos(t))/4)^2)'t',0,pi/4)
L =
S =
-(3*pi - 16)/32
r = √Cos(2a)
>> a=0:.1/2*pi;
>> r=sqrt(cos(2*a));
>> polar(a,r)
S =
1
400 MATLAB A TRAVÉS DE EJEMPLOS
Superficies de revolución
El área engendrada por la curva de ecuación y=f(x), al girar alrededor del eje x,
viene dada por la integral:
b t
S =2π ∫a f(x)√1 + f′(x)2 dx y S =2π ∫0 1 y(t)√x′(t)2 + f′(t)2 dt
en coordenadas paramétricas, siendo x=a y x=b los valores de las abscisas de los
puntos que delimitan el arco de curva que gira (t0 y t1 son los valores del parámetro
correspondiente a esos puntos).
El área engendrada por la curva de ecuación x=f(y), al girar alrededor del eje y,
viene dada por la integral:
b
S =∫a f(y)√1 + f′(y)2 dy
siendo y=a e y=b los valores de las ordenadas de los puntos que delimitan el arco de
curva que gira.
>>I=2*pi*vpa(int('(2*x^3-9*x^2+12*x)*sqrt(1+(6*x^2-18*x+12)^2)','x',0,5/2))
Warning: Explicit integrai couid not be found.
I =
50.366979807381457286723333012298*pi
X =
t - sin(t)
>> y= 1-cos(t)
y =
1 - cos (t)
CAPITULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 401
V =
(64*pi)/3
>> V=vpa(2*pi*int(y*(sqrt(diff(x,t)^2+diff(y,t)^2)),t,0,2*pi))
V =
67.020643276582255753869725509963
Volúmenes de revolución
El volumen engendrado por la curva de ecuación y=f(x), al girar alrededor del
eje x, viene dado por la integral:
∫
V =π f(x)2dx
siendo x=a y x=b los valores de las abscisas de los puntos que delimitan el
arco de curva que gira.
El volumen engendrado por la curva de ecuación x=f(y), al girar alrededor del
eje y, viene dado por la integral:
∫
V =π f(y)2dy
siendo y=a e y=b los valores de las ordenadas de los puntos que delimitan el arco de
curva que gira.
Si seccionamos una superficie por planos paralelos a uno de los tres planos
coordenados (por ejemplo, al plano z=0) y su ecuación, podemos ponerla en función de
la distancia al origen (en este caso z), es decir, la ecuación de la superficie se puede
poner de la forma S(z), entonces el volumen comprendido por los planos y la superficie
viene dado por:
𝑧
V =∫𝑧 2 𝑆(𝑧)𝑑𝑧
1
x2/4+ y2/9 = 1
>> V1=int('pi*9*(l-x^2/4)'x',-2,2)
VI 1 =
24*pi
>> V2=int('pi*4*(1-y'2/9)'y',-3,3)
V2 =
16*pi
>> x='(1+cos(a))*cos(a)';
>> y='(1+cos(a))*sin(a)';
>> A=simple(diff(x))
A =
- sin(2*a) - sin(a)
>> V=pi*abs(int('((1+cos(a))*sin(a))^2*(-sin(2*a)-sin(a))','a',0,pi))
V =
(8*pi)/3
CAPITULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 403
Integrales curvilíneas
Sea F̅ un campo vectorial en R3 continuo sobre la trayectoria continua con
derivada continua c:[a,b] → R3. Definimos ∫ F̅ • ds, y la denominamos la integral de
línea de F̅ a lo largo de la curva c, como sigue:
∫ 𝐹̅ • d s = ∫ 𝐹̅ [c( t ) ] • c´(t)dt
c
>> syms t
>> pretty(int(dot([sin(t),cos(t),t],[cos(t),-sin(t),1]),t,0,2*pi))
2
2 pi
∫ [sen{z)dx + cos(z)dy -
c
3
√xydz]
según la trayectoria de ecuaciones paramétricas:
>> [diff(cos(a)^3),diff(sin(a)^3),diff(a)]
ans =
[ -3*cos(a)^2*sin(a), 3*cos(a)*sin(a)^2, 1]
>> int((dot([sin(a),cos(a),-sin(a)^3*cos(a)^3],[-
3*cos(a)^2*sin(a),3*sin(a)^2*cos(a),1]))^(1/3),a,0,7*pi/2)
ans =
2* (-1) (1/3) + 3/2
404 MATLAB A TRAVÉS DE EJEMPLOS
>>pretty(int((dot([sin(a),cos(a),-sin (a)^3*cos(a)^3],
[-3*cos(a)^2*sin(a),3*sin(a)^2*cos(a),1]))^(1/3),a,0,7*pi/2))
1
-
3 3
2 (-1) + -
2
>>vpa(int((dot([sin(a),cos(a),-sin(a)^3*cos(a)^3] ,
[-3*cos(a)^2*sin(a),3*sin(a)^2*cos(a),1]))^(l/3),a,0,7*pi/2))
ans =
1.7320508075688772935274463415059*i + 2.5
∫c x3dy - y3dx
sobre la trayectoria definida por la circunferencia x2 + y2= a2
>>pretty(int('a*cos(t^3*diff(a*sin(t),t)-a*sin(t)^3
*diff(a*cos(t),t)'t',0,2*pi))
2
3 pi a
------
2
INTEGRALES IMPROPIAS
MATLAB trabaja con las integrales impropias considerándolas como cualquier
otro tipo de integral definida. No vamos a tratar aquí temas teóricos de convergencia de
integrales impropias, pero dentro de las integrales impropias distinguiremos dos tipos;
𝑏 𝑑𝑥 ∞ 𝑒 −𝑥 𝑠𝑒𝑛𝑥
∫0 , ∫0 𝑑𝑥
√𝑥 𝑥
>> syms x a b
>> pretty(limit(int(1/sqrt(x),x,a,b),a,0))
1/2
2 b
>> pretty(simple(int(exp(-x)*sin(x)/x,x,0,inf)))
pi
--
4
siempre y cuando a(y) y b(y) estén definidas en el intervalo [c,e] y tengan derivadas
continuas a’(y) y b’(y), estando también las curvas a(y) y b(y) contenidas en el
rectángulo [a,b]x[c,e].
406 MATLAB A TRAVÉS DE EJEMPLOS
𝑏
Además si la función ∫𝑎 f(x, y)dx= F ( y ) está definida en el intervalo [c,e] y
f(x,y) es continua en el rectángulo [a,b]x[c,d], entonces se cumple la fórmula:
𝒆 𝑏 𝒃 𝑒
∫𝒄 ∫𝑎 𝑓(𝑥, 𝑦)𝑑𝑦𝑑𝑥 = ∫𝒂 ∫𝑐 𝑓(𝑥, 𝑦)𝑑𝑦𝑑𝑥
2
∞ arctan(𝑎𝑥) ∞ 1−𝑒 −𝑥
∫0 𝑑𝑥 , ∫0 𝑑𝑥
𝑥(1+𝑥 2 ) 𝑥2
>> a = sym('a','positive')
a =
a
>> pretty(simple(sym((int(diff(atan(a*x)/(x*(l+x^2)),a),x,0,inf)))))
pi
-------
2 a + 2
pi log(a + 1)
----------
2
Para resolver la segunda integral, definimos la integral de parámetro a:
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 407
𝟐
∞ 𝟏−𝒆−𝒂𝒙
f(a) = ∫𝟎 𝑑𝑥
𝒙𝟐
>> Ia=simple(sym(int(diff((1-exp(-a*x^2))/x^2,a),x,0,inf)))
Ia =
(pi/a)^(l/2)/2
>> s=simple(sym(int(Ia,a)))
s =
(pi*a)^(l/2)
Q =
-0.4605
q = quad(f,a,b,tol) Hallar la integral de f entre a y b por el método de
Simpson con la tolerada tol en vez de con un error de 10 -6
>> Q = quad(F,0,2,1.0e-20)
Q =
-0.4607
q = quad(f,a,b,tol,trace) Hallar la integral de f entre a y b por el método de
Simpson con la tolerancia tol y presentando la traza de
las iteraciones
q= Pasa los argumentos adicionales p1, p2, . . . a la función
quad(f,a,b,tol,trace,p1,p2,...) f,f(x,p1,p2, ...)
408 MATLAB A TRAVÉS DE EJEMPLOS
Inline function:
>> Q = quadl(f,0,2)
Q =
1.2326
Q =
1.2344
>> z = inline(y*sin(x)+x*cos(y))
z =
Inline function:
>> D=dblquad(z,-1,1,-1,1)
D =
1.0637e-016
q=dblquad(f,xmin,xmax,
ymin,ymax,tol,method,p1,p2,..)
Pasa los argumentos adicionales p1, p2, . . . a l a función f
2 1
Como primer ejemplo calculamos ∫0 dx por el método de Simpson.
𝑥 3 −2𝑥−5
>> F = inline('1./(x.^3-2*x-5)') ;
>> Q = quad(F,0,2)
Q =
-0.4605
Q =
-0.4605
Q =
-0.4605
2𝜋 𝜋
Después evaluamos la integral doble ∫ ∫0 (ysen(x) + xcos(y))dydx.
𝜋
Q =
-9.8696
INTEGRALES ESPECIALES
∞
gamma(A) Función gamma Г (a) = ∫0 𝑒 −𝑡 𝑡 𝑎−1 𝑑𝑡
410 MATLAB A TRAVÉS DE EJEMPLOS
gammainc(X,A) 𝟏 𝑥
Función gamma incompleta Г ( x , a ) = ∫ 𝑒 −𝑡
Г(𝒂) 0
𝑡 𝑎−1 dt
1 1−𝑡 2 𝜋 ⁄2
e(m)=∫0 √ 𝑑𝑡 = ∫0 √1 − 𝑚𝑠𝑖𝑛2 (𝛷)𝑑𝛷 = E(π/2,m)
1−𝑚𝑡 2
erf(X) =
𝟐 𝑥 −𝑡 2
función de error erf(x) = ∫ 𝑒 𝑑𝑡
√𝝅 0
=2FN(0,1/2) (x) F = distribución normal
erfc(X) =
complementaria de 𝟐 𝑥 −𝑡 2
erfc(x) = ∫ 𝑒 𝑑𝑡
√𝝅 0
=1-erf(x)
función de error
erfcx(X) = 𝟏 𝟏
complementaria
erfcx(x) = e x 2 erfc(x) =
√𝝅 𝒙
escalada de error
erfinv(X) = x = erfinv( y ) ↔ y = erf(x)
inversa de error
∞ 𝒆−𝒕
expint(X) Exponencial integral expint(x) =∫𝒙 dt
𝒕
ans =
0 0.28 0.52 0.71 0.84
ans =
>> [factorial(1),factorial(3),factorial(5),factorial(7)]
ans =
beta(z,w) = exp(gammaln(z)+gammaln(w)-gammaln(z+w))
betaln(z,w) = gammaln(z)+gammaln(w)-gammaln(z+w)
>> beta{3,5)
ans =
0.01
>> exp(gammaln(3)tgammaln(5)-gammaln(3+5))
ans =
0.01
>> betaln(3,5)
ans =
-4 . 65
>> gammaln(3)+gammaln(5)-gammaln(3+5)
ans =
-4.65
beta(z,w)=Г(z)Г(w)/ Г(z+w)
>> gamma(3)*gamma(5)/gamma(3+5)
ans =
0.01
>> beta(3,5)
ans =
0.01
>> [K,E]=elllpke(36/37)
K =
3.20677433446297
E =
1.03666851510702
>> 2*sqrt(37)*E
ans =
12.61161680006573
A =∫∫Sdxdy
Si, por ejemplo, S está determinado por a<x<b y f(x)<y<g(x), el área valdrá:
𝑏 𝑔(𝑥)
A = ∫𝑎 𝑑𝑥 ∫𝑓(𝑥) 𝑑𝑦
Si, por ejemplo, S está determinado por s<a<t y f(a)<r<g(a), el área valdrá:
𝑡 𝑔(𝑎)
𝐴 = ∫ 𝑑𝑎 ∫ 𝑟𝑑𝑟
𝑎 𝑓(𝑎)
Como primer ejemplo calculamos el área de la figura situada sobre el eje OX,
limitada por este eje, la parábola y2 = 4x y la recta x+y = 3.
>> A=int(int('l','x','y'2/4','3-y'),'y',0,2)
A =
10/3
414 MATLAB A TRAVÉS DE EJEMPLOS
>> a=0:0.1:2*pi;
>> r = 2 * (1+cos(a));
>> polar(a,r)
>> hold on;
>> r=2*ones(size(a));
>> polar(a,r)
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 415
pi
-- + 4
2
El área S de una superficie curva expresada como x=f(y,z), que tiene por
proyección en el plano OYZ un recinto R, es:
𝜕𝑥 2 𝜕𝑥 2
S = ∬ √1 + ( ) + ( ) dy dz
𝜕𝑦 𝜕𝑧
El área S de una superficie curva expresada como y=f(x,z), que tiene por
proyección en el plano OXZ un recinto R, es:
𝜕𝑦 2 𝜕𝑦 2
S = ∬ √1 + ( ) + ( ) dx dz
𝜕𝑥 𝜕𝑧
z =
416 MATLAB A TRAVÉS DE EJEMPLOS
((x^2 + y^2)/a)^(1/2)
>>pretty(int(int((1+diff (z,x)^2+diff (z,y)^2)^(1/2),x,-(b*y-y^2)^(1/2),
(b*y-y-2)^(l/2)),y,0,b))
2/ 1 \ l/2
pi b | - + 1 |
\ a /
--------------------------
4
128
8 pi + ---
3
3
-
7
∫∫∫R dxdydz
El volumen de un recinto R tridimensional, cuyas ecuaciones están expresadas
en coordenadas cilindricas, viene dado por la integral triple:
∫∫∫R rdzdrda
El volumen de un recinto R tridimensional, cuyas ecuaciones están expresadas
en coordenadas esféricas, viene dado por la integral triple:
∫∫∫Rr2sen(b)drdbda
a =
a
>>pretty(simple(vpa(int(int(int('1','z','a*x^2+y^2','a^2-y^2’y’,0,
'sqrt((a^2-a*x^2)/2)'),'x',0,'sqrt(a)'))))
7
-
2
0.27768018363489789043849256187879 a
O lo que es lo mismo:
418 MATLAB A TRAVÉS DE EJEMPLOS
>>V=4*(simple(int(int(int('1','z','a*x^2+y^2','a^2-y^2'),'y',0,
'sqrt((a^2-a*x^2)/2)'),'x',0,'sqrt(a)')))
V =
(pi*(2*a^7)^(l/2))/4
0
0
y =
2
-2
V =
8*pi
EL TEOREMA DE GREEN
El teorema de Green permite el cálculo de integrales en la frontera de
regiones cerradas. Sea C una curva plana simple cerrada a trozos, y sea R la región
consistente en C y su interior. Si f y g son funciones continuas con primeras
derivadas parciales continuas en un abierto D que contiene a R, entonces:
𝝏𝒏 𝝏𝒎
∫C m { x , y ) d x + n ( x , y ) d y = ∫∫R (𝝏𝒙 − 𝝏𝒙 )dA
Como ejemplo calculamos, usando el teorema de Green, la integral:
Las dos parábolas se interceptan en los puntos (0,0) y (1,1). Al representarlas, se ven los
límites de integración:
m =
x + exp(y^(1/2))
>> n=2*y+cos(x)
n =
2*y + cos(x)
I =
-0.67644120041679251512532326651204
TEOREMA DE LA DIVERGENCIA
El cálculo integral puede utilizarse para hallar el flujo de salida de un campo
vectorial a través de una superficie. Sea Q un dominio con la propiedad de que cada
linea recta que pasa por un punto interior al dominio corta a su frontera en
exactamente dos puntos. Además, la frontera S del dominio Q es una superficie
orientada cerrada a trozos con vector normal unitario exterior n . Si f es un campo
vectorial que tiene derivadas parciales continuas en Q , entonces:
∫ ∫ S f • n d S = ∫∫∫QDiv(f)dV
M =
y*z*x^2 + y*x
>> N=y*z+x*y^2*z
N =
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 421
K*Z*Y^2 + z*y
>> P=x*z+x*y*z^2
P =
x*y*z^2 + x*z
>> Div=simple(diff(M,x)+diff(N,y)+diff(P,z))
Div =
X + y + z + 6*x*y*z
>> I=int(int(int(Div,x,0,2),y,0,2),z,0,2)
I =
72
EL TEOREMA DE STOKES
El teorema de Stokes facilita el cálculo de integrales en línea. Sea S una
superficie orientada de área finita definida por una función f(x,y), con normal unitaria
n y frontera C. Sea F un campo vectorial continuo definido en S, tal que las
funciones componentes de F tienen derivadas parciales continuas en cada punto no
frontera de S. Entonces se cumple:
Hacemos F= - y3 i + x3 j - z3 k.
Ahora, calculamos el rotacional de F y se integra en la superficie S.
>> F=[-y^3,x^3,z^3]
422 MATLAB A TRAVÉS DE EJEMPLOS
F =
[-y^3,x^3,z^3]
>> clear all
>> syms x y z
>> M=-y^3
M =
-y^3
>> N=x^3
N =
x^3
>> P^z^3
P =
z^3
>>rotF=simple([diff(P,y)-diff(N,z),diff(P,x)-diff(M,z),diff(N,x)-diff(M,y)])
rotF =
[ 0, 0, 3*x^2 + 3*y^2]
3 pi
----
2
>> pretty(simple(int('sec(x)*csc(x)')))
log(tan(x))
>> pretty(simple(int('x*cos(x)')))
cos(x) + x sin(x)
>> pretty(simple(int('acos(2*x)')))
2 1/2
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 423
(1 - 4 x )
x acos (2 x) - --------------
2
/ /1 \l/2 \
| 3 | -- | |
| | 2 | |
| \ x / | 2 1/2
3 acosh | - ------------ | + (9 - 4 x )
\ 2 /
>> pretty(simple(int('x^8*(3+5*x^3)^(1/4)')))
5
-
4
3 6 3
4(5 X + 3) (375 X - 200 x + 96)
-------------------------------
73125
∞ ∞ 3
Ejercicio 3. Resolver las integrales: a = ∫0 𝑥 3 𝑒 −𝑥 𝑑𝑥 y b = ∫0 𝑥 2 𝑒 −𝑥 𝑑𝑥
>> a=gamma(4)
a =
>> b=(1/3)*gamma(1)
b =
0.3333
424 MATLAB A TRAVÉS DE EJEMPLOS
∞
Como Г(p) =∫𝟎 𝑥 𝑝−1 𝑒 −𝑥 dx , la primera integral se resuelve de la forma:
>> gamma(4)0
ans =
6
1 ∞
Como Г( x , p ) = ∫ 𝑡 𝑝−1 𝑒 −𝑡 𝑑𝑡
Г(p) 𝟎
= g a m m a i n c ( x , p ) , la segunda integral se resuelve
de la forma siguiente:
>> gamma(4)*gammainc(5,4)
ans =
4.4098
∞ 1 1
β(p,q) =∫0 𝑥 𝑝−1 (1 − 𝑥)𝑞−1 𝑑𝑥 y betainc(z,w) = ∫ 𝑡 𝑧−1 (1 − 𝑡)𝑤−1 𝑑𝑡
𝛽(𝑝,𝑞) 0
con lo que la primera integral se resuelve como:
>> beta(5,4)*betainc(1/2,5,4)
ans =
0.0013
Para la segunda integral hacemos el cambio de variable x1/3 = 2t, con lo que la
integral se convierte en la siguiente:
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 425
1
1 √𝑡(1−𝑡)4
6 ∫0 4 dt
23
5.0397
𝟏 𝟏−𝒕𝟐 𝝅⁄𝟐
e(m)=∫𝟎 √ 𝑑𝑡 = ∫𝟎 √1 − 𝑚𝑠𝑖𝑛2 (𝛷)𝑑𝛷 = E(π/2,m)
𝟏−𝒎𝒕𝟐
∞
1 1
√6 ∫ 2 + 4/3)(t 2 + 3/2)
dt
3 0 (t
𝟏 𝟏
𝛑
𝟐 𝟏 𝟐 𝟐𝛑 𝟏
𝟐∫ 𝐝𝐮 = ∫ 𝐝𝐮
√𝟗 − 𝐬𝐞𝐧𝟐 (𝐮) 𝟑 𝟎
𝟎
√𝟗 − 𝟏 𝐬𝐞𝐧𝟐 (𝐮)
𝟗
cuyo valor se calcula mediante la expresión:
>> (2/3)*ellipke(1/9)
ans =
1.07825782374982
>> [K,E]=ellipke(1/4)
K =
1.68575035481260
E =
1.46746220933943
>> I=(5/2)*K-2*E
I =
1.27945146835264
𝟏 𝟐 𝝅 𝝅
𝝅 𝝏𝒚
∫𝟎𝟒 √𝟏 − (𝝏𝒙 𝒚(𝒙)) 𝒅𝒕 = ∫𝟎𝟐 √𝟏 + 𝟑𝟔𝒄𝒐𝒔𝟐 (𝟐𝒙) 𝒅𝒙 = ∫𝟎𝟐 √𝟑𝟕 + 𝟑𝟔𝒔𝒆𝒏𝟐 (𝒕) 𝒅𝒕
K =
3.20677433446297
E =
1.03666851510702
>> 2*sqrt(37)*E
ans =
12.61161680006573
∞ 𝑒 −2𝑡
Ejercicio 8. Calcular la integral ∫−2 3 𝑡𝑑𝑡
𝑡
∞ −t
e
3∫ dt
−4 t
ans =
-58.89262341016866 - 9.42477796076938i
>> fplot('[x-'3-6*x^2+8*x,0]',[-1,5])
Los puntos de corte de la curva con el eje OX son (0,0), (0,2) y (0,4), tal y como se
observa al resolver la ecuación:
ans =
0
2
4
Como hay una región positiva y otra negativa, el área se calculará como sigue:
A =
88
>> [x,y]=solve('y=6*x-x^2,y=x^2-2*x')
x =
0
4
y =
0
8
>> A=abs(int('(6*x-x^2)-(x^2-2*x)',0,4))
A =
64/3
Ejercicio 11. Calcular el área encerrada por la rosa de tres pétalos: r = 5 cos(3a)
El área total puede calcularse multiplicando por 6 el área entre 0 y π/6 (medio
pétalo). Tendremos entonces:
>> A=6*int((1/2)*5-'2*cos(3*a)^2,0,pi/6)
A =
(25*pi)/4
Ejercicio 12. Calcular el área comprendida entre el eje OX y un arco de la cicloide de ecuaciones
paramétricas:
x = 5(t - Sen(t))
y = 5(1 - Cos(t))
Ejercicio 13. Calcular el volumen engendrado por la función y=Sen(x) al girar alrededor
del eje OX y alrededor del eje OY en el intervalo [0,π].
>> Vox=pi*int('sin(x)^2',0,pi)
CAPÍTULO 10: INTEGRACIÓN CON UNA Y VARIAS VARIABLES. APLICACIONES 431
Vox =
pi^2/2
>> Voy=2*pi*int('x*sin(x)',0,pi)
Voy =
2*pi^2
Ejercicio 14. Calcular el volumen engendrado por revolución alrededor del eje OY de un arco de la
cicloide de ecuaciones paramétricas:
x = (t - Sen(t))
y = (1- Cos(t))
V =
6*pi^3
Ejercicio 15. Calcular el volumen engendrado por revolución alrededor de su eje polar
de la curva:
r = 2* sin(a)
>> V=2*2*pi/3*int((2*sin(a))^3*sin(a),0,pi/2)
V =
2*pi^2
y = 2x√x
Para x variando entre 0 y 2
>> L=int((1+(diff((2*x*sqrt(x)'))^2),0,2)
L =
20
x = 2cos(t)3
y = 2sin(t)3
L =
12
>> int(int(’x*exp(-x-'2/y)',’x',0,'sqrt(y)'),'y',1,2)
ans =
¾ -3/4(4*exp(1))
434 MATLAB A TRAVÉS DE EJEMPLOS
ans =
8* pi
ans =
0.034073590279972654708616060729088