Vous êtes sur la page 1sur 272

MATEMTICA Y TECNOLOGA

MAESTRA MATEMTICA PURA

Antonio Bonilla Bonilla, M.A.


E_mail: antoniobonilla@claro.net.do
E_mail: antoniobonillab@gmail.com

Versin 1.2.0
Enero del 2016

Copyright 2016. Todos los derechos reservados.


ndice general

1. FUNDAMENTOS 1
1.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Caractersticas Bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1. Entrada y Salida de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2. Ayuda (help, lookfor y doc ) . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3. Espacio de Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4. Guardar y Recuperar Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.5. Formatos de Visualizacin de Nmeros . . . . . . . . . . . . . . . . . . . . . 4
1.3. Instruccin o Sentencia en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1. Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.3. Operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.4. Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.5. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. Archivos script o Archivos-m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5. Proposicin de Asignacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6. Lectura y Escritura de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7. Estructuras de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. CLCULO NUMRICO 17
2.1. Vectores y Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Operaciones con Vectores/Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3. Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4. Operaciones Relacionales y Lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.1. Operadores Relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

I
NDICE GENERAL II

2.4.2. Operadores Lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26


2.5. Instrucciones de Control de Flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5.1. Instruccin if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5.2. Instruccin for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.3. Instruccin while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.4. Instrucciones switch-case-otherwise . . . . . . . . . . . . . . . . . . . . . 32
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6. Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.1. Operaciones con Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.2. Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6.3. Interpolacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.7. Anlisis de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.8. Sistemas de Ecuaciones Lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.9. Valores Propios de Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.10. Tpicos Adicionales de lgebra Lineal . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.10.1. Base y Dimensin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.10.2. Transformaciones Lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2.10.3. Ortonormalizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2.10.4. Diagonalizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.11. Raices de Ecuaciones No Lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
2.12. Solucin de sistemas de ecuaciones no lineales . . . . . . . . . . . . . . . . . . . . . 85
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.13. Evaluacin de Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
2.14. Fracciones parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.15. Grficas con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.15.1. Grficas en dos(2) Dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.15.2. Grficas en tres(3) Dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . 106
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
2.16. Integracin Numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

MMP/Santiago Copyright 2016 ABB


NDICE GENERAL III

2.16.1. Integrales dobles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133


2.16.2. Integrales triples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
2.17. Derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
2.17.1. Derivadas de Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
2.17.2. Diferenciacin Numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
2.18. Ecuaciones Diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
2.18.1. Ecuaciones Diferenciales de Primer Orden . . . . . . . . . . . . . . . . . . . 146
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
2.18.2. Sistemas de Ecuaciones Diferenciales . . . . . . . . . . . . . . . . . . . . . . 148
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
2.18.3. Ecuaciones Diferenciales de Orden Superior . . . . . . . . . . . . . . . . . . 151
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

3. CLCULO SIMBLICO 155


3.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.2. Operaciones con expresiones simblicas . . . . . . . . . . . . . . . . . . . . . . . . . 155
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
3.3. Lmites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
3.4. Derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
3.5. Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
3.5.1. Series de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
3.6. Ms sobre clculo y lgebra lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
3.6.1. Ms sobre clculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
3.6.2. Ms sobre lgebra lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
3.7. Integrales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
3.8. Representacin Grfica de Expresiones Simblicas . . . . . . . . . . . . . . . . . . . 228
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
3.9. Aritmtica de Precisin Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

MMP/Santiago Copyright 2016 ABB


NDICE GENERAL IV

3.10. Resolucin de Ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239


3.10.1. Ecuaciones y Sistemas de Ecuaciones . . . . . . . . . . . . . . . . . . . . . . 239
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
3.11. Ecuaciones Diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
3.12. Elementos de clculo superior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

4. INTRODUCCIN A LATEX 267

MMP/Santiago Copyright 2016 ABB


Captulo 1

FUNDAMENTOS

1.1. Introduccin
Hoy en da existen muchas herramientas para el clculo matemtico y cientfico como son: Matlab,
Derive, Mathematica, Maple, Hercule, Octave, Scilab, Euler, Gauss, Geogebra, Mxima, etc. Uno
de los ms comnes de todos estos programas es Matlab (privativo) por su versatilidad para resolver
problemas.
Matlab es un programa interactivo para la computacin numrica y la visualizacin de datos. Es un
potente software para realizar cculos matemticos y de ingeniera. Es un lenguaje de programacin
con caractersticas ms avanzadas y mucho ms fcil de usar que los lenguajes de programacin
tradicionales, tales como C, Pascal, Basic, etc.
Matlab proporciona un ambiente o plataforma de desarrollo de aplicacio nes amigable en la mayora
de las reas del conocimiento humano.
Las interesantes y extraordinarias capacidades de Matlab han hecho cambiar el concepto de
programacin para el anlisis numrico y matemtico en los campos de la Ciencia y las Ingenieras.
Puede ser considerado como un Lenguaje de Programacin, como C o Fortran.

1.2. Caractersticas Bsicas


Algunas caractersticas que sobresalen en Matlab son:
- No hay distincin entre Enteros, Reales, Complejos,
Sencilla y Doble Precisin (continuidad)
- Programacin muy sencilla
- Exactitud de los nmeros son mayores
- Posee librera matemtica amplia
- Compatibilidad con los lenguajes tradicionales
- Los programas en Matlab son transportables
- Posee muchas herramientas grficas

1
1. FUNDAMENTOS 2

En Matlab, las variables pueden contener valores de cualquier tipo sin necesidad de una declaracin
especial. De aqu el concepto de que los nmeros en Matlab estn conectados continuamente. Esto
hace que la programacin sea mucho ms veloz y efectiva.

1.2.1. Entrada y Salida de Matlab


Para entrar a Matlab bajo Windows, haga click en el cono de Matlab o de Student Matlab y
abrir una ventana donde aparecer un indicativo (Prompt) de
>> EDU>> respectivamente.
Esto indica que Matlab est esperando por comandos u rdenes.
Para salir de Matlab, teclee el comando quit o el comando exit.

Nota: Despus de digitar cada comando, debe presionar la tecla ENTER para que se ejecute.

1.2.2. Ayuda (help, lookfor y doc )


Si en algn momento necesita ayuda porque no entiende el significado de algn comando, teclee
help y el nombre del comando. O
doc y el nombre del comando.
Ejemplo:
>> help quit

quit Quit MATLAB session.


quit terminates MATLAB after running the script FINISH.M,
if it exists. The workspace information will not be saved
unless FINISH.M calls SAVE. If an error occurs while
executing FINISH.M, quitting is cancelled.

quit FORCE can be used to bypass an errant FINISH.M that


will not let you quit.

quit CANCEL can be used in FINISH.M to cancel quitting.


It has no effect anywhere else.

Example
Put the following lines of code in your FINISH.M file to
display a dialog that allows you to cancel quitting.

button = questdlg(Ready to quit?, ...


Exit Dialog,Yes,No,No);
switch button
case Yes,
disp(Exiting MATLAB);

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 3

%Save variables to matlab.mat


save
case No,
quit cancel;
end

Note: When using Handle Graphics in FINISH.M make sure


to use UIWAIT, WAITFOR, or DRAWNOW so that figures are
visible.

See also exit.

Reference page in Help browser


doc quit

1.2.3. Espacio de Trabajo


Matlab tiene la capacidad de recordar las rdenes que se le introducen, as como los valores de
cualquier variable creada. Decimos que estas rdenes y variables se encuentran en el espacio de
trabajo de Matlab y se pueden recuperar siempre que se quiera.
Simplemente tecleando el nombre de la variable, cuyo valor se quiere visualizar, despus del
indicativo y dando Enter se observar el valor deseado.
Para visualizar una lista de las variables definidas en el espacio de trabajo de Matlab, teclee el
comando
who
En este caso, slo aparecen los nombres de las variables, no sus valores; as como tambin la
cantidad de memoria disponible en bytes.
Si quiere obtener el valor de una variable, debe teclear el nombre de la variable, tal como lo hizo
anteriormente.
Matlab puede recordar rdenes previas, utilizando las teclas de cursor
, , , del teclado.
La orden whos de Matlab es muy parecida a la orden who, pero con ms informacin.
En Matlab cada dato elemental utiliza 8 bytes de memoria, de aqu que se pueda trabajar con
datos muy pequeos y muy grandes.

1.2.4. Guardar y Recuperar Datos


En Matlab existen las rdenes save y load para guardar y cargar datos, respectivamente.
Si se utiliza la orden
save
todas las variables del espacio de trabajo se guardarn en el archivo por defecto matlab.mat o
matlab.

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 4

La orden load es el inverso de save y carga todas las variables almacenadas por save.
Si se desea almacenar todas las variables en un archivo particular, slo debe escribir
save nombre_archivo
y todas las variables se guardan en el archivo nombre_archivo.mat
Para recuperar las variables, slo tiene que teclear
load nombre_archivo
Por ejemplo para almacenar las variables x, y, z en un archivo llamado nombre_archivo, escribimos
save nombre_archivo x y z
Observe que no hay comas entre las variables.
Si deseamos borrar todas las variables del espacio de trabajo, slo tenemos que teclear el comando
clear
y si slo queremos borrar las variables x, y, z, ejecutamos el comando
clear x y z
Si deseamos guardar en forma de texto toda la actividad realizada en una seccin de Matlab,
ejecutamos el comando
diary on o diary nombre_archivo
Si no se utiliza nombre de archivo, la actividad se guarda en un archivo de nombre diary.

1.2.5. Formatos de Visualizacin de Nmeros


Matlab es suficientemente inteligente como para visualizar los nmeros, segn su tipo. Sin embargo,
nosotros podemos modificar la forma de visualizacin a nuestra conveniencia.
Cuando Matlab visualiza nmeros reales, lo hace con cuatro cifras despus del punto decimal por
defecto.
Si el nmero no cabe dentro de ese rango, entonces Matlab lo visualiza en notacin de punto
flotante ( Notacin Cientfica).
Los formatos que usa Matlab son:

Orden de Matlab Comentarios


format short Visualizacin por defecto
format long Visualizacin de 16 dgitos
format short e 5 dgitos ms exponente
format long e 16 dgitos ms exponente
format hex Visualizacin Hexadecimal
format bank Visualiza 2 dgitos decimales
format + Visualiza positivo,negativo, cero
format rat Visualiza en forma racional

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 5

En los ejemplos que hemos visto hasta ahora observamos que Matlab siempre visualiza el resultado
del comando ejecutado. Si queremos que Matlab suprima la impresin de resultados, colocamos
un punto y coma (;) al final del comando.
Por ejemplo, si introducimos la orden
x = 5
se visualiza el resultado
x =
5
pero si se introduce el comando
x = 5;
se suprime la visualizacin.
Es importante hacer notar que aunque el resultado no se visualice la operacin se realiz.
Si el comando es muy largo, escriba tres puntos (...) seguido de Enter o Return para continuar el
comando de Matlab en la lnea siguiente.
Todo texto seguido del smbolo de tanto porciento ( %) es considerado como un comentario. Matlab
no toma en cuenta los comentarios. Estos slo sirven a los humanos para fines de documentacin.
Para borrar la ventana de comandos se utiliza la orden
clc

1.3. Instruccin o Sentencia en Matlab


Aunque hemos venido hablando y ejecutando comandos y rdenes en Matlab. Ahora nos vemos
en la necesidad de formalizar definicines ms generales sobre conceptos utilizados anteriormente,
que incluye entre otras cosas, por supuesto los conceptos de comandos y rdenes, utilizados hasta
este momento.
Una Instruccin o Sentencia es una orden que se le da a Matlab para que ejecute una accin.
Por ejemplo, si introducimos date en la lnea de comandos se visualizar:

>> date

ans =

08-Dic-2015

que representa la fecha actual en formato: da - mes - ao.


Recuerde que para salir de Matlab, tecleamos en la lnea de comandos la palabra
quit o exit.
Variable ans
Es la variable donde Matlab almacena los resultados por defecto. ans siempre conserva el ltimo
resultado y puede ser utilizada en cualquier operacin posterior.

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 6

Las instrucciones en Matlab estn formadas por: Constantes, Variables, Operaciones, Expresiones y
Funciones

1.3.1. Constantes
Una constante es cualquier cantidad que aparezca en forma explcita en una sentencia. Ejemplo:
En la instruccin
k + 5. El 5 es una constante.
Las Constantes pueden ser:
Enteras: que son aquellas que no poseen punto decimal. Ejemplos:

539
-1049
35632

Reales: que son aquellas que poseen punto decimal. Ejemplos:

-439.23
734.7854
0.78564
2.3e 03

La ltima constante est en notacin de punto flotante y es equivalente a


2.3 103
Complejas: que son aquellas formadas por una parte real y una parte imaginaria. Ejemplos:

3.4 + 2.5i

-2.5 - 7.96i

Cadenas: que son secuencias de caracteres (smbolos) encerrados entre comillas simples.
Ejemplo:

Bienvenido a Matlab

1.3.2. Variables
Una variable es una cantidad a la que se le da un nombre y que puede tomar muchos valores durante
la ejecucin de un programa. Es el nombre de una posicin de memoria. Los nombres de variables
pueden constar de una cantidad de caracteres que depende de la versin de Matlab ( letras, dgitos
y _ ), debiendo ser el primer carcter una letra, seguido por cualquier nmero de letras, dgitos o
guiones de subrayado. No se permiten espacios en blanco en el medio.
Ejemplos:

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 7

Manzana
Salario_por_nomina
pera
Angel
costo_promedio
k2000
juan_23
mango_2000

Los nombres: 2mangos, *estrella, juan-perez no son nombres de variables vlidos.


Un nombre de variable puede tener cualquier cantidad de caracteres . Sin embargo, la cantidad de
caracteres reconocida depende de la versin de Matlab. Ejecutando el comando namelengthmax se
puede saber cul es la cantidad de caracteres que reconoce su versin de Matlab.
Es importante sealar que Matlab es sensible al tamao de la letra. Es decir no es lo mismo
Amar que amar
Estas dos variables son diferentes porque la primera empieza con A y la segunda con a.
Las Variables, al igual que las Constantes pueden clasificarse en:
Enteras: que son aquellas que pueden tomar cualquiera de los valores permitidos para una constante
entera.
Reales: que son aquellas que pueden tomar cualquiera de los valores permitidos para una constante
real.
Complejas: que son aquellas que pueden tomar cualquiera de los valores permitidos para una
constante compleja.
Cadenas: que son aquellas que pueden tomar cualquiera de los valores permitidos para una constante
de cadena.
Matlab posee algunas variables especiales como son:

Variable Descripcin
ans Nombre por defecto variable de resultados
pi El nmero
eps Nmero ms pequeo que puede modificar un
valor cuando se le suma.
inf Infinito. Por ejemplo 1/0

i y j i = j = 1
NaN Magnitud no numrica

1.3.3. Operaciones
Las Operaciones aritmticas bsicas que usa Matlab son las siguientes:

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 8

Operacin Smbolo Expresin Ejemplo


Suma + a+b 7+4
Resta - a-b 5-3
Multiplicacin * a*b 3*4
Divisin / \ a/b a\b 8/3 3\8
Potenciacin ab 24

En Matlab las operaciones tienen el mismo orden de precedencia que en matemtica. Es decir,
primero se ejecutan las exponenciaciones, luego las multiplicaciones y/o divisiones, y finalmente
las sumas y/o restas. Se pueden usar los parntesis para cambiar este orden de prioridad cuando
sea necesario.

1.3.4. Expresiones
Una Expresin es una regla para calcular un valor. Matlab evala las expresiones de izquierda a
derecha, si el orden de importancia de las operaciones no est completamente especificado por el
uso de parntesis.
Los parntesis pueden ser usados para indicar agrupamiento, al igual que en matemtica, por lo
que pueden ser utilizados en cualquier momento si con ello evita confusin.
Evaluemos las siguientes expresiones:

Expresin Resultado Expresin Resultado


52 - 4 - 6/3 * 2 17 52 - 4 - 6/(3 * 2) 20
43 + 3 67 (3 * 2)3 216
7*5-4*2+8 35 4\20 - 3 * 4 -7
33 - 4 * 22 11 5 * 4 - 62 + (8/3) * 6 0
(8 - 3) * 5 + 42 * 5 105 (7 + 4)2 - 9 * 12 13
(24 + 32) / (45 - 31) 4 (24 + 62) / (25 - 13) 5
(3 + 4i) + (2 - 5i) 5-i (5 - 2i) * (2 + 7i) 24 + 31i
(2 - 3i) * (2 + 3i) 13 (4 - 7i)2 -33 - 56i
(4 - 5i) / (3 + 4i) -0.3200 - 1.2400i

Los ejemplos anteriores nos dice que el programa Matlab posee tambin las caractersticas de una
calculadora normal y como tal puede ser utilizado.

1.3.5. Funciones
Matlab viene con una gran cantidad de funciones internas que se pueden usar con slo invocar su
nombre y darle el argumento adecuado. Algunas de las funciones ms usadas son:

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 9

Nombre Descripcin Nombre Descripcin


sin (x) Seno de x ( radianes ) cos(x) Coseno de x ( radianes )
tan(x) Tangente de x abs(x) Valor Absoluto de x
sqrt(x) Raiz Cuadrada de x exp(x) Exponencial
log (x) Logaritmo Natural de x log10(x) Logaritmo Decimal de x
asin(x) Inversa del Seno de x acos(x) Inversa Coseno de x
atan(x) Inversa Tangente de x conj(x) Conjugado del Complejo x
cosh(x) Coseno Hiperblico de x fix(x) Parte Entera de x
real(x) Parte Real del Complejo x ceil(x) Entero Menor >= x
floor(x) Entero Mayor <= x rem(x, y) Resto de dividir x/y
round(x) Redondea x al Entero ms prx max(x) Elemento Mx del Vector x
min(x) Elemento Mn del vector x

Algunos ejemplos del uso de funciones:


>> sin(2.34)
ans =
0.71846

>> sqrt(8)
ans =
2.8284

>> log(243)
ans =
5.4931

>> exp(2.5)
ans =
12.182

>> fix (4.8)


ans =
4

>> floor ( 3.45 )


ans =

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 10

>> conj( 3 - 4i)


ans =
3+4i

1.4. Archivos script o Archivos-m


Ejecutar comandos en una ventana slo es divertido, si no son muchos o si se desea buscar algo
en forma interactiva. Sin embargo, cuando las rdenes ocupan varias lneas es ms saludable que
se escriba un archivo-m de guin o un archivo-m de funcin, porque estos se pueden corregir en
cualquier momento y pueden guardarse en disco. En el archivo-m se puede introducir cualquier
comando que pueda ser ejecutado en la ventana directamente. Los archivos-m pueden ser de dos
tipos: archivos-m de guin y archivos-m de funcin. Un guin es equivalente a un programa en
los lenguajes tradicionales y una funcin es lo mismo que un subprograma en los lenguajes de
programacin tradicionales.
Para crear un archivo-m en Windows, hacemos un clic en NEW del men File (Archivo) de la
parte superior de la ventana de comandos y aparecer otra ventana. Luego, elija M-File y abrir
una ventana para que empiece a digitar los comandos. Despus de digitar todos los comandos, lo
guardamos como Archivo-m, haciendo clic en SAVE AS del menu File y ponindole un nombre de
variable vlido, digamos prog01. En este caso, el archivo tendr el nombre prog01.m.
Ahora, para ejecutar este conjunto de comandos, slo tenemos que teclear en la ventana de
comandos
>> prog01
Observe que slo se digita el nombre, sin la m.

1.5. Proposicin de Asignacin


Una Proposicin de Asignacin en Matlab tiene la forma
a=b
donde a es el nombre de una variable y b es una expresin Matlab.
Una Proposicin de asignacin es una orden para que Matlab obtenga el valor de la expresin b y
el resultado se lo asigne al nombre de variable a.
Es importante notar que el signo = se interpreta como una asignacin; no como una igualdad en
el sentido matemtico. Por esta razn, no es lo mismo escribir
a = b + c que b + c = a
En matemtica las expresiones anteriores significan lo mismo, pero en Matlab no. La expresin
b+c=a no es vlida en Matlab
Ejemplos de proposiciones de asignacin vlidas

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 11

Proposicin Proposicin
x=3 y=x+5
p=x2 expr1 = 5 2 - 4 * 2 / 3
w = y 3 - 100.75 B=4
C=3*B-5*x r=7
longitud = 2 * pi * r area = pi * r 2
vol = (4/3) * pi * r 3 x = ( C/5.7 + 3.5 ) + 3 * B - 9.5
Y = X\R

Matlab tiene una gran capacidad de recordar cosas, porque almacena en su memoria los ltimos
valores de las variables que se han definido. Si usted no recuerda y quiere saber el valor de alguna
variable, slo tiene que teclear el nombre de la variable y visualizar su valor.

1.6. Lectura y Escritura de Datos


Matlab posee varias formas para leer y escribir datos. Aqu trataremos la entrada de datos a travs
del teclado o el ratn.
El comando que utiliza Matlab para recibir datos desde el teclado es
input
Por ejemplo, si se desea leer un nmero desde el teclado, escribimos
w = input(`Introduzca un valor:)
donde la frase dentro de los apstrofes es un mensaje que sale en la pantalla para que se teclee el
valor y Enter. El dato se almacena en la variable w. Por ejemplo, si se ejecuta el comando

>> w = input(Entre el valor de w: );

Se visualiza el mensaje

Entre el valor de w:

Tambin podemos introducir cadenas desde el teclado, ejecutando el comando


w = input(`Indique un nombre:,s)
El argumento s le dice a Matlab que la entrada es una cadena. Por ejemplo, si se ejecuta el
comando

>> c = input(Entre una cadena c: ,s);

Se visualiza el mensaje

Entre una cadena c:

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 12

Aqu usted debe introducir una cadena, pero sin las comillas simples.

Es posible imprimir mensajes y nmeros con formato, utilizando el comando fprintf. Por ejemplo,
fprintf(El valor de w es %9.4f. \n, w)
La orden
fprintf(El valor es: %13.5e\n,45637.9)
imprimir
El valor es: 4.56379e+04
Para visualizar resultados en Matlab podemos utilizar la funcin disp. Esta funcin tiene el formato
disp(Mensaje) o disp(v)
donde Mensaje es un mensaje que se visualiza en la pantalla y v es un vector/matriz cuyo valor
se quiere visualizar. Por ejemplo,
>> disp(Hola Santo Domingo)
Hola Santo Domingo
>> disp([-5 12 9])
-5 12 9
Si se ejecuta el script:

A = rand (3 ,4) ;
disp ( ' col1 col2 col3 col4 ') ;
disp ( ' ') ;
disp ( A ) ;

se obtiene el resultado

col1 col2 col3 col4


0.9649 0.9572 0.1419 0.7922
0.1576 0.4854 0.4218 0.9595
0.9706 0.8003 0.9157 0.6557

Otra forma de obtener un resultado similar es ejecutando el script:

A = rand (3 ,4) ;
disp ( ' col1 col2 col3 col4 ') ;
fprintf ( ' %6.4 f %6.4 f %6.4 f %6.4 f \ n ' , A ') ;

consiguiendo como resultado

col1 col2 col3 col4


0.5688 0.3371 0.3112 0.6020
0.4694 0.1622 0.5285 0.2630
0.0119 0.7943 0.1656 0.6541

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 13

Tambin podemos ejecutar el script:

A = rand (3 ,4) ;
disp ( ' col1 col2 col3 col4 ') ;
X = sprintf ( ' %6.4 f %6.4 f %6.4 f %6.4 f \ n ' , A ') ;
disp ( X ) ;

para obtener como resultado

col1 col2 col3 col4


0.5688 0.3371 0.3112 0.6020
0.4694 0.1622 0.5285 0.2630
0.0119 0.7943 0.1656 0.6541

1.7. Estructuras de Datos


Una estructura es una coleccin de datos de diferentes tipos con un mismo nombre. A cada uno
de los datos se les llama miembro o campo.
Despus que se define una estructura se pueden crear muchas instancias o variables de dicha
estructura.
Matlab soporta la organizacin de datos en Estructuras. Aqu las estructuras se tratan de manera
muy parecida que en el lenguaje C.
Los elementos de estructuras pueden ser de cualquier tipo. por ejemplo:

>> x.a=[2 3 1;5 4 7]

x =

a: [2x3 double]

>> x.a

ans =

2 3 1
5 4 7

>> x.b = 12

x =

a: [2x3 double]
b: 12

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 14

>> x.c = cadena

x =

a: [2x3 double]
b: 12
c: cadena

Aqu hemos definido la estructura x. Si queremos visualizar los elementos de x, ejecutamos el


comando

>> x
x =

a: [2x3 double]
b: 12
c: cadena

Las estructuras se pueden asignar a otras estructuras, por ejemplo podemos escribir el comando
>> y = x
y obtener

y =

a: [2x3 double]
b: 12
c: cadena

Tambin se pueden realizar otras operaciones como veremos pronto.


Los elementos de estructuras pueden a su vez ser estructuras, por ejemplo ejecutemos el comando

>> x.b.z=[5 -2;3 9]

x =

a: [2x3 double]
b: [1x1 struct]
c: cadena

Con este comando hemos redefinido el elemento b de la estructura x.


Podemos construir funciones que devuelvan estructuras como por ejemplo:

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 15

function y = fs(x)
y.pr = mean (x);
y.sd = std(x);

Ahora ejecutemos los comandos

>> x =[ 3 2 1 0 4 3 8 3 4 5]

x =

3 2 1 0 4 3 8 3 4 5

>> fs(x)

ans =

pr: 3.3000
sd: 2.2136

>> y=fs(x)

y =

pr: 3.3000
sd: 2.2136

>> y.pr

ans =

3.3000

>> y.sd

ans =

2.2136

Esta funcin calcula la media aritmtica y desviacin estndar del vector x.

Ejercicios 1.1
1. Entre a Matlab y ejecute el comando date( Recuede dar enter despus del comando).
Observe la salida.

MMP/Santiago Copyright 2016 ABB


1. FUNDAMENTOS 16

2. Ejecute el comando help date. Lea la salida.

3. Ejecute las operaciones:

a. 12 + 34
b. 15 3/7
c. 8 43 + 5/3
d. (9 + 4)/(5 8)
e. 9 + 4/(5 8)

4. Ejecute las instrucciones x = 5 y x = 5;. Note la diferencia entre uno y otro.

5. Qu significa ans y cundo aparece?.

6. Escriba y = 15.

7. Ejecute z = x y.

8. Ejecute los comados : who y whos. Identifique las diferencias

9. Escriba z y enter.

10. Ejecute el comando clc.

11. Ejecute el comando clear x y.

12. Escriba x y escriba y. Observe que dice que no estn definidas. El comando anteriror las
borr.

13. Defina a x y y de nuevo. Dele los valores de su preferencia.

14. Ejecute las operaciones:


x 1 z
a. a = x b. b = y2 + c. xy a2 +
y x2 +y y

(x y 2 ) (x + z)1/2 |a b|
d. e. f.
x + 2.5 (z + y 1/3 1 + sen(x) cos(y)
3+
2 + x2
xyz x2 + z y
g. h. i. xe2 +
x + 1.5
p
2.5 z + y 3 ln y + z
1.2 + 2
x 1

15. Guarde la seccin con el comando save.

16. Salga de Matlab con el comando quit

MMP/Santiago Copyright 2016 ABB


Captulo 2

CLCULO NUMRICO

2.1. Vectores y Matrices


Un arreglo u ordenacin es una variable que representa a muchas cantidades con un solo nombre. A
cada una de las cantidades se le llama elemento del arreglo u ordenacin. Los elementos del arreglo
se representan por su posicin dentro del arreglo. Si tenemos un arreglo X que tiene 5 elementos,
podemos escribir
X(1), X(2), X(3), X(4), X(5) para referirnos a cada elemento del arreglo.
Cuando para referirnos a cada elemento del arreglo, slo necesitamos de un ndice, decimos que
el arreglo es Lineal o Unidimensional o de una Dimensin. Si para referirnos a un elemento del
arreglo necesitamos de dos ndices, decimos que el arreglo es Bidimensional o de dos Dimensiones
y as sucesivamente. Los arreglos Bidimensionales se interpretan como matrices en Matlab.
Suponga que A es un arreglo bidimensional de 3 filas con 4 columnas.
El elemento A(2,3) es el que se encuentra en la fila 2, columna 3.
Hay varias formas de definir arreglos en Matlab. Un vector fila es un arreglo lineal de elementos,
encerrados entre corchetes y separados por comas o por espacios en blanco.

Ejemplos:

>> d = [4, 5, 3] o d = [4 5 3]
d =
4 5 3

>> e = [0.1, 1.3, 3.5, 1.5]


e =
0.1000 1.3000 3.5000 1.5000

Para referirnos al elemento 2 del arreglo d y al elemento 3 del arreglo e, escribimos d(2) y e(3),
respectivamente.
Un vector columna en Matlab es un arreglo lineal de elementos, encerrados entre corchetes y
separados por punto y coma (;).

17
2. CLCULO NUMRICO 18

Ejemplos:

>> z = [3; -1; 4]


z =
3
-1
4

>> t = [2.5; 3.0; -2.0; -3.5]


t =
2.5000
3.0000
-2.0000
-3.5000

Un vector x tambin se puede definir como:

x = vi : ic : vf , donde

vi = Valor Inicial
ic = Incremento/Decremento
vf = Valor Final

Esto significa que los elementos del arreglo se definen como:

x(1)=vi, x(2)=vi + ic, x(3)=vi + ic + ic, ...,

x(n)=vi + (n-1)*ic, para n=1,2,3, ...,

donde el ltimo elemento del arreglo toma el mayor valor que sea menor o igual a vf.
Ejemplos:
Si ejecutamos el comando:
>> a = 1:0.5:3
visualizamos

a =
1.0000 1.5000 2.0000 2.5000 3.0000

donde a(1) = 1.0000

a(2) = 1.5000

a(3) = 2.0000

a(4) = 2.5000

a(5) = 3.0000

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 19

Para conocer la cantidad de componentes de un vector, utilizamos la funcin length.


Ejemplo:
Si ejecutamos el comando
>> l = length (a)
visualizaremos

l =
5

Tambin podemos definir un vector con el comando linspace(a,b,n), donde a es la primera


componente del vector, b es la ltima componente y n el nmero de componentes. Estas componentes
estn equiespaciadas una de la otra.
Por ejemplo, el comando
>> v = linspace(3,4,5)
produce el vector
v=

3.0000 3.2500 3.5000 3.7500 4.0000

Una matriz es un arreglo rectangular de vectores filas separados por punto y coma y encerrados
entre corchetes.
Ejemplo:
Si digitamos el comando
>> A = [2, -1, 3; -2, 0, 1; -1, 4, 2]
visualizamos

A =
2 -1 3
-2 0 1
-1 4 2

que representa una matriz de orden 3x3, donde


[2, -1, 3], [-2, 0, 1], [-1, 4, 2]
representan la primera, segunda y tercera fila respectivamente de la matriz. El elemento
A(2,3) = 1
Si digitamos el comando
>> B = [5, -3, 4;-3, -1, 0]
visualizamos

B =
5 -3 4
-3 -1 0

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 20

que representa una matriz de orden 2x3.


El elemento

B(2,1) =
-3

Si queremos obtener la transpuesta de un vector/matriz, A, escribimos A. Por ejemplo:


Si tenemos el vector fila
>> x = [4, 5, -2]
entonces

x=
4
5
-2

2.2. Operaciones con Vectores/Matrices


Con los arreglos se puede realizar las mismas operaciones bsicas que con los escalares. Es decir,
podemos sumar, restar, multiplicar y elevar a una potencia un arreglo.
Adems, existen otras operaciones (operaciones punto) entre los elementos de un arreglo como son:
.* = Multiplica dos arreglos, elemento a elemento
./ = Divide dos arreglos, elemento a elemento
.^ = Eleva a una potencia cada elemento del arreglo
. = Transpuesta de una matriz
Ejemplos:

>> A = [2, 5;-1, 3]


A =
2 5
-1 3

>> B = [-2, 3;4, 6]


B =
-2 3
4 6

>> A./B

ans =
-1.0000 1.6667
-0.2500 0.5000

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 21

>> A.^2

ans =
4 25
1 9

Recordemos que para borrar todas las variables que se han definido, slo necesitamos ejecutar el
comando clear.
Consideremos los siguientes vectores:

>> x = [-2, 1, 3]
x =
-2 1 3

>> y = [ 4, -1, 2]
y =
4 -1 2

efectuemos las operaciones:

>> z = x + y
z =
2 0 5

>> r = x - y
r =
-6 2 1

>> w = x*y
w =
-4

>> t = 3 * x - 2 * y
t =
-14 5 5

>> a = x - 3
a =
-5 -2 0

>> b = y + 5
b =
9 4 7

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 22

Ahora, consideremos las matrices

>> A = [4, -3, 2;-3, -1, 1;5, -2, 3]


A =
4 -3 2
-3 -1 1
5 -2 3

>> B = [-2, 2, 3;1, -3, 5;-1, 1, -4]


B =
-2 2 3
1 -3 5
-1 1 -4

Efectuemos las operaciones y observemos los resultados de


Transpuesta:

>> C = A
C =
4 -3 5
-3 -1 -2
2 1 3

Suma:

>> D = A + B
D =
2 -1 5
-2 -4 6
4 -1 -1

Resta:

>> E = A - B
E =
6 -5 -1
-4 2 -4
6 -3 7

Multiplicacin:

>> F = A * B
F =
-13 19 -11
4 -2 -18
-15 19 -7

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 23

Determinante:
>> d = det(A)
d = -24.0000
Inversa:
>> I = inv(B) o I = B^(-1)

I =
-0.31818 -0.50000 -0.86364
0.04545 -0.50000 -0.59091
0.09091 0.00000 -0.18182

En Matlab existen funciones que nos permiten crear matrices especiales. Algunas de ellas son:
eye(3) Crea matriz identidad de orden 3
zeros(4) Crea matriz de ceros de orden 4
ones(3) Crea matriz de unos de orden 3
rand(3) Crea matriz de elementos aleatorios orden 3
hilb(3) Crea matriz de Hilbert de orden 3
Estas matrices no tienen que ser cuadradas. Es decir pueden ser de orden m x n.
Las funciones:
size(A) Visualiza la dimensin de la matriz A
sum(A) Suma las columnas de la matriz A

2.3. Texto
Realmente, el poder de Matlab est en la capacidad para trabajar con nmeros. Sin embargo, a
veces se desea trabajar con texto, tal como en las grficas. En Matlab, a los textos se les llama
cadenas de caracteres o cadenas simplemente. Las cadenas de caracteres se manipulan como vectores
filas. Consideremos la cadena
>> b = Matlab es un gran Software
Es decir, una cadena es simplemente un conjunto de caracteres entre comillas simples. Como las
cadenas son vectores filas, se pueden manipular al igual que stos. Por ejemplo, si escribimos el
comando
>> c = b(14:17) se visualizar
c=
gran
Al igual que las matrices, las cadenas pueden tener mltiples filas, con la condicin de que las filas
tengan la misma cantidad de columnas.
De la misma manera se pueden realizar las operaciones aritmticas, pero despus de aplicar una
operacin aritmtica a una cadena, ya esta no se visualiza como una cadena. En su lugar se ve

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 24

un arreglo de nmeros ASCII. Para ver la representacin ASCII de una cadena, slo tenemos que
tomar su valor absoluto o sumar cero a la cadena. Por ejemplo, ejecutemos el comando
>> c = MATLAB y se tendr
c = MATLAB.
Ahora ejecutemos
>> a = abs(c) y se visualizar
a=
77 65 84 76 65 66 se puede ejecutar
>> a = c + 0 para producir el mismo resultado
a=
77 65 84 76 65 66
Si queremos ejecutar la operacin inversa, es decir convertir
una representacin ASCII en caracteres, ejecutamos el comando
>> setstr(a)
ans = MATLAB

Ejercicios 2.1
1. Defina los vectores a = (1, 3, 5, 2, 7), b = (3, 2, 7, 1, 5).

2. Defina las matrices



3 5 1 8 1 2 1 3 0 2 12
2 4 6 5 1 5 2 1 7 1 7

A = 3 7
5 1 2, 1
B= 1 9 4 3 , c =

10

1 8 3 2 5 4 3 1 2 9 3
5 1 1 3 7 1 7 2 2 1 11

3. Defina un vector x de 10 elementos, donde el primer elemento es 2 y el ltimo 5.

4. Defina un vector y donde el primer elemento es 3 y el ltimo es menor o igual 22 con


separacin de 2 entre sus elementos.

5. Defina un vector columna z de 5 elementos.

6. Calcule la transpuesta de a y B.

7. Calcule el producto escalar de a y b.

8. Obtenga el vector cuyas componentes son los cuadrados de las componentes del vector b.

9. Obtenga el vector s = a2 3a + 7

10. Efecte las operaciones

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 25

a. a + b
b. a b2
c. A + B
d. 2A 3B
e. 3A2 B
f. AB 0

11. Divida el vector a entre el vector b, componente a componente.

12. Multiplique la matriz A por la matriz B, componente a componente.

13. Eleve al cuadrado cada componente de la matriz B.

14. Construya una matriz C de orden 5 10 con las matrices A y B.

15. Extraiga la submatriz formada por las filas impares de la matriz A.

16. Extraiga la submatriz formada por las columnas pares de la matriz B.

17. Forme una matriz cuyas filas sean los vectores a y b.

18. Calcule el determinante de la matriz A.

19. Calcule la inversa de la matriz B.

20. Obtenga la sub-matriz de B formada por las tres ltimas filas y las dos ltimas columnas de
B

21. Qu valor tiene el elemento A(14) y a qu elemento de la matriz corresponde?.

22. Defina una matriz D, de orden 3 4, cuyos elementos sean complejos.

23. Calcule la transpuesta compleja y la transpuesta

24. Cree una matriz x1 a partir de la columna 2 de la matriz A.

25. Combine la matriz x1 con la matriz c para crear la matriz bidimensional x2, de cinco filas y
dos columnas.

2.4. Operaciones Relacionales y Lgicos


Adems de las operaciones matemticas tradicionales, Matlab tambin posee operaciones relacionales
y lgicas. El propsito de estas operaciones es ofrecer respuestas a preguntas de Verdadero/Falso.
Estas operaciones se usan bsicamente para controlar el orden de ejecucin de las instrucciones
en Matlab, especialmente en los archivos-M. Cualquier nmero distinto de cero es considerado
verdadero por Matlab y es falso si es cero. La salida de todas las expresiones relacionales y lgicas
produce 1 si es verdadero y 0 si es falso.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 26

2.4.1. Operadores Relacionales


Los operadores relacionales que usa Matlab son:

Operador Descripcin
< Menor que
<= Menor o igual que
== Igual a
> Mayor que
>= Mayor o igual que
= No igual a

Con los operadores relacionales de Matlab se puede comparar dos arreglos del mismo tamao o
comparar un arreglo con un escalar. En este ltimo caso se compara el escalar con cada elemento
del arreglo y el resultado tendr el mismo tamao del arreglo.
Suponga que tenemos
>> a = [2, 3, 4, 5, 6]
a=
2 3 4 5 6
>> b = [5, 6, 7, 4, 8]
b=
5 6 7 4 8
Si ejecutamos el comando
>> r = a <= 5 , se producir el resultado
r=
1 1 1 1 0
lo cual significa que la comparacin en los primeros 4 elementos fue verdadera y en el quinto fue
falsa.
De la misma manera, si tecleamos la orden
>> a == b se producir el resultado
0 0 0 0 0
lo que significa que los vectores a y b son distintos en todos sus elementos.

2.4.2. Operadores Lgicos


Con los operadores lgicos se pueden combinar o negar las expresiones relacionales en Matlab. Los
operadores lgicos son:

Operador Descripcin
& and
| or
not

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 27

Por ejemplo, ejecutemos los comandos


>> a = [2, 3, 4, 5, 6]
a=
2 3 4 5 6
>> b = [5, 4, 7, 6, 9]
b=
5 4 7 6 9
si tecleamos la orden
>> r = (a <= 4) | (a >= 6)
se visualizar
r=
1 1 1 0 1
Es decir, devuelve unos cuando una de las dos condiciones es verdadera y ceros cuando ambas son
falsas.
El orden de precedencia de los operadores aritmticos, relacionales y lgicos es el siguiente:

Tabla de precedencia de operadores

. .
* / \ .* ./ .\
+ - +(unario) -(unario)
: > < >= <= == =
| &

donde la prioridad mayor la tienen los smbolos de la primera fila y as sucesivamente, de arriba
hacia abajo.

2.5. Instrucciones de Control de Flujo


Dentro de cualquier lenguaje de programacin, y Matlab no es la excepcin, las instrucciones de
control de flujo tienen una importancia extraordinaria porque nos permiten alterar el orden de
ejecucin de las sentencias dentro de un programa, dando as libertad y flexibilidad para que el
programador pueda implementar su propia lgica.
Matlab es un potente lenguaje de programacin de alto nivel orientado a los clculos cientficos y
de ingeniera.
Un programa de computadora es un conjunto de instrucciones que le indican al computador la
secuencia exacta de los pasos que debe dar para resolver un problema. Los archivos-m en Matlab

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 28

son programas (scripts) o funciones como ya hemos dicho. Los archivos-m son archivos de texto
plano.
Recordemos que los archivos-m, como programas, son un conjunto de instrucciones tal como si las
estuviramos escribiendo en la lnea de comandos y luego se guarda con un nombre que debe tener
extensin .m.
Para ejecutar este programa slo tenemos que teclear su nombre en la lnea de comandos, sin
escribir la extensin .m.
Dentro del contexto de la programacin juegan un papel muy importante las instrucciones de
control de flujo.

2.5.1. Instruccin if
La proposicin if tiene la forma:
if cond
sentencias;
........
else
sentencias;
........
end
donde cond es una expresin lgica. Las expresiones lgicas ms usadas son las expresiones de
relacin, que estn formadas por los operadores de relacin y/o lgicos que vimos anteriormente
en las pginas 26 y 26.
La forma como trabaja esta instruccin es la siguiente: si al momento de hacer la pregunta, cond
es verdadera se ejecutan las sentencias que siguen a continuacin. En caso contrario, si cond es
falsa, se ejecutan las sentencias que siguen al else.
Por ejemplo, consideremos el siguiente segmento
x=input(Introduzca un valor:);
if x >= 0 a = 1;
else a = -1;
end
En este segmento de programa se pide un valor por teclado y luego se pregunta si este valor es
mayor o igual a 0, en cuyo caso se hace a = 1. En caso contrario se hace a = -1.
Es importante hacer notar que el else no es obligatorio en la instruccin if.
Veamos este otro ejemplo:
a=input(Introduzca el valor de a:);
b=input(Introduzca el valor de b:);
c=input(Introduzca el valor de c:);

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 29

if ( a <b & a <c ) disp(El menor es a)


end
if (b <a & b <c ) disp(El menor es b)
end
if ( c <a & c <b ) disp(El menor es c)
end
if ( c == a & c == b ) disp(Los valores son iguales)
end
La proposicin if tambin toma la forma
if cond1
sentencias;
........
elseif cond2
sentencias;
........
else
sentencias;
........
end
En este caso si la expresin cond1 es falsa se ejecuta el elseif. Si la expresin cond2 es verdadera
se ejecutan las sentencias que estn bajo su dominio, de lo contrario se ejecuta otro elseif si
lo hubiere y as sucesivamente. Si todas las condiciones probadas en el if son falsas entonces se
ejecuta el else.
Por ejemplo, consideremos el segmento
k = input(Entre un valor entero para k: )
if k <0
disp(El valor es negativo)
elseif rem(k,2) == 0
disp(El nmero es par)
else
disp(El nmero es impar)
end
Si cualquiera de las condiciones antes del else es verdadera, se ejecuta la sentencia correspondiente
y termina el if, en caso contrario se ejecuta la sentencia del else.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 30

2.5.2. Instruccin for


La proposicin for permite ejecutar repetidamente un conjunto de instrucciones, con cambios
automticos en el valor de una variable. El formato de la proposicin for es
for v = vi: ic: vf
..............
..............
..............
end
donde v recibe el nombre del ndice del for; vi, ic, vf reciben el nombre de parmetros del ndice.
Al conjunto de instrucciones que va desde la instruccin que sigue al for hasta la que est antes
del end se le llama rango o recorrido del for.
La forma de trabajar del for es la siguiente:
La primera vez se le asigna a v el valor de vi y pregunta si v es menor o igual a vf. En caso
afirmativo, se ejecuta el recorrido. Luego, se incrementa v en ic.Si el nuevo valor de v es menor o
igual a vf, vuelve y se ejecuta el recorrido y as sucesivamente. En caso contrario, pasa el control
a la instruccin que sigue al end. Si ic no se especifica, se asume que es 1.
Por ejemplo, escribamos las instrucciones para sumar los primeros 10 nmeros naturales.

s=0;
for l = 1:10
s = s + l;
end

En este ejemplo el resultado de la suma queda en s.


Calculemos el factorial de 10.

fact=1;
for k = 1:10
fact = k *fact;
end

Calculemos el producto de los naturales pares que sean menores o igual a 13.

p=1;
for l = 2: 2: 13
p = p * l;
end

Dentro del recorrido de un for, al cual se le llama for exterior se permite tener a otros for a los
cuales se les llama for interiores.
El ndice del for se puede decrementar, si la variable ic es negativa. Por ejemplo:

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 31

for k = 5:-1:1
...
...
end

en este caso los valores que toma k son: 5 4 3 2 1 respectivamente.


El siguiente segmento suma los elementos de una matriz de orden 2 por 3

A=[3,-2,5;4,6,1];
suma = 0;
for l = 1: 2
for k = 1: 3
suma = suma + A(l,k);
end
end

La suma de los elementos queda en la variable suma.


Otra forma de la proposicin for es
for v = A
.
.
.
end
donde A es un arreglo. Si A es un arreglo lineal, los valores del ndice v son los elementos del
arreglo A. Si A es una matriz, entonces v es vector columna en cada iteracin. Es decir, en la
primera iteracin v toma el valor de A(:,1); en la segunda A(:,2) y as sucesivamente.

2.5.3. Instruccin while


La instruccin while permite ejecutar un segmento de un programa mientras sea cierta una
condicin. El formato de instruccin while es:
while cond
...
...
...
end
donde el conjunto de instrucciones que est entre el while y el end se ejecutar mientras la
condicion cond sea cierta.
Por ejemplo, el segmento para calcular el factorial de 10 con while ser
fact = 1;

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 32

k = 1;
while k <= 10
fact = k * fact;
k = k + 1;
end
Las sentencias entre while y end se ejecutarn mientras k sea menor o igual a 10.
Veamos este otro ejemplo que calcula y exhibe el rea de varios crculos
r = 1;
while r <= 5
area = pi * r2;
disp([r,area])
r = r + 1;
end
La orden break se utiliza para terminar la ejecucin de un ciclo for o while.
Por ejemplo, consideremos el segmento
l=3;
for k = 2:2:7
l = l + k;
if l >8 break, end
end
En este caso cuando l sea mayor que 8 termina el ciclo for y continuan las instrucciones que siguen
al end.
La orden continue como su nombre lo indica lo que hace es pasar el control a la prxima iteracin
dentro del ciclo for o while en la cual se encuentra, saltando todas la instrucciones restantes
dentro del recorrido del ciclo.
Nota:

Evite usar i y j como ndices, puesto que estas variables tienen valores prefijados ( 1 = Unidad
Imaginaria) dentro de Matlab.

2.5.4. Instrucciones switch-case-otherwise


La instruccin switch permite ejecutar ciertas instrucciones basadas en el valor de una variable o
expresin.
El formato de la instruccin switch es:
switch expr
case valor1
sentencias

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 33

case valor2
sentencias
.
.
.
otherwise
sentencias
end
donde expr es la variable o expresin que tomar los valores especificados en los cases; y sentencias,
son instrucciones vlidas de Matlab.
Por ejemplo, tomemos el siguiente segmento
var = input(Entre un entero)
switch var
case -1
disp(Es menos 1);
case 0
disp(Es cero);
case 1
disp(Es mas 1);
otherwise
disp(Otros valores);
end
En el segmento anterior, dependiendo del valor que tenga la variable var, se imprimir un mensaje.
La instruccin switch puede manejar mltiples condiciones en un simple case siempre que los
valores estn encerrados entre llaves y separados por coma.
Por ejemplo, veamos el siguiente segmento
var = input(Entre un entero)
switch var
case 1
disp( Es 1);
case {2,3,4}
disp(2 o 3 o 4);
otherwise
disp(Otros valores);
end
Observemos que en el segundo case hay mltiples valores, lo cual quiere decir que cualquiera de
los valores que estn encerrados satisface al case.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 34

Ejercicios 2.2
1. Suponga que i=10 y j = 5. Encuentre el valor de j despus de ejecutar los segmentos de
programa siguientes:

a) if 3*j < i, j = j + 2; b) if 2*j == i, j = j + 2;


j = j + 3; j = j + 3;
end end

c) if i > j, j = i;
j = j + i;
else
j = j + 1;
j = j + i;
end

2. Encuentre el valor de k despus de ejecutar los segmentos de programa siguientes:

a) k = 0; b) k = 0;
for i = 1 : 10 for i = 1 : 8
if i == 4, k = k + 5; if i == 4 continue;
k = k + i; k = k + i;
end end
end end

c) k = 0; d) k = 3; m = 2;
for i = 1 : 2 : 12 for j = 3 : m : 7
k = k + 2 * i; k = j + m;
end end
k = 3 * k;

e) f)
k = 2; k = 2;
for i = 3 : 8 : 2 for i = 3 : 8 : 2
k = k + i; k = k + i;
end if k > 6 break;
k = 2 * k; end
end
k = 2 * k;

3. Encuentre el valor de k despus de ejecutar los segmentos de programa siguientes:

a) k = 0; b) k = 0;
i = 1; i = 1;

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 35

while i <= 10 while i <= 10


if i == 5, k = k + 3; i = i + 2;
k = k + i; if i == 5 continue;
end k = k + 1;
i = i + 1; end
end end

c) k = 0; d) k = 3; m = 2;
j = 1; j = 3;
while j ~= 5 while j <= 7
k = k + 2 * j; k = j + 3 * m;
j = j + 1; j = j + m;
end end
k = 3 * k;

4. Qu se imprime cuando se ejecuta los siguientes segmentos de programa?:

a) for k = 1 : 2 : 7 b) x = -2;
switch k for i = 5 : -1 : 1
case 1 switch i
disp(Lunes); case 1
case 2 p = 2 * x + 1;
disp(Martes); disp(p);
case 3 case 2
disp(Miercoles); p = 5 - 3 * x^2;
case 4 disp(p);
disp(Jueves); case 3
case 5 p = x^3 - 1;
disp(Viernes); disp(p);
case 6 otherwise
disp(Sabado); disp(Otros valores);
case 7 end
disp(Domingo); end
otherwise
disp(Otros Nombres);
end
end

5. Codifique los siguientes programas en Matlab, utilizando la instruccin while.

a. Leer un entero positivo N . Sumar los enteros positivos menores o igual a N . Luego,
imprima el resultado.
b. Leer un entero positivo N . Sumar los enteros positivos impares menores o igual a N .
Luego, imprima el resultado.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 36

c. Leer un entero positivo N . Sumar los cuadrados de los enteros positivos pares menores
o igual a N . Luego, imprima el resultado.
d. Considere el vector a = (1, 2, 4, 5, 0, 3, 9, 2, 1, 3). Sume los elementos del vector
a y luego, imprima la suma.
e. Considere el vector a = (1, 2, 5, 5, 7, 3, 8, 4, 7, 3). Sume los elementos de ndice
par del vector a y luego, imprima la suma.

6. Considere la ecuacin y = x4 5x2 + 7x 8. Codifique un programa Matlab que calcule e


imprima los valores de y para x [4, 4] con incremento de 0.2.

7. Codifique un programa Matlab que calcule e imprima los trminos de la sucesin de Fibonacci
que sean menores o iguales a 1037.

2.6. Polinomios
Los polinomios en Matlab se representan a travs de vectores, cuyos componentes son los coeficientes
del polinomio. La primera componente del vector es el coeficiente del trmino de mayor grado y
as sucesivamente.
El vector

P= [2, 3, -1, 5]

representa el polinomio:
2x3 + 3x2 x + 5
En otras palabras, los polinomios se representan por medio de sus coeficientes en trminos de
vectores. As el polinomio de segundo grado
3x2 + 4x 1
tiene como vector de coeficientes a
[3, 4, -1]

2.6.1. Operaciones con Polinomios

Evaluacin

La funcin de Matlab para evaluar polinomios es


polyval
Suponga que tenemos un polinomio cuyo vector de coeficientes es
c = [-3, 2, 4, -2]
Es decir:
y = 3x3 + 2x2 + 4x 2

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 37

y queremos evaluar el polinomio en el punto xi = 2.5. Entonces ejecutamos los comandos:


>> xi = 2.5
xi =
2.5
>> polyval(c,xi)
ans =
26.3750

Para evaluarlo en 4.5, escribimos:

>> polyval(c,4.5)
ans =
216.8750

Clculo de Raices

Para calcular las raices del polinomio


z = 4x3 2x2 + 3x 1
escribimos
>> c = [4, -2, 3, -1]
c=
4 -2 3 -1
>> r = roots(c)
r=
0.0712 + 0.8331i
0.0712 0.8331i
0.3576
Si queremos encontrar los coeficientes del polinomio a partir de las raices, escribimos:
>> poly(r)
ans =
1.0000 0.5000 0.7500 0.2500

Es importante notar que los coeficientes aparecen normalizados. Es decir, el coeficiente del trmino
de mayor grado es 1 (polinomio mnico).
Si queremos encontrar las raices del polinomio
y = x2 + 4x + 5

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 38

escribimos:
>> c = [1, 4, 5]
c=
1 4 5
>> q = roots(c)
q=
2.0000 + 1.0000i
2.0000 1.0000i

Si queremos encontrar los coeficientes del polinomio, escribimos


>> poly(q)
ans =

1.0000 4.0000 5.0000

Suma y Resta

La suma y resta de polinomios se reduce a la simple suma y resta de los vectores que representan
los coeficientes de los polinomios dados. Recuerde que los vectores deben tener la misma longitud,
por lo que las potencias ausentes en los polinomios deben ser sustituidos por cero en los vectores
coeficientes.

Producto

La funcin en Matlab para multiplicar dos polinomios es


conv
Si a y b son los vectores coeficientes de dos polinomios, el producto de estos polinomios es el
polinomio que viene dado por:
p = conv(a,b)
Por ejemplo:
Suponga que se tiene dos polinomios, cuyos coeficientes son:
>> a = [3, -2, 4, 1];
>> b = [2, -1, 3];
>> p = conv(a,b)
p=
6 -7 19 -8 11 3
El vector p contiene los coeficientes del polinomio resultante.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 39

Divisin

La funcin en Matlab para dividir polinomios es


deconv
Si a y b son los vectores coeficientes de dos polinomios, la divisin de estos polinomios produce
como resultado los coeficientes de dos polinomios: El polinomio Cociente y el polinomio Resduo.
>> [q,r] = deconv(a,b)

q =

1.50000 -0.25000

r =

0.00000 0.00000 -0.75000 1.75000

Por ejemplo:
Suponga que deseamos dividir los polinomios, cuyos coeficientes son
>> a = [5, 2, -3, 4]
a=
5 2 -3 4
>> b = [2, -1, 3]
b=
2 -1 3
Ejecutemos el comando
>> [q,r] = deconv(a,b)

q =

2.5000 2.2500

r =

0.00000 0.00000 -8.25000 -2.75000

y se observa que
q es el vector de coeficientes del polinomio Cociente
r es el vector de coeficientes del polinomio Resduo

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 40

2.6.2. Ajuste de Curvas


En este mtodo tambin llamado regresin, se busca encontrar la curva que mejor ajuste los datos
dados; no necesariamente tiene que pasar a travs de los datos. Mejor ajuste quiere decir en nuestro
contexto, minimizar la suma del error al cuadrado en los puntos de los datos. Si la curva que usamos
se limita a polinomios, el ajuste de curvas es relativamente sencillo y se le llama ajuste de curvas
por mnimos cuadrados a un polinomio.
Para el ajuste por mnimos cuadrados en Matlab, utilizamos la funcin
polyfit
Ejemplo

Suponga que deseamos encontrar la recta que mejor ajuste los datos
xi 18.6 29.7 50.5 72.4 90.2
yi 678.2 745.6 780.5 875.2 988.5

Ahora ejecutamos en Matlab los comandos

>> xi=[18.6 29.7 50.5 72.4 90.2]

xi =

18.6000 29.7000 50.5000 72.4000 90.2000

>> yi=[678.2 745.6 780.5 875.2 988.5]

yi =

678.2000 745.6000 780.5000 875.2000 988.5000

>> y=polyfit(xi,yi,1)

y =

4.0189 603.4944

Si ejecutamos los comandos

>> ry=polyval(y,[15 xi 95])

ry =

663.7772 678.2450 722.8543 806.4464 894.4593 965.9949 985.2854

>> plot([15 xi 95],ry,-k,xi,yi,ok,markersize,4,MarkerFaceColor,k)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 41

1000

950

900

850

800

750

700

650
10 20 30 40 50 60 70 80 90 100

Figura 2.1: Recta ajustada

obtenemos la recta ajustada, que puede observarse en la figura 2.1. Los valores 15 y 95 fueron
agregados con el objetivo de extender la recta un poco nica y exclusivamente.

Ejemplo

Encontrar el polinomio cuadrtico que aproxima los datos

xi 0.15 0.33 0.45 0.93 1.38 1.56 2.10 2.22 2.46 2.94 3.51
yi 2.87 2.67 2.50 2.15 1.71 1.62 1.13 1.11 0.92 0.73 0.31

Ejecutemos los comandos Matlab

>> xi =[0.15 0.33 0.45 0.93 1.38 1.56 2.10 2.22 2.46 2.94 3.51]

xi =

0.1500 0.3300 0.4500 0.9300 1.3800 1.5600 2.1000 2.2200 2.4600

2.9400 3.5100

>> yi=[2.87 2.67 2.50 2.15 1.71 1.62 1.13 1.11 0.92 0.73 0.31]

yi =

2.8700 2.6700 2.5000 2.1500 1.7100 1.6200 1.1300 1.1100 0.9200

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 42

2.5

1.5

0.5

0
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 2.2: Polinomio cuadrtico ajustado

0.7300 0.3100

>> yc=polyfit(xi,yi,2)

yc =

0.0753 -1.0199 2.9958

>> pc_ajustado=polyval(yc,[0.1 xi 3.80])

pc_ajustado =

Columns 1 through 10

2.8946 2.8445 2.6675 2.5521 2.1124 1.7318 1.5880 1.1861 1.1028 0.9426

Columns 11 through 13

0.6483 0.3438 0.2077

>> plot([0.10 xi 3.80],pc_ajustado,-k,xi,yi,ok,markersize,4,MarkerFaceColor,k)

En la figura 2.2 se observa el polinomio cuadrtico ajustado.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 43

Si queremos encontrar el polinomio de grado n que pasa por los puntos


(x0 , y0 ), (x1 , y1 ), ..., (xn , yn )
se declaran los dos vectores; uno conteniendo las abscisas y el otro conteniendo las ordenadas. En
este caso el polinomio que se busca es el que interpola los puntos dados ( pasa por cada uno de los
puntos).

Ejemplo:

Suponga que deseamos encontrar el polinomio de grado 3 que ajuste los puntos
(1.0, 0.2), (1.1, 0.4), (1.2, 0.4), (1.3, 0.3)
Ejecutemos los siguientes comandos
>> x = [1.0, 1.1, 1.2, 1.3];
>> y = [0.2, 0.4, 0.4, 0.3];
>> p = polyfit(x, y, length(x) - 1)
p=
16.667 -65.000 83.333 -34.800
El vector p contiene los coeficientes del polinomio resultante.

2.6.3. Interpolacin
En este mtodo se supone que los datos son correctos y lo que se busca es describir de alguna
manera qu sucede entre ellos.
En Matlab hay una funcin que nos permite obtener el valor funcional de una abscisa xi interpolndola
(por defecto interpolacin lineal ) a partir de una tabla de funcin. Esta funcin es
interp1
La forma de esta funcin es:
yi = interp1(x, y, xi, linear)
donde x e y son vectores filas/columnas del mismo tamao, aunque y puede tener ms de una
fila/columna. EL vector x debe ser montono creciente o decreciente estrictamente.
Por ejemplo:
Suponga que tenemos una relacin funcional dada por la tabla

x y

0.00 0.92
0.25 0.81
0.50 0.69
0.75 0.56
1.00 0.41

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 44

Deseamos encontrar los valores de y que satisfagan los valores de


xi = [0.15, 0.45, 0.62, 0.94] respectivamente
Ejecutemos los comandos siguientes:
>> x = [0.00, 0.25, 0.50, 0.75, 1.00];
>> y = [0.92, 0.81, 0.69, 0.56, 0.41];
>> xi = [0.15, 0.45, 0.62, 0.94];
>> yi = interp1(x, y, xi, linear)
>> [xi yi]
Se visualizar

0.15 0.8540
0.45 0.7140
0.62 0.6276
0.94 0.4460

Ejercicios 2.3
1. Considere los polinomios

P (x) = 6x5 2x4 + 3x2 x 7, Q(x) = x3 + 3x+ 2, R(x) = 3x4 5x3 + 2x2 x + 6.

Utilice funciones de Matlab para ejecutar las siguientes operaciones

a. P (x) + Q(x)
b. R(x) Q(x)
c. P (x) Q(x)
d. P (x)/Q(x)
e. Calcule las raices de R(x)

2. Si r1 = 2, r2 = 3, r3 = 5, r4 = 1, r5 = 2 son la raices de un polinomio, encuentre el


polinomio.

3. Evale el polinomio P (x) del punto 1 en x = 2.5 y en el vector v = [1.5, 2.3, 1.5].

4. Encuentre las raices del polinomio

P (x) = x7 7x5 + 2x4 + 12x3 14x2 + 24.

5. Encuentre la recta que ajusta los datos

xi 6 8 10 12 14 16 18 20 22 24
yi 3.76 3.85 3.94 4.03 4.12 4.21 4.30 4.39 4.48 4.57

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 45

6. Encuentre el polinomio de segundo grado que ajusta los datos

xi 6 8 10 12 14 16 18 20 22 24
yi 3.73 3.84 3.94 4.04 4.13 4.22 4.31 4.39 4.46 4.53

7. Utilice interpolacin lineal para obtener los valores correspondientes a

xi = [3.80, 3.91, 4.18, 4.25, 4.35, 4.5]

con los siguientes datos:

xi 6 8 10 12 14 16 18 20 22 24
yi 3.73 3.84 3.94 4.04 4.13 4.22 4.31 4.39 4.46 4.53

5. Codifique un programa Matlab que lea un arreglo lineal real de N elementos. Calcule la
media aritmtica e imprima los elementos que sean mayores o igual a la media aritmtica y
termine.

6. Codifique un programa Matlab que lea un arreglo lineal entero de 25 elementos( asuma que
los elementos son positivos). Imprima cada par de enteros, cuya suma sea 75 y termine.

7. Construya una matriz A de Hilbert de orden 5 5.

8. Codifique un programa Matlab que lea una matriz real de orden M M . Calcule e imprima
la suma de los elementos que no pertenecen a alguna de las diagonales y termine.

9. Codifique un programa Matlab que lea una matriz real de orden M M . Intercambie los
elementos de la misma fila que pertenecen a ambas diagonales y termine.

10. Codifique un programa Matlab que lea un arreglo lineal real de N elementos. Calcular el
elemento mximo en valor absoluto del arreglo e imprimirlo y terminar.

11. Codifique un programa Matlab que lea dos arreglos lineales reales de N elementos. Calcular
el producto escalar de ambos arreglos e imprimir el resultado y terminar.

12. Codifique un programa Matlab que lea un arreglo lineal real de N elementos. Ordene ascendentemente
el arreglo e imprmalo y termine.

13. Codifique un programa Matlab que lea un arreglo lineal real de N elementos. Calcule la
media aritmtica de los elementos del arreglo e imprmala y termine.

14. Codifique un programa Matlab que lea un arreglo lineal real de N elementos. Calcule la
norma Eucldea e imprmala y termine.

15. Codifique un programa Matlab que lea un arreglo lineal real de N elementos. Calcule la
desviacin estndar e imprmala y termine.

16. Codifique un programa Matlab que lea los primeros 9 elementos de un arreglo lineal real de
10 elementos. Tambin lea una cantidad real X. Inserte la cantidad X en la posicin 5 del
arreglo. Luego, imprima el arreglo completo.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 46

17. Codifique un programa Matlab que lea una matriz real de orden 5 6. Intercambie la fila 2
por la 4 y luego imprima la matriz leda.

18. Codifique un programa Matlab que lea una matriz real de orden M M . Calcule la suma
de los elementos de la diagonal secundaria e imprmala y termine.

19. Codifique un programa Matlab que lea una matriz real de orden M M . Calcule la suma
de los elementos que estn por debajo de la diagonal principal e imprmala y termine.

20. Codifique un programa Matlab que lea una matriz real de orden M M . Calcule la suma
de los elementos que estn por encima de la diagonal principal e imprmala y termine.

21. Codifique un programa Matlab que lea una matriz real de orden M M . Calcule la suma
de los elementos que estn por encima de la diagonal secundaria e imprmala y termine.

22. Codifique un programa Matlab que lea una matriz real de orden M M . Calcule la suma
de los elementos que estn por debajo de la diagonal secundaria e imprmala y termine.

23. Codifique un programa Matlab que lea una matriz real de orden M N . Calcule la suma de
los elementos que estn comprendidos en el intervalo [2.5, 4.7] e imprmala y termine.

2.7. Anlisis de Datos


El anlisis estadstico de datos con Matlab es bastante sencillo por la orientacn matricial que
posee. Generalmente los datos se almacenan en matrices por columnas, donde cada columna de la
matriz representa una variable y las filas representan valores individuales de las variables.
Por ejemplo, suponga que tenemos una matriz que contiene los datos mensuales de del costo del
dlar en los aos 2003 y 2004.
Ejecutemos el comando
>> cdolar = [ 18.00 30.00
19.20 32.25
19.33 35.10
19.43 35.67
20.10 35.89
20.22 36.12
20.25 36.23
21.05 36.22
21.08 36.25
21.10 36.40
21.23 36.47
21.25 38.25]
Si queremos calcular el promedio por aos, ejecutamos el comando

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 47

>> prom = mean(cdolar)


y se visualizarn dos valores que representan el promedio para cada columna ( 2003 y 2004).De la
misma manera, si queremos calcular el valor mximo en cada ao, ejecutamos
>> cmax = max(cdolar)
Si deseamos la desviacin estndar, ejecutamos
>> desv = std(cdolar)
Matlab ofrece un conjunto amplio de funciones estadsticas. Algunas de ellas son:

Funcion estadstica Descripcin


median(x) Mediana del vector X
mode(x) Moda del vector X
var(x) Varianza del vector X
corrcoef(x) Coeficiente de Correlacin de X
cov(x) Matriz de Covarianza de X
cumsumd(x) Suma acumulada de Columnas
cumprod(x) Producto acumulado de Columnas
diff(x) Calcula las diferencias entre elementos
hist(x) Histograma o Diagrama de Barras
sort(x) Ordena el vector X
sortrows(x) Ordena el vector X

En esta seccin presentaremos comandos, funciones y operaciones adicionales para el trabajo comn
dentro del algebra lineal.

Ejercicios 2.4
1. Utilice los datos de la siguiente tabla para calcular las funciones anteriores

xi 65 63 67 64 68 62 70 66 68 67 69 71
yi 68 66 68 65 69 66 68 65 71 67 68 70

2. Considere la matriz

68 85 92 74 80
55 76 84 66 58
A=
63

75 65 72 83
86 95 90 82 78

a. Encuentre el valor mximo de cada columna.


b. Encuentre el valor mximo de cada fila.
c. Obtenga la fila en la que se encuentra el mximo.
d. Obtenga la columna en la que se encuentra el mximo.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 48

e. Encuentre el mximo de toda la matriz.

3. Considere la matriz del item 2.

a. Encuentre el valor promedio de cada columna.


b. Encuentre el valor promedio de cada fila.
c. Encuentre la mediana de cada columna.
d. Encuentre la mediana de cada fila.
e. Encuentre la mediana de toda la matriz.

4. Considere la matriz del item 2.

a. Ordene ascendentemente (sort) cada columna de la matriz.


b. Ordene descendentemente (sort)cada columna de la matriz.
c. Ordene ascendentemente la matriz segn el orden de la primera columna ( use la funcin
sortrows).

5. Considere la matriz del item 2.

a. Encuentre la varianza para cada columna.


b. Encuentre la desviacin estndar para cada columna.
c. Encuentre la suma y el producto acumulado de cada columna

2.8. Sistemas de Ecuaciones Lineales


Suponga que tenemos un conjunto de m ecuaciones con n incgnitas dado por:

a11 x1 + a12 x2 + + a1n xn = b1


a21 x1 + a22 x2 + + a2n xn = b2
.. .. .. ..
. . . .
am1 x1 + am2 x2 + + amn xn = bm

donde aij son coeficientes conocidos, xi son las incgnitas y las bi son trminos conocidos, llamados
no homogneos.
El sistema anterior se puede escribir de forma compacta como
Ax = b
donde A, x y b estn definidos respectivamente por

a11 a12 . . . a1n x1 b1
a21 a22 . . . a2n x2 b2
A = .. .. .. .. x = .. b= ..

. . . . . .


am1 am2 . . . amn xn bm

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 49

Suponga que m = n, que es el caso ms comn. En este caso, A es una matriz cuadrada. Para
obtener la solucin escribimos
x = A\b x = inv(A)*b
Recuerde que en lugar de inv podemos escribir
A (-1)
Ejemplo:
Suponga que queremos resolver el sistema

3x1 2x2 = 1
2x1 + x2 = 10

En este caso tenemos


     
3 2 1 x1
A= b= x=
2 1 10 x2
Ejecutemos los siguientes comandos
>> A = [3, -2;2, 1]

A =
3 -2
2 1

>> b = [1; 10]


b=
1
10
>> x = A\b
Se visualiza
x=
3.0000
4.0000
Si se introduce el comando
>> x = inv(A) * b
se visualizar el mismo resultado
x=
3.0000
4.0000
Es importante sealar que la matriz A debe ser no singular. Es decir,
det 6= 0
Si el determinante de la matriz de coeficientes es cero, se debe utilizar otro procedimiento para
determinar si el sistema tiene o no solucin.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 50

Ejercicios 2.5
Resuelva los sistemas:

1. 2x1 + 3x2 x3 = 5
x1 2x2 + 5x3 = 12
3x1 + x2 2x3 = 1

2. 5x1 + 2x2 x3 = 1
x1 + 3x3 = 5
3x1 + x2 + 6x3 = 17

3. x1 + x2 6x3 = 7
x1 + 2x2 + 9x3 = 2
x1 2x2 + 3x3 = 10

2.9. Valores Propios de Matrices


Suponga que A es una matriz cuadrada de orden n. Entonces la funcin definida por
f () = det(A I)
se le llama polinomio caracterstico de la matriz A.
La funcin f () es un polinomio en de grado n.
Por ejemplo, para
 
1 3
A=
1 2

f () se convierte en det(A - I) = 2 3 + 5.
Las soluciones de f () = 0 se les llama Valores Caractersticos o Valores Propios o Autovalores de
A.
En Matlab, los coeficientes del polinomio Caracterstico se calculan con la funcin
c = poly(A)
donde A es la matriz y c es un arreglo de coeficientes polinmicos.
Los valores caractersticos se calculan con
roots(c)
Tambin podemos calcular de forma ms directa los valores propios de A utilizando la funcin
eig(A)
Es evidente que los valores de roots(c) y eig(A) son idnticos.
Por ejemplo:

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 51

Calculemos los valores propios de la matriz



3 4 2
A = 3 1 1
2 0 5

Ejecutamos los comandos


>> A = [3, 4, -2;3, -1, 1;2, 0, 5]
A=
3.0000 4.0000 -2.0000
3.0000 -1.0000 1.0000
2.0000 0.0000 5.0000
>> eig(A)
ans =
-2.7503
4.8751 + 1.4314i
4.8751 - 1.4314i
Otra forma de calcular los valores propios de A es ejecutando
>> c = poly(A)
que genera el vector
c=
1.0000 -7.0000 -1.0000 71.0000
que corresponde al polinomio caracterstico
f () = det(A I) = 3 72 + 71
Ahora ejecutemos el comando
>> r = roots(c)
r=
4.8751 + 1.4314i
4.8751 - 1.4314i
-2.7503
Observemos que los valores anteriores son idnticos a los calculados directamente con el comando
>> eig(A)

2.10. Tpicos Adicionales de lgebra Lineal


El producto punto de dos vectores se calcula con la funcin
dot(x,y)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 52

donde x y y son dos vectores cualesquiera.


Por ejemplo, ejecutemos los comandos:
>> x = [2, 3, 8]
>> y = [5, 3, 4]
Ahora,
>> dot(x, y)
y se visualizar
ans =
13
El producto vectorial se calcula con la funcin
cross(x, y)
Por ejemplo, el comando
>> cross(x, y)
produce el resultado
ans =
-36 -48 -9
Para calcular la norma de un vector x utilizamos la funcin
norm(x, t),
donde t puede ser: 1 (norma sub-uno), 2 ( norma Eucldea - defecto), inf (norma sub-infinito) y
otras menos usadas.
Por ejemplo, el comando
>> norm(x)
produce el valor (norma Eucldea) de
ans =
8.7750
Si queremos calcular el ngulo entre los vectores x y y, ejecutamos el comando
>> acos(dot(x,y)/(norm(x) * norm(y)))
Por ejemplo, ejecutemos los comandos
>> x = [ 3 -3 5];
>> y = [-5 2 4];
>> acos(dot(x,y)/(norm(x) * norm(y))) y se obtiene el resultado
ans =
1.5935
Recordemos que el resultado es presentado en radianes.
La traza de una matriz A se obtiene con el comando

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 53

trace(A)
Del lgebra lineal sabemos que toda matriz simtrica A Rnn puede ser descompuesta como
A = P DP T , donde P es una matriz ortogonal (P T = P 1 ) y D es la matriz diagonal de valores
propios de A. Si A Rnn es diagonalizable (simtrica o no), existe una descomposicin de
A = SDS 1 , donde S es no singular ( no necesariamente ortogonal ).
Toda matriz A Rmn , m n se puede factorizar en sus valores singulares (raz cuadrada de los
valores propios de AT A, que es simtrica, de orden nn y por tanto, diagonalizable ortogonalmente.
Es claro que sus valores propios son reales y no negativos) como

A = U SV T ,

donde U Rmm , cuyas columnas son ortogonales; S una matriz diagonal de orden m n de los
valores singulares, colocados en orden decrecientes y V Rnn una matriz ortogonal.
Nota: Es importante saber que Matlab tiene algoritmos diferentes para el clculo de las matrices
U, S Y V .
Para factorizar una matriz A en sus valores singulares, ejecutamos el comando
[U S V] = svd(A)
Por ejemplo, digitemos en matlab los comandos:

>> A = [2 -1 3;5 2 1;3 -2 2;4 1 3]

A =

2 -1 3
5 2 1
3 -2 2
4 1 3

>> [U S V] =svd(A)

U =

-0.3752 -0.5222 -0.4040 -0.6507


-0.5829 0.6483 0.3118 -0.3778
-0.4085 -0.5495 0.6839 0.2519
-0.5938 0.0716 -0.5214 0.6087

S =

8.4652 0 0
0 3.5891 0
0 0 1.5681
0 0 0

V =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 54

-0.8583 0.2327 0.4574


-0.0670 0.8329 -0.5494
-0.5088 -0.5022 -0.6993

Para comprobar el resultado, ejecutamos el comando

>> U*S*V

ans =

2.0000 -1.0000 3.0000


5.0000 2.0000 1.0000
3.0000 -2.0000 2.0000
4.0000 1.0000 3.0000

Observamos que esta es la matriz A original.

Si A Rmn , m n, Matlab puede producir matrices U Rmn , S Rnn y V Rnn ,


utilizando otro algoritmo. Por ejemplo, ejecutando el comando

>> [ U S V] = svd(A,0)

U =

-0.3752 -0.5222 -0.4040


-0.5829 0.6483 0.3118
-0.4085 -0.5495 0.6839
-0.5938 0.0716 -0.5214

S =

8.4652 0 0
0 3.5891 0
0 0 1.5681

V =

-0.8583 0.2327 0.4574


-0.0670 0.8329 -0.5494
-0.5088 -0.5022 -0.6993

se obtiene otra factorizacin en valores singulares.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 55

Si se ejecuta el comando
>> S = svd(A)
se obtiene el vector de valores singulares. Por ejemplo,

>> S = svd(A)

S =

8.4652
3.5891
1.5681

Para obtener el rango de una matriz A, utilizamos el comando


rank(A)
Por ejemplo, el rango de la matriz

3 4 2
A = 3 1 1
2 0 5

se obtiene con el comando


>> rank(A)
y produce el resultado
ans =
3
Decimos que la matriz A es Similar o semejante a una matriz B, si existe una matriz no singular
P , tal que A = P 1 BP . Se dice que la matriz cuadrada A es Diagonalizable si y slo si, existe
una matriz diagonal D, tal que A y D son semejantes.

Para diagonalizar una matriz A se puede utilizar el comando


[V J]=jordan(A)
Por ejemplo, para diagonalizar la matriz

3 4 2
A = 3 1 1
2 0 5

Se ejecuta el comando
>> [V J] = jordan(A)
y produce el resultado

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 56

V =

-3.8751 + 0.0000i -0.0624 - 0.7157i -0.0624 + 0.7157i


6.0708 + 0.0000i 0.2146 - 0.3132i 0.2146 + 0.3132i
1.0000 + 0.0000i 1.0000 + 0.0000i 1.0000 + 0.0000i

J =

-2.7503 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i


0.0000 + 0.0000i 4.8751 - 1.4314i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 4.8751 + 1.4314i

Observemos que J = V 1 A V = V \A V o A = V J V 1 . Para comprobar los resultados,


ejecutemos los comandos

>> inv(V)*A*V %Matriz diagonal J

ans =

-2.7503 + 0.0000i -0.0000 - 0.0000i -0.0000 + 0.0000i


0.0000 + 0.0000i 4.8751 - 1.4314i 0.0000 - 0.0000i
0.0000 - 0.0000i 0.0000 - 0.0000i 4.8751 + 1.4314i

>> V*J*V^(-1) %Matriz A

ans =

3.0000 - 0.0000i 4.0000 - 0.0000i -2.0000 + 0.0000i


3.0000 + 0.0000i -1.0000 + 0.0000i 1.0000 + 0.0000i
2.0000 + 0.0000i -0.0000 + 0.0000i 5.0000 + 0.0000i

>> real(ans) % Para tomar la parte real. Toda la parte imaginaria es cero

ans =

3.0000 4.0000 -2.0000


3.0000 -1.0000 1.0000
2.0000 -0.0000 5.0000

>> fix(round(ans)) % Toma la parte entera para dar la matriz A original

ans =

3 4 -2
3 -1 1
2 0 5

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 57

En el ltimo comando, utilic dos funciones: fix y round. La funcin round redondea al entero
ms prximo. Es posible que producto de todas las operaciones realizadas por el computador, los
resultados visualizados no sean en realidad exactos, sino aproximados. Al ejecutar la funcin fix
despus de la funcn round, se asegura tomar la parte entera del valor ya redondeado.

2.10.1. Base y Dimensin


Para determinar si un conjunto de vectores de un espacio vectorial es linealmente independiente
(LI), se calcula el determinante de la matriz formada por las componentes de los vectores. Si el
determinante es diferente de cero, el conjunto es linealmente independiente (LI) y si es cero, es
linealmente dependiente (LD).
Por ejemplo, para determinar si los siguientes vectores

{(2, 3, 1), (5, 0, 4), (7, 5, 3)}

son LI o LD, se ejecutan los comandos


>> det([2, 3, 1; 5, 0, 4; 7, 5, 3])
y se obtiene el resultado

ans =
24.000
Como el determinante es distinto de cero, el conjunto de vectores es linealmente independiente.
Si la matriz de los vectores no es cuadrada, entonces se puede usar el concepto de rango para saber,
si es LI o LD.
Por ejemplo, si se quiere saber si el conjunto de vectores

{(4, 1, 5, 5), (2, 3, 5, 0), (5, 2, 1, 8)}

es LI o LD, se ejecuta el comando


>> rank([4, 1, 5, 5; 2, 3, 5, 0; 5, 2, 1, 8])
y se obtiene el resultado

ans =
3
Esto indica que el conjunto es LI. Si el rango es menor de 3, indica que el conjunto de vectores es
LD.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 58

La dimensin del espacio vectorial generado por un conjunto de vectores, viene dada por el rango
de la matriz formada por los componentes de los vectores.
Por ejemplo, la dimensin del espacio vectorial generado por el conjunto de vectores

{(3, 1, 2, 5), (2, 7, 4, 3), (5, 4, 1, 2)}

se obtiene ejecutando el comando

>> rank([3, 1, 2, 5; 2, 7, 4, 3; 5, 4, 1, 2])


para producir el resultado

ans =
3
lo cual nos indica que la dimensin es 3.

Por ejemplo, determinar si el conjunto de vectores en R3


{(3,-1,2), (-2, 5, 3), (4, 7, 1)}
forman una base de R3 . En caso afirmativo, encontrar las coordenadas del vector v = (2, 5, 7)
con respecto a esta base.
Para saber si forman una base, calculamos el determinante, mediante el comando
>> det([3, -1, 2;-2, 5, 3;4, 7, 1])
ans =
-130
Como el determinante es diferente de cero, los vectores son LI y se tiene que cualquier vector de
R3 , se puede expresar como una combinacin lineal de dichos vectores. Por tanto, es un conjunto
generador de R3 y constituye una base de R3 . Las componentes del vector v = (2, 5, 7) se obtienen
con el comando

>> inv([3, -1, 2;-2, 5, 3;4, 7, 1]) * [2, -5, 7]


cuyo resultado es

ans =

2.61538
0.92308
-1.00000

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 59

Observe que en el comando anterior se calcula la inversa de la transpuesta de la matriz formada


por los vectores de la base.

Ejemplo:

Sea A = {(1, 1, 0, 0), (2, 0, 1, 0), (0, 1, 2, 1), (0, 1, 1, 0)} una base de R4 . Obtener las coordenadas
del vector v = (1, 2, 6, 2) con repecto a la base A.

Solucin

Debemos encontrar constantes c1 , c2 , c3 , c4 tales que


c1 (1, 1, , 0, 0) + c2 (2, 0, 1, 0) + c3 (0, 1, 2, 1) + c4 (0, 1, 1, 0) = v.
Ahora ejecutamos los comandos

>> A = [1, 1, 0, 0;2, 0, 1, 0;0, 1, 2, -1;0, 1, -1, 0]

A =

1 1 0 0
2 0 1 0
0 1 2 -1
0 1 -1 0

>> v = [1, 2, -6, 2]

v =

1 2 -6 2

>> C=A\v

C =

3.0000
-1.0000
-2.0000
1.0000

Luego, el vector de coordenadas con respecto a la base A es:


(3, 1, 2, 1).
Observe que al calcular el vector de coordenadas, utilic la transpuesta de A y v para luego resolver
el sistema.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 60

Sean A = {v1 , v2 , . . . , vn } y B = {w1 , w2 , . . . , wn } dos bases de un espacio vectorial V de dimensin


n. La Matriz de cambio de base o matriz de transicin de la base A a la B, cuyas columnas
son los vectores de coordenadas de cada uno de los vectores de la base A con respecto a la base B.

Ejemplo:
Sean A = {v1 , v2 , v3 } y B = {w1 , w2 , w3 } dos bases de R3 , donde

v1 = (2, 0, 1)0 , v2 = (1, 2, 0)0 , v3 = (1, 1, 1)0

y
w1 = (6, 3, 3)0 , v2 = (4, 1, 3)0 , v3 = (5, 5, 2)0 .
Calcular la matriz de transicin de A a B.
Solucin
Calculamos las coordenadas de cada uno de los vectores de la base A con respecto a la base B.
Debemos resolver los sistemas:
[w1 w2 w3 ]T1 = v1 , donde T1 es el vector de coordenadas de v1 .
[w1 w2 w3 ]T2 = v2 , donde T2 es el vector de coordenadas de v2 .
[w1 w2 w3 ]T3 = v3 , donde T3 es el vector de coordenadas de v3 .

Para obtener la matriz de transicin, ejecutamos los comandos

>> V = [2 1 1;0 2 1;1 0 1]

V =

2 1 1
0 2 1
1 0 1

>> v1=V(:,1)

v1 =

2
0
1

>> v2=V(:,2)

v2 =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 61

2
0

>> v3=V(:,3)

v3 =

1
1
1

>> W = [6 4 5;3 -1 5;3 3 2]

W =

6 4 5
3 -1 5
3 3 2

>> T1= W\v1

T1 =

1.5000
-0.5000
-1.0000

>> T2= W\v2

T2 =

0.5000
-0.5000
0

>> T3= W\v3

T3 =

-2.5000
1.5000
2.0000

>> T =[ T1 T2 T3]

T =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 62

1.5000 0.5000 -2.5000


-0.5000 -0.5000 1.5000
-1.0000 0 2.0000

T es la matriz de transicin o matriz de cambio de base buscada.


Encontremos las coordenadas del vector v = (5, 3, 4)0 con respecto a la base B. Lo primero que
debemos hacer es encontrar las coordenadas de v con respecto a la base A y luego multiplicar este
vector de coordenadas por la matriz de transicin. Se debe producir el mismo resultado que se
obtiene las coordenadas de v con respecto a la base B directamente.
Ejecutemos los comandos

>> v= [5;-3;4]

v =

5
-3
4

>> V1=V\v

V1 =

3
-2
1

>> T*V1

ans =

1.0000
1.0000
-1.0000

Observe que para calcular el vector de coordenadas de v = (5, 3, 4)0 respecto a la base B utilizamos
la matriz de transicin. El vector
w = (1, 1, 1)0
es el vector de coordenadas buscado.

Si calculamos el vector de coordenadas directamente con respecto a la base B, se debe obtener el


mismo resultado. Ejecutemos el comando

>> V2 = W\v

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 63

V2 =

1
1
-1

Efectivamente, tal como se esperaba. El mismo resultado. Es decir, las coordenadas del vector v
en la base B, se puede obtener multiplicando la matriz de transicin por el vector de coordenadas
del vector v respecto a la base A.

Note que la matriz de transicin se puede obtener tambin ejecutando el comando


>> T = inv(B) * A, si los vectores de A y B estn dados en forma de columnas o

>> T = inv(B) * A, si los vectores estn en forma de filas. Veamos el resultado del comando

>> MT=inv(W)*V

MT =

1.5000 0.5000 -2.5000


-0.5000 -0.5000 1.5000
-1.0000 0 2.0000

Matlab tambin cuenta con la funcin rref que toma como argumento una matriz y la escalona
reducida por filas. Podemos utilizar este comando para encontrar la matriz de transicin. Basta
con ejecutar el comando

>> rref([ W V])

ans =

1.0000 0 0 1.5000 0.5000 -2.5000


0 1.0000 0 -0.5000 -0.5000 1.5000
0 0 1.0000 -1.0000 0 2.0000

La submatriz formada por las ltimas tres columnas de la matriz anterior es la matriz de transicin.

Consideremos las siguientes bases del espacio R3


A = {(1,0,0), (0,1,0), (0,0,1)}, B = {(2,1,-1), (1,-1,3), (-2, 2, 1)}
Para encontrar la matriz del cambio de base de A a B, ejecutamos los comandos
>> A = [1, 0, 0;0, 1, 0;0, 0, 1];

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 64

>> B = [2, 1, -1;1, -1, 3;-2, 2, 1];


>> C = inv(B) * A
y se obtiene la matriz
C=

0.33333 0.33333 -0.00000


0.14286 0.00000 0.28571
-0.09524 0.33333 0.14286

Si ahora queremos obtener las componentes del vector v = (2, 3, 5) en la base B, ejecutamos el
comando
>> C * [-2 3 5]
para obtener el vector

ans =

0.33334
1.14283
1.90477
Recuerde que se debe buscar las coordenadas del vector v respecto a la base A. En este caso no
fue necesario porque la base A es la usual y produce las mismas coordenadas del vector v.

2.10.2. Transformaciones Lineales


Sean E y F dos espacios vectoriales sobre un cuerpo K. Una Transformacin lineal T de E en
F , escrita como T : E F , es una funcin que asigna a cada vector u en E un nico vector T (u)
en F tal que

a. T (u + v) = T (u) + T (v), u, v E

b. T (ku) = kT (u), u E, k K

Si E y F son iguales, entonces la transformacin lineal se escribe T : E E y se le llama


Operador lineal sobre E.

Consideremos las transformaciones lineales T : Rn Rm , representadas por medio de una matriz


A de orden m n. Es decir, para x Rn , se tiene que

T (x) = Ax Rm .

Ejemplo

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 65

Consideremos la transformacin lineal T : R4 R3 , definida por T (x) = Ax, donde



1 2 3 2
A = 2 3 1 1 .
3 2 2 1

Para calcular la imagen del vector


2
3
x=
5 ,

1
ejecutamos los comandos
>> A = [1, 2, 3, 2; 2, 3, 1, 1; 3, 2, 2, 1]
>> x = [2; 3; 5; 1]
>> A x

y el resultado es
ans =
21
1
9

La transformacin lineal T : Rn Rm tiene como Imagen al subespacio de Rm formado por las


imgenes de todos los vectores de Rn , que viene dado por el subespacio generado por las columnas de
la matriz A. Podemos conocer fcilmente la imagen de T si conocemos una base de este subespacio.

Ejemplo
Consideremos la tranformacin lineal T : R5 R4 , definida por T (x) = Bx, donde

1 8 2 25 12
1 3 1 7 3
B= 2 1 1 4 3

1 2 0 11 6

Si ejecutamos el comando
>> rref(B 0 )

obtenemos la matriz
ans =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 66

1 0 1 1
0 1 3 2
0 0 0 0 ,
0 0 0 0
0 0 0 0
que es una matriz escalonada reducida por filas. Las transpuestas de las filas no nulas de esta
matriz forman una base del subespacio imagen de la transformacin T . Es decir, el conjunto de
vectores
{(1, 0, 1, 1)0 , (0, 1, 3, 2)0 }
representa una base del subespacio imagen. Otra forma de obtener una base del subespacio imagen
es ejecutando el comando

>> rref(B)

para obtener la matriz


ans =
1.0000 0 0.4000 3.8000 2.4000
0 1.0000 0.2000 3.6000 1.8000
,
0 0 0 0 0
0 0 0 0 0
que es una matriz escalonada reducida por filas. Entonces las columnas de B correspondientes a
las columnas donde se encuentran los elementos distinguidos de esta ltima matriz ( escalonada
reducida por filas) representan una base del subespacio imagen. Como los elementos distinguidos
estn en las dos primeras columnas, se tiene que las dos primeras columnas de la matriz B
representan una base de la imagen de T . Es decir, el conjunto de vectores


1 8
1 3

,
2 1

1 2

constituye una base de la imagen de T .

Sabemos que el Ncleo de una transformacin lineal T : Rn Rm es un subespacio de Rn . Por


tanto, para conocer este subespacio, basta con obtener una base del mismo. El Ncleo de T es el
conjunto de vectores de Rn que satisfacen la ecuacin

T (x) = Bx = 0.

Ejemplo

Para obtener una base del ncleo de la transformacin lineal T del ejemplo anterior, se procede
ejecutando el comando

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 67

>> rref(B)

para obtener la matriz escalonada reducida por filas


ans =
1.0000 0 0.4000 3.8000 2.4000
0 1.0000 0.2000 3.6000 1.8000
,
0 0 0 0 0
0 0 0 0 0
Esta matriz nos dice que las ltimas tres variables son libres. Entonces para obtener una base del
subespacio solucin del sistema homogneo, nos imaginamos ampliando la matriz a una cuadrada,
mediante la insercin de filas en las posiciones donde no haya elementos distinguidos de la diagonal
principal. Estas filas tienen la caracterstica de que sus elementos deben ser cero (0), excepto aquel
de la diagonal principal, que debe ser -1. En nuestro caso, debemos insertar una fila con un -1 en
el elemento (3,3) y todos los dems, cero (0); otra fila con un -1 en el elemento (4,4) y los dems
cero (0) y una ltima fila con un -1 en el elemento (5,5) y cero en todos los dems..
La base del ncleo viene dada por el conjunto de vectores columna donde se insertaron los -1. As
que en este caso, la base es el conjunto


0.4000 3.8000 2.4000

0.2000 3.6000 1.8000




1.0000 , 0 ,
0


0 1 0





0 0 1

Ejemplo

Sea T : R3 R4 una transformacin lineal, tal que

T (e1 ) = u1 u2 , T (e2 ) = u2 u3 , T (e3 ) = u3 u4 ,

donde

S = {e1 , e2 , e3 } y T = {u1 , u2 , u3 , u4 } son las bases usuales de R3 y R4 , respectivamente.

La matriz asociada de T viene dada por

.. .. ..

1 0 0
. . .
1 1 0
A = T (e1 ) T (e2 ) T (e3 ) =

0 1 1
.. .. ..

. . . 0 0 1

La imagen del vector (1, 2, 3) se obtiene ejecutando los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 68

>> A = [1, 0, 0; 1, 1, 0; 0, 1, 1; 0, 0, 1]

A=

1 0 0
1 1 0
0 1 1
0 0 1

>> A [1; 2; 3]
ans =

1
1
1
3

Ejemplo

Sea T : R3 R3 la transformacin lineal definida por



x+y
T (x, y, z) = y + z
x+z

y S = {e1 , e2 , e3 } la base usual de R3 .

La matriz asociada a T viene dada por


.. .. ..
. . .

1 1 0
A = T (e1 ) T (e2 ) T (e3 ) = 0 1 1

.. .. .. 1 0 1
. . .

Para obtener la matrix asociada a T 3 se calcula A3 , ejecutando el comando

>> A3

ans =

2 3 3
3 2 3
3 3 2

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 69

La matriz asociada a eT es eA . Ejecutamos el comando

>> expm(A)

ans =

3.1751 2.8321 1.3819


1.3819 3.1751 2.8321
2.8321 1.3819 3.1751

Hasta ahora hemos construido las matrices de las transformaciones lineales utilizando las bases
usuales de Rn . Sin embargo, cuando las bases no son las usuales, el procedimiento es el siguiente:

Sean E y F dos espacios vectoriales de dimensin n 6= 0 y m 6= 0, respectivamente. Sea T : E F


una transformacin lineal y sean V = {v1 , v2 , . . . , vn } y W = {w1 , w2 , . . . , wm } bases de E y F ,
respectivamente. La matriz A de la transformacin lineal T de orden m n tiene como j-sima
columna los vectores de coordenadas de T (vj ) con respecto a la base W .

Si x E, entonces el vector de coordenadas de T (x) con respecto a la base W es igual a la matriz


A multiplicada por el vector de coordenadas de x respecto a la base V .

Se dice que la matriz A representa a la transformacin lineal T : E F con respecto a las bases
V y W.

Ejemplo

Sea T : R4 R3 una transformacin lineal, definida por



x
y xy+z+w
T x + 2z w
z =
x + y + 3z 3w
w
y sean
V = {(1, 1, 0, 1), (1, 2, 3, 0), (2, 3, 3, 1), (1, 0, 1, 2)}
y
W = {(1, 2, 3), (1, 3, 2), (2, 1, 5)},
dos bases de R4 y R3 , respectivamente. Hallar la matriz A de la transformacin lineal.

Solucin
Empecemos definiendo la transformacin lineal

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 70

>> T=@(x)[x(1)-x(2)+x(3)+x(4);x(1)+2*x(3)-x(4);x(1)+x(2)+3*x(3)-3*x(4)]

T =

@(x)[x(1)-x(2)+x(3)+x(4);x(1)+2*x(3)-x(4);x(1)+x(2)+3*x(3)-3*x(4)]

Ahora definimos los vectores de la base V .

>> v1 = [1;1;0;-1]

v1 =

1
1
0
-1

>> v2=[1;2;3;3]

v2 =

1
2
3
3

>> v3=[2;3;1;-1]

v3 =

2
3
1
-1

>> v4=[-1;3;1;2]

v4 =

-1
3
1
2

Evaluamos la transformacin lineal en cada uno de los vectores de la base V .

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 71

>> tv1=T(v1)

tv1 =

-1
2
5

>> tv2=T(v2)

tv2 =

5
4
3

>> tv3=T(v3)

tv3 =

-1
5
11

>> tv4=T(v4)

tv4 =

-1
-1
-1

Calculamos las coordenadas de cada una de las imgenes de los vectores de la base V con respecto
a la base W . En este clculo, note que utilizo la transpuesta de W, porque los vectores de la base
W deben ser considerados como columnas.

>> a1 = W\tv1

a1 =

-1.2000
-1.8000
1.0000

>> a2 = W\tv2

a2 =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 72

1.8000
-0.8000
2.0000

>> a3 = W\tv3

a3 =

-2.1000
-3.9000
2.5000

>> a4 = W\tv4

a4 =

-0.3000
0.3000
-0.5000

Luego, la matriz A que representa a la transformacin lineal T es:

>> A =[a1 a2 a3 a4]

A =

-1.2000 1.8000 -2.1000 -0.3000


-1.8000 -0.8000 -3.9000 0.3000

1.0000 2.0000 2.5000 -0.5000

Si x = (2, 1, 3, 1) es un vector de R4 , entonces las coordenadas de x con respecto a la base V es

>> V = [1, 1, 0, -1;1, 2, 3, 3;2, 3, 1, -1;-1, 3, 1, 2]

V =

1 1 0 -1
1 2 3 3
2 3 1 -1
-1 3 1 2

>> x = [2;-1;3;1]

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 73

x =

2
-1
3
1

>> cx=V\x

cx =

-10.0000
-0.0000
5.0000
-2.0000

Si multiplicamos la matriz A por el vector cx, obtenemos las coordenadas de la imagen del vector
x con respecto a la base W . Entonces las coordenadas son:

>> cxw=A*cx

cxw =

2.1000
-2.1000
3.5000

Si calculamos directamente las coordenadas de la imagen del vector x con respecto a la base W ,
se debe producir el mismo resultado. Calculamos la imagen de x y luego, las coordenadas respecto
a la base W y se obtiene el mismo resultado, como se espera.

>> cw = T(x)

cw =

7
7
7

>> cixw= W\cw

cixw =

2.1000
-2.1000
3.5000

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 74

2.10.3. Ortonormalizacin
El algoritmo de ortonormalizacin que se trata en esta seccin nos permite Factorizar una matriz.
Sea A una matriz de orden m n con un conjunto de columnas LI. Entonces A se puede factorizar
como A = QR, donde Q es una matriz de orden mm, cuyas columnas forman una base ortonormal
del espacio generado por las columnas de A, y R una matriz triangular superior de orden m n.
La base ortonormal del espacio generado por las columnas de A forman las columnas de Q y se
obtienen por medio del procedimiento de Gram-Schmidt.
Si las columnas de la matriz A, se representan por ak , k = 1, 2, . . . , n y las columnas de Q se
representan por qj , j = 1, 2, . . . , m, la matriz R tiene la forma

hq1 , a1 i hq1 , a2 i hq1 , a3 i
0 hq2 , a2 i hq2 , a3 i
R= 0 ,

0 hq3 , a3
.. .. .. ..

. . . .
donde hqj , ak i = 0, si j > k y QQT = I.
Nota: El algoritmo que utiliza Matlab por defecto para factorizar una matriz A por el mtodo
qr es ligeramente diferente al tratado por la mayora de los libros de textos, donde la matriz Q es
de orden m n y la matriz R es de orden n n.

El comando qr de Matlab por defecto se ejecuta como:


>> [Q R] = qr(A).
Este comando produce una matriz Q de orden m m y una matriz R de orden m n. En cambio
si se utiliza el comando
>> [Q R] = qr(A,0),
se produce la matriz Q de orden m n y la matriz R de orden n n. Este es el algoritmo utilizado
por la mayora de los textos del lgebra lineal.

Ejemplo

Ejecutemos los comandos

>> A = [1, 2, 0; 0, 1, 0; 1, 0, 2; 0, 1, 1]

A=

1 2 0
0 1 0
1 0 2
0 1 1

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 75

>> [Q R] = qr(A)

Q=

0.7071 0.5000 0.4523 0.2132


0 0.5000 0.1508 0.8528
0.7071 0.5000 0.4523 0.2132
0 0.5000 0.7538 0.4264
R=

1.4142 1.4142 1.4142


0 2.0000 0.5000
0 0 1.6583
0 0 0

La matriz R tiene la caracterstica de que rij = 0, para i > j.


Si ahora ejecutamos el comando

>> [Q1 R1] = qr(A,0),

se obtiene

Q1 =

-0.7071 0.5000 -0.4523


0 -0.5000 -0.1508
0.7071 0.5000 -0.4523
0 0.5000 0.7538

R1 =

-1.4142 -1.4142 -1.4142


0 2.0000 -0.5000
0 0 1.6583

2.10.4. Diagonalizacin
Hay varias formas de diagonalizar una matriz. Ya lo habamos hecho a travs del comando jordan.
Ahora lo hacemos por medio de otro procedimiento, utilizando el comando eig.
Ejecutemos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 76

>> A= [1, 1, 1; 1, 0, 1; 2, 1, 1]

A=

1 1 1
1 0 1
2 1 1

Para calcular los eigenvalores, ejecutamos el comando

>> eig(A)

ans =

1.6511
2.3772
1.2739

Para calcular los eigenvectores asociados a los eigenvalores, ejecutamos los comandos

>> v1 = null(ans(1)*eye(3) - A)

v1 =

0.4704
0.6478
0.5992

>> v2 = null(ans(2)*eye(3) - A)

v2 =

0.5129
0.1405
0.8469

>> v3 = null(ans(3)*eye(3) - A)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 77

v3 =

0.2704
0.7168
0.6427

Ahora, construyamos la matriz

>> S = [v1 v2 v3]

S=

0.4704 0.5129 0.2704


0.6478 0.1405 0.7168
0.5992 0.8469 0.6427
y ahora, ejecutemos el comando

>> inv(S)*A*S

ans =
1.6511 0.0000 0.0000
0.0000 2.3772 0.0000
0.0000 0.0000 1.2739
Esto quiere decir que A es diagonalizable ya que existe una matriz S, tal que

S 1 AS

es una matriz diagonal , cuya diagonal es el vector de eigenvalores.


Una forma ms directa de diagonalizar la matriz es utilizando el comando eig en la siguiente forma

[V D] = eig(A)

donde V es la matriz de vectores propios y D es la matriz diagonalizada.


Si ejecutamos el comando

>> [V D] = eig(A)

se produce el resultado

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 78

V=

0.4704 0.5129 0.2704


0.6478 0.1405 0.7168
0.5992 0.8469 0.6427

D=

1.6511 0 0
0 2.3772 0
0 0 1.2739

Para calcular las matrices triangulares superior e inferior, Matlab posee las funciones triu y tril,
respectivamente.
Otro comando Matlab que permite la descomposicin (factorizacin) de una matriz A de orden
n n en dos matrices triangulares es la funcin lu.

Por ejemplo, ejecutemos los camandos

>> A = [3, 2, 3; 1, 4, 2; 5, 3, 4]
A=

3 2 3
1 4 2
5 3 4

>> triu(A)

ans =

3 2 3
0 4 2
0 0 4

>> tril(A)

ans =

3 0 0
1 4 0
5 3 4

>> [L U P] = lu(A)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 79

L=

1.0000 0.0000 0.0000


0.6000 1.0000 0.0000
0.2000 0.8947 1.0000

U=

5.0000 3.0000 4.0000


0.0000 3.8000 5.4000
0.0000 0.0000 3.6316

P=

0 0 1
1 0 0
0 1 0
A P se le llama matriz de permutaciones, y representa los intercambios de filas que tuvo que hacer
el algoritmo para obtener la factorizacin. Esta matriz cumple con la propiedad de que

A = P U.

Este resultado lo comprobamos, ejecutando el comando

>> P\L*U

ans =

3.0000 2.0000 -3.0000


1.0000 -4.0000 2.0000
5.0000 -3.0000 4.0000

Ejercicios 2.6
1. Determine si el conjunto de vectores es LI o LD.

a. A = {(2, 1, 3), (4, 2, 6), (6, 3, 9)}.


b. B = {(1, 5, 3), (3, 2, 1), (7, 3, 5)}.
c. C = {(1, 1, 3), (2, 0, 4), (1, 3, 1)}.
d. D = {(1, 2, 1), (2, 1, 3)}.
e. E = {(1, 2, 3), (2, 0, 4), (0, 4, 2), (2, 4, 6)}.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 80

2. Encuentre el rango de las siguientes matrices



2 4 6 2 4 6 18 1 1 2 4
A = 4 5 6 , B = 4 5 6 24 , C = 2 1 3 2
2 7 12 2 7 12 40 4 1 1 6

3. Encuentre el rango de las matrices siguientes



1 2 1 1 1 2 3 2 3
A = 2 4 2 , B = 0 1 4 3 , C = 1 1
3 6 3 1 0 6 5 4 7

4. Determine una base de los espacios generados por los vectores de los conjuntos del punto 1.

5. Encuentre la base del espacio nulo para las matrices



1 1 0 0
6 2 18 2 10  
0 0 2 3 1 3 2
A = 9
0 18 4 5 , B= , C=
4 0 2 1 2 6 4
4 7 29 2 13
3 1 0 4

6. Encuentre la base y el espacio nulo para cada una de las matrices siguientes:

1 2 4 3
1 3 4 1 1 2 3
2 5 6 8
A= 0 1 14 14 ,
B = 4 2 6 6 , C = 0 0 4
3 5 8 1 0 0 6
3 6 12 9

7. Verifique que el conjunto de vectores {(1, 2, 1, 0), (2, 5, 3, 2), (3, 5, 3, 2), (4, 8, 9, 1)} es una
base de R4 .

8. Verifique que el conjunto de vectores {(1, 1, 1), (2, 3, 3), (3, 2, 3)} es una base de R3 .

9. Encuentre las coordenadas del vector v = (4, 5, 2) en trminos de la base


{(2, 1, 3), (1, 4, 5), (3, 2, 4)} de R3 .

10. Encuentre la matriz de bloques de Jordan si es posible, utilizando el comando Jordan en las
matrices siguientes:

1 2 1 1
2 1 0 1 1 1 6 1 18 7
A = 2 1 1 , B= , C = 1 13 4
2 3 2 1
1 1 2 1 25 8
5 1 1 3

11. Encuentre manualmente la representacin matricial para cada una de las transformaciones
lineales siguientes:
   
x x 2y
a. T1 : R R tal que T1
2 2
=
y x + y

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 81


  x+y
x
b. T2 : R2 R3 tal que T2 = xy
y
2x + 3y

x  
x y + z
c. T3 : R R tal que T3 y =
3 2
2x + 2y 2z
z

x x y + 2z
d. T4 : R3 R3 tal que T4 y = 3x + y + 4z
z 5x y + 8z
12. Utilice las representaciones matriciales de las transformaciones del punto 11 para encontrar
las imgenes de
1
    1
2 1 1
T1 , T2 , T3 2 , T4
1 2 3
2
1

13. Sea T : R4 R4 una transformacin lineal definida por



1 3 2 2 3 1 4 5
0 1 1 0 2 1 2 1
T 3 = 7 , T 4 = 6 , T 0 = 1 ,
T
1 = 17

1 2 3 2 2 4 1 10

Compruebe que el conjunto de vectores




1 2 3 4

0 , 1 , 2 , 2

3 4 0 1

1 3 2 1

es una base de R4 , de lo que se sigue que T est bien definida.

14. Sea T : R3 R4 tal que T (x) = A(x), donde



1 2 0
2 1 1
A= 3

1 0
1 0 2

Determine la matriz L que representa a T con respecto a las bases



1 1 0 0
1 2 0



1 1 1 0

R = 0 , 0 , 1 , S = , ,
1 1 1 1 ,
1 1 2


2 0 1 0

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 82

15. Obtenga una base ortonormal utilizando el comando gschmidt(Gram-Schmidt) para R3 de


la base
1 1 0
S = 1 , 0 , 1
0 0 1


Reescriba la base en trminos de 2 y no decimal.

16. Utilice mtodos diferentes en Matlab para determinar si las siguientes matrices A son diagonalizabes.
En caso de que lo sea, encuentre una matriz no singular P tal que P 1 AP sea diagonal.

    0 0 4
0 2 1 3
A= , A= , A = 5 3 6
1 3 3 5
6 0 5

17. Calcule A30 a travs de diagonalizacin, si



1 1 1
A = 2 2 1
2 2 1

18. Determine si los siguientes sistemas de ecuaciones son consistentes o inconsistentes. En caso
de que lo sean, encuentre las soluciones
a. x1 + x2 + 2x3 = 1 b. x1 + 2x2 4x3 = 3
x1 2x2 + x3 = 5 x1 2x2 + 3x3 = 1
3x1 + x2 + x3 = 3 2x1 + 3x2 x3 = 5
4x1 + 3x2 2x3 = 7
5x1 + 2x2 6x3 = 7

c. x1 + x2 + 3x3 + 2x4 = 7
2x1 x2 + 4x3 = 8
3x2 + x3 = 8

d. x1 + x2 + x3 = 0 e. x1 + 2x2 + 3x3 = 0
x1 + 2x2 = 3 x1 + x2 + x3 = 0
x2 + x3 = 1 5x1 + 7x2 + 9x3 = 0

f. x1 + 2x2 + x3 = 7 g. x1 + 2x2 + 3x3 + 4x4 = 5


2x1 + 2x3 = 4 x1 + 3x2 + 5x3 + 7x4 = 11
x1 + 2x3 = 5 x1 x3 2x4 = 6
x1 + 2x2 + 3x3 = 11
2x1 + x2 + 4x3 = 12

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 83

h. x1 + x2 + 4x3 + x4 + 2x5 = 0
x2 + 2x3 + x4 + x5 = 0
x4 + 2x5 = 0
x1 x2 2x5 = 0
2x1 + x2 + 6x3 x5 = 0

i. x1 + 2x2 3x4 + x5 = 0
x1 + 2x2 + x3 3x4 + x5 + 2x6 = 3
x1 + 2x2 3x4 + 2x5 + x6 = 4
3x1 + 6x2 + x3 9x4 + 4x5 + 3x6 = 9

j. x1 + 2x2 + 3x3 + 4x4 = 5


x1 + 3x2 + 5x3 + 7x4 = 11
x1 x3 2x4 = 6

2.11. Raices de Ecuaciones No Lineales


Matlab cuenta con la funcin
fzero
para calcular raices de ecuaciones no lineales. La forma ms usada de esta funcin es
fzero(fcn,[x1 ,x2 ])
donde fcn es el nombre de la funcin y [x1 ,x2 ] es el intervalo en el cual se quiere obtener la raz.
Por ejemplo:
Suponga que queremos obtener la raz de la ecuacin
2x - logx - 7 = 0
en el intervalo [3,4].
Debemos crear un archivo con extensin .m ( M-files) que contenga los comandos

function y = func4(x)
y = 2 * x -log10 (x) -7;

Luego, guardamos este archivo con el nombre

func4.m

Observe que func4 fue el nombre que se se di a la funcin en la primera instruccin del archivo
despus del signo =.

Ahora, ejecutamos el comando

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 84

>> r = fzero(func4,[3,4])
r=
3.7892

En Matlab existe la funcin inline que permite definir una expresin de cadena como parte de
los comandos que se dan en la consola o dentro de un script. Con esta funcin podemos definir
funciones como cadena, evitando as, tener que crear un archivo-M. Esto es vlido si la funcin
est limitada a una sola proposicin. Tambin la funcin puede ser definida como function handle,
para lo cual se utiliza el smbolo @.
Por ejemplo, si queremos definir la funcin

f (x) = 3 x2 + 5 x 1
podemos escribir

>> f = inline(3*x2+5*x-1)

f(x) = 3*x2 + 5*x - 1

Ahora la funcin f (x) puede ser usada como cadena donde se necesite. As, si deseamos encontrar
la raz de la ecuacin f que se encuentra en el intervalo [0, 1], ejecutamos el comando
>> fzero(f, [0, 1])
ans =

0.1805
Si queremos encontrar la raz de f que se encuentra en el intervalo [2, 1], ejecutamos el comando
>> fzero(f, [2, 1])
ans =

-1.8471

La funcin f tambin puede ser definida como function handle. Ejecutemos los comandos

>> f=@(x) 3*x^2+5*x-1

f =

@(x)3*x^2+5*x-1

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 85

>> fzero(f,[-2 -1])

ans =

-1.8471

2.12. Solucin de sistemas de ecuaciones no lineales


Matlab cuenta con el comando fsolve para resolver numricamente sistemas de ecuaciones no
lineales, dada una aproximacin inicial X0 de la solucin. La aproximacin inicial X0 debe estar
dentro de la regin de convergencia del problema y para ello debe satisfacer condiciones, cuyo
tratamiento est fuera del alcance de este curso, por lo que asumimos en principio que el X0 satisface
las condiciones. Para usar el comando fsolve debe definirse primero el sistema de ecuaciones por
cualquiera de los mtodos conocidos (script, inline o function handle). La forma de ejecutar el
comando es
fsolve(fnc,X0 )

Ejemplo

Resolver el sistema

2x 3xy + 2z 2 = 1
x + 7y + 2yz = 2, X0 = (1, 1, 1)
3x + xy + 8z = 3

Al momento de definir el sistema, las ecuaciones deben estar en forma F (X) = 0.

Ahora escribimos un script como

function y = sist_01 ( x )
y (1) = 2* x (1) -3* x (1) * x (2) +2* x (3) ^2 -1;
y (2) = x (1) +7* x (2) +2* x (2) * x (3) -2;
y (3) = 3* x (1) + x (1) * x (2) +8* x (3) -3;
end

Ejecutamos los comandos

>> X0 = [1 1 1]

X0 =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 86

1 1 1

>> X = fsolve(sist_01,X0)

X =

0.6746 0.1838 0.1065

El sistema puede ser escrito como funcin inline:

Ejecutemos los comandos

>> sist_01= inline([[2*x(1)-3*x(1)*x(2)+2*x(3)^2-1;x(1)+7*x(2)+2*x(2)*x(3)-2;...


3*x(1)+x(1)*x(2)+8*x(3)-3]])

sist_01 =

Inline function:
sist_01(x) = [2*x(1)-3*x(1)*x(2)+2*x(3)^2-1;x(1)+7*x(2)+2*x(2)*x(3)-2;3*x(1)+x(1)*x(2)

>> X = fsolve(sist_01,X0)

X =

0.6746 0.1838 0.1065

De igual forma el sistema se puede definir como una funcin function handle y el resultado debe
ser el mismo.

Ejercicios 2.7
1. Resuelva los sistemas tomando como aproximacin inicial el punto X0 . Defina los sistemas
como script, inline o function handle.

a. ex1 x2 = 0 b. x21 + x22 = 1


x1 x2 ex1 = 0, X0 = (0.95, 2.7) x1 + x2 = 1, X0 = (0.1, 0.9)

c. x21 + x22 = 2 d. x21 + x22 = 2


|x1 | + |x2 | = 2, X0 = (0.9, 1.1) x1 x2 = 1, X0 = (0.9, 0.9)

e. ex1 = sen(x2 ) f. x21 + x22 3x1 + 2x2 = 0


x1 = cos(x2 ), X0 = (0.1, 1.5) x21 x22 + 3x1 7 = 0
X0 = (1.6, 0.7)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 87

g. x21 + x1 x22 = 1 h. x21 + x22 + x23 = 9


x2 sen(x21 ) = 0, X0 = (1.5, 0.3) x1 x2 x3 = 1
x1 + x2 x23 = 0
X0 = (2.5, 0.2, 1.6)

i. x31 + 3x22 = 21 j. x1 x2 x3 x21 + x22 = 1.34


2
x1 + 2x2 + 2 = 0, X0 = (2.1, 3.1) x1 x2 x23 = 0.09
x1 x2
e e + x3 = 0.41
X0 = (1, 1, 1)

k. x21 + x22 5 = 0 l. x1 0.7 sen(x1 ) 0.2 cos(x2 ) = 0


x2 ex1 1 = 0, X0 = (1.9, 1.1) x2 0.7 cos(x1 ) + 0.2 sen(x2 ) = 0
X0 = (0.5, 0.5)

m. x1 x21 x22 = 0 n. x21 x2 0.2 = 0


x2 x21 + x22 = 0, X0 = (0.8, 0.4) x22 x1 0.3 = 0
X0 = (1.2, 1.2)

o. x1 + 13 log(x1 ) x22 = 0 p. 4x31 27x1 x22 + 25 = 0


2x2 x1 x2 5x1 + 1 = 0, X0 = (4.1, 3.4) 4x21 3x32 1 = 0
X0 = (1, 0.9)

2.13. Evaluacin de Funciones


En Matlab contamos con la funcin feval para evaluar funciones que han sido definidas mediante
archivo-m, a travs de la funcin inline o por medio de la forma function handle. El formato de la
funcin feval es
feval (fcn,x0)
donde fcn es el nombre de la funcin y x0 es el punto donde se quiere evaluar la funcin.
Por ejemplo, si queremos evaluar la funcin

7x5 3x2 4x + 7
f (x) =
2x3 5x + xex

en el punto x0 = 3.5, codificamos el archivo-m

function y = func20(x)
y = 7*x.^5 - 3*x.^2 - 4*x + 7) ./ (2*x.^3 - 5 * x + x.*exp(-x));

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 88

Ahora ejecutamos el comando

>> x0 = 3.5;

>> feval (func20,x0)

y se obtiene el resultado

ans =

53.1453

Observe las operaciones punto en el archivo-m que hacen posible el hecho de que x0 sea un vector.

Si ejecutamos los comandos

>> f =inline((7*x.5 - 3*x.2 - 4*x + 7) ./ (2*x.3 - 5*x + x.*exp(-x)));

f(x) = (7*x.5 - 3*x.2 - 4*x + 7)./(2*x.3 - 5*x + x.*exp(-x))

>> feval (f, x0)

se obtiene el mismo resultado

ans =

53.1453

Si queremos evaluar la funcin en el vector [1, 1], ejecutamos el comando


>> feval(f,[1,-1])
ans =

-2.6595 3.5496

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 89

Nota: Tambin puede usarse la forma tradicional en matemtica para evaluar funciones. Es decir,
como
f (x0 ).

Por ejemplo, ejecutemos los comandos

>> f=@(x) 5*x.^3-3*x+7

f =

@(x)5*x.^3-3*x+7

>> f(-2)

ans =

-27

>> f([-1 2])

ans =

5 41

Ejercicios 2.8
a. Resuelva las siguientes ecuaciones.

1. ex + 2x + 5 = 0, [3, 2]
2. x3 + 5ex + 3 = 0, [2, 1]
3. xex 1 = 0, [0, 1]
4. 3x + sen x ex = 0, [0, 1]
5. ex 3x2 = 0, [0, 1]
6. tan x x 1 = 0, [0.47, 0.43]
7. 2ex sen x = 0, [0.91, 0.93]
8. ex = cos x, [1.29, 1.31]
9. cos(ex 2) ex = 0, [0.5, 1.5]
x
10. e 3 = 2 sen x, [0.6, 0.7]

b. Evale las siguientes funciones en el escalar/vector dado.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 90

5x
1. f (x) = x0 = 2.5
x3 + x
3x2 + 5x 3
2. f (x) = x0 = 2
7x3 + 2x + 3
3. f (x) = sen(x)ex x5 + tan(3x) x0 = 1.3

x2 + 2
4. f (x) = x0 = [1, 0]
x2 + 2x 3
5. f (x) = x3 3e2x ln(x) x0 = [2, 3]

2.14. Fracciones parciales


Sean P (x) y Q(x) dos polinomios de grado m y n, respectivamente. Para representar a
P (x)
Q(x)
en fracciones parciales, se utiliza la funcin residue, cuyo formato es
[p r c] = residue(P, Q),
donde p representa los resduos, r las races de una expresin racional y c es el vector de coeficientes
del polinomio cociente cuando la expresin racional original es impropia. El objetivo es escribir
expresiones racionales dadas como sumas de expresiones racionales ms sencillas, llamadas Fracciones
parciales.
Fracciones propias: (m < n).

Supongamos que las races son:


Reales y diferentes
Entonces
P (x) p1 p2 p3 pn
= + + + + .
Q(x) x r1 x r2 x r3 x rn
Ejemplo
Expresar en fracciones parciales
x2 + 1
.
x3 6x2 + 11x 6
Aqu suponemos que P (x) = x2 + 1 y Q(x) = x3 6x2 + 11x 6.
Ejecutemos los comandos

>> clear
>> P = [1 0 1]

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 91

P =

1 0 1

>> Q = [1 -6 11 -6]

Q =

1 -6 11 -6

>> [ p r ] = residue (P , Q )

p =

5.0000
-5.0000
1.0000

r =

3.0000
2.0000
1.0000

Entonces

x2 + 1 5 5 1
3 2
= + .
x 6x + 11x 6 x3 x2 x1
Complejas y diferentes
Si ri es una raz compleja, su compleja conjugada ri , tambin lo es. El resduo pi de la raz ri es
el conjugado del resduo pi .
Ejemplo
Expresar en fracciones parciales
x2 + 3x + 2
.
x3 2x2 + x 2
Ejecutemos los comandos

>> P = [1 3 2]

P =

1 3 2

>> [1 -2 1 -2]

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 92

ans =

1 -2 1 -2

>> [ p r ] = residue (P , Q )

p =

3.0000 + 0.0000 i
-1.0000 - 0.5000 i
-1.0000 + 0.5000 i

r =

1.0000 + 0.0000 i
-0.0000 + 1.0000 i
-0.0000 - 1.0000 i

Entonces

x2 + 3x + 2 3 1 0.5i 1 + 0.5i
= + + .
x3 2x2 + x 2 x1 xi x+i
Para eliminar los nmeros complejos de las fracciones parciales, sumamos las fracciones complejas
y obtenemos
1 0.5i 1 + 0.5i 2x + 1
+ = 2 .
xi x+i x +1
Luego,
x2 + 3x + 2 3 2x + 1
3 2
= + 2 .
x 2x + x 2 x1 x +1
Races reales repetidas

Supongamos que la raz r1 se repite k veces y que rk+1 , rk+2 , . . . , rn son las dems races. Entonces

P (x) p1 p2 pk pk+1 pn
= + + + + + + .
Q(x) (x r1 ) (x r1 )2 (x r1 )k (x rk+1 ) (x rn )

Ejemplo
Escribir como fracciones parciales
4x
.
x 3 x2 x + 1
Ejecutamos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 93

>> P = [ 4 0]

P =

4 0

>> Q = [1 -1 -1 1]

Q =

1 -1 -1 1

>> [ p r ] = residue (P , Q )

p =

1.0000
2.0000
-1.0000

r =

1.0000
1.0000
-1.0000
y se obtiene

4x 1 2 1
= + .
x3 x2
x+1 (x 1) (x 1)2 (x + 1)
Fracciones impropias: (m n).

En este caso se tiene


P (x) R(x)
= C(x) + .
Q(x) Q(x)
donde C(x) (cociente) es un polinomio de grado m n y R(x) (resto) es un polinomio de grado
menor que n.

Ejemplo

3x3 4x2 x 5
.
x2 2x 3

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 94

Ejecutemos los comandos

>> P = [3 -4 -1 - 5]

P =

3 -4 -1 -5

>> Q = [1 -2 -3]

Q =

1 -2 -3

>> [ p r c ]= residue (P , Q )

p =

9.2500
2.7500

r =

3.0000
-1.0000

c =

3 2
Entonces la fraccin se escribe como

3x3 4x2 x 5 37/4 11/4


2
= 3x + 2 + + .
x 2x 3 x3 x+1
La funcin residue tambin puede usarse para recuperar a P y Q, a partir de c, r y p. Se escribe
como
[P Q] = residue(p,r,c).

En el caso del ejemplo anterior, ejecutamos los comandos

>> [ P Q ]= residue (p , r , c )

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 95

P =

3.0000 -4.0000 -1.0000 -5.0000

Q =

1.0000 -2.0000 -3.0000

y se observa que P y Q son los polinomios originales.

Ejercicios 2.9
1. Exprese en fracciones parciales
5x 7 t2 + 8 2x + 1 x3
a. b. c. d.
x2 3x + 2 t2 5t + 6 x2 7x + 12 x2 + 2x + 1

9x3 3x + 1 16x3 8x2 + 8x + 2 3t2 + t + 4


e. f. g. h.
x3 x2 4x2 4x + 1 16x4 + 8x2 + 1 t3 + t

y4 + y2 1
i.
y3 + y

2.15. Grficas con Matlab


En Matlab existen varias funciones que nos permiten graficar en dos y tres dimnesiones, algunas
de las cuales las trataremos en esta seccin.

2.15.1. Grficas en dos(2) Dimensiones


Para graficar un conjunto de puntos de datos
(xi , yi ), i = 1, 2, , n es necesario preparar las abscisas y las ordenadas como arreglos ( vectores
) x y y con la misma dimensin. La funcin que se utiliza para graficarlos es
plot(x,y)
Por ejemplo:
Si queremos graficar la funcin
y = 3x 1.5
en el intervalo [-5,6], ejecutamos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 96

20
3*x-1.5
15

10

0
y

-5

-10

-15

-20
-5 -4 -3 -2 -1 0 1 2 3 4 5 6
x

Figura 2.3: Grfica de y = 3 x 1.5

>> clear; clf; hold off


>> x = -5:0.001:6;
>> y = 3 * x - 1.5;
>> plot(x,y)
>> xlabel(x); ylabel(y)
>> legend(3*x-1.5)

y se visualiza la grfica de la figura 2.3.


Si deseamos graficar la funcin
y = 2x2 x 3
en el intervalo [-3,4], ejecutamos los comandos

>> clear; clf; hold off


>> x = -3:0.005:4;
>> y = 2 * x.^2 - x -3;
>> plot(x,y)
>> xlabel(x); ylabel(y)
>> legend(2*x**2-x-3)

y se produce la grfica de la figura 2.4.


Suponga que queremos graficar la funcin
y = sen x
en el intervalo [0,2].
Ejecutemos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 97

25
2*x**2-x-3

20

15

10
y

-5
-3 -2 -1 0 1 2 3 4
x

Figura 2.4: Grfica de y = 2 x2 x 3

>> clear; clf; hold off


>> x = 0: 0.05: 2*pi;
>> y = sin(x);
>> plot(x,y)
>> xlabel(x); ylabel(y)
>> legend(sin(x))

y se observa la grfica de la figura 2.5.


Grafiquemos la funcin
y = (sen x)e0.4x
en el intervalo [0, 10].
Ejecutemos los comandos

>> clear; clf; hold off


>> x = 0: 0.05: 10;
>> y = sin(x) .* exp(-0.4*x);
>> plot(x,y)
>> xlabel(x); ylabel(y)
>> legend(sin(x)*exp(-0.4*x))

y se tiene la grfica de la figura 2.6.


Los datos se pueden graficar con lneas de diferentes tipos y colores, as como tambin, slo con
marcas sin estar conectados por lneas. Los diferentes tipos de lneas y marcas o smbolos son

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 98

1
sin(x)
0.8
0.6
0.4
0.2
0
y

-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6
x

Figura 2.5: Grfica de y = sen x

30
sin(x)*exp(-0.4*x)

20

10

0
y

-10

-20

-30
-10 -5 0 5 10
x

Figura 2.6: Grfica de y = sen(x) e0.4x

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 99

Tipo de lnea Carcter Marca Carcter Color Carcter


Slida (-) Punto (.) Rojo r
Punteada (:) Ms (+) Azul b
Guin-punto alt (-.) Estrella (*) Verde g
Trazo (- -) Crculo (o) Amarillo y
Sin lnea (none) Smbolo x (x) Cyan c
Cuadrado (s) Magenta m
Diamante (d) Negro k
Pentagrama (p) Blanco w
Hexagrama (h)
Tringulo hacia arriba ()
Tringulo hacia abajo ()
Tringulo a la izq. (<)
Tringulo a la der. (>)

Por ejemplo:
Suponga que deseamos graficar la funcin
y = sen x
en el intervalo [0,2] con marca de * solamente.
Ejecutemos los camandos siguientes:

>> clear; clf; hold off


>> x = 0: 0.05: 2*pi;
>> y = sin(x);
>> plot(x,y,*k,markersize,4)
>> xlabel(x); ylabel(y)
>> legend(sen(x))

y se mostrar la grfica de la funcin seno con asteriscos en la figura 2.7.

Tambin podemos elegir el color que queremos en la grfica.

Por ejemplo, si queremos graficar la funcin

y = ex

en el intervalo [-3, 3] en color verde, ejecutamos los comandos

>> clear; clf; hold off


>> x = -3: 0.05: 3;
>> y = exp(-x);
>> plot(x,y,g)
>> xlabel(x); ylabel(y)
>> legend(exp(-x))

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 100

1
sen(x)
0.8

0.6

0.4

0.2

0
y

0.2

0.4

0.6

0.8

1
0 1 2 3 4 5 6 7
x

Figura 2.7: Grfica de y = sen(x) con asteriscos

y se muestra la figura 2.8.


Con el comnado title podemos adicionarle un ttulo a la grafica. Por ejemplo, si queremos poner
el ttulo Funcin Exponencial a la grfica de la funcin
y = ex
en el intervalo [-3, 3], escribimos

>> clear; clf; hold off


>> x = -3: 0.05: 3;
>> y = exp(-x);
>> plot(x,y)
>> xlabel(x); ylabel(y)
>> title(Funcion Exponencial);

Adems de la funcin plot, exite la funcin fplot para graficar funciones que se han definido
como archivo-M o simblicamente. El formato es
fplot(nombre,[a b])
donde nombre es el nombre de la funcin y [a b] es el intervalo donde se quiere graficar.
Por ejemplo, si queremos graficar la funcin
y = sen2 x/x
creamos el archivo func10.m con los comandos

function y = func10(x)
y = sin(x).^2./x;

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 101

25
exp(x)

20

15
y

10

0
3 2 1 0 1 2 3
x

Figura 2.8: Grfica de y = ex en color verde

Ahora ejecutamos el comando

>> fplot(func10,[-2*pi 2*pi])


y se observar la grfica de la figura 2.9. Recuerde que si definimos la funcin en lnea con los
comandos
>> f = inline(sin(x).2 ./ x)

f(x) = sin(x).2 ./x

>> fplot(f,[-2*pi 2*pi])


se genera la misma grfica.

Grficas en coordenadas polares

En Matlab existe una funcin para graficar en coordenadas polares, por ejemplo, si ejecutamos los
comandos

>> clear; clf; hold off


>> t = 0:0.01:2*pi;
>> r =sin(2*t) .* cos(2*t);
>> polar(t,r)
>> xlabel(t), ylabel(r)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 102

0.8

0.6

0.4

0.2

0
y

-0.2

-0.4

-0.6

-0.8
-6 -4 -2 0 2 4 6
x

Figura 2.9: Grfica de y = sen2 x/x


.

>> title(Grafica polar);

se mostrar la grfica de la figura 2.10


Ejecutemos los comandos

>> clear; clf; hold off


>> t = 0:2*pi/200:2*pi;
>> r = cos(2*t);
>> polar(t,r)
>> axis(square)
>> xlabel(t), ylabel(r)
>> title(Grafica polar);

y se mostrar la grfica de la figura 2.11

Grficas en forma paramtrica

Suponga que queremos representar en el plano una curva dada en forma paramtrica. Es decir,una
curva dada en forma
r(t) = (x(t), y(t)), t [a, b].
Por ejemplo, asuma que se desea graficar la curva
 2
t(t 1) 2(t2 1)

r(t) = , 2 , t [5, 5].
t2 + 1 t +1

Ahora, ejecutamos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 103

0.5

0.4

0.3

0.2

0.1

0
r

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5
-0.1

-0.2

-0.3

-0.4

-0.5 t

Figura 2.10: Grfica polar de r = sen(2t) cos(2t)


.

0.5

0
r

-1 -0.5 0 0.5 1

-0.5

-1 t

Figura 2.11: Grfica polar de r = cos(2t)


.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 104

1.5

0.5

0.5

1.5

2
5 0 5

t(t2 1) 2(t2 1)
 
Figura 2.12: Grfica en forma paramtrica de r = , 2
t2 + 1 t +1
.

>> t = linspace(-5,5,1000);
>> x = t.*(t.^2 - 1)./(t.^2 + 1);
>> y = 2.*(t.^2 - 1)./(t.^2 + 1);
>> plot(x,y)

y se genera la grfica de la figura 2.12.


A la grfica de una curva en forma paramtrica se le puede graficar sus vectores velocidad mediante
la funcin
quiver.
Si se tiene una curva en forma paramtrica r(t) = (x(t), y(t)), el comando quiver tiene la forma

quiver(r(t), r0 (t)).

Por ejemplo, si tenemos la curva

r(t) = (cos t, sen t), t [0, 2pi].

Ejecutemos los comandos

>> t = linspace(0,2*pi,25);
>> quiver(cos(t),sin(t),-sin(t),cos(t)), axis square

Y se genera la grfica de la figura 2.13.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 105

1.5

0.5

0.5

1.5
1.5 1 0.5 0 0.5 1 1.5

Figura 2.13: Grfica vectores de velocidad


.

Grficas de funciones definidas a trozos

Suponga que deseamos graficar la funcin



2
x ,
si x < 0
f (x) = 1, si 0 x < 1
x + 2, si 1 x

Antes de proceder con la grfica necesitamos utilizar operaciones lgicas con los operadores relacionales(
<, <=, ==, >, >=, =) y lgicos (&, |, ). Por ejemplo, si tenemos el vector x = [1 2 3 4 5] y
ejecutamos el comando
>> x 3
se produce el resultado
1 1 1 0 0.
Es decir, se produce un vector con la misma longitud del vector original, cuyos elementos son 1
para aquellos elementos del vector que satisfacen la condicin y 0 para los que no satisfacen la
condicin.
Ahora ejecutamos los comandos

>> x = linspace(-2,3,3000);
>> y = (x.^2).*(x < 0) + 1.*((0 <= x) & (x < 1)) + (-x+2).*(1 <= x);
>> plot(x,y,.)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 106

3.5

2.5

1.5

0.5

0.5

1
2 1 0 1 2 3

Figura 2.14: Grfica de funcin definida a trozos


.

y se genera la grfica de la figura 2.14. El punto que aparece en la funcin plot hace que se
muestren las discontinuidades en la grfica.

2.15.2. Grficas en tres(3) Dimensiones


En esta parte veremos algunas de las funciones ms usadas para obtener grficas en tres dimensiones
como son las funciones para grficos de linea as como las funciones para grficos de malla y
superficie.

Grficas de Lnea

La funcin equivalente a plot en tres(3) dimensiones es la funcin plot3 que conserva todas las
reglas que hemos explicado para plot. Por ejemplo, ejecutemos los comandos

>> clear; clf; hold off


>> t = 0:pi/50:10*pi;
>> plot3(sin(t), cos(t),t)
>> xlabel(sin(t)); ylabel(cos(t));zlabel(t)
>> title(Helice);

y se mostrar la grfica de la figura 2.15.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 107

sin(u), cos(u), u

35
30
25
t 20
15
10
5
0

1
0.8
0.6
0.4
1 0.8 0.2
0
0.6 0.4 0.2 cos(t)
0.2 0 0.4
0.2 0.4 0.6
sin(t) 0.6 0.8 0.8
11

Figura 2.15: Grfica de la Hlice x = sin(t), y = cos(t), z = t

Una recta en el espacio R3 se define por medio de un punto P0 (x0 , y0 , z0 ) y un vector director, U .
Si P (x, y, z) es un punto sobre la recta que tiene la misma direccin de U y V es el vector con
origen en P0 y estremo P , se tiene que

V = P0 P = P P0 = rU. Luego, P = P0 + rU.

De aqu se obtiene las Ecuaciones paramtricas

x = x0 + rux
y = y0 + ruy
z = z0 + ruz

Por ejemplo, si L es la recta que pasa por el punto P0 (1, 1, 2) y tiene como vector director a
U (2, 1, 3), sus ecuaciones paramtricas son

x = 1 + 2r
y =1r
z = 2 + 3r

Si ejecutamos los comandos

r = -2:0.01:3;
plot3 ( -1 + 2* r , 1 - r , 2 + 3* r , 'k ')
grid on
xlabel ( 'x ')

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 108

Linea recta

15

10

5
z

0
5

5
2 0
1
0
1
2 5
3 x
y

Figura 2.16: Grfica de una lnea recta

ylabel ( 'y ')


zlabel ( 'z ')
title ( ' Linea recta ')
view (120 ,30)

se observar la figura 2.16.


Observemos que el punto P1 (2, 1, 3) (punto azul) no est sobre la recta por que no la satisface.
Sin embargo, el punto P2 (3, 2, 1) (punto negro) si est sobre la recta. Ejecutemos el script

r = -2:0.01:3;
hold on
plot3 ( -1 + 2* r , 1 - r , 2 + 3* r , 'k ')
plot3 (2 ,1 , -3 , ' bo ' , ' markersize ' ,4 , ' markerfacecolor ' , 'b ') ;
plot3 ( -3 ,2 , -1 , ' ko ' , ' markersize ' ,4 , ' markerfacecolor ' , 'k ') ;
grid on
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Linea recta ')
hold off
view (120 ,30)

para obtener la figura 2.17 donde se observa lo que acabo de comentar.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 109

Linea recta

15

10

5
z

0
5

5
2 0
1
0
1
2 5
3 x
y

Figura 2.17: Grfica de una lnea recta

Si despejamos el parmetro r de cada ecuacin e igualamos las expresiones correspondientes, se


obtiene
x x0 y y0 z z0
= = . (Ecuaciones simtricas) (2.1)
ux uy uz
Por ejemplo, las ecuaciones del ejemplo anterior se pueden escribir como
x+1 y1 z2
= =
2 1 3

De la ecuacin (2.1) se obtiene las dos ecuaciones independientes

uy (x x0 ) = ux (y y0 ) = uy x ux y = uy x0 ux y0
uz (x x0 ) = ux (z z0 ) = uz x ux z = uz x0 ux z0

En sentido general, la ecuacin de la recta puede escribirse como

a1 x + b 1 y + c 1 z = d 1
a2 x + b 2 y + c 2 z = d 2

donde el rango de la matriz de coeficientes es 2. En el caso del ejemplo anterior, las ecuaciones
resultantes de la recta son

x + 2y = 1

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 110

3x 2z = 7

Se puede comprobar que el rango de la matriz de coeficientes es 2. Basta con ejecutar los comandos

>> rank([1 2;3 -2])

ans =

Si ejecutamos el script

x = -5:0.01:5;
y =0.5*(1 - x ) ;
z = -0.5*( -7 -3* x ) ;
plot3 (x ,y ,z , 'k ')
grid on
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Linea Recta ')
view (120 ,30)

se produce la figura 2.18 que es exactamente la misma figura 2.16, por que lo nico que se ha hecho
es utilizar otra forma de describir la recta.
La ecuacin de la recta que pasa por los puntos P0 (3, 1, 2) y P1 (5, 2, 3), viene dada por el vector
director U = P0 P1 = P1 P0 = (2, 3, 1) y el punto P0 . De modo que las ecuaciones vienen dadas
por

x=3+2r
y =13r
z =2+r

Si Graficamos esta recta utilizando los comandos

>> h1=ezplot3(3+2*r,1-3*r,2+r,[-2 3]);


>> set(h1,color,k) % Cambia el color de la grafica a negro ( azul por defecto)
>> view(120,30)

observamos el resultado en la figura 2.19.

Grficas de Malla y Superficie

Matlab produce grficos de malla y superficie a travs de las coordenadas z generadas por las
coordenadas de una rejilla rectangular en el plano xy. Luego, la malla se genera uniendo los puntos
adyacentes por medio de lneas rectas.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 111

Linea Recta

15

10

5
z

0
5

5
2 0
1
0
1
2 5
3 x
y

Figura 2.18: Grfica de una lnea recta

x = 3+2 r, y = 13 r, z = 2+r

3
z

1
5

0 0
10
5 5
0
5
10 10 x
y

Figura 2.19: Grfica de una lnea recta

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 112

Las grficas de malla son muy importantes porque nos permiten representar matrices grandes,
as como visualizar de manera aproximada dnde se encuentran los mximos y mnimos de una
funcin de dos variables.
Antes de generar un grfico de malla, debemos utilizar la funcin meshgrid para generar matrices,
cuyas coordenadas se utilizarn para producir las coordenadas Z. El formato de la funcin meshgrid
es
[X,Y ] = meshgrid(x,y)
donde X es una matriz, cuyas filas estn representadas por el vector x y Y es una matriz cuyas
columnas estn representadas por el vector y.
La funcin que se utiliza para graficar la malla es mesh, cuyo formato es
mesh(X,Y,Z)

Ecuacin del plano


La ecuacin del plano se puede obtener, si se conoce un punto P0 (x0 , y0 , z0 ) y dos vectores
U (ux , uy , uz ) y V (vx , vy , vz ) linealmente independientes. Sea W = P0 P , donde P (x, y, z) es un
punto del plano. Entonces la ecuacin del plano se escribe como W = rU + sV , de donde se
obtienen las ecuaciones paramtricas

x = x0 + rux + svx
y = y0 + ruy + svy
z = z0 + ruz + svz

Por ejemplo, las ecuaciones paramtricas del plano que pasa por el punto P0 (3, 1, 2) y tiene como
vectores directores a U (1, 2, 3) y V (2, 3, 1) son

x= 3 + r + 2s
y = 1 + 2r + 3s
z= 2 + 3r s

Si queremos graficar este plano, ejecutemos el script

r1 = -1:0.2:2;
s1 = -1:0.2:2;
[r , s ]= meshgrid ( r1 , s1 ) ;
colormap ([0.4 0.4 0.4]) ;
mesh (3+ r +2* s , -1+2* r +3* s ,2+3* r - s )
grid on
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Grafica de un plano ')
view (120 ,30)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 113

Grafica de un plano

10

5
z

0
2
5
10 4
5 6
0 8
5
10 10 x
y

Figura 2.20: Grfica de un plano

se obtiene la figura 2.20.


Para graficar un punto A(6, 4, 4) en el plano y un punto B(5, 2, 3) fuera de l, ejecutamos el
script

r1 = -1:0.2:2;
s1 = -1:0.2:2;
hold on
[r , s ]= meshgrid ( r1 , s1 ) ;
colormap ([0.4 0.4 0.4])
mesh (3+ r +2* s , -1+2* r +3* s ,2+3* r - s )
plot3 (6 ,4 ,4 , ' bo ' , ' markersize ' ,4 , ' markerfacecolor ' , 'b ') ;
plot3 (5 , -2 ,3 , ' ko ' , ' markersize ' ,4 , ' markerfacecolor ' , 'k ') ;
grid on
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Grafica plano ')
hold off
view (120 ,30)

y se obtiene la figura 2.21.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 114

Grafica plano

10

5
z

0
2
5
10 4
5 6
0 8
5
10 10 x
y

Figura 2.21: Grfica de un plano

En general, la ecuacin del plano viene dada por

ax + by + cz = d. (2.2)

Por ejemplo, para graficar el plano


x y + z = 2,
ejecutamos los comandos

>> [X Y] = meshgrid(0:0.2:3);
>> Z = 2 - X + Y
>> mesh (X,Y,Z)
>> colormap([0.4 0.4 0.4])
>> xlabel(x);ylabel(y);zlabel(z)
>> view(120,30)

y se observa la grfica de la figura 2.22.


Consideremos el sistema
rux + svx = x x0
ruy + svy = y y0 (2.3)
ruz + svz = z z0

Decimos que un punto P (x, y, z) est en el plano, si el determinante de la matriz ampliada (2.3)
es cero. Si se desarrolla el determinante y se iguala a cero, se obtiene la ecuacin del plano (2.2).

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 115

2
z

0 0

1 1
0
0.5
1 2
1.5
2
2.5 3
3 x
y

Figura 2.22: Grfica del plano x y + z = 2

Un punto P (x, y, z) est fuera del plano, si el rango de la matriz de coeficientes, que es igual a 2,
es diferente al rango de la matriz ampliada.

Se dice que dos planos


a1 x + b 1 y + c 1 z = d 1
a2 x + b 2 y + c 2 z = d 2
son Coincidentes, si el rango de la matriz de coeficientes es igual al rango de la matriz ampliada
igual a 1. Por ejemplo, los planos 3x 2y + z = 5 y 3x + 2y z = 5 son coincidentes.
Ejecutemos los comandos

>> A1=[3 -2 1;-3 2 -1]

A1 =

3 -2 1
-3 2 -1

>> rank(A1)

ans =

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 116

>> A2=[3 -2 1 5;-3 2 -1 -5]

A2 =

3 -2 1 5
-3 2 -1 -5

>> rank(A2)

ans =

Los planos son Paralelos si el rango de la matriz de coeficientes (rango = 1) es diferente del rango
de la matriz ampliada (rango = 2). Por ejemplo, los planos x 3y + 2z = 1 y 2x 6y + 4z = 3
son paralelos. Ejecutemos los comandos

A =

1 -3 2
2 -6 4

>> rank(A)

ans =

>> B =[ 1 -3 2 -1;2 -6 4 3]

B =

1 -3 2 -1
2 -6 4 3

>> rank(B)

ans =

Para graficar, ejecutamos el script

x = -2:0.2:3;
y = -2:0.2:3;

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 117

Planos paralelos

10

5
z

5 0
2
1
0 2
1
2 4
3 x
y

Figura 2.23: Planos paralelos

[ xx yy ]= meshgrid (x , y ) ;
z1 =0.5*( -1 - xx +3* yy ) ;
mesh ( xx , yy , z1 )
grid on
hold on
z2 =0.25*(3 -2* xx +6* yy ) ;
mesh ( xx , yy , z2 )
colormap ([0.4 0.4 0.4])
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Planos paralelos ')
view (120 ,30)
hold off

y se obtiene la figura 2.23.


La funcin ezmesh de Matlab puede usarse tambin para graficar en tres dimensiones. Por ejemplo,
los planos anteriores se pueden graficar ejecutando los comandos del script

ezmesh ( ' 0.5*( -1 - x +3* y ) ' ,[ -2 ,3 , -2 ,3] ,27)


% EL 27 es el numero de grids ( defecto es 60)
grid on
hold on

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 118

Planos paralelos

2
z

2 2
1
2 0
1 1
0
1 2
2 3
3 x
y

Figura 2.24: Planos paralelos

ezmesh ( ' 0.25*(3 -2* x +6* y ) ' ,[ -2 ,3 , -2 ,3] ,27)


colormap ([0.4 0.4 0.4])
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Planos paralelos ')
view (120 ,30)
hold off

Estos comandos generan la figura 2.24.


Suponga ahora que se desea graficar la interseccin de los planos

x 3y + z = 1
2x 5y + z = 2

Ejecutemos los comandos del script

[ X Y ] = meshgrid (0:0.2:3) ;
Z = 1 -X +3* Y ;
hold on
mesh (X ,Y , Z )
Z =2 - 2* X + 5* Y ;
mesh (X ,Y , Z )

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 119

Interseccion de planos

20

15

10
z

0
0

5 1
1
0 2
1
2
3 3 x
y

Figura 2.25: Grfica de la interseccin de dos planos

% Recta de interseccion de los planos


X =0:0.1:3;
Y =0.5*( X -1) ;
Z =0.5*( X -1) ;
plot3 (X ,Y , Z )
colormap ([0.4 0.4 0.4])
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Interseccion de planos ')
grid on
hold off
view (120 ,30)

para generar la grfica de la figura 2.25.

Una recta y un plano se llaman Incidentes si tienen en comn un punto P (x, y, z). Para verificarlo,
se considera la matriz de coeficientes formada por las dos ecuaciones de la recta y la ecuacin del
plano. Si el determinante de esta matriz es distinto de cero, son incidentes y el punto en comn se
obtiene resolviendo el sistema que resulta de las ecuaciones. Por ejemplo, consideremos la recta
2x y = 1
x + 5z = 2

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 120

y el plano 5x 2y + z = 1.
Ahora, verifiquemos si son incidentes, ejecutando los comandos

>> A = [2 -1 0;1 0 5]

A =

2 -1 0
1 0 5

>> rank(A)

ans =

>> A1 = [A;5 -2 1]

A1 =

2 -1 0
1 0 5
5 -2 1

>> det(A1)

ans =

-4.0000

EL hecho de que el determinante sea distinto de cero, dice que son incidentes. Calculamos el punto
en comn con los comandos

>> P = A1\[1;-2;-1]

P =

-3.2500
-7.5000
0.2500

Luego, P es el punto comn.


Para visualizar este concepto, representemos la recta, el plano y el punto, mediante la ejecucin el
siguiente script

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 121

% Grafica del plano


[x , y ] = meshgrid ( -4:0.2:1 , -9:0.2:1) ;
z1 = -1 -5* x +2* y ;
hold on
mesh (x ,y , z1 )
colormap ([0.4 0.4 0.4])
% Grafica de la recta
x = -7:0.1:2;
y =2* x -1;
z = -0.20*( x +2) ;
plot3 (x ,y ,z , 'r ')
% Punto de interseccin
A =[2 , -1 ,0;1 ,0 ,5;5 , -2 ,1];
b =[1; -2; -1];
X=A\b;
plot3 ( X (1) ,X (2) ,X (3) , ' bo ' , ' markersize ' ,4 , ' markerfacecolor ' , 'b ') ;
xlabel ( 'x ')
ylabel ( 'y ')
zlabel ( 'z ')
title ( ' Recta que corta un plano ')
grid on
hold off
view (120 ,30)

y se observar la figura 2.26.

Para graficar la funcin


2 y 2 )
z = 2(x2 + y 2 )e(x
ejecutamos los comandos

>> clear; clf; hold off


>> xx = -2: 0.2: 2;
>> yy = xx;
>> [x,y] = meshgrid(xx,yy);
>> z = 2*(x.^2 + y.^2).*exp(-x.^2 - y.^2);
>> mesh(x,y,z)
>> title(Grafica en 3-D )
>> xlabel(x); ylabel(y); zlabel(z)

y se muestra la grfica de la figura 2.27.

Si graficamos de nuevo la funcin anterior, pero ahora con la funcin surf, tenemos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 122

Recta que corta un plano

30

20

10

0
z

10

20 10

30 5
15
10 0
5
0
5 5 x
y

Figura 2.26: Recta que corta un plano

0.7

0.6

0.5

0.4
z 0.3

0.2

0.1

02
1.5
1 2
0.5 1.5
0 1
0.5
y -0.5 0
-1 -0.5
-1.5 -1 x
-2 -2 -1.5

Figura 2.27: Grfica de f (x, y) = 2 (x2 + y 2 ) e(x


2 y 2 )

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 123

0.8

0.6

0.4

0.2

0
2
1 2
0 1
0
1 1
2 2

Figura 2.28: Grfica de f (x, y) = 2 (x2 + y 2 ) e(x


2 y 2 )

>> clear; clf; hold off


>> xx = -2: 0.2: 2;
>> yy = xx;
>> [x,y] = meshgrid(xx,yy);
>> z = 2*(x.^2 + y.^2).*exp(-x.^2 - y.^2);
>> surf(x,y,z)
>> title(Grafica en 3-D )
>> xlabel(x); ylabel(y); zlabel(z)

y se genera la grfica de la figura 2.28.

Ejecutemos los comandos

>> clear; clf; hold off


>> xx = -2: 0.2: 2;
>> yy = xx;
>> [x,y] = meshgrid(xx,yy);
>> z = x.*exp(-x.^2 - y.^2);
>> mesh(x,y,z)
>> xlabel(x), ylabel(y), zlabel(z)
>> title(Grafica en 3-D de z = x*exp(-x^2 - y^2))

y se mostrar la grfica de la figura 2.29

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 124

0.4
0.3
0.2
0.1
0
z
-0.1
-0.2
-0.3
-0.4
2
1.5
1 2
0.5 1.5
0 1
0.5
y -0.5 0
-1 -0.5
-1.5 -1 x
-2 -2 -1.5

Figura 2.29: Grfica de f (x, y) = x e(x


2 y 2 )

La funcin surf es similar a mesh, excepto que surf colorea el interior de cada rejilla de la malla.
Ejecutemos los comandos

>> clear; clf; hold off


>> xx = -3:0.1:3;
>> yy = xx;
>> [x y] = meshgrid(xx,yy);
>> z = sin(x) .* cos(y);
>> mesh(x,y,z)
>> xlabel(x), ylabel(y), zlabel(z)
>> title(grafica de senxcosy);

y se observar la figura 2.30


Si ejecutamos los comandos

>> clear; clf; hold off


>> xx = -sqrt(2)/2:0.05:sqrt(2)/2;
>> yy = xx;
>> [x y] = meshgrid(xx,yy);
>> z1 = sqrt(1 - x.^2 - y.^2 + eps);
>> mesh(x,y,z1)
>> hold on
>> z2 = sqrt(1 - x.^2 - y.^2 + eps);
>> mesh(x,y,z2)
>> xlabel(x), ylabel(y), zlabel(z)
>> title(Elipsoide);

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 125

0.5

0
z

-0.5

-1 3
2
3
1 2
0 1
y -1 0
-2 -1 x
-2
-3 -3

Figura 2.30: Grfica de f (x, y) = sen(x) cos(y)

0.5

0
z

-0.5

-1
0.6
0.4
0.2 0.6
0 0.4
0.2
y
-0.2 0
-0.4 -0.2
-0.6 -0.4 x
-0.6
-0.8 -0.8

Figura 2.31: Grfica de z1 = 1 x2 y 2 y z2 = 1 x2 y 2


p p

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 126

8
7
6
5
4
z
3
2
1
02
1.5
1 2
0.5 1.5
0 1
0.5
y -0.5 0
-1 -0.5
-1.5 -1 x
-2 -2 -1.5

Figura 2.32: Grfica de f (x, y) = x2 + y 2 (Paraboloide Elptico)

y se mostrar la grfica de la figura 2.31


Ahora ejecutemos los comandos

>> clear; clf; hold off


>> xx = -2:0.05:2;
>> yy = xx;
>> [x y] = meshgrid(xx,yy);
>> z = x.^2 + y.^2;
>> mesh(x,y,z)
>> xlabel(x), ylabel(y), zlabel(z)
>> title(Paraboloide Eliptico);

y se observar la grfica de la figura 2.32


Si ejecutemos los comandos

>> clear; clf; hold off


>> xx = -2:0.05:2;
>> yy = xx;
>> [x y] = meshgrid(xx,yy);
>> z1 = x.^2 ;
>> mesh(x,y,z1)
>> hold on
>> z2 = 4 - y.^2;
>> mesh(x,y,z2)
>> xlabel(x), ylabel(y), zlabel(z)
>> title(Paraboloides interceptados);

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 127

4
3.5
3
2.5
2
z
1.5
1
0.5
02
1.5
1 2
0.5 1.5
0 1
0.5
y -0.5 0
-1 -0.5
-1.5 -1 x
-2 -2 -1.5

Figura 2.33: Grfica de z = x2 y z = 4 y 2 (Intercepcin de paraboloides)

y se ver la grfica de la figura 2.33


Recuerde que el comando hold on nos permite tener varias grficas en el mismo sistema de
coordenadas.
Ejecutemos ahora los comandos

>> clear; clf; hold off


>> xx = -2:0.2:2;
>> yy = xx;
>> [x y] = meshgrid(xx,yy);
>> z = x.*exp(-x.^2 - y.^2) ;
>> subplot(1,2,1)
>> mesh(x,y,z)
>> xlabel(x), ylabel(y), zlabel(z)
>> subplot(1,2,2)
>> mesh(x,y,z)
>> xlabel(x), ylabel(y), zlabel(z)
>> title(Dos graficos en la misma ventana);

y se observar las grficas de la figura 2.34


El comando subplot(m, n, p) divide la ventana en m filas y n columnas y p, la posicin en que se
va a colocar el grfico, haciendo el recorrido por filas.

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 128

0.4 0.4
0.3 0.3
0.2 0.2
0.1 0.1
0 0
z z
-0.1 -0.1
-0.2 -0.2
-0.3 -0.3
-0.4 -0.4
2 2
1.5 1.5
1 2 1 2
0.5 1.5 0.5 1.5
1 1
0 0.5 0 0.5
y -0.5 0 y -0.5 0
-1 -0.5 -1 -0.5
-1 x -1 x
-1.5 -1.5 -1.5 -1.5
-2-2 -2-2

Figura 2.34: Grfica de z = x e(x


2 y 2 )

Ejercicios 2.10
Grafique las siguientes funciones.
1. y = 2x + 3, x [2, 3]
2. y = x3 2, x [3, 3]
3. y = cos 2x, x [0, 2]
4. y = x sen x, x [0, 2]
2 y 2 )
5. z = 0.2 cos x + ye(x , x [3, 3], y [3, 3]
6. z = y 2 x2 , x [3, 3], y [3, 3]
7. y = tan x/x0.3 , x [0, 5]
ex
8. y= , x [0, 1]
1 x2
9. y = xx , x [0, 2]
10. y = (sen 3t)e0.3t , t [0, ]
11. y = 1 cos(t), x = sen(t) + t t [0, 4]
p
12. z = x2 + y 2 1, x, y [3, 2/2] [ 2/2, 3]

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 129

13. r = sen(/2), [0, 4]


13. r = sec(3), [0, 4]
14. r = 1 + 4 cos(5), [0, 2]

15. f (x) = x x, x [0, 5]

ln x
16. f (x) = , x [1, 5]
x
x(x 2)
17. f (x) = , x [5, 5]
(x + 1)(x 2)
 
1
18. f (x) = sen , xR
x
x
19. f (x) = , xR
e|x1|
(
x2 , x < 0
20. f (x) = , x [2, 3]
1, x 0

x, x < 1

21. f (x) = 1, 0<x<2, x [3, 5]

2
x , x > 2

1 x, x < 1

22. f (x) = 1 x2 , 1 < x < 1 , x [2, 3]


x 1, x > 1
2 0.3y 2
23. f (x, y) = 80y 2 ex , 2.1 x 2.1, 6 x 6, x = y = 0.15

24. 2x y + 3z = 1, x [0, 4], y [1, 3]

(
3x 2y + 3z = 1
25. , x [0, 3]
x + 3y z = 3

2.16. Integracin Numrica


Matlab cuenta con varias funciones para integrar numricamente una funcin. Una de las ms
usada es la funcin
quad(fcn,a,b)
donde fcn es el nombre de la funcin que se quiere integrar; a es el lmite inferior y b es el lmite
superior de integracin.
Por ejemplo:

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 130

Suponga que deseamos calcular la integral

Z
2 cos x dx
0

Ejecutamos el siguiente comando


>> in = quad(cos, 0, pi/2)
in =
1.0000
Suponga que se desea obtener el valor de la integral
Z 3
(x2 + 1)dx
2

En este caso, primero debemos crear un archivo que represente la funcin


y = x2 + 1
Para definir esta funcin, creamos el archivo func1.m(M-file)

function y = func1(x)
y = x.^2 + 1;

Luego, guardamos este archivo. Es importante hacer notar que el archivo debe tener extensin .m.
Ahora, podemos integrar ejecutando los comandos
>> I = quad(func1,2,3)
I=
7.3333
Si queremos calcular la integral
Z 1
x2 ex dx
0

primero, definamos el archivo de funcin func2.m

function y = func2(x)
y = x.^2.*exp(-x);

Luego, guardamos este archivo y ejecutamos el comando


>> I = quad(func2, 0, 1)
I=
0.16060

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 131

Matlab permite sustituir los apstrofes en la llamada a quad por @. Por ejemplo, en lugar del
argumento func2 en el ejemplo anterior se puede escribir @func2.

Las funciones definidas como archivos.m tambin se pueden definir como funciones annimas (handle
functions). De manera que la integral
Z
2
cos xdx
0
se puede resolver, ejecutando el comando

>> quad(@cos,0,pi/2)
La integral Z 3
(x2 + 1)dx
2
se resuelve ejecutando el comando

>> quad(@(x)x.2+1,2,3)
La funcin annima se puede definir en forma separada como por ejemplo

>> f=@(x)x.^2+1

Luego, ejecutar el comando

>> quad(f,2,3)

Otra funcin que tiene Matlab para resolver una integral es integral. Su formato es

integral(func,a,b,par1,v1,par2,v2,...),

donde func es una funcin annima (handle function). a, b son los lmites de integracin y los
dems son parmetros opcionales.

Ejemplo
Resolver la integral Z 1
(10x3 cos(50x)e2x + 1) dx
0
Solucin
Ejecutamos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 132

>> f=@(x)10*x.^3.*cos(50*x).*exp(-2*x)+1

f =

@(x)10*x.^3.*cos(50*x).*exp(-2*x)+1

>> integral(f,0,1)

ans =

0.9934

Ejemplo
Resolver la integral Z 0.15
(log(x + 1) sec(10x)) dx
0
Solucin
Ejecutamos los comandos

>> f=@(x)log10(x+1).*sec(10*x)

f =

@(x)log10(x+1).*sec(10*x)

>> integral(f,0,0.15)

ans =

0.0143

Cuando la funcin viene dada en forma tabular, podemos usar la funcin trapz, cuyo formato es
trapz(x,y),
donde x y y son dos vectores.
Ejemplo
Integrar la funcin dada por medio de la siguiente tabla
x 0 1 2 3 4 5 6 7 8 9 10 11 12 13
f (x) 1 4 7 1 9 3 7 2 12 34 21 67 8 0

Solucin

Ejecutamos los siguientes comandos Matlab y obtenemos el resultado:

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 133

>> x=0:13

x =

0 1 2 3 4 5 6 7 8 9 10 11 12 13

>> y=[1 4 7 1 9 3 7 2 12 34 21 67 8 0]

y =

1 4 7 1 9 3 7 2 12 34 21 67 8 0

>> trapz(x,y)

ans =

175.5000

Otras funciones que posee Matlab para el clculo de una integral simple numricamente son: quadl,
quadv y quadgk.

2.16.1. Integrales dobles


Matlab cuenta con varias funciones para resolver numricamente integrales dobles de la forma
Z bZ d(x)
f (x, y) dy dx.
a c(x)

Entre estas funciones se tiene:


integral2, dblquad, quad2d
El formato de la funcin integral2 es
integral2(func, xmin, xmax, ymin, ymax, par1, v1, par2, v2,...),
donde func es una funcin f (x, y) definida en forma annima, xmin y xmax, son escalares y ymin,
ymax pueden ser escalares o funciones definidas en forma annima (function handle).

Ejemplo


Z 1 Z 1x2
Resolver la integral
3xdy dx
0 1x2

Solucin
Ejecutamos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 134

>> f=@(x,y)3*x

f =

@(x,y)3*x

>> c=@(x)-sqrt(1-x.^2)

c =

@(x)-sqrt(1-x.^2)

>> d=@(x)sqrt(1-x.^2)

d =

@(x)sqrt(1-x.^2)

>> integral2(f,0,1,c,d)

ans =

2.0000

Ejemplo

Z Z /2
sen y
Resolver la integral dy dx
0 x y

Solucin
Ejecutamos los comandos

>> f=@(x,y)sin(y)./y

f =

@(x,y)sin(y)./y

>> c=@(x)x

c =

@(x)x

>> integral2(f,0,pi,c,pi/2)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 135

ans =

0.4883

Ejemplo

Z 1 Z 1
Resolver la integral x2 exy dx dy
0 y

Solucin

Z 1 Z 1
Para resolver esta integral, debemos expresarla como y 2 exy dy dx.
0 x
Ahora ejecutamos los comandos

>> f=@(x,y)y.^2.*exp(x.*y)

f =

@(x,y)y.^2.*exp(x.*y)

>> c=@(x)x

c =

@(x)x

>> integral2(f,0,1,c,1)

ans =

0.3591 o (e - 2)/2

2.16.2. Integrales triples


Hay varias funciones en Matlab para resolver numricamente integrales triples de la forma
Z b Z d(x) Z h(x,y)
f (x, y, z) dz dy dx.
a c(x) g(x,y)

Entre estas funciones se tiene:


integral3, triplequad
El formato de la funcin integral3 es

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 136

integral3(func, xmin, xmax, ymin, ymax, zmin, zmax, par1, v1, par2, v2,...),
donde func es una funcin f (x, y, z) definida en forma annima, xmin y xmax, son escalares y ymin,
ymax, zmin, zmax pueden ser escalares o funciones definidas en forma annima (function handle).

Ejemplo

Z 1 Z 1x2 Z 4x2 y
Resolver la integral x dz dy dx
0 0 3

Solucin
Ejecutamos los comandos

>> f=@(x,y,z)x

f =

@(x,y,z)x

>> ymax=@(x)1-x.^2

ymax =

@(x)1-x.^2

>> zmax=@(x,y)4-x.^2-y

zmax =

@(x,y)4-x.^2-y

>> integral3(f,0,1,0,ymax,3,zmax)

ans =

0.0833

Ejemplo

Z Z Z
Resolver la integral cos(x + y + z) dz dy dx
0 0 0

Solucin
Ejecutamos los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 137

>> f=@(x,y,z)cos(x+y+z)

f =

@(x,y,z)cos(x+y+z)

>> integral3(f,0,pi,0,pi,0,pi)

ans =

-1.7764e-15

Ejemplo

Z 2 Z (4x2 )/2 Z 8x2 y 2


Resolver la integral dz dy dx
2 (4x2 )/2 x2 +3y 2

Solucin
Ejecutamos los comandos

>> f=@(x,y,z)x.^0.*y.^0.*z.^0

f =

@(x,y,z)x.^2.*y.^0.*z.^0

>> ymin=@(x)-sqrt((4-x.^2)/2)

ymin =

@(x)-sqrt((4-x.^2)/2)

>> ymax=@(x)sqrt((4-x.^2)/2)

ymax =

@(x)sqrt((4-x.^2)/2)

>> zmin=@(x,y)x.^2+3*y.^2

zmin =

@(x,y)x.^2+3*y.^2

>> zmax=@(x,y)8-x.^2-y.^2

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 138

zmax =

@(x,y)8-x.^2-y.^2

>> integral3(f,-2,2,ymin,ymax,zmin,zmax)

ans =

35.5431

Ejemplo

Z /4 Z ln sec y Z 2x
Resolver la integral ez dz dx dy
0 0

Solucin

Z /4 Z ln sec x Z 2y
Esta integral debe ser expresada como ez dz dy dx
0 0
Ahora ejecutamos los comandos

>> f=@(x,y,z)exp(z)

f =

@(x,y,z)exp(z)

>> ymax=@(x)log(sec(x))

ymax =

@(x)log(sec(x))

>> zmax=@(x,y)2*y

zmax =

@(x,y)2*y

>> integral3(f,0,pi/4,0,ymax,-inf,zmax)

ans =

0.1073

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 139

Ejercicios 2.11
1. Otenga el valor de las siguientes integrales:


Z 1 Z 1.5 Z
4
4 2
a. x dx b. x log xdx c. x sen xdx
0.5 1 0


Z
4
Z 2 Z 1
3x x2
d. e sen 2xdx e. e dx f. sen(ex )dx
0 0 0

Z Z 2 Z 2
g. cos(3 cos x)dx h. tanh(x )dx 3
i. (2x5 cos(23x)e1.28x + 3)dx
0 0 0

Z 2 Z 1 Z 1 Z 2 Z 2 Z 1
2
j. (4 x y) dy dx k. (1 6x y) dx dy l. (1 6x2 y) dy dx
0 0 1 0 0 1

Z /4 Z 1 Z 1 Z x Z 1 Z 0
m. x cos y dx dy n. (3 x y) dy dx o. (3 x y) dx dy
/4 0 0 0 0 y

Z 1 Z x Z 1 Z 1y2 Z ln 8 Z ln y
sen x
p. dy dx q. 3y dx dy r. ex+y dx dy
0 0 x 0 1y 2 0 0

1 1x2 8 2 2 4x2
xe2y
Z Z Z Z Z Z
dy dx
s. dy dx t.
u. dy dx
0 1x 0 3 x y4 + 1 0 0 4y


Z 1 Z 1 Z 2 Z 8 Z 1 Z 1x2
(x2 +y 2 ) 1 p
v. e dy dx w. p dx dy x. 3 1 x2 y 2 dy dx
0 0 1 y3 x2 + y 2 1 0

2. Convierta a coordenadas polares y resulvalas


Z 1 Z
1x2 Z 1 Z 1y2
a. dy dx b. (x2 + y 2 ) dx dy
1 0 0 0

Z ln 2 Z (ln 2)2 y2 Z 2 Z 1(x1)2


2 2 x+y
c. e x +y dx dy d. dy dx
0 0 0 0 x2 + y 2

Z 1 Z 1y2 Z 0 Z 0
2 2 2
e. ln(x + y + 1) dx dy f.
p dy dx
1 1y 2 1 1x2 1 + x2 + y 2

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 140

3. Resuelva las integrales triples


r
(4x2 )
Z 2 Z
2
Z 8x2 y 2 Z 1 Z 1 Z yx
a. r dz dy dx b. dz dy dx
(4x2 )
2 2
x2 +3y 2 0 x 0

Z 1 Z 1x Z 1 Z 1 Z 2 Z 1y
c. dy dz dx d. dz dx dy
0 0 x+z 0 0 0

Z 3 Z
9x2 Z
9x2 Z 2 Z 4y2 Z 2x+y
e. dz dy dx f. dz dx dy
0 0 0 0 4y 2 0


1 1x2 4x2 y 4 1 2
4 cos(x2 )
Z Z Z Z Z Z
g. x dz dy dx h. dx dy dz
0 0 3 0 0 2y 2 z

Z 1 Z 1 Z 1 Z 2 Z 4x2 Z x
zy 2 sen 2x
i. 12xze x dy dx dz j. dy dz dx
0 0 x2 0 0 0 4z

4. Resuelva en coordenadas cilndricas


Z 2 Z 1 Z 2r2 Z Z / Z
3 4r2
a. dz rdr d b.
z dz rdr d
2 0 r 0 0 4r2


Z 1 Z z Z 2 Z 2 Z 4r2 Z 2
2 2 2
c. (r cos + z )r d dr dz d. (r sen + 1)r d dz dr
0 0 0 0 r2 0

5. Convierta en coordenadas cilndricas y resulvala.


Z 1 Z 1y2 Z x
a. (x2 + y 2 ) dz dx dy
1 0 0

6. Resuelva en coordenadas esfricas.


Z Z Z 2 sen Z 2 Z /3 Z 2
2
a. sen d d d b. 32 sen d d d
0 0 0 0 0 sec

7. Integre sobre el intervalo [0, 1.4], la funcin dada por medio de la siguiente tabla

x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4
f (x) 1 3 6 8 9 12 65 76 13 56 75 76 12 67 92

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 141

8. Integre sobre el intervalo [0, 18], la funcin dada por medio de la siguiente tabla

x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
f (x) 6 1 8 3 9 1 2 7 8 4 8 2 5 8 3 4 6 8 1

9. Integre sobre el intervalo [0, 84], la funcin dada por medio de la siguiente tabla

x 0 6 12 18 24 30 36 42 48 54 60 66 72 78 84
f (x) 124 134 148 156 147 133 121 109 99 85 78 89 104 116 123

10. Integre sobre el intervalo [1, 5], la funcin dada por medio de la siguiente tabla

x 1 2 3 4 5
f (x) 2.41 2.67 2.90 3.10 3.28

11. Integre sobre el intervalo [0, 1], la funcin dada por medio de la siguiente tabla

x 0 0.15 0.35 0.45 0.60 0.90 1.00


f (x) 0 0.15 0.34 0.44 0.56 0.78 0.84

2.17. Derivadas

2.17.1. Derivadas de Polinomios


Para derivar un polinomio en Matlab, utilizamos la funcin
polyder(c)
donde c es el vector que representa los coeficientes del polinomio que se quiere derivar. Este comando
produce como resultado otro vector que es el vector de coeficientes del polinomio derivado.
Por ejemplo, suponga que queremos derivar el polinomio
p = 3x4 2x3 + 5x2 x + 7
Ejecutamos los comandos siguientes
>> c = [3, -2, 5, -1, 7];
>> d = polyder(c)
y se produce como resultado el vector
d=
12.0000 -6.0000 10.0000 -1.0000
que es el vector de coeficientes del polinomio derivado.
Si queremos evaluar el polinomio derivado en un punto xi, ejecutamos el comando
>> polyval(d,xi)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 142

2.17.2. Diferenciacin Numrica


Para derivar funciones numricamente, utilizaremos la frmula integral de Cauchy.
Z
(k) k! f (z)
f (z0 ) = dz
2i C (z z0 )k+1

donde z es una variable compleja. C es una curva cerrada en el plano complejo, dentro de la cual
f(z) es analtica y contiene a z0 .
Construyamos una funcin en Matlab, que le llamaremos cauchy.m

function derf = cauchy(fcn,z0,k)


N = 2480 + k * 10; r = 1;
dth = 2 * pi/N;
th = 0: dth: 2 * pi - dth;
z = r * exp(i * th) + z0;
kf = 1;
for m = 1: k
kf = kf * m;
end
fsum = dth * sum(feval(fcn,z) ./ exp(i * k * th));
derf = kf / (2 * pi) *fsum / r ^ k;

Luego, guardemos este archivo con el nombre cauchy.m


En el programa anterior, z0 es el punto en el que deseamos derivar la funcin
fcn y k es el orden de la derivada.
Esta fmula produce resultados con muy buena precisin tanto para derivadas de rdenes bajos
como para derivadas de rdenes altos.
Por ejemplo, suponga que deseamos obtener la cuarta derivada de la funcin
y = sen x
en el punto 2.5. Ejecutamos los comandos
>> d = cauchy(sin, 2.5, 4)
d=
5.9847e-01 + 2.1471e-15i
De la misma manera podemos crear nuestras propias funciones como archivo .m.
Por ejemplo, suponga que queremos obtener la tercera derivada de la funcin
1
y= 2
x +1
en el punto 1.5.
Lo primero que debemos hacer es crear un archivo funcin con los comandos

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 143

function y = func3(x)
y = 1./ (x.^2 + 1);

Ahora, guardamos este archivo con el nombre func3.m.


Luego, ejecutamos el comando
>> der = cauchy(func3, 1.5, 3)
der =
-4.0335e-01 - 1.3243e-16i

La derivada de una funcin f se define como


f (x + h) f (x)
f 0 (x) = lm ,
h0 h
siempre que este lmite exista. De aqu podemos escribir que
f (x + h) f (x)
f 0 (x) ,
h
para h adecuado.

Utilizando la funcin diff de Matlab podemos obtener la derivada de una funcin numricamente
sobre un intervalo [a, b].
Ejemplo
Suponga que deseamos calcular la derivada de la funcin f (x) = sen x sobre el intervalo [0, 2].
Solucin
Ejecutamos los comandos matlab

>> h=0.001;
>> x=0:h:2*pi;
>> f=sin(x);
>> derf=diff(f)/h;
>> plot(x,f,k,x(1:length(x)-1),derf,k:) % Grafica la funcion y su derivada

El vector contenido en la variable derf es la derivada de la funcin f (x) = sen x, que es la funcin
cos x. La figura 2.35a muestra la grfica de la funcin sen x en lnea continua y la grfica de la
funcin cosx en lnea punteada.

Esta derivada tambin se puede obtener si se ejecutan los comandos siguientes:

>> x=0:0.001:2*pi;
>> f=sin(x);
>> derf=diff(f)./diff(x);
>> plot(x,f,k,x(1:length(x)-1),derf,k:)

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 144

1 4

0.8
3.5
0.6
3
0.4
2.5
0.2

0 2

0.2
1.5
0.4
1
0.6
0.5
0.8

1 0
0 1 2 3 4 5 6 7 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

(a) Derivada numrica del sen x (b) Derivada numrica de f (x) = x2

Figura 2.35: Derivadas numricas

Ejemplo

Derivemos numricamente la funcin f (x) = x2 sobre el intervalo [0, 2].


Solucin
Ejecutamos los comandos Matlab

>> h=0.001;
>> x=0:h:2;
>> y=x.^2;
>> dy=diff(y)/h;
>> plot(x,y,k,x(1:length(x)-1),dy,k:)

y obtenemos la derivada en la variable dy, que es evidentemente un recta como lo muestra la


figura 2.35b.

Para conseguir esta derivada tambin se puede ejecutar los comandos siguientes:

>> x=0:0.001:2;
>> y=x.^2;
>> dy=diff(y)./diff(x);
>> plot(x,f,k,x(1:length(x)-1),derf,k:)

Ejemplo

Derivemos numricamente la funcin f (x) = 5x sen x2x cos x sobre el intervalo [0, /4].
Solucin
Para producir la derivada, ejecutamos los comandos Matlab

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 145

7
primitiva
derivada
6

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8

Figura 2.36: Derivada numrica de f (x) = 5x sen x + x2 cos x

>> x=0:0.001:pi/4;
>> y=5*x.*sin(x)+x.^2.*cos(x);
>> dydx=diff(y)./diff(x);
>> plot(x,y,k,x(1:length(x)-1),dydx,k:)
>> legend(primitiva,derivada);

La funcin y su derivada se muestran en la figura 2.36.

Nota: El comando plot en cada uno de los ejemplos anteriores no es necesario. Simplemente, lo
hago para mostrar las grficas de la primitiva y su derivada.

Ejercicios 2.12
1. Derive los polinomios siguientes:

a. p(x) = 5x3 4x + 3
b. f (x) = 7x6 + 3x4 2x + 5
c. q(x) = 6x5 + 3x3 7x2 + 3x 1

2. Obtenga la derivada de las siguientes funciones:


a. f (x) = x2 + 1, z0 = 1, k=3
4x
b. f (x) = 3 , z0 = 1.5, k=2
5x 1
c. f (x) = x2 senx, z0 = 1.2, k=3

3. Derive numricamente las siguientes funciones con h = 0.001:

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 146

a. f (x) = 2x5 3x3 + 5x 3, x [1, 3].


b. f (x) = cos(x2 ), x [, ].
c. f (x) = sen(2x) cos(5x), x [0, 2].
d. f (x) = x2 sen x + cos x 3, x [, 2].
e. f (x) = 7 sen(12x) + x2 2x + 5, x [0, 4].

4. Derive numricamente en el punto z0 . Nota: utilice script dado en el manual.

a. Obtenga f 00 (z0 ), Si f (x) = 2x5 3x3 + 7, z0 = 2.5


b. Obtenga f (5) (z0 ), Si f (x) = tan(x2 ), z0 = /3.
c. Obtenga f 0 (z0 ), Si f (x) = sen(4x) cos(7x), z0 = /4.
d. Obtenga f (7) (z0 ), Si f (x) = x2 sen x + cos x 3, z0 = 1.7
e. Obtenga f (4)
(z0 ), Si f (x) = sen(10x) + x 5x + 3,
3
z0 = 3.

2.18. Ecuaciones Diferenciales


En Matlab existen varias funciones que se pueden utilizar para resolver numricamente ecuaciones
y sistemas de ecuaciones diferenciales ordinarias. Entre estas funciones tenemos
ode23 y ode45
que son funciones basadas en los mtodos de Runge-Kutta de segundo/tercero y cuarto/quinto
orden respectivamente.
Estaremos resolviendo ecuaciones diferenciales ordinarias sujeta a condiciones iniciales.

2.18.1. Ecuaciones Diferenciales de Primer Orden


Una Ecuacin diferencial de primer orden sujeta a una condicin inicial tiene la forma
y 0 (t) = f (t, y), y(a) = y0 , atb
donde f (t, y) es una funcin de t y y, y la segunda ecuacin es la condicin inicial del problema
de valor inicial.
Por ejemplo, suponga que deseamos resolver la ecuacin diferencial de primer orden
dy (t y)
= , y(0) = 1, [0, 3]
dt 2
Vamos a crear un archivo con los comandos siguientes:

function der = edo1(t,y)


der = (t - y) / 2;

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 147

Luego, guardemos este archivo con el nombre


edo1.m
Ahora, ejecutemos los comandos
>> ti = (0:0.5:3);
>> y0 = 1;
>> [t,y] =ode23 (edo1, ti ,y0);
>> [t,y]
Solucin

ans =
ti y

0 1.0000
0.5000 0.8363
1.0000 0.8195
1.5000 0.9169
2.0000 1.1035
2.5000 1.3594
3.0000 1.6692

Esta secuencia de comandos producen una tabla de dos columnas con los resultados de la ecuacin
diferencial.
La solucion analtica es
t
y(t) = 3e 2 +t2

La funcin edo1 puede definirse tambin en forma annima para obtener el mismo resultado.
Si ejecutamos los comandos siguientes para resolver el ejemplo anterior, se producen los mismos
resultados:

>> edo1=@(t,y)(t-y)/2;
>> ti=0:0.5:3;
>> y0=1;
>> [t y]=ode23(edo1,ti,y0);
>> [t y]

ans =
ti y

0 1.0000
0.5000 0.8363
1.0000 0.8195
1.5000 0.9169
2.0000 1.1035

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 148

2.5000 1.3594
3.0000 1.6692

La funcin tambin puede definirse por medio del comando inline como se muestra en los
comandos que siguen:

>> edo1=inline((t-y)/2,t,y)

edo1 =

Inline function:
edo1(t,y) = (t-y)/2

>> ti=0:0.5:3;
>> y0=1;
>> [t y]=ode23(edo1,ti,y0);
>> [t y]

ans =
ti y

0 1.0000
0.5000 0.8363
1.0000 0.8195
1.5000 0.9169
2.0000 1.1035
2.5000 1.3594
3.0000 1.6692

Ejercicios 2.13
Resuelva las siguientes ecuaciones diferenciales:

1. y 0 = t2 y , y(0) = 1 , [0, 2]
2. y 0 = 3y + 3t , y(0) = 1 , [0, 1]
3. y 0 = e2t 2y , y(0) = 1
10
, [0, 1]

2.18.2. Sistemas de Ecuaciones Diferenciales


Para resolver el sistema de ecuaciones diferenciales

u = u + 2v
, u(0) = 6, v(0) = 4, [0, 1]
v = 3u - 2v

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 149

con Matlab se procede creando un archivo-m con los comandos

function der = edo5(t,y)


der = zeros (2,1);
der(1) = y(1) + 2*y(2);
der(2) = 3*y(1) - 2*y(2);

Luego, guarde este archivo con el nombre


edo5.m
Ahora, ejecutamos los comandos
>> ti = (0:0.1:1);
>> y0 = [6; 4];
>> [t,y] = ode23(edo5,ti,y0);
>> [t,y]
Estos comandos producen una tabla con tres columnas representando la solucin numrica del
sistema de ecuaciones.

ans =
ti u v

0 6.0000 4.0000
0.1000 7.5831 5.1197
0.2000 9.5962 6.5249
0.3000 12.1526 8.2960
0.4000 15.3964 10.5338
0.5000 19.5105 13.3654
0.6000 24.7272 16.9509
0.7000 31.3410 21.4934
0.8000 39.7255 27.2494
0.9000 50.3542 34.5445
1.0000 63.8317 43.7936

La solucion analtica de este sistema es

u(t) = 4e4t + 2et

v(t) = 6e4t 2et

Al igual que dar solucin a una ecuacin diferencial, el sistema de ecuaciones se puede definir en
forma annima como se muestra a continuacin:

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 150

>> edo5=@(t,y)[y(1)+2*y(2);3*y(1)-2*y(2)]

edo5 =

@(t,y)[y(1)+2*y(2);3*y(1)-2*y(2)]

>> ti=0:0.1:1;
>> y0=[6;4];
>> [t y] = ode23(edo5,ti,y0);
>> [t y]

ans =
ti u v

0 6.0000 4.0000
0.1000 7.5831 5.1197
0.2000 9.5962 6.5249
0.3000 12.1526 8.2960
0.4000 15.3964 10.5338
0.5000 19.5105 13.3654
0.6000 24.7272 16.9509
0.7000 31.3410 21.4934
0.8000 39.7255 27.2494
0.9000 50.3542 34.5445
1.0000 63.8317 43.7936

Definiendo el sistema con la funcin inline se tiene

>> edo5=inline([y(1)+2*y(2);3*y(1)-2*y(2)],t,y)

edo5 =

Inline function:
edo5(t,y) = [y(1)+2*y(2);3*y(1)-2*y(2)]

>> ti=0:0.1:1;
>> y0=[6;4];
>> [t y] = ode23(edo5,ti,y0);
>> [t y]

ans =
ti u v

0 6.0000 4.0000
0.1000 7.5831 5.1197
0.2000 9.5962 6.5249
0.3000 12.1526 8.2960

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 151

0.4000 15.3964 10.5338


0.5000 19.5105 13.3654
0.6000 24.7272 16.9509
0.7000 31.3410 21.4934
0.8000 39.7255 27.2494
0.9000 50.3542 34.5445
1.0000 63.8317 43.7936

Ejercicios 2.14
Resuelva los siguientes sistemas de ecuaciones diferenciales:

1. u0 = 3u v , u(0) = 0.2
v0 = 4u v , v(0) = 0.5 [0, 2]

2. u0 = u 4v , u(0) = 2
v0 = u+v , v(0) = 3 [0, 2]

3. u0 = v 4u , u(0) = 1
v0 = u+v , v(0) = 1 [0, 1.2]

4. u0 = 3u + 2v (2t2 + 1)e2t , u(0) = 1


v0 2 2t
= 4u + v + (t + 2t 4)e , v(0) = 1 [0, 1]

5. u0 = v , u(0) = 1
v 0 = u 2et + 1 , v(0) = 0 [0, 2]
w0 = u et + 1 , w(0) = 1

6. u0 = 2u + 3v , u(0) = 2.7
v0 = 2u + v , v(0) = 2.8 [0, 1]

7. u0 = 3u v , u(0) = 0.2
v0 = 4u v , v(0) = 0.5 [0, 2]

2.18.3. Ecuaciones Diferenciales de Orden Superior


Consideremos la ecuacin diferencial de segundo orden
u00 (t) + pu0 (t) + qu(t) = r(t), a t b, u(a) = u0 , u0 (a) = u00

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 152

donde p, q y r son constantes o funciones de t, u y u0 y la segunda y tercera ecuaciones son


condiciones iniciales.
Para resolver esta ecuacin diferencial, lo convertimos en un sistema de dos ecuaciones diferenciales
de primer orden, de la siguiente manera:
Hacemos
u0 = v

entonces la ecuacin de segundo orden original se puede escribir como


v 0 (t) + pv(t) + qu(t) = r(t), v(a) = u00 , u(a) = u0
Ahora, tenemos el sistema de ecuaciones diferenciales de primer orden
u0 = f1 (u, v, t), u(a) = u0
v 0 = f2 (u, v, t), v(a) = u00
donde
f1 (u, v, t) = v
f2 (u, v, t) = pv qu + r
Ejemplo:

Resolvamos la ecuacin diferencial

0.5u00 + 10u0 + 100u = 0, u(0) = 1, u0 (0) = 0, [0, 1]

Solucin:

Escribimos la ecuacin diferencial como un sistema de dos ecuaciones diferenciales de primer orden

u0 = v , u(0) = 1
v 0 = (10/0.5)v (100/0.5)u , v(0) = 0

u0 = v , u(0) = 1
v 0 = 20v 200u , v(0) = 0

Ahora debemos crear el archivo

function der = edo2(t,y)


der = zeros (2,1);
der(1) = y(2);
der(2) = -20 * y(2) - 200 * y(1);

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 153

luego guardamos el archivo como edo2.m.

Ahora ejecutamos los comandos Matlab

>> ti = (0:0.1:1);
>> y0 = [1;0];
>> [t,y] = ode23(edo2, ti, y0);
>> [t,y]

Se visualizar una tabla con tres columnas, representando los resultados de la solucin

ans =
ti u u

0 1.0000 0
0.1000 0.5087 -6.1951
0.2000 0.0670 -2.4690
0.3000 -0.0424 -0.1417
0.4000 -0.0259 0.2783
0.5000 -0.0046 0.1301
0.6000 0.0017 0.0140
0.7000 0.0013 -0.0121
0.8000 0.0003 -0.0067
0.9000 -0.0001 -0.0010
1.0000 -0.0001 0.0005

La funcin puede definirse tambin en forma annima. Ejecutemos los comandos:

>> edo2=@(t,y)[y(2);-20*y(2)-200*y(1)]

edo2 =

@(t,y)[y(2);-20*y(2)-200*y(1)]

>> ti=0:0.1:1;
>> y0=[1;0];
>> [t y]=ode23(edo2,ti,y0);
>> [t y]

ans =
ti u u

0 1.0000 0
0.1000 0.5087 -6.1951

MMP/Santiago Copyright 2016 ABB


2. CLCULO NUMRICO 154

0.2000 0.0670 -2.4690


0.3000 -0.0424 -0.1417
0.4000 -0.0259 0.2783
0.5000 -0.0046 0.1301
0.6000 0.0017 0.0140
0.7000 0.0013 -0.0121
0.8000 0.0003 -0.0067
0.9000 -0.0001 -0.0010
1.0000 -0.0001 0.0005

Recuerde que el sistema se puede definir tambin por medio de la funcin inline.

Ejercicios 2.15
Resuelva las siguientes ecuaciones diferenciales:

1. u00 (t) + 4u0 (t) + 5u(t) = 0, u(0) = 3, u0 (0) = 5, [0, 1]

2. 2u00 (t) 5u0 (t) 3u(t) = 45e2t , u(0) = 2, u0 (0) = 1, [0, 0.5]

3. u00 (t) + 6u0 (t) + u(t) = 0, u(0) = 4, u0 (0) = 4, [0, 1]

4. y 00 2y 0 3y = 0, y(0) = 0, y 0 (0) = 1, [0, 2]

5. y 00 cos(2t) + y = 0, y(0) = 1, y 0 (0) = 0, [0, 1]

MMP/Santiago Copyright 2016 ABB


Captulo 3

CLCULO SIMBLICO

3.1. Introduccin
Por defecto, Matlab realiza los clculos en formato numrico. Si ejecutamos la operacin 7 +
3/4, recibimos como resultado un valor aproximado en lugar del valor exacto 31/4. Matlab tiene
una gran capacidad para resolver problemas de ciencias e ingeniera simblicamente, mediante un
conjunto de funciones diseadas y desarrolladas para tales fines.
Con frecuencia necesitamos realizar clculo en matemtica que no se pueden llevar a cabo con las
herramientas de Matlab que conocemos hasta este momento, como por ejemplo, obtener la solucn
analtica de la integral de una funcin.
Para resolver este tipo de problemas existe el paquete de clculo simblico de Matlab. Una
Expresin simblica es una expresin matemtica formada por uno o ms objetos simblicos y
sobre los cuales se efecta el clculo simblico. Los objetos simblicos que componen las expresiones
simblicas pueden ser: nmeros, variables, operaciones y funciones. Es posible utilizar expresiones
simblicas en operaciones numricas, si es necesario.

3.2. Operaciones con expresiones simblicas


Toda proposicin de asignacin de expresiones simblicas tiene la forma
nombre_expresion = expresion_simbolica

La funcin syms es utilizada para declarar variables que an no tienen asignados valores concretos.
Su formato es
syms v1 v2 v3 vn ,
donde las vi , i = 1, 2, . . . , n representan las variables. Con este comando se pueden crear una o ms
variables al mismo tiempo. Note que las variables estn separadas por espacios y no por comas.
Por ejemplo,

>> syms x y z

155
3. CLCULO SIMBLICO 156

La funcin sym nos permite crear variables simblicas o convertir variables numricas a simblicas.
Este comando slo nos permite crear o convertir un objeto a la vez. Su formato es
nombre_objeto = sym(objeto_simbolico),
donde el objeto_simbolico puede ser una cadena.

Por ejemplo, si se quiere crear la variable simblica w, ejecutamos

>> w = sym(w)

w =

Si deseamos crear el objeto s con la cadena abb, ejecutamos

>> s = sym(abb)

s =

abb

Para convertir una expresin numrica a simblica, ejecutamos

>> e = sym(exp(1))

e =

3060513257434037/1125899906842624

>> p = sym(sqrt(3))

p =

3^(1/2)

La funcin double convierte una variable de simblica a numrica. Su formato es


variable_numerica = double(nombre_objeto).
Por ejemplo,

>> a=double(e)

a =

2.7183

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 157

>> q = double(p)

q =

1.7321

Ahora, observemos el siguiente ejemplo:

>> A = [1/2 3/4 sqrt(5);1 4/5 1.25 ]

A =

0.5000 0.7500 2.2361


1.0000 0.8000 1.2500

>> B =sym(A)

B =

[ 1/2, 3/4, 5^(1/2)]


[ 1, 4/5, 5/4]

Si queremos convertir a B en numrico, ejecutamos

>> double(B)

ans =

0.5000 0.7500 2.2361


1.0000 0.8000 1.2500

Toda expresin que contenga variables simblicas es tambin simblica, por ejemplo en

>> syms a b c x
>> g = a*x^2 + b*x + c

g =

a*x^2 + b*x + c

se tiene que g es tambin una variable simblica.

Una expresin simblica tambin se puede definir por medio de una cadena, aunque no se hayan
declarado previamente sus variables como simblicas. Por ejemplo,

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 158

>> h = 3*y^4 + 2*y^2 - 5

h =

3*y^4 + 2*y^2 - 5

Es importante hacer notar que cuando se necesite usar a y, debe estar entre comillas simples.

Ahora ejecutemos algunas operaciones con objetos simblicos:

>> clear
>> x = sym(3) % Define variable simbolica x

x =

>> y = sym(4) %Define variable simbolica y

y =

>> z = x/y + sqrt(5) % Operacion

z =

5^(1/2) + 3/4 % Resultado

>> w = (x + y)/2 + (y - 2 * x)/3 % Operacion

w =

17/6 % Resultado

>> t = sym(1/2)

t =

1/2

>> s = (3*x + 2*t^2 + x * y)/sqrt(x)

s =

(43*3^(1/2))/6

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 159

>> r = sin(x)^2 + cos(x)^2

r =

cos(3)^2 + sin(3)^2

>> simplify(r)

ans =

Si ahora ejecutamos los comandos

>> a=3

a =

>> b=4

b =

>> c = a/b + sqrt(3)

c =

2.4821

se observa que el resultado numrico.

La expresin puede ser creada con objetos simblicos y numricos. Ahora bien, si la expresin
incluye objetos simblicos todas las operaciones matemticas se efectan en forma simblicas(
exactas ) sin producir un valor numrico final. Por ejemplo,

>> f = a/y + x*b/5

f =

63/20

En esta expresin hay variables simblicas y numricas y el resultado es exacto. Cuando hay
variables numricas includas en expresiones simblicas, se considera su valor exacto, an cuando
estn dadas como valores aproximados. Por ejemplo,

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 160

>> clear
>> x= 2.2500

x =

2.2500

>> a= sym(3)

a =

>> b = sym(4)

b =

>> c = 3*a/b + 5*x +3

c =

33/2

Consideremos las expresiones f = x2 x + 5 y g = x3 + 3 x2 x 2 y efectuemos algunas


operaciones con ellas:

>> clear
>> syms x
>> f = x^2 - x + 5

f =

x^2 - x + 5

>> g = x^3 + 3 * x^2 - x - 2

g =

x^3 + 3*x^2 - x - 2

>> h = f + g

h =

x^3 + 4*x^2 - 2*x + 3

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 161

>> p = f - g

p =

- x^3 - 2*x^2 + 7

>> q = g/f

q =

-(- x^3 - 3*x^2 + x + 2)/(x^2 - x + 5)

>> r = f * g

r =

-(x^2 - x + 5)*(- x^3 - 3*x^2 + x + 2)

>> s = f^2

s =

(x^2 - x + 5)^2

Algunos de estos resultados sern explicado ms adelante.

El comando subs es utilizado para sustituir una variable por otra o por una constante en una
expresin simblica. Su formato es
subs(E,objeto_actual,objeto_nuevo),
donde el resultado es sustituir en objeto_actual por objeto_nuevo en la expresin E. Por ejemplo,
para sustituir a x por y en la f anterior, ejecutamos

>> syms y
>> subs(f,x,y)

ans =

y^2 - y + 5

Si ahora, queremos sustituir x por 5 en f, ejecutamos

>> subs(f,x,5)

ans =

25

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 162

Ahora suponga que se desea sustituir una coleccin de variables en una expresin simblica. Por
ejemplo, ejecutemos

>> clear
>> syms a b c x
>> f = a * x^2 + b * x + c

f =

a*x^2 + b*x + c

>> subs(f,{a,b,c},{2,-3,5})

ans =

2*x^2 - 3*x + 5

El comando subs anterior lo que hizo fue sustituir a a,b,c por 2, -3, 5, respectivamente en f. Para
sustituir a sf x por t, ejecutamos

>> syms t
>> subs(f,x,t)

ans =

a*t^2 + b*t + c

Ahora ejecutemos

>> g = subs(f,{a,b,c},{2,-3,5})

g =

2*x^2 - 3*x + 5

Evaluemos a g en el vector [1 : 5], ejecutando

>> subs(g,x,[1:5])

ans =

[ 4, 7, 14, 25, 40]

El comando sym2poly permite obtener el vector de coeficientes de una expresin simblica polinmica.
Su formato es
sym2poly(E),
donde E es la expresin simblica. Por ejemplo,

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 163

>> sym2poly(g)

ans =

2 -3 5

El comando poly2sym se utiliza para obtener el polinomio simblico a partir del vector de coeficientes
de un polinomio numrico. Su formato es
poly2sym(c),
donde c es el vector de coeficientes del polinomio. Por ejemplo,

>> c = [2, -3, 5]

c =

2 -3 5

>> poly2sym(c)

ans =

2*x^2 - 3*x + 5

La variable por defecto es x. Sin embargo, el polinomio simblico se puede construir con otra
variable, utilizando el formato
poly2sym(c,v),
donde v es la variable a utilizar. Por ejemplo, utilicemos como variable de salida a t, ejecutando

>> poly2sym(c,t)

ans =

2*t^2 - 3*t + 5

El comando expand se utiliza para desarrollar expresiones simblicas, aplicando la propiedad


distributiva. Luego, procesa producto de trminos que incluyen sumas, as como tambin identidades
trigonomtricas, exponenciales y logartmicas, etc. para el desarrollo de dichas expresiones. Su
formato es
expand(E),
donde E es una expresin simblica. Por ejemplo,

>> syms x y z

>> f = (x + y)^2

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 164

f =

(x + y)^2

>> expand(f)

ans =

x^2 + 2*x*y + y^2

>> g = (x - y)*(5*z^2 + z - 3)

g =

(x - y)*(5*z^2 + z - 3)

>> expand(g)

ans =

3*y - 3*x + x*z - y*z + 5*x*z^2 - 5*y*z^2

>> h = (x + y + z)^3

h =

(x + y + z)^3

>> expand(h)

ans =

x^3 + 3*x^2*y + 3*x^2*z + 3*x*y^2 + 6*x*y*z + 3*x*z^2 + y^3 +

3*y^2*z + 3*y*z^2 + z^3

>> s = (x + 5)*(y - 3)*(2*z + 1)

s =

(2*z + 1)*(x + 5)*(y - 3)

>> expand(s)

ans =

5*y - 3*x - 30*z + x*y - 6*x*z + 10*y*z + 2*x*y*z - 15

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 165

>> expand(sin(x + y))

ans =

cos(x)*sin(y) + cos(y)*sin(x)

>> expand(tan(x-y))

ans =

(tan(x) - tan(y))/(tan(x)*tan(y) + 1)

El comando factor se utiliza para factorizar expresiones simblicas polinmicas, dando como
resultado otra expresin simblica formada por un producto de polinomios de grado menor. Su
formato es
factor(E),
donde E es una expresin simblica. Por ejemplo,

>> clear
>> syms a b c x y z
>> f = x^2 - 1

f =

x^2 - 1

>> factor(f)

ans =

(x - 1)*(x + 1)

>> f = 2*x^2 - 12*x + 10

f =

2*x^2 - 12*x + 10

>> factor(f)

ans =

2*(x - 1)*(x - 5)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 166

>> factor(280)

ans =

2 2 2 5 7

>> factor(x^3 + 8)

ans =

(x + 2)*(x^2 - 2*x + 4)

>> f = 100*x*y + 20*y^2 - 40*z*y

f =

100*x*y - 40*y*z + 20*y^2

>> factor(f)

ans =

20*y*(5*x + y - 2*z)

>> f = (6*x^3 + 7*x^2*y)*(6*x + 7*y)

f =

(6*x + 7*y)*(6*x^3 + 7*y*x^2)

>> factor(f)

ans =

(6*x + 7*y)^2*x^2

El comando pretty se utiliza cuando queremos que las expresiones simbicas se visualicen en forma
muy parecida a como se escriben normalmente. Su formato es
pretty(E),
donde E es una expresin simblica. Por ejemplo,

>> clear
>> syms a b c x y z
>> f = a*x^2 - b*y^3 + 5

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 167

f =

a*x^2 - b*y^3 + 5

>> pretty(f)
2 3
a x - b y + 5

>> f = (a*x^3 - b*x + c)^2

f =

(a*x^3 - b*x + c)^2

>> pretty(f)
3 2
(a x - b x + c)

f =

(a*x^2 + b*x + c)^(1/2)

>> pretty(f)
2
sqrt(a x + b x + c)

El comando simplify se utiliza para simplificar expresiones simblicas. Su formato es


simplify(E),
donde E es una expresin simblica. Por ejemplo,

>> clear
>> syms a b c x y z
>> f = sin(x)^2 + cos(x)^2

f =

cos(x)^2 + sin(x)^2

>> simplify(f)

ans =

>> f = sin(a)*cos(b) + cos(a)*sin(b)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 168

f =

cos(a)*sin(b) + cos(b)*sin(a)

>> simplify(f)

ans =

sin(a + b)

>> f = a^3 + 3*a^2*b + 3*a*b^2 + b^3

f =

a^3 + 3*a^2*b + 3*a*b^2 + b^3

>> simplify(f)

ans =

(a + b)^3

>> f = (x - y)*(x^2 + x*y + y^2)

f =

(x - y)*(x^2 + x*y + y^2)

>> simplify(f)

ans =

x^3 - y^3

Variable por defecto

La variable por defecto en las expresiones simblicas es la x. Si no existe x, entonces se toma como
preferente la variable minscula ms cercana a sta, segn el orden alfabtico. En caso de que haya
dos variables que estn a la misma distancia de x, se toma como preferente la posterior en el orden
del alfabeto.
Para multiplicar polinomios simblicamente, ejecutamos los comandos

>> clear all


>> syms x y z

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 169

>> p = 2* x ^3 - 3* x ^2 - 5* x + 1

p =

2* x ^3 - 3* x ^2 - 5* x + 1

>> q = 5* x ^2 + 3* x - 2

q =

5* x ^2 + 3* x - 2

>> p * q

ans =

-(5* x ^2 + 3* x - 2) *( - 2* x ^3 + 3* x ^2 + 5* x - 1)

>> expand ( ans )

ans =

10* x ^5 - 9* x ^4 - 38* x ^3 - 4* x ^2 + 13* x - 2

Si se desea dividir dos polinomios simblicamente, se utiliza la funcin quorem, cuyo formato es
[q r]= quorem(p1,p2,v),
donde p1 es el polinomio dividendo, p2 es el divisor y v es la variable con respecto a la cual de
efecta la divisin. q es el polinomio cociente y r es el polinomio resduo.
Ejemplo

Ejecutemos los comandos

>> clear
>> syms x y z
>> p1 = 5* x ^3 - 2* x ^2 + 3* x + 4

p1 =

5* x ^3 - 2* x ^2 + 3* x + 4

>> p2 = 3* x ^2 - 2* x + 5

p2 =

3* x ^2 - 2* x + 5

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 170

>> [ q r ] = quorem ( p1 , p2 )

q =

(5* x ) /3 + 4/9

r =

16/9 - (40* x ) /9

Si ahora ejecutamos

>> [ q r ] = quorem ( p2 , p1 )

q =

r =

3* x ^2 - 2* x + 5

Observe que en este caso el cociente es el polinomio cero (0), porque el dividendo es de grado
menor que el divisor.
Ejemplo
Consideremos ahora los comandos

>> p1 = 2* x ^3* y ^2 - 4* x ^4* y ^3 + x * y ^4

p1 =

- 4* x ^4* y ^3 + 2* x ^3* y ^2 + x * y ^4

>> p2 = 2* x ^2* y ^2

p2 =

2* x ^2* y ^2

>> [ q r ]= quorem ( p1 , p2 , x )

q =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 171

- 2* y * x ^2 + x

r =

x * y ^4

En este ejemplo, la divisin se llev a cabo con respecto a la variable x. Si queremos la divisin
con respecto a y, ejecutamos

>> [ q r ]= quorem ( p1 , p2 , y )

q =

x + y ^2/(2* x ) - 2* x ^2* y

r =

Ejemplo

Si queremos dividir dos numeros enteros, ejecutamos los comandos

>> a = sym (5784)

a =

5784

>> b = sym (162)

b =

162

>> [ q r ] = quorem (a , b )

q =

35

r =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 172

114

Ejercicios 3.1
1. Efecte las operaciones exactas siguientes:

a. (1/3 + 4/7 3 2/5)



b. (4/3 + 22 + 2)/3
c. (5 + 2/3)2 2 (3 1/5)
d. 52 + 3/2 7/3/(3/4 + 2/3)
p

e. (7 3/5 4/7 3 + 2) (4/5 1/2)

2. Defina simblicamente las variables a, b, c, x, y, z y las funciones f = a x3 + 2 b x c


y g = 3 x2 + 5 x 2 c.

a. Sustituya x por -3 en f y c por 2 en g


b. Evale f en a = 2, b = 1, c = 2 y g en c = 1.
c. Sume, reste y multiplique los resultados del item b.
d. Asigne a x el valor de 5 y a y el valor de 4. Obtenga el valor de x/3 + y/7 5.
e. Utilice los valores
p de x y y asignados en el item d para obtener el valor de
(2 x2 3 y)/ x + y 2 18

3 Encuentre el vector de coeficientes de las siguientes expresiones simblicas:

a. (1 + x + x2 )(1 x + x2 )
b. 5(3t 4) (t2 + 2) 2t(t 3)
c. (3x + 4)2 (x 2)

4 Encuentre la expresin simblica polinmica en la variable indicada.

a. [3, 5, 1, 2] en la variable t
b. [5, 1, 3] en la variable x
c. [2, 3, 2, 5, 4] en la variable s

5. Desarrolle las expresiones

a. 2 (x 3) 3 (x 3)2 + 2 (x 3)3 .
b. sen(2x)
c. (tan x + 1)2
d. (x + y z)2
e. (x2 x y + y 2 ) (x y)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 173

f. (3x2 y + 7xy 2 )(x2 y 3 2y 2 )


g. (x + 1)3 x 2(x + 1)2 x2 + x3 (x + 1)

6. Factorice las expresiones siguientes

a. x3 + x2 + 4x + 4.
b. y 3 2y 2 3y + 6
c. (x 1)(x + 2)2 (x 1)2 (x + 2)
d. y 4 (y + 2)3 + y 5 (y + 2)4
e. 8a3 125)
f. x3 3x2 y + 3xy 2 y 3
g. (a4 b4 )

7. Convierta los resultados del item 4 en forma parecida a la escritura normal.

8. Simplifique las expresiones siguientes

a. (x3 + 6x2 4x + 7) (3x2 + 2x 4).


b. (t 5)2 2(t + 3)(8t 1)
c. (tan x + tan y)/(1 tan x tan y)
d. 1/(cos(x) cos(y) + sin(x) sin(y))

e. ( a 1/b)( a + 1/b)
f. a(x y) + (a 1)(y x)

g. ( x2 + 1 + 1)( x2 + 1 1)
h. (sin(x) + cos(y))2

9. Sean p1 = 7x5 2x3 +3x2 5x+2, p2 = 3x5 6x4 +5x2 +x7 y p3 = 5x4 y 3 3x2 y 2 +2xy2y 5
tres polinomios simblicos. Efecte las operaciones indicadas:

a. p1 p2
b. p2 p3
c. p1/p2
d. p1/p3 con respecto a x

10. Efecte las operaciones indicadas


3x7 y 5 5x4 y 3 + 2x3 y 2 xy 4 x6 + xy + 3
a. respecto a x y luego respecto a y.
2x4 y 3 x3 Y 2 + x2 y 2 x2 y 3 + 2xy 2 3

b. (4x3 y 4 3x2 y 2 2xy 3 xy 5 x3 + x2 y 1)(5x3 y 5 x2 Y 4 + xy 2 x5 y 3 + 2xy 7).

7324
c. .
860

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 174

3.3. Lmites
Matlab posee la funcin
limit(E, v, b)
para calcular el lmite de una expresin simblica E, cuando la variable v tiende a b.
Exiten otras formas de la funcin limit que se pueden revisar en la documentacin de Matlab (
teclee el comando help limit en lnea de comandos).
Ejemplos:
Calculemos los siguientes lmites:

>> clear
>> syms x y z t
>> f = (x^ - 9)/(x - 3)

f =

1/(x^9*(x - 3))

>> f = (x^2 - 9)/(x - 3)

f =

(x^2 - 9)/(x - 3)

>> limit(f,x,3)

ans =

Ejemplo

>> f = (x - 1)/(x^3 - 1)

f =

(x - 1)/(x^3 - 1)

>> limit(f,x,1)

ans =

1/3

Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 175

>> f = sin(1/x - 1/2)

f =

sin(1/x - 1/2)

>> limit(f,x,2)

ans =

Ejemplo

>> f = tan(1 - sin(t)/t)

f =

-tan(sin(t)/t - 1)

>> limit(f,t,0)

ans =

Ejemplo

>> f = (2*x^2 + 3)/(5*x^2 + 7)

f =

(2*x^2 + 3)/(5*x^2 + 7)

>> limit(f,x,inf)

ans =

2/5

Ejemplo

>> f = sin(t)/sin(sqrt(t))

f =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 176

sin(t)/sin(t^(1/2))

>> limit(f,t,0,right)

ans =

Ejemplo

>> f = (1 - sqrt(x))/(x - 1)

f =

-(x^(1/2) - 1)/(x - 1)

>> limit(f,x,1)

ans =

-1/2

Ejercicios 3.2
Calcule los lmites siguientes:

cos x + 1 x1
1. lm (5x2 2x + 3) 2. lm 3. lm +
x4 x3 x 3 x2 x2 (x + 2)
(x2 + x 6) 1 1
4. lm 5. lm 6. lm+
x2 (x 2) x1 x3 1 x1 x3 +1
sen(cos ) cos x 1 |x + 4|
7. lm 8. lm 9. lm
0 sec x0 sen x x4 x+4
   
1 1 1 1 sen 7x
10. lm 11. lm 12. lm
x0 x |x| x0+ x |x| x0 4x

t2 + 9 3 (t 5)2 25 x3 1
13. lm 14. lm 15. lm
t0 t2 t0 t x1 x2 1

(2 + h)2 8 |x 2| 2x2 3x
16. lm 17. lm 18. lm
h0 h x2 x 2 x1.5 |2x 3|

x2 1

1 1 x 2x2 + 1
19. lm sen 20. lm 21. lm
x1 1x x x2 1 x 3x 5

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 177

3.4. Derivadas
Matlab permite derivar funciones simblicamente, tal como lo hacemos en el calculo elemental. La
funcin de Matlab que realiza esta tarea tiene una de las siguientes formas:
diff(E)
diff(E, v)
diff(E, n)
diff(E, v, n)
donde E es la expresin que se quiere derivar; v representa la variable con respecto a la cual se va
a derivar y n representa el nmero de veces que se quiere derivar.
Ejemplos:
Derivemos las funciones

>> clear
>> syms x y z
>> f = sin(x^2)

f =

sin(x^2)

>> diff(f)

ans =

2*x*cos(x^2)

Ejemplo

>> f = sin(x^2)

f =

sin(x^2)

>> diff(f,x)

ans =

2*x*cos(x^2)

Observemos que se obtiene el mismo resultado anterior, puesto que estamos indicando que derive
con respecto a x que es la variable independiente por defecto en este caso.
Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 178

>> f = 3*x^5 - 2*x^3 + x^2 -7

f =

3*x^5 - 2*x^3 + x^2 - 7

>> diff(f,x)

ans =

15*x^4 - 6*x^2 + 2*x

Ejemplo

>> f = 3*x^5 - 2*x^3 + x^2 -7

f =

3*x^5 - 2*x^3 + x^2 - 7

>> diff(f,x,2)

ans =

60*x^3 - 12*x + 2

Ejemplo

>> f = (3 - x^2)*(x^3 - x + 1)

f =

-(x^2 - 3)*(x^3 - x + 1)

>> diff(f)

ans =

- (x^2 - 3)*(3*x^2 - 1) - 2*x*(x^3 - x + 1)

Ejemplo

>> f = (t^2 - 1)/(t^2 + t - 2)

f =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 179

(t^2 - 1)/(t^2 + t - 2)

>> diff(f,t)

ans =

(2*t)/(t^2 + t - 2) - ((2*t + 1)*(t^2 - 1))/(t^2 + t - 2)^2

Ejemplo

>> f = tan(3*x)

f =

tan(3*x)

>> diff(f,x)

ans =

3*tan(3*x)^2 + 3

Ejemplo

>> syms x y z t
>> f = x ^2 + 3* x * y ^2

f =

x ^2 + 3* x * y ^2

>> diff (f ,y ,2)

ans =

6* x

>> diff (f ,x ,3)

ans =

Ejemplo

>> f = sin ( x * y ) * cos ( z )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 180

f =

sin ( x * y ) * cos ( z )

>> diff (f , z )

ans =

- sin ( x * y ) * sin ( z )

Ejemplo

>> f = 3* cos ( x * z ) + 2* x ^3* y * z + 5* y * z ^5

f =

3* cos ( x * z ) + 5* y * z ^5 + 2* x ^3* y * z

>> diff ( diff (f , x ) ,y ) % este comando representa a fxy

ans =

6* x ^2* z

>> diff ( diff (f , z ) ,y ,2) % este comando representa a fzyy

ans =

Ejercicios 3.3
1. Derive las siguientes expresiones:

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 181


a. b. c.
5
y = sen x cos x y = 3x + 2ex y =x+ x2
1 x2 + 4x + 3
d. e. f.
2
y = ex y= x y=
x x
1 sen x
g. y = x2 cos 2x h. y = x x + 2 i. y=
x x x2
1 x
j. y = x 3x 3 k. y = xe l. y = (1 + x)(x x3 )

x1 ex
m. y= n. y= o. y = tan x2
x+1 x + ex
p. y = ln(x2 + 1) q. y = tan1 x
2. Obtenga la segunda y tercera derivada de los ejercicios del item 1.
3. Obtenga fxy , fyx , fxyx para las siguientes funciones

a. f (x, y) = x2 + y 2
p

b. f (x, y) = ex+y+1
c. f (x, y) = ln(x + y)
d. f (x, y) = sen2 (x 3y)
e. f (x, y) = xy
f. f (x, y) = ex sen(x + y)
g. f (x, y) = tan1 (y/x)
4. Obtenga fxxxy , fyyzzz , fzxxyyy de cada una de las funciones siguientes
a. f (x, y, z) = 1 + xy 2 2z 2
b. f (x, y, z) = x5 y 2 + z 2
p

c. f (x, y, z) = ln(x + 2y + 3z)


d. f (x, y, z) = e(x
2 +y 2 +z 2 )

e. f (x, y, z) = senh(xy z 2 )

3.5. Series
Con Matlab podemos estudiar la convergencia o divergencia de algunas series, utilizando la funcin
symsum, cuyo formato es
symsum(s,v,a,b),
donde s representa el trmino general de la serie; v es la variable que representa el ndice en el
trmino general; a y b representan los lmites inferior y superior de v, respectivamente.
Ejemplo
Obtener el valor de
25
X 1
.
n=1
n

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 182

Ejecutemos los comandos

>> syms n
>> symsum (1/ n ,n ,1 ,25)

ans =

34052522467/8923714800

Ejemplo
Evaluar
X 1
.
n=1
n

Ejecutemos los comandos

>> symsum (1/ n ,n ,1 , inf )

ans =

Inf

Ejemplo
Evaluar la suma n
X
k2.
k=1

Ejecutamos los comandos

>> syms k n
>> symsum ( k ^2 ,1 , n )

ans =

( n *(2* n + 1) *( n + 1) ) /6

Ejemplo
Evaluar la expresin
 n1
X 2 1
.
n=1
5 3

Ejecutamos los comandos

>> symsum ((2/5) *(1/3) ^( n -1) ,1 , inf )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 183

ans =

3/5

Ejemplo
Evaluar la expresin

X x2n+1
(1)n .
n=0
(2n + 1)!

Ejecutamos los comandos

>> syms x n
>> symsum (( -1) ^ n * x ^(2* n +1) / factorial (2* n +1) ,n ,0 , inf )

ans =

sin ( x )

3.5.1. Series de Taylor


Si se desea expandir una funcin en serie de Taylor, utilizamos la funcin taylor. Esta funcin
tiene varios formatos; uno de ellos es
taylor(f,v,a),
donde f es la funcin a expandir; v es la variable independiente en el desarrollo y a es el punto
alrededor del cual se har la expansin.
Ejemplo

Desarrollemos la funcin
f (x) = ex .
alrededor del punto x = 0 (serie de Maclaurin).
Ejecutemos los comandos

>> clear
>> syms x y z t
>> f = exp ( x )

f =

exp ( x )

>> taylor ( f )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 184

ans =

x ^5/120 + x ^4/24 + x ^3/6 + x ^2/2 + x + 1

El orden (grado del polinomio) por defecto es 5. Si no se especifica el punto, se asume que es
alrededor de x = 0 (serie de Maclaurin).
Para expandir la funcin f alrededor de x = 1, ejecutamos los comandos

>> taylor (f ,x ,1)

ans =

exp (1) + exp (1) *( x - 1) + ( exp (1) *( x - 1) ^2) /2 +

( exp (1) *( x - 1) ^3) /6 + ( exp (1) *( x - 1) ^4) /24 +

( exp (1) *( x - 1) ^5) /120

Si ahora se quiere expandir la funcin alrededor del punto x = 1 y obtener un polinomio truncado
a grado 3, ejecutamos los comandos

>> taylor (f ,x ,1 , ' Order ' ,4)

ans =

exp (1) + exp (1) *( x - 1) + ( exp (1) *( x - 1) ^2) /2 +

( exp (1) *( x - 1) ^3) /6

En este caso utilic para la funcin taylor el formato


taylor(f,v,a,parm1,v1,parm2,v2,...),
donde los nombres vlidos para los parmetros son: Order, ExpansionPoint, OrderMode y v1,
v2,... son los valores que se les asignan a los parmetros. Cuando se utiliza el parmetro Order,
el polinomio que se obtiene es de grado n 1, donde n es el entero positivo suministrado a la
funcin taylor.

El formato siguiente tambin puede ser tomado por la funcin taylor


taylor(f,parm1,v1,parm2,v2,...)
La funcin taylor tambin aplica a funciones de varias variables, en cuyo caso la variable v es un
vector variable al igual que el punto a.

Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 185

Desarrollemos la funcin
f (x, y) = sen xy
alrededor del vector [1 1] por un polinomio de grado 2.
Ejecutemos los comandos

>> clear
>> syms x y z
>> f = sin ( x * y )

f =

sin ( x * y )

>> taylor (f ,[ x y ] ,[1 -1] , ' Order ' ,3)

ans =

( sin (1) *( x - 1) ^2) /2 - sin (1) + ( sin (1) *( y + 1) ^2) /2 -

cos (1) *( x - 1) + cos (1) *( y + 1) + ( cos (1) -

sin (1) ) *( x - 1) *( y + 1)

>>

Ejemplo
Desarrollemos la funcin
f (x, y) = ex+y .
alrededor del vector [2 1] por un polinomio de grado 3.
Ejecutemos los comandos

>> clear
>> syms x y z
>> f = exp ( x + y )

f =

exp ( x + y )

>> taylor (f ,[ x y ] ,[ -2 1] , ' Order ' ,4)

ans =

exp ( -1) + exp ( -1) *( x + 2) + exp ( -1) *( y - 1) +

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 186

( exp ( -1) *( x + 2) ^2) /2 + ( exp ( -1) *( x + 2) ^3) /6 +

( exp ( -1) *( y - 1) ^2) /2 + ( exp ( -1) *( y - 1) ^3) /6 +

exp ( -1) *( x + 2) *( y - 1) + ( exp ( -1) *( x + 2) ^2*( y - 1) ) /2 +

( exp ( -1) *( x + 2) *( y - 1) ^2) /2

Ejercicios 3.4
1. Evale las siguientes sumas


X X (3/2)n (3/4)n X 1
a. (n + 1)(1/2)n b. c. (1)n+1
n=1 n=1
n+1 n=1
n2


X x2n2 X 2n xn X xn
d. e. f.
n=1
(2n 2)! n=1
n2 + 1 n=1
2n (n 1)


X nxn1 X (x)n X
n1 x
n
g. h. i. (1)
n=1
2n1 3n n=0
n! n=1
n


X X x2n X x2n+1
j. (1)n xn k. (1) n
l. (1) n

n=0 n=0
(2n)! n=0
2n + 1


X x(2n+1)
m.
n=0
(2n + 1)

2. Obtenga la expansin de Taylor de orden n alrededor del punto dado.

a. f (x) = ln x, a = 1, n=5

b. f (x) = 3 x, a = 1, n=4
c. f (x) = ln(1 + x), a = 0, n=6
d. f (x) = cos x, a = /4, n=5
e. f (x) = ex/2 , a = 0, n=4
f. f (x) = sinh x, a = 0, n = 5
 
1+x
g. f (x) = ln , a = 0, n = 4
1x

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 187

h. f (x) = ln(cos x), a = 0, n=3


i. f (x) = arctan x, a = 1, n=3
j. f (x) = 1/(x + 2), a = 0, n=3
k. f (x) = x4 + 3x3 2x + 5, a = 0, n=4
l. f (x) = 2x , a = 1, n=3
m. f (x) = esen(x+) , a = 0, n=4

3. Obtenga el desarrollo de Taylor de orden n alrededor del vector dado.

a. f (x, y) = xey , a = [0 0], n=3


b. f (x, y) = ex cos y, a = [0 0], n=2
c. f (x, y) = sen(x2 + y 2 ), a = [0 0], n=2
d. f (x, y) = ln(2x + y1), a = [0 0], n=3
e. f (x, y) = y sen x, a = [0 0], n=3
f. f (x, y) = cos x cos y, a = [0 0], n=2
x2 y
g. f (x, y) = e , a = [1 2], n=2
h. f (x, y) = sen(x + y) + cos(x + y), a = [0 0], n=2
i. f (x, y) = ex cos(x + y), a = [0 0], n = 2
x
j. f (x, y, z) = zex , a = [1 1 0], n = 2
y
2 +y 2
k. f (x, y) = (x y)ex , a = [1 2], n=1
l. f (x, y, z) = ex+y+z , a = [0 0 0], n=3
m. f (x, y, z) = sen x sen y cos z, a = [0 0 0], n=5
m. f (x, y, z) = sen x sen y sen z, a = [1 1 1], n=2

3.6. Ms sobre clculo y lgebra lineal


En esta seccin veremos como utilizar Matlab simblico para desarrollar y describir simblicamente
algunos conceptos del clculo y de lgebra lineal.

3.6.1. Ms sobre clculo


Empecemos analizando la funcin
x2
f (x) = .
x2 + x 12
Graficamos la funcin en [25, 25], ejecutando los comandos

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 188

x2/(x + x2 12)

2.5

1.5

y 0.5

0.5

25 20 15 10 5 0 5 10 15 20 25
x

Figura 3.1: Grfica de x2 /(x2 + x 12)

>> clear
>> syms x
>> f = x ^2/( x ^2 + x - 12)

f =

x ^2/( x ^2 + x - 12)

>> ezplot (f ,[ -25 25])


>> xlabel ( 'x ')
>> ylabel ( 'y ')

y se obtiene la grfica de la figura 3.1.


Para Interceptos con eje x
Resolvemos f = 0, ejecutando

>> solve ( f )

ans =

0
0

Estos son los valores de x que hacen cero a f . Es decir, (0, 0) es el punto de interseccin con el eje
x.
Para Interceptos con eje y

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 189

Hacemos x = 0 y se tiene que el intercepto con el eje y es f = 0. Es decir, (0, 0) es el punto de


interseccin con el eje y.
Asntotas verticales
Encontramos los valores de x que hacen cero el denominador, ejecutando los comandos

>> solve ( x ^2 + x -12)

ans =

3
-4

Luego las rectas x = 4 y x = 3 son las asntotas verticales.


Asntotas horizontales
Encontramos
x2
lm ,
x (x2 + x 12)

ejecutando

>> limit (f ,x , inf )

ans =

Luego, la asntota horizontal es f = 1.

Intervalos de crecimiento/decrecimiento de f

Encontramos los nmeros crticos, ejecutando

>> df = diff ( f )

df =

(2* x ) /( x ^2 + x - 12) - ( x ^2*(2* x + 1) ) /( x ^2 + x - 12) ^2

>> solve ( df )

ans =

0
24

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 190

Luego, los nmeros crticos son: 0 y 24.

Ahora investigamos el signo de f 0 en los intervalos

(, 0), (0, 24), (24, +).

Evaluamos en un punto dentro de cada intervalo, ejecutado los comandos

>> subs ( df ,x , -1)

ans =

25/144

>> subs ( df ,x ,1)

ans =

-23/100

>> subs ( df ,x ,25)

ans =

25/407044

Observamos que dentro del intervalo (, 0), f 0 > 0. Luego, f es creciente.


Dentro del intervalo (0, 24), f 0 < 0. Luego, f es decreciente.
Dentro del intervalo (24, +), f 0 > 0. Luego, f es creciente.

Mximos, mnimos locales y concavidad

Ahora calculamos la segunda derivada para aplicar dicho criterio:


Ejecutamos

>> d2f = diff (f ,2)

d2f =

2/( x ^2 + x - 12) - (2* x ^2) /( x ^2 + x - 12) ^2 -

(4* x *(2* x + 1) ) /( x ^2 + x - 12) ^2 +

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 191

(2* x ^2*(2* x + 1) ^2) /( x ^2 + x - 12) ^3

>> simplify ( d2f )

ans =

(2*( - x ^3 + 36* x ^2 + 144) ) /( x ^2 + x - 12) ^3

>> subs ( d2f ,x ,0)

ans =

-1/6

>> subs ( d2f ,x ,24)

ans =

1/14406

Como f 00 < 0 en el nmero crtico x = 0, se tiene un Mximo local de f en x = 0.


Como f 00 > 0 en el nmero crtico x = 24, se tiene un Mnimo local de f en x = 24.

Para determinar concavidad, ejecutamos

>> solve ( d2f )

ans =

2304^(1/3) + 2304^(2/3) /16 + 12

(3^(1/2) *(2304^(1/3) - 2304^(2/3) /16) * i ) /2 -


2304^(1/3) /2 - 2304^(2/3) /32 + 12

12 - 2304^(1/3) /2 - 2304^(2/3) /32 -


(3^(1/2) *(2304^(1/3) - 2304^(2/3) /16) * i ) /2

>> double ( ans ) % Para convertirlas en numerica

ans =

36.1104 + 0.0000 i
-0.0552 + 1.9962 i
-0.0552 - 1.9962 i

Observemos que el nico posible punto de inflexin (f 00 = 0) es p = 36.1104, porque es la nica

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 192

raz real.
Para que p sea un punto de inflexin, f 00 debe cambiar de signo antes y despus de p. Entonces
evalo a f 00 antes y despus con los comandos

>> subs ( d2f ,x ,36)

ans =

1/7986000

>> subs ( d2f ,x ,36.2)

ans =

-1845125/18573016335948

Al evaluar se obtiene que f 00 > 0 (cncava hacia arriba) antes de p y f 00 < 0 (cncava hacia abajo)
despus de p. Por tanto, p es un punto de inflexin.

Ejemplo
Estudiemos la funcin
f (x) = x 16 x2 .

Dominio, continuidad y asntotas

Para determinar el dominio, encuentro los valores que hacen cero el radicando.

Ejecutemos los comandos

>> clear
>> syms x
>> f = x * sqrt (16 - x ^2)

f =

x *(16 - x ^2) ^(1/2)

>> s = 16 - x ^2

s =

16 - x ^2

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 193

>> solve ( s )

ans =

4
-4

Estos valores generan tres intervalos:


(, 4), [4, 4], (4, +).
Para conocer el signo del radicando, se evala en un punto dentro de cada intervalo, ejecutando

>> subs (s ,x , -5)

ans =

-9

>> subs (s ,x ,0)

ans =

16

>> subs (s ,x ,5)

ans =

-9

Observamos que el radicando es 0 en el intervalo [4, 4] y negativo en los dems. As que el


dominio de la funcin es D = [4, 4].
La funcin f es continua en D y no tiene asntotas.

Interseccin con el eje x: f = 0


Ejecutamos los comandos

>> solve ( f )

ans =

0
4
-4

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 194

Luego, los puntos de interseccin con el eje x son: (0, 0), (4, 0), (4, 0).

Interseccin con el eje y: x = 0


Ejecutamos los comandos

>> subs (f ,x ,0)

ans =

Luego, el punto de interseccin con el eje y es: (0, 0).


Para obtener la primera y segunda derivada, ejecutamos

>> diff ( f )

ans =

(16 - x ^2) ^(1/2) - x ^2/(16 - x ^2) ^(1/2)

>> df = simplify ( ans )

df =

-(2* x ^2 - 16) /(16 - x ^2) ^(1/2)

>> diff (f ,2)

ans =

- x ^3/(16 - x ^2) ^(3/2) - (3* x ) /(16 - x ^2) ^(1/2)

>> d2f = simplify ( ans )

d2f =

(2* x *( x ^2 - 24) ) /(16 - x ^2) ^(3/2)

Intervalos de crecimiento y decrecimiento


Encontremos los nmeros crticos, ejecutando los comandos

>> solve ( df )

ans =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 195

8^(1/2)
-8^(1/2)

Ahora determinemos el signo de f 0 en los intervalos:



[4, 8), ( 8, 8), ( 8, 4].

Esto lo hacemos evaluando f 0 en un punto dentro de cada intervalo. Ejecutemos

>> subs ( df ,x , -3)

ans =

-(2*7^(1/2) ) /7

>> subs ( df ,x ,2)

ans =

(2*12^(1/2) ) /3

>> subs ( df ,x ,3)

ans =

-(2*7^(1/2) ) /7

En el intervalo [4, 8), f 0 < 0, por tanto, f es decreciente en dicho intervalo.

En el intervalo ( 8, 8), f 0 > 0, por tanto, f es creciente..

En el intervalo ( 8, 4], f 0 < 0, por tanto, f es decreciente en dicho intervalo.

Observe que con esta informacin podemos determinar mximos y mnimos locales. Sin embargo,
lo haremos con la segunda derivada.
Mximos, mnimos locales y concavidad

Ejecutemos los comandos

>> subs ( d2f ,x , - sqrt (8) )

ans =

2^(1/2) *8^(1/2)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 196

>> subs ( d2f ,x , sqrt (8) )

ans =

-2^(1/2) *8^(1/2)

Como f 00 > 0 en x = 8, hay un mnimo local en este nmero crtico.

Como f 00 < 0 en x = 8, hay un mximo local en este nmero crtico.
Para analizar la concavidad, ejecutemos

>> solve ( d2f )

ans =

0
24^(1/2)
-24^(1/2)

De estos puntos, el nico que est en el dominio D es el 0. Evaluemos a f 00 antes y despus de 0,


digamos en -2 y 2.
Ejecutemos

>> subs ( d2f ,x , -2)

ans =

(5*12^(1/2) ) /9

>> subs ( d2f ,x ,2)

ans =

-(5*12^(1/2) ) /9

Observamos que:
f 00 > 0 antes del 0. Por tanto, f es cncava hacia arriba.
f 00 < 0 despus del 0. Por tanto, cncava hacia abajo.
Esto quiere decir que el 0 es un punto de inflexin, puesto que f 00 cambia de concavidad en 0.

Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 197

Estudiemos la funcin
f (x) = x x2 9.

Dominio, continuidad y asntotas

Para determinar el dominio, encuentro los valores que hacen cero el radicando.

Ejecutemos los comandos

>> clear
>> syms x
>> f = x * sqrt ( x ^2 - 9)

f =

x *( x ^2 - 9) ^(1/2)

>> s = x ^2 - 9

s =

x ^2 - 9

>> solve ( s )

ans =

3
-3

Estos valores generan tres intervalos:

(, 3], (3, 3), [3, +).

Para conocer el signo del radicando, se evala en un punto dentro de cada intervalo, ejecutando

>> subs (s , -4)

ans =

>> subs (s ,0)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 198

ans =

-9

>> subs (s ,4)

ans =

Observamos que el radicando es positivo en los intervalos (, 3]) y [3, +) y negativo en


(3, 3). As que el dominio de la funcin es

D = (, 3] [3, +).

La funcin f es continua en D y no tiene asntotas.

Interseccin con el eje x: f = 0


Ejecutamos los comandos

>> solve ( f )

ans =

0
3
-3

Luego, los puntos de interseccin con el eje x son: (0, 0), (3, 0), (3, 0).

Interseccin con el eje y: x = 0


Ejecutamos los comandos

>> subs (f ,x ,0)

ans =

Luego, el punto de interseccin con el eje y es: (0, 0).


Para obtener la primera y segunda derivada, ejecutamos

>> df = diff ( f )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 199

df =

( x ^2 - 9) ^(1/2) + x ^2/( x ^2 - 9) ^(1/2)

>> d2f = diff (f ,2)

d2f =

(3* x ) /( x ^2 - 9) ^(1/2) - x ^3/( x ^2 - 9) ^(3/2)

Intervalos de crecimiento y decrecimiento


Encontremos los nmeros crticos, ejecutando los comandos

>> solve ( df )

ans =

(3*2^(1/2) ) /2
-(3*2^(1/2) ) /2

Note que los nmeros crticos no pertenecen al dominio D, lo que indica que la funcin no tiene
mximos ni mnimos locales.

Ahora determinemos el signo de f 0 en los intervalos donde la funcin est definida:



(, 3 2/2), (3 2/2, ).


Observe que la funcin no est definida en (3 2/2, 3 2/2).
Esto lo hacemos evaluando f 0 en un punto dentro de cada intervalo. Ejecutemos

>> subs ( df ,x , -4)

ans =

(23*7^(1/2) ) /7

>> subs ( df ,x ,4)

ans =

(23*7^(1/2) ) /7

En el intervalo (, 3 2/2), f 0 > 0, por tanto, f es creciente en dicho intervalo.

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 200


En el intervalo (3 2/2, +), f 0 > 0, por tanto, f es creciente en dicho intervalo.

Mximos, mnimos locales y concavidad

Ejecutemos los comandos

>> simplify ( d2f )

ans =

( x *(2* x ^2 - 27) ) /( x ^2 - 9) ^(3/2)

>> subs ( d2f ,x , -3* sqrt (2) /2)

ans =

4* i

>> subs ( d2f ,x ,3* sqrt (2) /2)

ans =

-4* i

El hecho de que f 00 no produzca valores reales en los nmeros crticos, nos dice que la funcin no
tiene mximo ni mnimo locales, como haba comentado antes.
Para analizar la concavidad, ejecutemos

>> solve ( d2f )

ans =

0
(3*6^(1/2) ) /2
-(3*6^(1/2) ) /2

El 0 no est dentro del dominio D, por lo que no se considera. Analicemos el signo de f 00 antes y
despus de los dems puntos.

Ejecutemos

>> subs ( d2f ,x , -4)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 201

ans =

-(20*7^(1/2) ) /49

>> subs ( d2f ,x , -3.5)

ans =

(70*13^(1/2) ) /169

>> subs ( d2f ,x ,3.5)

ans =

-(70*13^(1/2) ) /169

>> subs ( d2f ,x ,4)

ans =

(20*7^(1/2) ) /49

Observamos que:

f 00 < 0 antes de 3 6/2. Por tanto, cncava hacia abajo.

f 00 > 0 despus de 3 6/2. Por tanto, cncava hacia arriba.

f 00 < 0 antes de 3 6/2. Por tanto, cncava hacia abajo.

f 00 > 0 despus de 3 6/2. Por tanto, cncava hacia arriba.

Esto quiere decir que los puntos: 3 6/2 y 3 6/2 son de inflexin, puesto que f 00 cambia de
concavidad en ellos.

3.6.2. Ms sobre lgebra lineal


Con Matlab podemos trabajar para resolver problemas del lgebra lineal simblicamente. Las
operaciones realizadas en el lgebra numrica se pueden ejecutar tambin en el lgebra simblica.
Por ejemplo, consideremos la matriz:

>> clear
>> syms a b c d
>> A = sym ( '[ a b ; c d ] ')

A =

[ a, b]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 202

[ c, d]

Si se desea calcular el determinante, ejecutamos

>> det ( A )

ans =

a*d - b*c

Independencia/dependencia de vectores

Determinemos si el conjunto de vectores {(1, 2, 3), (5, 3, 1), (2, 1, 4)} es LI o LD.
Ejecutemos los comandos

>> syms a b x y z
>> v1 = sym ( ' [1; -2;3] ')

v1 =

1
-2
3

>> v2 = sym ( ' [5;3; -1] ')

v2 =

5
3
-1

>> v3 = sym ( ' [ -2;1;4] ')

v3 =

-2
1
4

>> A1 = [ v1 v2 v3 ]

A1 =

[ 1, 5 , -2]
[ -2 , 3 , 1]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 203

[ 3 , -1 , 4]

>> det ( A1 )

ans =

82

Como el determinante es distinto de cero, el conjunto es LI.

Determinemos si el conjunto de vectores {(5 3, 2, 3), (2, 3, 7, 1), (7, 5, 4, 2)} es LI o LD.
Ejecutemos los comandos

>> v2 = sym ( ' [2; -3;7;1] ')

v2 =

2
-3
7
1

>> v1 = sym ( ' [5;3;2;3] ')

v1 =

5
3
2
3

>> v3 = sym ( ' [7; -5;4;2] ')

v3 =

7
-5
4
2

>> A2 =[ v1 v2 v3 ]

A2 =

[ 5 , 2 , 7]
[ 3 , -3 , -5]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 204

[ 2, 7, 4]
[ 3, 1, 2]

>> rank ( A2 )

ans =

Como el rango es igual al nmero de vectores, el conjunto es LI.

Para calcular la inversa de A, ejecutamos

>> inv ( A )

ans =

[ d /( a * d - b * c ) , -b /( a * d - b * c ) ]
[ -c /( a * d - b * c ) , a /( a * d - b * c ) ]

Veamos paso a paso como obtener el polinomio caracterstico de una matriz A. Recordemos que el
polinomio caracterstico se define como
det(A - I)

Ejecutemos los comandos

>> clear
>> syms a b c t
>> A = sym ( '[2 , 2 , 3;1 , 2 , 1;2 , -2 , 1] ')

A =

[ 2 , 2 , 3]
[ 1 , 2 , 1]
[ 2 , -2 , 1]

>> D = A - t * eye (3)

D =

[ 2 - t, 2, 3]
[ 1, 2 - t, 1]
[ 2, -2 , 1 - t ]

>> d = det ( D )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 205

d =

- t ^3 + 5* t ^2 - 2* t - 8

Si queremos obtener el polinomio caracterstico de A de forma directa, utilizamos la funcin


charpoly, cuyo formato
charpoly(A,v),
donde A es la matriz y v es la variable utilizada para visualizar el polinomio. Ejecutemos

>> charpoly ( A )

ans =

[ 1 , -5 , 2 , 8]

>> charpoly (A , t )

ans =

t ^3 - 5* t ^2 + 2* t + 8

Observe el cambio de signo en la respuesta. Se debe al orden en la definicin del polinomio


caracterstico.

Consideremos la matriz de Hilbert de orden 3, ejecutando los comandos

>> B = sym ( hilb (3) )

B =

[ 1 , 1/2 , 1/3]
[ 1/2 , 1/3 , 1/4]
[ 1/3 , 1/4 , 1/5]

Calculemos la inversa de B, ejecutando los comandos

>> inv ( B )

ans =

[ 9 , -36 , 30]
[ -36 , 192 , -180]
[ 30 , -180 , 180]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 206

Para calcular el polinomio caracterstico, ejecutamos los comandos

>> charpoly (B , t )

ans =

t ^3 - (23* t ^2) /15 + (127* t ) /720 - 1/2160

Consideremos la matriz

>> clear
>> syms a b c d
>> A = sym ( '[d , 2 , 1; -1 , d , -2; 1 , 2 , d ] ')

A =

[ d , 2 , 1]
[ -1 , d , -2]
[ 1, 2, d]

Si queremos encontrar los valores de d que hacen singular a A, ejecutamos los comandos

>> det ( A )

ans =

d ^3 + 5* d - 6

>> solve ( ans )

ans =

1
(23^(1/2) * i ) /2 - 1/2
- (23^(1/2) * i ) /2 - 1/2

Para calcular el rango y escalonar la matriz A, ejecutamos

>> rank ( A )

ans =

>> rref ( A )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 207

ans =

[ 1 , 0 , 0]
[ 0 , 1 , 0]
[ 0 , 0 , 1]

Consideremos la matriz

>> clear
>> syms x y z a b c d
>> A = sym ( '[d , 3 , 3;3 , d , 3;3 , 3 , d ] ')

A =

[ d , 3 , 3]
[ 3 , d , 3]
[ 3, 3, d]

Calcular los valores de d que hacen no singular a A. Ejecutamos

>> det ( A )

ans =

d ^3 - 27* d + 54

>> solve ( ans )

ans =

3
3
-6

Los valores d 6= 3 y d 6= 6 hacen no singular a A.


Para sustituir a d por 2 en A, ejecutamos

>> B = subs (A ,d ,2)

B =

[ 2 , 3 , 3]
[ 3 , 2 , 3]
[ 3 , 3 , 2]

Si deseamos calcular los valores propios de B, ejecutamos

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 208

>> P = charpoly (B , x )

P =

x ^3 - 6* x ^2 - 15* x - 8

>> solve ( P )

ans =

-1
-1
8
Otra forma de obtener el mismo resultado es

>> eig ( B )

ans =

-1
-1
8
Para hallar los valores y vectores propios de una matriz paso a paso, ejecutemos los comandos

>> clear
>> syms a b c t
>> A = sym ( '[2 , 2 , 3;1 , 2 , 1;2 , -2 , 1] ')

A =

[ 2 , 2 , 3]
[ 1 , 2 , 1]
[ 2 , -2 , 1]

>> D = A - t * eye (3)

D =

[ 2 - t, 2, 3]
[ 1, 2 - t, 1]
[ 2, -2 , 1 - t ]

>> d = det ( D )

d =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 209

- t ^3 + 5* t ^2 - 2* t - 8

>> r = solve ( d )

r =

2
4
-1

Las componenetes del vector r representan los valores propios de la matriz. Ahora, encontremos
un vector propio para cada uno de estos valores.

>> d1 = subs (D ,t , r (1) )

d1 =

[ 0 , 2 , 3]
[ 1 , 0 , 1]
[ 2 , -2 , -1]

>> s1 = rref ( d1 )

s1 =

[ 1, 0, 1]
[ 0 , 1 , 3/2]
[ 0, 0, 0]

Esta matriz representa el sistema

x + z = 0 x = z
y + 3/2z = 0 y = 3/2z

La variable z es libre. Luego, el vector tiene la forma

(z, 3/2z, z).

Haciendo z = 1, tenemos el vector propio

v1 = (1, 3/2, 1).

>> d2 = subs (D ,t , r (2) )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 210

d2 =

[ -2 , 2 , 3]
[ 1 , -2 , 1]
[ 2 , -2 , -3]

>> s2 = rref ( d2 )

s2 =

[ 1, 0, -4]
[ 0 , 1 , -5/2]
[ 0, 0, 0]

Esta matriz representa el sistema

x 4z = 0 x = 4z
y 5/2z = 0 y = 5/2z

La variable z es libre. Luego, el vector tiene la forma

(4z, 5/2z, z).

Haciendo z = 1, tenemos el vector propio

v2 = (4, 5/2, 1).

>> d3 = subs (D ,t , r (3) )

d3 =

[ 3 , 2 , 3]
[ 1 , 3 , 1]
[ 2 , -2 , 2]

>> s3 = rref ( d3 )

s3 =

[ 1 , 0 , 1]
[ 0 , 1 , 0]
[ 0 , 0 , 0]

Esta matriz representa el sistema

x + z = 0 x = z
y = 0 y=0

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 211

La variable z es libre. Luego, el vector tiene la forma

(z, 0, z).

Haciendo z = 1, tenemos el vector propio

v3 = (1, 0, 1).

Si consideramos la matriz formada por los vectores columnas que se obtienen de v1, v2 y v3, y la
matriz diagonal formmada por r, tenemos

>> v1 = sym ( '[ -1 , -3/2 , 1] ')

v1 =

[ -1 , -3/2 , 1]

>> v2 = sym ( '[4 , 5/2 , 1] ')

v2 =

[ 4 , 5/2 , 1]

>> v3 = sym ( '[ -1 , 0 , 1] ')

v3 =

[ -1 , 0 , 1]

>> V = [ v1 ' v2 ' v3 ']

V =

[ -1 , 4 , -1]
[ -3/2 , 5/2 , 0]
[ 1, 1 , 1]

>> Di = diag ( r )

Di =

[ 2 , 0 , 0]
[ 0 , 4 , 0]
[ 0 , 0 , -1]

Estas matrices satisfacen la condicin: inv(V) * A * V = Di. Comprubelo!!!. Todo el proceso


que acabamos de desarrollar cae dentro del concepto de diagonalizacin de una matriz, el cual se

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 212

puede llevar a cabo de forma directa con un comando en Matlab.

Diagonalizacin

Si deseamos obtener los vectores y valores propios de la matriz B, ejecutamos

>> B = sym ( ' [2 3 3;3 2 3;3 3 2] ')

B =

[ 2 , 3 , 3]
[ 3 , 2 , 3]
[ 3 , 3 , 2]

>> [ V D ]= eig ( B )

V =

[ 1 , -1 , -1]
[ 1 , 1 , 0]
[ 1 , 0 , 1]

D =

[ 8 , 0 , 0]
[ 0 , -1 , 0]
[ 0 , 0 , -1]

Observemos que D = inv(V)* B * V.

>> inv ( V ) * B * V

ans =

[ 8 , 0 , 0]
[ 0 , -1 , 0]
[ 0 , 0 , -1]

Ejecutemos los comandos

>> C = sym ( '[1 , 2 , 0;3 , 2 , -2; -3 , -1 , 3] ')

C =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 213

[ 1 , 2 , 0]
[ 3 , 2 , -2]
[ -3 , -1 , 3]

>> [ V D ]= eig ( C )

V =

[ 2/3 , 33^(1/2) /6 + 1/2 , 1/2 - 33^(1/2) /6]


[ 0, -1 , -1]
[ 1, 1, 1]

D =

[ 1, 0, 0]
[ 0 , 5/2 - 33^(1/2) /2 , 0]
[ 0, 0 , 33^(1/2) /2 + 5/2]

Se verifica que D = inv(V)* C * V.

>> simplify ( inv ( V ) * C * V )

ans =

[ 1, 0, 0]
[ 0 , 5/2 - 33^(1/2) /2 , 0]
[ 0, 0 , 33^(1/2) /2 + 5/2]

Consideremos el sistema
dx + y + z = d
x + dy + z = d2
x + y + dz = d3

Encontrar los valores de d hacen compatible o incompatible el sistema.


Consideremos la matrices

d 1 1 d
A = 1 d 1 , b = d2 , Ab = [A b]

1 1 d d3

Calculamos el determinante de A y sus races, ejecutando

>> clear
>> syms x y z a b c d
>> A = sym ( '[ d 1 1;1 d 1;1 1 d ] ')

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 214

A =

[ d , 1 , 1]
[ 1 , d , 1]
[ 1, 1, d]

>> de = det ( A )

de =

d ^3 - 3* d + 2

>> solve ( de )

ans =

1
1
-2

Ahora sustituimos a d por cada uno de estos valores y comprobamos si el sistema es compatible o
incompatible.
Si d = 1, ejecutamos los comandos

>> clear
>> syms d x y z
>> A = sym ( '[ d 1 1;1 d 1;1 1 d ] ')

A =

[ d , 1 , 1]
[ 1 , d , 1]
[ 1, 1, d]

>> b = sym ( '[ d ; d ^2 ; d ^3] ')

b =

d
d ^2
d ^3

>> A1 = subs (A ,d ,1)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 215

A1 =

[ 1 , 1 , 1]
[ 1 , 1 , 1]
[ 1 , 1 , 1]

>> b1 = subs (b ,d ,1)

b1 =

1
1
1

>> Ab1 = [ A1 b1 ]

Ab1 =

[ 1 , 1 , 1 , 1]
[ 1 , 1 , 1 , 1]
[ 1 , 1 , 1 , 1]

>> rank ( A1 )

ans =

>> rank ( Ab1 )

ans =

Como los rangos de la matriz de coeficientes y ampliada son iguales 1, el sistema es compatible
con infinitas soluciones porque el rango es menor que el nmero de incognitas. La solucin viene
dada por
x = 1 r s, r, s R.

Ahora tomemos d = 2 y ejecutemos

>> A2 = subs (A ,d , -2)

A2 =

[ -2 , 1, 1]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 216

[ 1 , -2 , 1]
[ 1 , 1 , -2]

>> b2 = subs (b ,d , -2)

b2 =

-2
4
-8

>> rank ( A2 )

ans =

>> Ab2 = [ A2 b2 ]

Ab2 =

[ -2 , 1 , 1 , -2]
[ 1 , -2 , 1 , 4]
[ 1 , 1 , -2 , -8]

>> rank ( Ab2 )

ans =

Como los rangos de las matrices de coeficientes y ampliada son diferentes, el sistema es incompatible.
Luego, podemos concluir que el sistema es compatible para todo d 6= 2. Observe que para d = 0,
el sistema es homogneo con la solucin trivial (0,0,0) como nica solucin.

Si d 6= 1 y d 6= 2, la solucin del sistema, se obtiene ejecutando,

>> x = A \ b

x =

-( d ^2 + d ) /( d + 2)
d /( d + 2)
(( d ^2 + d ) *( d + 1) ) /( d + 2)

Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 217

Encuentre los valores de a y b para que el sistema siguiente sea compatible

3x 7y = a
x + y = b
5x 13y = 5a 2b
x + 2y = a + b 1

Consideremos la matriz ampliada



3 7 a
1 + 1 b

5 13 5a 2b
1 + 2 a+b1

Ahora dividimos la matriz en dos submatrices y resolvemos el sistema que resulta de igualar a cero
sus sus determinantes.

3 7 a 3 7 a
A1 = 1 + 1 b , A2 = 1 + 1 b
5 13 5a 2b 1 + 2 a+b1

Resolvemos el sistema |A1| = 0, |A2| = 0. Ejecutamos

>> clear
>> syms a b x y z
>> A1 = sym ( '[3 , -7 , a ;1 , 1 , b ;5 , -13 , 5* a - 2* b ] ')

A1 =

[ 3 , -7 , a]
[ 1, 1, b]
[ 5 , -13 , 5* a - 2* b ]

>> A2 = sym ( '[3 , -7 , a ;1 , 1 , b ;1 , 2 , a + b - 1] ')

A2 =

[ 3 , -7 , a]
[ 1, 1, b]
[ 1 , 2 , a + b - 1]

>> d1 = det ( A1 )

d1 =

32* a - 16* b

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 218

>> d2 = det ( A2 )

d2 =

11* a - 3* b - 10

>> [ a b ] = solve ( d1 , d2 )

a =

b =

Luego, los valores de a = 2 y b = 4 hacen compatible el sistema.

Apliquemos el comando jordan a una matriz, ejecutando

>> B = sym ( '[1 , -2 , -1;8 , -9 , -4; -12 , 12 , 5] ')

B =

[ 1 , -2 , -1]
[ 8 , -9 , -4]
[ -12 , 12 , 5]

>> [ V J ] = jordan ( B )

V =

[ 2 , 1 , 1/2]
[ 8, 0, 0]
[ -12 , 0 , 1]

J =

[ -1 , 1 , 0]
[ 0 , -1 , 0]
[ 0 , 0 , -1]

Observe que V\B*V = J.

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 219

Factorizacin o descomposicin

En Matlab hay varias formas de factorizar una matriz. El comando qr produce la factorizacin de
una matriz y su formato es
[Q R] = qr(A),
donde A es una matriz de orden m n, cuyas columnas forman un conjunto de vectores linealmente
independiente. Q es una matriz de orden m m, cuyas columnas forman una base ortonormal de
las columnas de A, obtenida a travs del proceso de Gram-Schmidt y R es una matriz triangular
superior de orden m n. De modo que
A = Q * R
Ejemplo

Ejecutemos los comandos

>> clear
>> A = sym ( '[1 , 0 , -1;2 , -3 , 3; -1 , 2 , 4] ')

A =

[ 1 , 0 , -1]
[ 2 , -3 , 3]
[ -1 , 2 , 4]

>> [ Q R ]= qr ( A )

Q =

[ 6^(1/2) /6 , (4*3^(1/2) *7^(1/2) ) /21 , -14^(1/2) /14]


[ 6^(1/2) /3 , -(3^(1/2) *7^(1/2) ) /21 , 14^(1/2) /7]
[ -6^(1/2) /6 , (2*3^(1/2) *7^(1/2) ) /21 , (3*14^(1/2) ) /14]

R =

[ 6^(1/2) , -(4*6^(1/2) ) /3 , 6^(1/2) /6]


[ 0 , (3^(1/2) *7^(1/2) ) /3 , (3^(1/2) *7^(1/2) ) /21]
[ 0, 0, (19*14^(1/2) ) /14]

Otra forma de factorizar o descomponer una matriz es con el comando lu, cuyo formato es
[L U] = lu(A),
donde A es una matriz de orden m m; L es una matriz triangular inferior y U es una matriz
triangular superior.
Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 220

Ejecutemos los comandos

>> A = sym ( '[8 , -1 , 2;3 , 7 , 2;1 , 1 , 5] ')

A =

[ 8 , -1 , 2]
[ 3 , 7 , 2]
[ 1 , 1 , 5]

>> [ L U ] = lu ( A )

L =

[ 1, 0 , 0]
[ 3/8 , 1 , 0]
[ 1/8 , 9/59 , 1]

U =

[ 8, -1 , 2]
[ 0 , 59/8 , 5/4]
[ 0, 0 , 269/59]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 221

Ejercicios 3.5
1. Encuentre asntotas; intervalos donde crece o decrece; valores mximos y mnimos locales;
intervalos de concavidad y puntos de inflexin.
x x2 x
a. f (x) = 2
b. f (x) = c. f (x) =
x 1 x2 1 x2 +1

x3
d. f (x) = x2 6x + 8 e. f (x) = f. f (x) = 3x x3
(x 1)2

x4 = 1 x2 3x + 2
g. f (x) = x4 2x2 8 h. f (x) = i. f (x) =
x2 x2 = 1


j. f (x) = x + x k. f (x) = e1/x l. f (x) = (x 1)ex

ln x ex
m. f (x) = n. f (x) = x2 1 x o. f (x) =
x ex + 1

2. Encuentre los intervalos donde crece o decrece; valores mximos y mnimos locales de f ;
intervalos de concavidad y puntos de inflexin.
a. f (x) = 2x3 + 3x2 36x b. f (x) = 4x3 + 3x2 6x + 1 c. f (x) = x4 2x2 + 3

x2
d. f (x) = 2 e. f (x) = sen x + cos x f. f (x) = e2x + ex
x +3


g. f (x) = x2 ln x h. f (x) = x4 (x 1)3 i. f (x) = x 8 x2

x2 3
j. f (x) = , x 6= 2 k. f (x) = x1/3 (x + 8) l. f (x) = x2/3 (x2 4)
x2

x3 (x + 3)2
m. f (x) = n. f (x) =
3x2 + 1 x2 + 3

3. Considere la matriz simblica


2a 2 1
A = 2 8a 2
1 2 2a

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 222

a. Enncuentre det(A).
b. Enncuentre inv(A).
c. Enncuentre el polinomio caracterstico de A paso a paso y luego en forma directa.
d. Para qu valores de a, la matriz A es no singular?
e. Tome un valor de a para el cual encontrar valores y vectores propios.
4. Encuentre el valor de a para que el conjunto de vectores {(a, 1 a, 0), (0, a, 1 a), (1
a, 0, a)} sea LI.
5. Considere la matriz simlica
1 0 3 1
1 0 5 2
B=
1

1 1 1
1 1 3 2
a. Determine el rango de B.
b. Escalone la matriz B.
c. Encuentre los valores y vectores propios de B paso a paso y luego en forma directa.
d. Encuentre la inversa de B.
6. Determine si el conjunto de vectores {(1, 1, 6, 1), (1, 0, 7, 2), (1, 1, 2, 1), (0, 1, 2, 1)} es
LI o LD.
7. Determine si el conjunto de vectores {(2, 3, 1, 1), (5, 2, 1, 3), (1, 4, 1, 1)} es LI o LD.
8. Resuelva simblicamente los sistemas
4x y 4z + 3t = 0 x 2y 3z + 2t = 0
3x + y + 8z 6t = 2 3x + y + 2t = 1
,
2x + 4y + 15z 13t = 4 3x + y z + 3t = 4
3x + 3y z t = 2 4x 4y + 4z 3t = 2
9. Diagonalice simblicamente las matrices paso a paso y luego en forma directa.

133 56 201 125
1 16 11 38 20 48 28
A = 6
29 18 , B =
476 212 692 425
8 36 22
606 272 876 537
10. Encuentre los valores de a y b para los cuales es diagonalizable la matriz

ab2 a + 3b + 5 a + 2b + 3
A= ab5 a + 3b + 12 a + 2b + 7
a + b + 7 a 3b 17 a 2b 10

11. Encuentre la forma connica de Jordan


30 20 27 14 2 0 0 0
57 37 53 28 8 4 7 4
A= , B=
63 40 60 32 7 6 12 7
106 68 100 53 7 6 12 7

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 223

12. Factorice o descomponga simblicamnete las matrices con qr



1 6 2 1 3 0 2 1 1
2 1 1 3 2 1 3 , C = 1 1 0 3 2

A= 1 2 2 , B =
1 2 0 5 5 0 1 2 0
0 1 2
2 0 2 1 3 1 0 1 2
13. Factorice o descomponga simblicamnete las matrices con lu

1 6 2 1
2 1 1 3 2 1 3
A= 1 2 2 , B = 1
,
2 0 5
0 1 2
2 0 2 1

3.7. Integrales
Matlab puede integrar expresiones simblicamente, tal como se suele hacer en el clculo elemental.
La funcin en Matlab que realiza esta tarea puede escribirse en una de las siguientes formas:
int(E)
int(E, v)
int(E, a, b)
int(E, v, a, b)
donde E es la expresin que se desea integrar.
La primera forma devuelve la integral indefinida de la expresin.
La segunda devuelve la integral indefinida con respecto a la variable v. La tercera devuelve como
resultado a la integral definida de la expresin E entre los lmites a y b. La cuarta devuelve la
integral definida con respecto a la variable v, entre los lmites a y b.

Veamos algunos ejemplos:

>> clear
>> syms x y z t
>> f = exp (2* x )

f =

exp (2* x )

>> int ( f )

ans =

exp (2* x ) /2

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 224

Ejemplo

>> f = exp (2* x * y )

f =

exp (2* x * y )

>> int (f , x )

ans =

exp (2* x * y ) /(2* y )

Ejemplo

>> syms x y z
>> f = 1/( x ^2 + 1)

f =

1/( x ^2 + 1)

>> int ( f )

ans =

atan ( x )

>> int (f ,0 ,1)

ans =

pi /4

Ejemplo

>> syms x y z
>> f = 1/( x ^2 + y )

f =

1/( x ^2 + y )

>> int (f , y )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 225

ans =

log ( x ^2 + y )

>> int (f ,y ,0 ,1)

ans =

piecewise ([ x ^2 in Dom :: Interval ([ -1] , [0]) , int (1/( x ^2 + y ) , y , 0 , 1) ] ,

[ not x ^2 in Dom :: Interval ([ -1] , [0]) , log ( x ^2 + 1) - log ( x ^2) ])


Ejemplo

>> f = exp ( x + y + z )

f =

exp ( x + y + z )

>> int (f , x )

ans =

exp ( x ) * exp ( y ) * exp ( z )

>> int (f , y )

ans =

exp ( x ) * exp ( y ) * exp ( z )

>> int (f , z )

ans =

exp ( x ) * exp ( y ) * exp ( z )

>> int (f ,z ,0 ,1)

ans =

exp ( x + y ) *( exp (1) - 1)


Ejemplo

>> f = 4 - y ^2

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 226

f =

4 - y ^2

>> int ( int (f ,y ,0 ,2) ,x ,0 ,3)

ans =

16

Ejemplo

>> f = x * sin ( y )

f =

x * sin ( y )

>> int ( int (f ,y ,0 , x ) ,x ,0 , pi )

ans =

pi ^2/2 + 2

Ejemplo

f =

>> int ( int (f ,x ,y , sqrt ( y ) ) ,y ,0 ,1)

ans =

1/6

Ejercicios 3.6
1. Resuelva simblicamente las siguientes integrales:

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 227

Z Z Z
3x2 sen x
a. xe dx b. dx c. x sen x cos xdx
1 + cos x
Z 3 Z 0 Z 2
d. x sen x dx 2
e. (1 + 9 x2 )dx f. (1 |x|)dx
2 3 2

2 2
x2 + x + 1
Z Z Z
g. dx h. sen x cos xdx i. (x 2|x|)dx
1 x 1


1 + cos2 x
Z Z Z
2 4 cos(/x)
j. csc x cot xdx k. dx l. dx

3
0 cos2 x x2

x2
Z Z Z
sen x x
m. dx n. dx o. dx
1 + cos2 x 1x 4
x+2
Z 13 Z 1 Z e4
dx x2 dx
p. p q. xe dx r.
0
3
(1 + 2x)2 0 e x ln x

2. Resuelva simblicamente las integrales dobles siguientes:


Z 2Z 1 Z 1Z 2 Z 2 Z 1
a. (4 x y) dy dx b. (1 6x2 y) dx dy c. (1 6x2 y) dy dx
0 0 1 0 0 1

Z /4 Z 1 Z 1 Z x Z 1 Z 0
d. x cos y dx dy e. (3 x y) dy dx f. (3 x y) dx dy
/4 0 0 0 0 y

Z 1 Z x Z 1 Z 1y2 Z ln 8 Z ln y
sen x
g. dy dx h. 3y dx dy i. ex+y dx dy
0 0 x 0 1y 2 0 0

1 1x2 8 2 2 4x2
xe2y
Z Z Z Z Z Z
dy dx
j. dy dx k.
l. dy dx
0 1x 0 3 x y4 + 1 0 0 4y


Z 1 Z 1 Z 2 Z 8 Z 1 Z 1x2
(x2 +y 2 ) 1 p
m. e dy dx n. p dx dy o. 3 1 x2 y 2 dy dx
0 0 1 y3 x2 + y 2 1 0

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 228

3. Resuelva simblicamente las integrales triples siguientes:


r
(4x2 )
Z 2 Z
2
Z 8x2 y 2 Z 1 Z 1 Z yx
a. r dz dy dx b. dz dy dx
(4x2 )
2 2
x2 +3y 2 0 x 0

Z 1 Z 1x Z 1 Z 1 Z 2 Z 1y
c. dy dz dx d. dz dx dy
0 0 x+z 0 0 0

Z 3 Z
9x2 Z
9x2 Z 2 Z 4y2 Z 2x+y
e. dz dy dx f. dz dx dy
0 0 0 0 4y 2 0


1 1x2 4x2 y 4 1 2
4 cos(x2 )
Z Z Z Z Z Z
g. x dz dy dx h. dx dy dz
0 0 3 0 0 2y 2 z

Z 1 Z 1 Z 1 Z 2 Z 4x2 Z x
zy 2 sen 2x
i. 12xze x dy dx dz j. dy dz dx
0 0 x2 0 0 0 4z

3.8. Representacin Grfica de Expresiones Simblicas


Para representar grficamente una expresin simblica podemos usar la funcin ezplot, cuyo
formato es
ezplot(f,[a b]), donde
f es la expresin simblica a graficar y [a b] es el intervalo en el cual se quiere graficar.
Ejemplos:
Grafiquemos algunas funciones

>> f = sin ( x ) * exp ( -0.4* x )

f =

exp ( -(2* x ) /5) * sin ( x )

>> g1 = ezplot ( f ) ;
>> set ( g1 , ' color ' ,[0 0 0])
>> xlabel ( 'x ')
>> ylabel ( 'y ')
produce la grfica que se muestra en la figura 3.2. Si no se especifica intervalo, el intervalo por
defecto es [2, 2].

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 229

exp((2 x)/5) sin(x)

y
2

6 4 2 0 2 4 6
x

Figura 3.2: Grfica de sen(x)exp(-0.4x)

Ejemplo
Para graficar la funcin e0.3x cos(4x), x [05], ejecutamos los comandos

>> f = exp ( -0.3* x ) * cos (4* x )

f =

cos (4* x ) * exp ( -(3* x ) /10)

>> g2 = ezplot (f ,[0 5* pi ]) ;


>> set ( g2 , ' color ' , 'k ')
>> xlabel ( 'x ')
>> ylabel ( 'y ')

y se obtiene la grfica de la figura 3.3.


Con la funcin ezplot se puede graficar funciones en forma implcita. Es decir, funciones de la
forma f (x, y) = 0. Por Ejemplo, graficar la funcin

f (x, y) = x3 + xy + y 2 36 = 0, x [7, 7], y [10, 10].

>> f = x ^3 + x * y + y ^2 - 36

f =

x ^3 + x * y + y ^2 - 36

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 230

cos(4 x) exp((3 x)/10)


0.5

0.4

0.3

0.2

0.1

0
y
0.1

0.2

0.3

0.4

0.5
0 5 10 15
x

Figura 3.3: Grfica de exp(0.3x)cos(4x)

>> g3 = ezplot (f ,[ -7 7 -10 10]) ;


>> set ( g3 , ' color ' , 'k ')
>> xlabel ( 'x ')
>> ylabel ( 'y ')

y se produce la grfica de la figura 3.5.


Tambin se puede utilizar la funcin ezplot para graficar funciones paramtricamente. Por ejemplo,
grafiquemos la funcin

x = 6 cos t + 5 cos 3t, y = 6 sen t 5 cos 3t, 0 t 2.

Ejecutamos los comandos

>> clear
>> syms t
>> x = 6* cos ( t ) +5* cos (3* t )

x =

5* cos (3* t ) + 6* cos ( t )

>> y = 6* sin ( t ) -5* sin (3* t )

y =

6* sin ( t ) - 5* sin (3* t )

>> g1 = ezplot (x ,y ,[0 2* pi ]) ;

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 231

x y + x3 + y2 36
10

0
y
2

10
6 4 2 0 2 4 6
x

Figura 3.4: Grfica de x3 + xy + y 2 36 = 0

>> set ( g1 , ' color ' , 'k ')


>> xlabel ( 'x ( t ) ')
>> ylabel ( 'y ( t ) ')

y se produce la grfica de la figura ??.


Para graficar expresiones simblicas en tres dimensiones, Matlab cuenta con varias funciones, entre
ellas tenemos la funcin ezmesh, cuyo formato es
ezmesh(f,[xmin, xmax, ymin, ymax]),
donde f es la expresin simblica en trminos de x y y y xmin, xmax, ymin, ymax son los lmites
de x y y. Los lmites por defecto son 2 < x < 2 y 2 < y < 2.
La funcin ezmesh puede tener tambin el formato
ezmesh(x,y,z,[smin, smax, tmin, tmax]),
si la expresin simblica est definida en forma paramtrica, donde
x = x(s,t), y = y(s,t), z = z(s,t).
El intervalo por defecto para ambos parmetros, s y t es 2 < s, t < 2.
La funcin ezmesh tambin acepta como argumento el nmero de cuadrculas que tendr la malla.
En este caso toma el formato
ezmesh(x,y,z,[smin, smax, tmin, tmax],n),
donde n es el nmero de cuadrculas, tanto en el eje x como en el eje y. El valor por defecto de n
es 60.
Si el dominio es el mismo para todas las variables, el vector de los limtes puede ser de dos elementos
([min, max]).
Ejemplo

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 232

x = 5 cos(3 t) + 6 cos(t), y = 6 sin(t) 5 sin(3 t)

10

y(t)
0

10

10 5 0 5 10
x(t)

Figura 3.5: Grfica de x = 6 cos t + 5 cos 3t, y = 6 sen t 5 sen 3t

Graficar la superficie
z = f (x, y) = sen x + 2 sen y.
Si ejecutamos los comandos

>> clear
>> f = ' sin ( x ) + 2* sin ( y ) '

f =

sin ( x ) + 2* sin ( y )

>> ezmesh ( f )
>> view (120 ,30)
>> ezmesh ( f )
>> view (120 ,30)
>> xlabel ( 'x ')
>> ylabel ( 'y ')
>> zlabel ( 'z ')
>> colormap ([0.4 0.4 0.4])

se muestra la grfica de la figura 3.6.


Observe que otra forma de obtener la grfica es ejecutando los comandos

>> clear
>> syms x y
>> f = sin ( x ) + 2* sin ( y )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 233

sin(x) + 2 sin(y)

z 1

2
5

6 0
4
2
0
2 5
4
6 x
y

Figura 3.6: Grfica de z = sen x + 2 sen y

f =

sin ( x ) + 2* sin ( y )

>> ezmesh ( f )
>> view (120 ,30)
>> colormap ([0.4 0.4 0.4])
>> xlabel ( 'x ')
>> ylabel ( 'y ')
>> zlabel ( 'z ')
Ejemplo
Graficar la superficie
z = f (x, y) = ey cos x.
Si ejecutemos los comandos

>> clear
>> syms x y
>> f = exp ( - y ) * cos ( x )

f =

exp ( - y ) * cos ( x )

>> ezmesh ( f )
>> view (120 ,30)
>> xlabel ( 'x ')

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 234

exp(y) cos(x)

500

0
z

5
500
6 0
5
4
3
2
1 5
0
1 x
y

Figura 3.7: Grfica de z = ey cos x

>> ylabel ( 'y ')


>> zlabel ( 'z ')
>> colormap ([0.4 0.4 0.4])

se produce la grfica de la figura 3.7.


Ejemplo

Grafica la superficie

x = x(s, t) = cos s cos t, y = y(s, t) = sen s cos t, z = z(s, t) = sen t, 0 < s < 2, < t < .

Si ejecutamos los comandos

>> clear
>> syms s t
>> x = cos ( s ) * cos ( t )

x =

cos ( s ) * cos ( t )

>> y = sin ( s ) * cos ( t )

y =

cos ( t ) * sin ( s )

>> z = sin ( t )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 235

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

0.5

z(t)
0

0.5
1

1 0.5
1 0
0.5
0 0.5
0.5
1 1 x(t)
y(t)

Figura 3.8: Grfica de x = cos s cos t, y = sen s cos t, z = sen t

z =

sin ( t )

>> ezmesh (x ,y ,z ,[0 , 2* pi , -pi , pi ])


>> view (120 ,30)
>> xlabel ( 'x ( t ) ')
>> ylabel ( 'y ( t ) ')
>> zlabel ( 'z ( t ) ')
>> colormap ([0.4 0.4 0.4])

se obtiene la grfica de la figura 3.8.


Ejemplo
Graficar el plano
z = f (x, y) = (6 3x 2y)/6, x, y [2, 3].
Si ejecutamos los comandos

>> clear
>> syms x y
>> f = (6 - 3* x - 2 * y ) /6

f =

1 - y /3 - x /2

>> ezmesh (f ,[ -2 , 3] ,40)

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 236

1 y/3 x/2

z 0

1 2
1
2 0
1 1
0
1 2
2 3
3 x
y

Figura 3.9: Grfica de z = (6 3x 2y)/6

>> view (120 ,30)


>> colormap ([0.4 0.4 0.4])
>> xlabel ( 'x ')
>> ylabel ( 'y ')
>> zlabel ( 'z ')

se obtiene la grfica de la figura 3.9.


Ejemplo
Graficar el plano

x = 2 + s t, y = 1 s + 2t, z = 1 + 2s + t, s, t [1/2, 3/2].

Si ejecutamos los comandos

>> clear
>> syms s t
>> x = 2 + s - t

x =

s - t + 2

>> y = 1 - s + 2* t

y =

2* t - s + 1

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 237

x = s t + 2, y = 2 t s + 1, z = 2 s + t 1

z
2
0

4 1
2 2
0
2 3
4
6 4 x
y

Figura 3.10: Grfica de x = 2 + s t, y = 1 s + 2t, z = 1 + 2s + t

>> z = -1 + 2* s + t

z =

2* s + t - 1

>> ezmesh (x ,y ,z ,[ -0.5 , 1.5] ,20)


>> view (120 ,30)
>> colormap ([0.4 0.4 0.4])
>> xlabel ( 'x ')
>> ylabel ( 'y ')
>> zlabel ( 'z ')

se obtiene la grfica de la figura 3.10.

Ejercicios 3.7
1. Grafique las expresiones simblicas siguientes:
1
a. f (x) = , x (3, 3)
9 x2
b. f (x) = 1 2x x2 , x [3, 4]
x3 x2 1
c. f (x) = 2x + , x [2, 4]
3 2 3
d. f (x) = (x 2) (x + 1) (x 1), x [1, 3]
2 3

e. f (x) = sen(x) cos(x), x [0, 2]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 238

f. f (x, y) = y 2 (x 3)3 , x [3, 5], y [0, 3]


g. f (x, y) = 3x2 + (y 2)2 3, x [0, 1], y [1, 2]
2. Grafique las expresiones simblicas siguientes:
a. f (x) = 37 sen[(2/365)(x 101)] + 25, x [1, 30]
b. f (x, y) = 3x2 6xy + 3Y 2 + 2x 7, x [2, 2], y [3, 4]
c. f (x, y) = xy y x + 1, x [1, 3], y [0, 3]
d. x = (1/2) tan t, y = (1/2) sec t, /2 t /2
e. x = 4 cos t, y = 9 sen t, 0 t 2
f. x = 2t + 3, y = t2 1, 2 t 2
g. x = t sen t, y = 1 cos t, 0 t 4
h. x = 6 cos t + 5 cos 3t, y = 6 sen 2t 5 sen 3t, 0 t 2
3. Grafique las expresiones simblicas siguientes
a. z = cos(0.0170x 0.2y)e0.2y , 0 x 1080, 0 y 30.
b. z = (4x2 + y 2 )e x2 y 2
, x, y [3, 3].
c. z = xye y 2
, x, y [2, 2].
d. z = e (x2 +y 2 )/8
(sen x2 + cos y 2 ), x, y [3, 3].
e. x = s cos t, y = s sen t, z = s, 0 s 2, 0 t 2.
f. x = (2 + coss) cos t, y = (2 + cos s) sen t, z = sen s, 0 s 2, 0 t 2.
g. x + y + z = 3, x, y [3, 3].
h. x = 3 s 2t, y = 2 3s + t, z = 2 s 3t, s, t [3, 3].
i. z = sen x sen y, x, y [3, 3].
j. z = (x + y ) cos(x2 + y 2 ),
2 2
x, y [1, 1].

3.9. Aritmtica de Precisin Variable


Sabemos que cada vez que efectuamos operaciones aritmticas estamos
sometidos a los efectos de los errores de redondeo por las limitaciones de no poder conservar
todos los dgitos en cada operacin. Esto quiere decir que en la medida en que se realizan ms
operaciones aritmticas ms errores se acumulan. En el caso de las operaciones con expresiones
simblicas, puede decirse que la precisin es muy alta, ya que no se efectan clculos numricos.
Tampoco hay errores de redondeo.
Matlab opera con aritmtica de punto flotante, por lo que est limitado al nmero de dgitos que
se puede conservar en cada posicin de memoria dentro del computador. Esto hace que en las
operaciones aritmticas se introduzcan errores de redondeo, por lo que los resultados finales no son
exactos. Matlab trabaja con 16 dgitos aproximadamente.
Matlab cuenta con la funcin vpa que permite alterar la precisin con la que se quiere obtener el
resultado. Por esta razn a esta funcin se le llama funcin aritmtica de precisin variable

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 239

La funcin digits permite alterar la cantidad de dgitos por defecto (16). Slo hay que ejecutar
el comando
digits(a)
donde a representa la cantidad de dgitos a usar.
La funcin vpa nos permite alterar temporalmente la cantidad de dgitos que queremos en el
resultado. Por ejemplo, si escribimos
vpa(sqrt(2),20)
le estamos diciendo a Matlab que nos devuelva el resultado de raiz de 2 con 20 dgitos. Observe que
el primer argumento es una expresin simblica. La cantidad de dgitos por defecto sigue intacto.
As que si ejecutando el comando anterior, se obtiene

>> vpa ( sqrt (2) ,20)

ans =

1.4142135623730950488

Otro ejemplo

>> vpa ( pi ,25)

ans =

3.141592653589793238462643

3.10. Resolucin de Ecuaciones


Matlab dispone de varias funciones para manejar y resolver ecuaciones simblicas. Si se trata de
resolver una ecuacin con una sola variable, la solucin es numrica. En caso de dos o ms variables,
la solucin es simblica.

3.10.1. Ecuaciones y Sistemas de Ecuaciones


Matlab cuenta con una funcin para resolver ecuaciones y sistemas de ecuaciones simblicamente.
Esta funcin es
solve
que posee varias formas. Dos de ellas son

s = solve ( ' ec1 ' , ' ec2 ' ,... , ' ecn ')
o
s = solve ( ' ec1 ' , ' ec2 ' ,... , ' ecn ' , 'v1 , v2 ,... , vn ')

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 240

donde ec1, ec2, ... , ecn son ecuaciones y v1, v2 ,..., vn son las variables.

Ejemplos:
Resolvamos algunas ecuaciones

>> clear
>> syms x y z t
>> ec1 = ' 5* x - 3 = 7 '

ec1 =

5* x - 3 = 7

>> s = solve ( ec1 )

s =

2
Otra forma de resolver la ecuacin

>> ec1 = 5* x - 10

ec1 =

5* x - 10

>> s = solve ( ec1 )

s =

2
Otra forma

>> solve ( ' 5* x - 3 = 7 ')

ans =

2
Ejemplo
Resolver para x

>> clear

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 241

>> syms a b c x y t
>> ec1 = 'a * x + b = c '

ec1 =

a*x + b = c

>> s = solve ( ec1 , x )

s =

-( b - c ) / a

Resolvamos para a.

>> s = solve ( ec1 , a )

s =

-( b - c ) / x

Ejemplo
Resolver para x.

>> ec1 = a * x ^2 + b * x + c

ec1 =

a * x ^2 + b * x + c

>> s = solve ( ec1 )

s =

-( b + ( b ^2 - 4* a * c ) ^(1/2) ) /(2* a )
-( b - ( b ^2 - 4* a * c ) ^(1/2) ) /(2* a )

Ejemplo
Resolver para y

>> ec2 = exp (3* y ) - 5

ec2 =

exp (3* y ) - 5

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 242

>> s = solve ( ec2 )

s =

log (5) /3

Ejemplo
Resolver para t.

>> ec3 = cos (2* t ) + 3* sin ( t ) -2

ec3 =

cos (2* t ) + 3* sin ( t ) - 2

>> s = solve ( ec3 )

s =

pi /2
pi /6
(5* pi ) /6

Cuando tratamos de resolver un sistema de ecuaciones y este tiene el mismo nmero de ecuaciones
que de incgnitas, la solucin es numrica. En caso de que el sistema tenga menos ecuaciones que
de variables, la solucin es simbica para las variables buscadas en funcin de las dems.
Ejemplos:
Resolvamos algunos sistemas

>> ec1 = 3* x - 2* y

ec1 =

3* x - 2* y

>> ec2 = x + 4* y - 14

ec2 =

x + 4* y - 14

>> [ x y ]= solve ( ec1 , ec2 )

x =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 243

y =

Ejemplo
Resolver para x y y.

>> clear
>> syms a b c x y t
>> ec1 = 10* x + 12* y + 16* t

ec1 =

16* t + 10* x + 12* y

>> ec2 = 5* x - y -13* t

ec2 =

5* x - 13* t - y

>> [ x1 x2 ]= solve ( ec1 , ec2 ,x , y )

x1 =

2* t

x2 =

-3* t

Ejemplo
Resolver para x y y.

>> clear
>> syms a b c x y t r
>> ec1 = ( x - 3) ^2 + ( y - 4) ^2 - r ^2

ec1 =

( x - 3) ^2 + ( y - 4) ^2 - r ^2

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 244

>> ec2 = y - x /2 -1

ec2 =

y - x /2 - 1

>> [ x1 x2 ] = solve ( ec1 , ec2 ,x , y )

x1 =

((4* r ^2) /5 - 36/25) ^(1/2) + 18/5


18/5 - ((4* r ^2) /5 - 36/25) ^(1/2)

x2 =

((4* r ^2) /5 - 36/25) ^(1/2) /2 + 14/5


14/5 - ((4* r ^2) /5 - 36/25) ^(1/2) /2

Ejercicios 3.8
1. Resuelva las siguientes ecuaciones y sistemas de ecuaciones:

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 245

b. 5x + y = 19
a. x2 + 3x + 2 = 0
3x 2y = 1

c. x2 + y 2 = 1
d. x2 3x + ex 2 = 0
xy = 0

e. 3x cos(yz) 0.5 = 0
f. x2 10x + y 2 + 8 = 0
x2 81(y + 0.1)2 + sen z + 1.06 = 0
xy 2 + x 10y + 8 = 0
103
exy + 20z + 3
= 0

g. 5x2 y 2 = 0 h. x2 + y 2 x = 0
y 0.25(sen x + cos y) = 0 x2 y 2 y = 0

i. 3x2 y 2 = 0 j. x2 + y 37 = 0
3xy 2 x3 1 = 0 x y2 5 = 0

k. x2 3x + ex 2 = 0 l. tan x = 3.5
x
m. 0.5e 3 sen x = 0 n. ln(1 + x) x2 = 0

o. ex 5x2 = 0 p. x+2x = 0

q. sen x 0.3ex = 0

2. Resolver simblicamente los siguientes sistemas:


a. 3x y + z = 12 b. x2 2y + z = 2
5x + 2y z = 11 x + 3y 2 z = 10
x + y + 4z = 10 2x + y + z 2 = 1

c. 2x + 3y + z = 19
d. sen x + 2 cos y = 2
x 2y + 5z = 16
3 sen x cos y = 5/2
3x + 2y 4z = 23

3.11. Ecuaciones Diferenciales


Matlab cuenta con la funcin dsolve para calcular soluciones simblicas de ecuaciones y sistemas
de ecuaciones diferenciales ordinarias. Las ecuaciones diferenciales se especifican usando la letra
D seguida de un nmero entero positivo ( orden de la derivada) y un nombre de variable que
representa la variable dependiente. Si no aparece nmero alguno entre la letra D y la variable, se
asume que es 1. As D2y representa la segunda derivada de y; Dy representa la primera derivada
de y. La variable independiente por defecto es t.
Su formato es

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 246

s = dsolve ( ' ec1 ' , ' ec2 ' , ' ec3 ' ,... , ' ecn ')
o
s = dsolve ( ' ec1 ' , ' ec2 ' , ' ec3 ' ,... , ' ecn ' , ' c1 ' , ' c2 ' , ' c3 ' ,... , ' cn ')
o
s = dsolve ( ' ec1 ' , ' ec2 ' , ' ec3 ' ,... , ' ecn ' , ' c1 ' , ' c2 ' , ' c3 ' ,... , ' cn ' , 'v ')

donde ec1, ec2, ec3,... son las ecuaciones diferenciales; c1, c2,... son condiciones iniciales
y v es la variable independiente.
Ejemplos:
Resolvamos la ecuacin diferencial
dy
= y 2 + 1.
dx

>> clear
>> syms x y t
>> s = dsolve ( ' Dy = y ^2 + 1 ')

s =

tan ( C6 + t )
i
-i

donde c6 es la constante de integracin. Si queremos que la variable independiente sea x, ejecutamos

>> clear all


>> syms x y t
>> s = dsolve ( ' Dy = y ^2 + 1 ' , 'x ')

s =

tan ( C3 + x )
i
-i

Aqu la constante de integracin es c3.


Ahora resolvamos la ecuacin sujeta a la condicin inicial y(0) = 1.

>> s = dsolve ( ' Dy = y ^2 + 1 ' , 'y (0) =1 ')

s =

tan ( pi /4 + t )

Especificando la variable independiente, ejecutamos

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 247

>> s = dsolve ( ' Dy = y ^2 + 1 ' , 'y (0) =1 ' , 'x ')

s =

tan ( pi /4 + x )

Ejemplo
Resolver la ecuacin diferencial
x0 = (t x)/2, x(0) = 1.

>> s = dsolve ( ' Dx = ( t - x ) /2 ' , 'x (0) = 1 ')

s =

t + 3* exp ( - t /2) - 2

Ejemplo
Resolver la ecuacin diferencial
x0 + 3x = 4tet , x(0) = 0.1.

>> s = dsolve ( ' Dx = -3* x + 4* t * exp ( - t ) ' , 'x (0) =0.1 ')

s =

(11* exp ( -3* t ) ) /10 + exp ( - t ) *(2* t - 1)

Ejemplo
Resolver la ecuacin diferencial
x00 + 6x0 + 9x = 0, x(0) = 4, x0 (0) = 4.

Ejecutamos los comandos

>> x = dsolve ( ' D2x = -6* Dx - 9* x ' , 'x (0) =4 ' , ' Dx (0) = -4 ')

x =

4* exp ( -3* t ) + 8* t * exp ( -3* t )

Ejemplo
Resolver la ecuacin diferencial
x000 6x00 + 11x0 6x = 3t.

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 248

>> x = dsolve ( ' D3x - 6* D2x + 11* Dx - 6* x = 3* t ')

x =

C28 * exp ( t ) - t /2 + C29 * exp (3* t ) + C30 * exp (2* t ) - 11/12

Ejemplo
Resolver la ecuacin diferencial
xiv + x000 = 1 t2 et .

Ejecutamos los comandos

>> x = dsolve ( ' D4x + D3x =1 - t ^2* exp ( - t ) ')

x =

exp ( - t ) *(12* t + ( t ^3* exp ( t ) ) /6 + C35 * exp ( t ) + 3* t ^2 + t ^3/3 +


( t ^2* exp ( t ) *(3* C32 - 3) ) /6 - ( C34 * t * exp ( t ) ) /6) + C36 * exp ( - t )

Si se desea graficar la solucin simblica de una ecuacin diferencial, definimos el vector independiente
y luego vectorizamos la solucin simlica para su evaluacin y as se obtiene el vector dependiente.
La vectorizacin se logra con el comando
v = vectorize(E),
donde E es la expresin simblica a vectorizar en funcin de la variable independiente, que debe
ser definida previamente. Luego, se aplica el comando eval (v).
Veamos el siguiente ejemplo:
Resolver la ecuacin diferencial

x00 + tx0 + x = 3t2 + 2, x(0) = 0, x0 (0) = 1

y graficar su solucin.
Ejecutamos los comandos

>> clear
>> x = dsolve ( ' D2x + t * Dx + x = 3* t ^2 + 2 ' , 'x (0) =0 ' , ' Dx (0) =1 ')

x =

exp ( - t ^2/2) *( t ^2* exp ( t ^2/2) + (2^(1/2) * pi ^(1/2) * erfi ((2^(1/2) * t ) /2) ) /2)

>> t = linspace (0 ,1 ,50) ;


>> y = eval ( vectorize ( x ) ) ;
>> plot (t ,y , 'k ')
>> xlabel ( 't ')
>> ylabel ( 'x ')

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 249

1.8

1.6

1.4

1.2

x
0.8

0.6

0.4

0.2

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t

Figura 3.11: Solucin x00 + tx0 + x = 3t2 + 2, x(0) = 0, x0 (0) = 1

La grfica de la solucin se muestra en la figura 3.11.


Ejemplo
Resolver la ecuacin diferencial

x00 + x0 + 4x = 0, x(0) = 0, x0 (0) = 10.

y grafique su solucin.
Ejecutemos los comandos

>> clear
>> x = dsolve ( ' D2x + Dx + 4* x = 0 ' , 'x (0) =0 ' , ' Dx (0) =10 ')

x =

(4*15^(1/2) * exp ( - t /2) * sin ((15^(1/2) * t ) /2) ) /3

>> t = linspace (0 ,10 ,100) ;


>> y = eval ( vectorize ( x ) ) ;
>> plot (t ,y , 'k ')
>> xlabel ( 't ')
>> ylabel ( 'x ')

La grfica se muestra en la figura 3.12.


De la misma forma se puede resolver una ecuacin diferencial ordinaria de orden superior. Esta
funcin tambin puede usarse para resolver sistemas de ecuaciones diferenciales.
Por ejemplo, suponga que se desea resolver el sistema

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 250

x
0

2
0 1 2 3 4 5 6 7 8 9 10
t

Figura 3.12: Solucin x00 + x0 + 4x = 0, x(0) = 0, x0 (0) = 10

du
=3u+4v
dx
dv
= 4 u + 3 v
dx
entonces ejecutamos los comandos

>> [ u v ] = dsolve ( ' Du = 3* u + 4* v ' , ' Dv = -4* u + 3* v ')

u =

C14 * cos (4* t ) * exp (3* t ) + C13 * sin (4* t ) * exp (3* t )

v =

C13 * cos (4* t ) * exp (3* t ) - C14 * sin (4* t ) * exp (3* t )

Ejemplo
Resolver el sistema de ecuaciones diferenciales
x0 = x 4y, x(0) = 2
y 0 = x + y, y(0) = 3

Ejecutamos los comandos

>> [ x y ] = dsolve ( ' Dx = x - 4* y ' , ' Dy = x + y ' , 'x (0) =2 ' , 'y (0) =3 ')

x =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 251

2* cos (2* t ) * exp ( t ) - 6* sin (2* t ) * exp ( t )

y =

3* cos (2* t ) * exp ( t ) + sin (2* t ) * exp ( t )

Ejercicios 3.9
1. Resuelva los ejercicios de las pginas. 148, 151 y 154.

2. Resuelva las siguientes ecuaciones diferenciales

a. 2x00 5x0 3x = 0
b. x00 10x0 + 25x = 0
c. x00 + 4x0 + 7x = 0
d. 4x00 + 4x0 + 17x = 0, x(0) = 1, x0 (0) = 2
e. x00 + 4x = 0, x() = 3, x0 () = 4
f. x00 4x = 0
g. x000 + 3x00 4x = 0
h. xiv + 2x00 + x = 0
i. x00 8x0 + 25x = 5t3 et 7et

3. Resuelva las ecuaciones diferenciales siguientes

a. t2 x00 2tx0 + 2x = t3 , x(1) = 1, x0 (1) = 2


b. x000 + x00 = et cos t
c. x000 + x00 + x0 + x = 1
d. x00 2x0 3x = 2et 10 sen t
e. x000 = 0, x(0) = 2, x0 (0) = 1, x00 (0) = 4
f. x00 = a, x(0) = 2, x0 (0) = 5. (a es una constante)

4. Resuelva la ecuacin diferencial


t3 + t2 x tx2 x3
x0 = , x(1) = 1.
2t2 x + 4tx2 + 2x3

5. Grafique la solucin de 2d, 2e, 3a y 3e.

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 252

3.12. Elementos de clculo superior


El clculo superior constituye hoy una rama muy importante para matemticos, fsicos e ingenieros.
Esta importancia se debe en gran medida a que ofrece una notacin clara y precisa para exhibir
las expresiones de los modelos matemticos generados por los problemas fsicos y geomtricos.
Definicin
Un Campo escalar es toda funcin de la forma
f : R3 R.

Ejemplo

f (x, y, z) = x2 y + z 3 .

El operador (nabla) se define como



= i+ j + k.
x y z

Definicin

El Gradiente de un campo escalar f : R3 R de define como


 
f f f
f = i+ j+ k f = i+ j+ k.
x y z x y z

Observemos que el gradiente de un campo escalar es un vector. El gradiente tambin se denota


por graf f
Calculemos el gradiente en forma simblica de un campo escalar f : R3 R.
Ejemplo
Ejecutemos los comandos

>> clear
>> syms x y z
>> f = 3* x ^2* y - y ^3* z ^2

f =

3* x ^2* y - y ^3* z ^2

>> gradf = [ diff (f , x ) , diff (f , y ) , diff (f , z ) ]

gradf =

[ 6* x *y , 3* x ^2 - 3* y ^2* z ^2 , -2* y ^3* z ]

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 253

Si deseamos evaluar el gradiente en el punto (1, 2, 1), ejecutamos

>> subs ( gradf ,{ x ,y , z } ,{1 , -2 , -1})

ans =

[ -12 , -9 , -16]

En Matlab disponemos de una funcin gradient para calcular el gradiente de un campo escalar
f : R3 R, pero en forma numrica, no simblica. Su formato es
[fx fy fz ] = gradient(f ),
donde f es el campo escalar.

Definicin
Un Campo vectorial es una funcin de la forma

V : R3 R3 .

Ejemplos

V (x, y, z) = (y + z)i + (z + x)j + (x + y)k.



V (x, y, z) = zi 2xj + yk.

Definicin
La Matriz Jacobiana de un campo vectorial F (x, y, z) = F1 i + F2 j + F3 k, donde F1 , F2 , F3 son
derivables en una regin D, se define como
F1 F1 F1

x y z

F2 F2 F3
J(F ) = x

y z

F3 F3 F3

x y z

La definicin tambin aplica a un campo escalar. De hecho, si el campo es escalar, la matriz


Jacobiana se convierte en el gradiente de F .
En Matlab se dispone de la funcin jacobian para calcular la matriz jacobiana. Su formato es
jacobian(F,v),
donde F es el campo y v es el vector con respecto al cual se calcular la jacobiana. Como ejemplo,
tomemos el campo escalar f del primer ejemplo de esta seccin y ejecutemos

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 254

>> f = 3* x ^2* y - y ^3* z ^2

f =

3* x ^2* y - y ^3* z ^2

>> grad = jacobian (f ,[ x y z ])

grad =

[ 6* x *y , 3* x ^2 - 3* y ^2* z ^2 , -2* y ^3* z ]

Ejemplo
Ejecutemos los comandos

>> F = [ x ^2* z , -2* y ^3* z ^2 , x * y ^2* z ]

F =

[ x ^2* z , -2* y ^3* z ^2 , x * y ^2* z ]

>> J = jacobian (F ,[ x y z ])

J =

[ 2* x *z , 0, x ^2]
[ 0 , -6* y ^2* z ^2 , -4* y ^3* z ]
[ y ^2* z , 2* x * y *z , x * y ^2]

Definicin
La Divergencia de un campo vectorial F (x, y, z) = F1 i+F2 j+F3 k, donde F1 , F2 , F3 son derivables
en una regin D, se define como
 
F1 F2 F3
F = div F = i+ j + k (F1 i + F2 j + F3 k) = + + .
x y z x y z

La definicin es semejante para el campo vectorial F (x, y) = F1 i + F2 j.


F1 F2
F = div F = + .
x y
Ejemplo
Obtener la divergencia del campo F (x, y) = 3x2 yi + (xz 2 2y)j.
Ejecutamos los comandos

>> clear

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 255

>> syms x y z
>> u = 3* x ^2* y

u =

3* x ^2* y

>> v = x * z ^2 -2* y

v =

x * z ^2 - 2* y

>> div = diff (u , x ) + diff (v , y )

div =

6* x * y - 2

Ejemplo
Calculemos la divergencia de F (x, y, z) = (y + yz cos xyz)i + (x2 + xz cos xyz)j + (z + xy cos xyz)k.
Ejecutamos los comandos

>> F1 = y + y * z * cos ( x * y * z )

F1 =

y + y * z * cos ( x * y * z )

>> F2 = x ^2 + x * z * cos ( x * y * z )

F2 =

x ^2 + x * z * cos ( x * y * z )

>> F3 = z + x * y * cos ( x * y * z )

F3 =

z + x * y * cos ( x * y * z )

>> div = diff ( F1 , x ) + diff ( F2 , y ) + diff ( F3 , z )

div =

1 - x ^2* z ^2* sin ( x * y * z ) - y ^2* z ^2* sin ( x * y * z ) - x ^2* y ^2* sin ( x * y * z )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 256

Otra manera de obtener la divergencia de un campo vectorial F es calculando la matriz jacobiana y


luego sumando los elementos de la diagonal principal mediante el comando trace (J) o sum(diag(J)),
donde J es la matriz jacobiana.

Matlab tiene el comando divergence para calcular numricamente ( no simblicamente) la divergencia


de un campo vectorial.
Definicin
El Rotacional de un campo vectorial F (x, y, z) = F1 i+F2 j +F3 k, donde F1 , F2 , F3 son derivables
en una regin D, se define como
     
F3 F2 F1 F3 F2 F1
rot F = F = i+ j+ k.
y z z x x y

Ejemplo

Calculemos el rotacional del campo vectorial F (x, y, z) = (y + yz cos xyz)i + (x2 + xz cos xyz)j +
(z + xy cos xyz)k.
Ejecutemos los comandos

>> F1 = y + y * z * cos ( x * y * z )

F1 =

y + y * z * cos ( x * y * z )

>> F2 = x ^2 + x * z * cos ( x * y * z )

F2 =

x ^2 + x * z * cos ( x * y * z )

>> F3 = z + x * y * cos ( x * y * z )

F3 =

z + x * y * cos ( x * y * z )

>> r1 = diff ( F3 , y ) - diff ( F2 , z )

r1 =

>> r2 = diff ( F1 , z ) - diff ( F3 , x )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 257

r2 =

>> r3 = diff ( F2 , x ) - diff ( F1 , y )

r3 =

2* x - 1

>> rot = [ r1 , r2 , r3 ]

rot =

[ 0 , 0 , 2* x - 1]
Ejemplo

Calculemos el rotacional del campo vectorial F (x, y, z) = 2xyi y 2 j + zex k.


Ejecutemos los comandos

>> F1 = 2* x * y

F1 =

2* x * y

>> F2 = -y ^2

F2 =

-y ^2

>> F3 = z * exp ( x )

F3 =

z * exp ( x )

>> r1 = diff ( F3 , y ) - diff ( F2 , z )

r1 =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 258

>> r2 = diff ( F1 , z ) - diff ( F3 , x )

r2 =

-z * exp ( x )

>> r3 = diff ( F2 , x ) - diff ( F1 , y )

r3 =

-2* x

>> rot = [ r1 , r2 , r3 ]

rot =

[ 0 , -z * exp ( x ) , -2* x ]

La matriz jacobiana puede ser utilizada tambin para encontrar el rotacional de un campo vectorial.
Por ejemplo, tomemos el campo vectorial anterior y ejecutemos los comandos

>> F = [ F1 , F2 , F3 ]

F =

[ 2* x *y , -y ^2 , z * exp ( x ) ]

>> J = jacobian (F ,[ x y z ])

J =

[ 2* y , 2* x , 0]
[ 0 , -2*y , 0]
[ z * exp ( x ) , 0 , exp ( x ) ]

>> rot = [ J (3 ,2) -J (2 ,3) ,J (1 ,3) -J (3 ,1) ,J (2 ,1) -J (1 ,2) ]

rot =

[ 0 , -z * exp ( x ) , -2* x ]

Observe que se produjo el mismo resultado.


Matlab posee el comando curl para calcular numricamente (no simblicamente) el rotacional de
un campo vectorial.

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 259

Transformada de Laplace
Sea F (t) una funcin cualquiera integrable sobre el intervalo [0, ). La Transformada de Laplace
de F (t) se define como Z
L{F (t)} = est F (t) dt = f (s).
0

Matlab cuenta con el comando laplace para obtener la transformada de Laplace de una funcin
F (t). Su formato es
laplace(F),
donde F es la funcin, cuya transformada se busca.

Ejemplo

Encontrar la transformada de F (t) = ekt .


Ejecutemos los comandos

>> clear
>> syms k s t
>> F = exp ( k * t )

F =

exp ( k * t )

>> f = laplace ( F )

f =

-1/( k - s )

1
Luego, L{F (t)} = .
ks

La transformada de F (t) = sen t se obtiene ejecutando los comandos.

>> syms k s t
>> F = sin ( k * t )

F =

sin ( k * t )

>> f = laplace ( F )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 260

f =

k /( k ^2 + s ^2)
k
Luego, L{F (t)} = .
k2 + s2

La transformada de F (t) = t5 se obtiene ejecutando los comandos.

>> syms k s t
>> F = t ^5

F =

t ^5

>> f = laplace ( F )

f =

120/ s ^6
120
Luego, L{F (t)} = .
s6

La transformada de F (t) = t3 5t2 + 2t + 3 se obtiene ejecutando los comandos.

>> syms k s t
>> F = t ^3 - 5* t ^2 + 2* t + 3

F =

t ^3 - 5* t ^2 + 2* t + 3

>> f = laplace ( F )

f =

3/ s + 2/ s ^2 - 10/ s ^3 + 6/ s ^4
3 2 10 6
Luego, L{F (t)} = + 2 3 + 4.
s s s s
La transformada de F (t) = t sen 2t se obtiene ejecutando los comandos.
3

>> syms k s t

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 261

>> F = t ^3* sin (2* t )

F =

t ^3* sin (2* t )

>> f = laplace ( F )

f =

(96* s ^3) /( s ^2 + 4) ^4 - (48* s ) /( s ^2 + 4) ^3

96 s3 48 s
Luego, L{F (t)} = 2 4
2 .
(s + 4) (s + 4)3

Definicin
La Funcin de Heaviside o funcin escaln unitario se define como
(
0, si t < a
H(t a) =
1, si t a

En forma particular y para los fines de la transformada de Laplace, la funcin de Heaviside, se


define como (
0, si 0 t < a
H(t a) =
1, si t a

Sea t 0. Si consideramos la funcin F (t) = et H(t 2), entonces podemos escribir a F (t) como
(
0, si 0 t < 2
F (t) =
et , si t 2

Supongamos que se tiene una funcin continua definida a trozos


(
P (t), si 0 t < a
F (t) =
Q(t), si t a

Esta funcin puede ser escrita en trminos de la funcin de Heaviside como


F (t) = P (t) + (Q(t) P (t))H(t a).

La funcin
P (t), si 0 t < a

F (t) = Q(t), si a t < b
R(t), si t b

se puede escribir en trminos de la funcin de Heaviside como


F (t) = P (t) + (Q(t) P (t))H(t a) + (R(t) Q(t))H(t b).

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 262

Ejemplo

Calculemos la L{F (t)} si F (t) = H(t a).

Ejecutemos los comandos

>> clear
>> syms k s t a ' positive '
>> h = sym ( ' heaviside (t - a ) ')

h =

heaviside ( t - a )

>> laplace ( h )

ans =

exp ( - a * s ) / s

eas
Luego, L{H(t a)} = .
s
Ejemplo
Calcular la transformada de
2
t ,
si 0 t < 1
F (t) = 1 t, si 1 t < 2
si 2 t < 3

0,

Solucin
Lo primero que debemos hacer es redefinir la funcin F (t) como

F (t) = t2 + (1 t t2 )H(t 1) + (t 1)H(t 2).

Ahora ejecutamos los comandos

>> clear
>> syms s t
>> h = sym ( 't ^2+(1 - t - t ^2) * heaviside (t -1) +( t -1) * heaviside (t -2) ')

h =

heaviside ( t - 2) *( t - 1) - heaviside ( t - 1) *( t ^2 + t - 1) + t ^2

>> laplace ( h )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 263

ans =

exp ( -2* s ) *(1/ s + 1/ s ^2) - exp ( - s ) *(1/ s ^2 +


exp ( s ) *(( exp ( - s ) *( s ^2 + 2* s + 2) - 2) / s ^3 + 2/ s ^3) ) + 2/ s ^3

Definicin
La funcin Delta de Dirac (Impulso) se define como
(
, si t = 0
(t) =
0, si t 6= 0

La funcin Delta de Dirac tiene la caracterstica


Z
(t)dt = 1.

La palabra funcin entre comillas se debe a que la Delta de Dirac no es realmente una funcin en
el sentido matemtico, aunque con regularidad se le llame funcin.
La derivada de la funcin escaln unitaria es (t).
Ejecutemos los comandos

>> clear
>> syms k s t
>> h = sym ( ' heaviside ( t ) ')

h =

heaviside ( t )

>> diff ( h )

ans =

dirac ( t )

dh
Luego, = (t).
dt

La transformada de la (t) = 1. Ejecutemos los comandos

>> d = sym ( ' dirac ( t ) ')

d =

dirac ( t )

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 264

>> laplace ( d )

ans =

Luego, L{(t)} = 1.

La transformada inversa de Laplace o antitransformada de Laplace se obtiene en Matlab


con el comando ilaplace, cuyo formato es
ilaplace(f),
donde f es una funcin transformada.
Ejemplo
s
Obtengamos la antitransformada de f (s) = .
s2 + k2
Ejecutemos los comandos

>> syms k s t
>> f = s /( s ^2 + k ^2)

f =

s /( k ^2 + s ^2)

>> F = ilaplace ( f )

F =

cos ( k * t )
7
Si deseamos obtener la antitransformada de f (s) = , ejecutamos los comandos
s2 + 4s + 5

>> syms k s t
>> f = 7/( s ^2 + 4* s + 5)

f =

7/( s ^2 + 4* s + 5)

>> F = ilaplace ( f )

F =

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 265

7* exp ( -2* t ) * sin ( t )

Ejercicios 3.10
1. Encuentre el gradiente de los campos dados

a. f (x, y) = (x + y 2 ) 1 + x2
b. f (x, y) = ln(x2 + y 2 + 1)
c. f (x, y) = ex
2y


d. f (x, y, z) = x y 3z 2

e. f (x, y, z) = x y 3z 2
f. f (x, y) = y 3 (2x y)e(2xy)
2

g. f (x, y, z) = 2xz 4 x2 y
h. f (x, y, z) = x2 z + ey/x

i. f (x, y, z) = (x2 + y 2 + z 2 )e x2 +y 2 +z 2

2. Encuentre la divergencia de los campos dados

a. F (x, y, z) = 2xyz 3 i + x2 z 3 j + 3x2 yz 2 k


b. F (x, y, z) = (y 2 2xyz 3 )i + (3 + 2xy x2 z 3 )j + (6z 3 3x2 yz 2 )k
c. F (x, y, z) = 3xyz 2 i + 2xy 3 j x2 yzk
d. F (x, y, z) = 3y 4 z 2 i + 4x3 z 2 j 3x2 y 2 k
e. F (x, y, z) = (2x2 + 8xy 2 z)i + (3x3 y 3xy)j (4y 2 z 2 + 2x3 z)k

3. Encuentre la matriz jacobiana de los campos delos items 1 y 2.

4. Encuentre el rotacional de los campos del item 2.

5. Obtenga la transformada de Laplace de las siguientes funciones

a. F (t) = e4t + 3e2t


b. F (t) = cosh kt
c. F (t) = cos2 kt
d. F (t) = sen kt cos kt
e. F (t) = eat ebt
(
4, 0 < t < 1
f. F (t) =
3, t > 1
(
1, 0 < t < 2
g. F (t) =
t, t > 1

MMP/Santiago Copyright 2016 ABB


3. CLCULO SIMBLICO 266


0, 0 < t < 1

h. F (t) = t, 1 < t < 2

0, t > 2

(
sen 2t, 0 < t <
i. F (t) =
0, t>

1,
0t<1
j. F (t) = 1 t, 1 t < 2

0, 2t<3

(
1 t, 0 t < 1
k. F (t) =
t 1, 1 t < 2

6. Encuentre la transformada inversa de Laplace de las siguientes funciones


5
a. f (s) =
s
24 12
b. f (s) =
(s2 + 1)4 (s2 + 1)3
1
c. f (s) =
s(s 3)
3 4es 4e3s
d. f (s) = + 2
s3 s2 s
3s s
5e e
e. f (s) =
s s
4s
e
f. f (s) =
(s + 2)3
(1 e2s )(1 3e2s
g. f (s) =
s2
s2 6
h. f (s) = 3
s + 4s2 + 3s

MMP/Santiago Copyright 2016 ABB


Captulo 4

INTRODUCCIN A LATEX

Si tenemos tiempo haremos una introduccin al sistema de composicin de textos LATEX, cuyo
objetivo es crear documentos escritos de gran calidad. Es usado en muchas partes del mundo
para generar artculos, revistas, libros cientficos y no cientficos, etc.. De hecho, hay revistas
internacionales que no aceptan trabajos/artculos si no son editados en Latex.

267

Vous aimerez peut-être aussi