Documente Academic
Documente Profesional
Documente Cultură
2
da
Edicin
MATLAB
Orientado a
la matemtica aplicada
Universidad Centroccidental
Lisandro Alvarado
Decanato de Ciencias y Tecnologa
Licenciatura en Ciencias Matemticas
Barquisimeto. Estado Lara
MATLAB
Orientado a la matemtica aplicada
Segunda Edicin
Andrs E. Prez G.
E-mail: andres.chi.cuadrado@gmail.com
Barquisimeto. Marzo de 2014
A Dios Todopoderoso, mi fuente de lux et veritas.
MATLAB Orientado a la matemtica aplicada
CONTENIDO
INTRODUCCIN ......................................................................................................................................... 11
OBJETIVO ........................................................................................................................................................... 11
JUSTIFICACIN ................................................................................................................................................... 11
COMO UTILIZAR ESTE TUTORIAL? ................................................................................................................... 11
CAPITULO 1. COMENZANDO A TRABAJAR CON MATLAB ............................................................................. 12
TPICOS ELEMENTALES ..................................................................................................................................... 12
Qu es MATLAB? ......................................................................................................................................... 12
Origen ............................................................................................................................................................ 12
Versiones e historia ....................................................................................................................................... 12
Qu versin estamos utilizando en este tutorial? ....................................................................................... 12
ENTORNO DE TRABAJO DE MATLAB ................................................................................................................. 13
La ventana de comandos ............................................................................................................................... 14
La ventana de historial de comandos ............................................................................................................ 14
La ventana de directorio actual ..................................................................................................................... 15
La ventana de ayuda ...................................................................................................................................... 15
NMEROS, OPERADORES Y VARIABLES ............................................................................................................ 16
Operaciones bsicas ...................................................................................................................................... 16
Creacin de variables .................................................................................................................................... 16
Funciones matemticas elementales de MATLAB ........................................................................................ 18
Algunos nmeros especiales ......................................................................................................................... 20
VECTORES .......................................................................................................................................................... 21
MATRICES .......................................................................................................................................................... 24
GUARDANDO, BORRANDO Y LEYENDO ............................................................................................................. 28
El fichero MATLAB.mat .................................................................................................................................. 28
Ficheros .mat ................................................................................................................................................. 29
Ficheros .ascii ................................................................................................................................................. 29
LTIMAS ACLARACIONES PARA TRABAJAR EN MATLAB ................................................................................... 31
Tips................................................................................................................................................................. 31
El punto y coma (;) ......................................................................................................................................... 31
El smbolo % ................................................................................................................................................... 31
4
Andrs Prez
El comando clc ............................................................................................................................................... 32
Algunas reglas bsicas de sintaxis ................................................................................................................. 32
EJERCICIOS 1 ...................................................................................................................................................... 33
CAPITULO 2. ALGORITMOS ......................................................................................................................... 35
COMANDO if ...................................................................................................................................................... 36
Comando if simple ......................................................................................................................................... 36
Comando if mltiple ...................................................................................................................................... 37
COMANDO for ................................................................................................................................................... 38
Comando for simple ...................................................................................................................................... 38
Comando for con especificacin de incremento ........................................................................................... 39
Anidamiento de comandos for ...................................................................................................................... 39
COMANDO while ............................................................................................................................................... 40
EJERCICIOS 2 ...................................................................................................................................................... 42
CAPITULO 3. M-Ficheros ............................................................................................................................. 44
FICHEROS SCRIPT ............................................................................................................................................... 46
Paso 1: acceder al editor ............................................................................................................................... 46
Paso 2: estructurar el fichero ........................................................................................................................ 47
Paso 3: guardar el fichero .............................................................................................................................. 47
Paso 4: ejecutar el fichero ............................................................................................................................. 48
Realmente que es un fichero script? ........................................................................................................... 49
FICHEROS DE FUNCIN ..................................................................................................................................... 51
Paso 1: acceder al editor ............................................................................................................................... 51
Paso 2: estructurar el fichero ........................................................................................................................ 51
Paso 3: guardar el fichero .............................................................................................................................. 53
Paso 4: ejecutar el fichero ............................................................................................................................. 53
Realmente que es un fichero de funcin? ................................................................................................... 54
EL COMANDO help ............................................................................................................................................ 54
COMPARATIVA ENTRE UN FICHERO SCRIPT Y UN FICHERO DE FUNCIN ........................................................ 55
EJERCICIOS 3 ...................................................................................................................................................... 57
CAPITULO 4. CLCULO SIMBLICO.............................................................................................................. 61
FUNCIONES ........................................................................................................................................................ 61
ECUACIONES ...................................................................................................................................................... 63
5
MATLAB Orientado a la matemtica aplicada
LMITES .............................................................................................................................................................. 66
DERIVADAS ........................................................................................................................................................ 67
INTEGRALES ....................................................................................................................................................... 68
EJERCICIOS 4 ...................................................................................................................................................... 71
CAPITULO 5. GRFICOS .............................................................................................................................. 75
GRFICOS EN 2D ................................................................................................................................................ 75
Graficando funciones del tipo y=f(x) ............................................................................................................. 75
Graficando curvas paramtricas en el plano ................................................................................................. 77
GRFICOS EN 3D ................................................................................................................................................ 79
Graficando funciones del tipo z=f(x,y) .......................................................................................................... 79
Graficando curvas paramtricas en el espacio .............................................................................................. 82
EJERCICIOS 5 ...................................................................................................................................................... 84
CAPITULO 6. ESTADSTICA .......................................................................................................................... 86
MEDIDAS DE LOCALIZACIN ............................................................................................................................. 86
Media aritmtica ........................................................................................................................................... 86
Media geomtrica ......................................................................................................................................... 87
Media armnica ............................................................................................................................................. 88
Media ajustada .............................................................................................................................................. 89
Mximo .......................................................................................................................................................... 89
Mnimo .......................................................................................................................................................... 90
Mediana ......................................................................................................................................................... 91
MEDIDAS DE DISPERSIN .................................................................................................................................. 91
Desviacin estndar ...................................................................................................................................... 91
Varianza ......................................................................................................................................................... 92
Rango ............................................................................................................................................................. 92
Rango intercuartil .......................................................................................................................................... 93
Percentil ......................................................................................................................................................... 93
Quantil ........................................................................................................................................................... 94
Oblicuidad ...................................................................................................................................................... 94
Curtosis .......................................................................................................................................................... 95
Tabla con las frecuencias absolutas y relativas ............................................................................................. 95
Desviacin absoluta ....................................................................................................................................... 96
6
Andrs Prez
Momentos centrales...................................................................................................................................... 97
GRUPOS DE DATOS ............................................................................................................................................ 97
Matriz de covarianza ..................................................................................................................................... 97
Matriz de correlacin lineal ........................................................................................................................... 98
Matriz de los coeficientes de correlacin ...................................................................................................... 98
Matriz con tabulacin-cruzada .................................................................................................................... 100
Resumen estadstico por grupo ................................................................................................................... 100
GRFICOS ESTADSTICOS ................................................................................................................................. 101
Grficos simples ........................................................................................................................................... 102
Lnea de ajuste de mnimos cuadrados ....................................................................................................... 103
Histograma .................................................................................................................................................. 104
Grfico de barras verticales ......................................................................................................................... 105
Grfico de barras horizontales .................................................................................................................... 106
Grfico de escaleras..................................................................................................................................... 107
Grfico de tallo ............................................................................................................................................ 108
Grfico de tarta ............................................................................................................................................ 109
Generacin de nmeros al azar ................................................................................................................... 110
Diagramas de distribuciones de probabilidad ............................................................................................. 111
EJERCICIOS 6 .................................................................................................................................................... 112
CAPTULO 7. OPTIMIZACIN ..................................................................................................................... 114
PROGRAMACIN LINEAL ................................................................................................................................. 114
Formato general de un programa lineal ...................................................................................................... 114
Minimizacin ............................................................................................................................................... 115
Maximizacin ............................................................................................................................................... 118
PROGRAMACIN CUADRTICA ....................................................................................................................... 121
EJERCICIOS 7 .................................................................................................................................................... 127
CAPTULO 8. MTODOS NUMRICOS ........................................................................................................ 130
RESOLUCIN DE ECUACIONES NO LINEALES ................................................................................................... 130
Mtodo de punto fijo .................................................................................................................................. 130
Mtodo de biseccin ................................................................................................................................... 132
Mtodo de Newton ..................................................................................................................................... 135
Mtodo de Euler .......................................................................................................................................... 137
7
MATLAB Orientado a la matemtica aplicada
Un mtodo hbrido: Newton-Biseccin ....................................................................................................... 139
Mtodo de la Falsa Posicin ........................................................................................................................ 142
Mtodo de la Secante .................................................................................................................................. 145
Comandos predefinidos en MATLAB ........................................................................................................... 147
INTERPOLACIN POLINOMIAL ........................................................................................................................ 149
Forma de Lagrange ...................................................................................................................................... 149
Forma modificada de Lagrange ................................................................................................................... 151
Forma baricntrica de Lagrange .................................................................................................................. 153
Forma baricntrica con nodos igualmente espaciados ............................................................................... 155
Forma de Newton ........................................................................................................................................ 156
Forma de Newton con nodos igualmente espaciados ................................................................................ 158
Comandos predefinidos en MATLAB ........................................................................................................... 161
EJERCICIOS 8 .................................................................................................................................................... 163
CAPTULO 9. COMPONENTES DE MATLAB ................................................................................................. 165
EL SOFTWARE BSICO MATLAB Y SUS HERRAMIENTAS ADICIONALES ........................................................... 165
MATLAB Report Generador ......................................................................................................................... 165
MATLAB Compiler Suite ............................................................................................................................... 165
MATLAB Runtime Server ............................................................................................................................. 165
MATLAB Web Server ................................................................................................................................... 165
Matriz VB ..................................................................................................................................................... 165
MATLAB Excel Builder .................................................................................................................................. 166
TOOLBOXES DE MATLAB DE APLICACIN EN MATEMTICA GENERAL .......................................................... 166
Symbolic Math ............................................................................................................................................. 166
Extended Symbolic Math ............................................................................................................................. 166
Database Toolbox ........................................................................................................................................ 166
Excel Link Toolbox........................................................................................................................................ 166
Statistics Toolbox ......................................................................................................................................... 166
Optimization Toolbox .................................................................................................................................. 166
Spline Toolbox ............................................................................................................................................. 166
Partial Differential Equation Toolbox .......................................................................................................... 167
Neural Network Toolbox ............................................................................................................................. 167
TOOLBOXES DE MATLAB DE ADQUISICIN DE DATOS .................................................................................... 167
8
Andrs Prez
Data Acquisition Toolbox ............................................................................................................................. 167
Instrument Control Toolbox ........................................................................................................................ 167
Curve Fitting Toolbox ................................................................................................................................... 167
TOOLBOXES DE MATLAB PARA PROCESADO DE SEALES .............................................................................. 167
Signal Processing Toolbox ........................................................................................................................... 168
Filter Desgin Toolbox ................................................................................................................................... 168
Communications Toolbox ............................................................................................................................ 168
Wavelet Toolbox .......................................................................................................................................... 168
System Identification Toolbox ..................................................................................................................... 168
TOOLBOXES DE MATLAB PARA PROCESADO DE IMGENES ........................................................................... 168
Image Processing Toolbox ........................................................................................................................... 168
Mapping Toolbox ......................................................................................................................................... 168
TOOLBOXES DE MATLAB EN EL REA FINANCIERA ......................................................................................... 169
Financial Toolbox ......................................................................................................................................... 169
Financial Time Series Toolbox ..................................................................................................................... 169
Financial Derivatives Toolbox ...................................................................................................................... 169
Garch Toolbox .............................................................................................................................................. 169
Datafeed Toolbox ........................................................................................................................................ 169
SIMULACIN DE SISTEMAS CON SIMULINK Y SUS HERRAMIENTAS ADICIONALES ......................................... 169
Simulink ....................................................................................................................................................... 169
Stateflow ...................................................................................................................................................... 170
Simulink Report Generator .......................................................................................................................... 170
Simulink Performance Tools ........................................................................................................................ 170
Requirements Management Interface ........................................................................................................ 170
Virtual Reality .............................................................................................................................................. 170
BLOCKSETS DE SIMULINK ................................................................................................................................ 170
DSP Blockset ................................................................................................................................................ 170
Communications Blockset ........................................................................................................................... 170
CDMA Reference Blockset ........................................................................................................................... 171
Fixed-Point Blockset .................................................................................................................................... 171
Dials & Gauges Blockset .............................................................................................................................. 171
Nonlinear Control Design Blockset .............................................................................................................. 171
9
MATLAB Orientado a la matemtica aplicada
Power System Blockset ................................................................................................................................ 171
Sym Mechanics Blockset.............................................................................................................................. 171
GENERACIN DE CDIGO DE SIMULINK ......................................................................................................... 171
Real-Time Workshop ................................................................................................................................... 171
Real-Time Workshop Embedded Coder ...................................................................................................... 171
Stateflow Coder ........................................................................................................................................... 172
IMPLEMENTACIN EN TARGETS ..................................................................................................................... 172
Developers Kit for Texas Instruments DSP ................................................................................................. 172
Motorola DSP Developers Kit. .................................................................................................................... 172
Xilinxs FPGA System Generator for Simulink .............................................................................................. 172
PROTOTIPAJE ................................................................................................................................................... 172
Real-Time Windows Target ......................................................................................................................... 172
xPC Target .................................................................................................................................................... 172
xPC Target Embedded Option ..................................................................................................................... 173
ANLISIS Y DISEO DE SISTEMAS DE CONTROL .............................................................................................. 173
Control System Toolbox .............................................................................................................................. 173
Fuzzy Logic Toolbox ..................................................................................................................................... 173
Robust Control Toolbox ............................................................................................................................... 173
-Analysis and Synthesis Toolbox ................................................................................................................ 173
LMI Control Toolbox .................................................................................................................................... 173
Model Predictive Control Toolbox ............................................................................................................... 173
Model-Based Calibration Toolbox ............................................................................................................... 173
BIBLIOGRAFA .......................................................................................................................................... 174
10
Andrs Prez
INTRODUCCIN
OBJETIVO
En el presente trabajo se pretende dar a conocer las aplicaciones bsicas de MATLAB en la matemtica
aplicada, y corresponde a un material de ayuda en un curso del software mencionado, orientado a los
estudiantes de Licenciatura en Ciencias Matemticas del el Decanato de Ciencias y Tecnologa de la UCLA. Con
ello se busca fomentar el uso de MATLAB como una herramienta alternativa para estos estudiantes a lo largo
de su carrera.
JUSTIFICACIN
Durante el desarrollo de la carrera Licenciatura en Ciencias Matemticas, se destaca la gran importancia del
modelado, simulacin y optimizacin de fenmenos reales que son objeto de estudio en asignaturas como:
estadstica, investigacin de operaciones, anlisis numrico, programacin no lineal, etc. y muchas otras reas
no solo de la matemtica, sino de las ciencias aplicada en general, que requieren un soporte computacional
para su compresin.
Es por esta razn que se considera vital ensear a los estudiantes de matemtica como utilizar el mdulo
bsico de MATLAB, para as fomentar su motivacin a cursar asignaturas de la matemtica aplicada y con ello
logren expandir su intelecto acadmico.
COMO UTILIZAR ESTE TUTORIAL?
Esta obra est dividida en nueve captulos. Los primeros tres corresponden a temas bsicos sobre el manejo de
MATLAB: manipulacin de variables vectoriales y matriciales, programacin estructurada y definicin de
M-Ficheros respectivamente.
Los captulos cuarto y quinto corresponden a: clculo simblico y grficos respectivamente.
En los captulos subsiguientes (sexto, sptimo y octavo) se dan algunos ejemplos en que MATLAB facilita el
estudio de la matemtica aplicada: funciones y procesamiento de datos estadsticos, tcnicas de optimizacin
lineal y no lineal y finalmente implementacin de mtodos numricos.
El ltimo captulo trata sobre los componentes de MATLAB: toolboxes y blocksets. Este tema se coloc al final
para que el lector pueda ahondar ms acerca de las aplicaciones del software.
En cada captulo se da la explicacin terica y ejemplos ilustrativos sobre el tpico tratado, adems de una lista
de ejercicios para que lector internalice lo aprendido, sin que ello le obligue a resolverlos para avanzar en los
captulos restantes. Cabe destacar que algunos ejemplos y/o problemas planteados en cada captulo se
formulan de manera que el lector aplique las tcnicas ilustradas en el mismo (diseando un algoritmo), pese a
que dichos problemas pudiesen ser resueltos de manera ms practica (empleando un comando predefinido
en MATLAB). El objetivo que se persigue es que el lector se adiestre en disear nuevas formas de revolver
problemas con MATLAB, y no sea dependiente de las funciones ya predefinidas.
11
MATLAB Orientado a la matemtica aplicada
CAPITULO 1. COMENZANDO A TRABAJAR CON
MATLAB
TPICOS ELEMENTALES
Qu es MATLAB?
MATLAB (abreviatura de MATrix LABoratory, laboratorio de matrices) es un software matemtico que ofrece
un entorno de desarrollo integrado (IDE) el cual permite el anlisis y la computacin matemticos interactivos
de forma sencilla con ms de 500 funciones matemticas, estadsticas y tcnicas implementadas, as como la
visualizacin de todo tipo de grficos de ingeniera y cientficos. Posee un lenguaje de programacin propio
(lenguaje M) y adems est disponible para las plataformas Unix, Windows y Mac OS X.
Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la
implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en
otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas
adicionales que expanden sus prestaciones, a saber: SIMULINK (plataforma de simulacin multidominio) y
GUIDE (editor de interfaces de usuario - GUI). Adems, se pueden ampliar las capacidades de MATLAB con las
cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques (blocksets).
Origen
MATLAB fue originalmente desarrollado por Cleve Moler, fundador de MathWorks Inc., con el objetivo de
proporcionar un acceso fcil al software matricial desarrollado en los proyectos de UNIX LINPACK (de LINear
equations PACKage) y EISPACK (de EIgenvalue Subroutines PACKage).
Versiones e historia
La primera versin, a finales de los aos 70, se escribi en FORTRAN, siendo la nica estructura de datos la
matriz. Posteriormente, en los aos 80, MATLAB fue rediseado en C. La versin 3 para MS-DOS desde
principios de los aos 90. En 1993 aparece la versin 4, para Windows 3.11, que ya incorpora la primera versin
del Simulink. Las versiones ms recientes se identifican con el nombre del ao, as: R2008a, R2008b, R2009a,
etc.
Hoy en da MATLAB es un estndar de facto en ingeniera y computacin cientfica. Se celebran congresos
monotemticos sobre sus aplicaciones y distintas empresas e instituciones venden sus toolboxes como third
parties o bien las publican en Internet con acceso libre.
Qu versin estamos utilizando en este tutorial?
A lo largo de esta obra, utilizaremos la versin MATLAB2007a.
12
Andrs Prez
ENTORNO DE TRABAJO DE MATLAB
La pantalla de entrada de MATLAB constituye el marco de trabajo general del programa. Los elementos ms
importantes de esta pantalla de inicio son los siguientes:
Comand Window (ventana de comandos): ejecuta las funciones MATLAB.
Comand History (historial de comandos): presenta una historia de todas las funciones introducidas en
la ventana de comandos y permite copiarlas y ejecutarlas.
Current Directory (directorio actual): muestra ficheros MATLAB y ejecuta operaciones de ficheros tales
como abrir y buscar contenido.
Help (ayuda): muestra y busca documentacin de toda la familia completa de productos MATLAB.
Workspace (espacio de trabajo): muestra y realiza cambios en el contenido del espacio de trabajo.
Array Editor: muestra contenido de arrays en formato de tabla y edita sus valores.
Editor: crea, edita y comprueba M-Ficheros (mas adelante hablaremos sobre el editor y los M-
Ficheros).
13
MATLAB Orientado a la matemtica aplicada
La ventana de comandos
La ventana de comandos es el camino principal para comunicarse con MATLAB. Aparece en el escritorio cuando
se inicia el programa y se utiliza para ejecutar funciones y todo tipo de operaciones. Las entradas a ejecutar se
escriben a continuacin del prompt >> y, una vez completadas, se pulsa Enter.
La ventana de historial de comandos
La ventana Comand History aparece cuando se inicia MATLAB, situada en la parte inferior derecha del
escritorio de MATLAB. Esta ventana muestra una relacin de las funciones utilizadas recientemente en la
ventana de comandos. Tambin muestra un indicador de comienzo de sesin.
14
Andrs Prez
La ventana de directorio actual
Su funcin es ver, abrir y hacer cambios en los ficheros del entorno de MATLAB. Esta ventana permite explorar
los directorios del ordenador en forma anloga a la del explorador u otras aplicaciones de Windows. Cuando se
llega al directorio deseado se muestran all contenidos. La ventana Current Directory permite ordenarlos por
fecha, tamao, nombre, etc.
La ventana de ayuda
MATLAB dispone de un sistema de ayuda en lnea bastante eficiente. En el panel de la izquierda del navegador
de la ayuda se selecciona el tema, y en el panel de la derecha se presenta la ayuda relativa al tema
seleccionado, siendo posible el uso de hipervnculos para navegar por su contenido. La parte izquierda del
panel de navegacin de la ayuda presenta en su zona superior una barra con las opciones Content (ayuda por
15
MATLAB Orientado a la matemtica aplicada
contenido), Index (ayuda por ndice alfabtico), Search (buscar ayuda por tema) y Favorites (temas de ayuda
favoritos).
NMEROS, OPERADORES Y VARIABLES
Se puede trabajar con diferentes tipos de nmeros y expresiones numricas, que abarcan todo el campo de los
nmeros enteros, racionales, reales, complejos, y se utilizan en argumentos de funciones.
Operaciones bsicas
Una de las primeras aplicaciones de MATLAB es su uso para la realizacin de operaciones aritmticas como si
se tratara de una calculadora convencional, pero con una importante ventaja sobre ella: la precisin en el
clculo. Las operaciones son realizadas bien en forma exacta o bien especificando al programa el grado de
precisin que desee. Los operadores aritmticos tienen la siguiente sintaxis:
x+y Suma
x - y Resta
x*y Multiplicacin
x/y Divisin
x^y Potenciacin
Operadores aritmticos.
Para que MATLAB ejecute las entradas que le indiquemos, estas deben ser tecleadas en la ventana de
comandos, justamente al lado del prompt >>, luego se pulsa Enter para visualizar la salida.
Creacin de variables
MATLAB no requiere ningn tipo de comando para declarar variables, sencillamente crea la variable mediante
la asignacin directa de su valor.
EJEMPLO: para hacer el cmputo 1/2+1/3 escribimos en la ventana de comandos
>> 1/2+1/3
luego pulsamos Enter y MATLAB muestra el resultado deseado
ans =
0.8333
16
Andrs Prez
EJEMPLO: el clculo del ejemplo anterior lo podemos hacer utilizando
variables. Escribimos en la ventana de comandos
>>x=1/2
pulsamos Enter y se produce
x =
0.5000
anlogamente
>> y=1/3
>>y =
0.3333
ahora calculemos z=x+y
>>z=x+y
z =
0.8333
como la variable z almacena el valor 0.8333, si tipiamos
>>z
y luego pulsamos Enter, MATLAB nos muestra
z =
0.8333
Esto es as, pues el valor asignado a una variable es permanente, hasta
que no se cambie de forma expresa o hasta que no se salga de la presente
sesin de MATLAB, por ejemplo
>>z=10.2
z =
10.2
17
MATLAB Orientado a la matemtica aplicada
Cualquier entrada que tenga punto y coma a su derecha se ejecuta al pulsar Enter pero no se ve su salida, sin
que esto afecte la operacin realizada.
Funciones matemticas elementales de MATLAB
Un resumen de las funciones elementales del mdulo bsico de MATLAB se muestra en la siguiente tabla
SINTAXIS EXPLICACIN
sqrt(x) Raz cuadrada
exp(x) Exponencial
log(x) Logaritmo natural (neperiano)
abs(x) Valor absoluto
factorial(n) Factorial
rem(a,b) Resto de la divisin a/b
sin(x), sinh(x) Seno y seno hiperblico
cos(x), cosh(x) Coseno y coseno hiperblico
tan(x), tanh(x) Tangente y tangente hiperblico
cot(x), coth(x) Cotangente y cotangente hiperblico
sec(x), sech(x) Secante y secante hiperblico
csc(x), csch(x) Cosecante y cosecante hiperblico
EJEMPLO: la sentencia
>>r=2^(1/3);
hace que a la variable r se le asigne el valor de la raz cbica de dos, pero no se muestra la asignacin.
Verifiquemos que la MATLAB si hizo tal asignacin
>>r
r =
1.2599
18
Andrs Prez
asin(x), asinh(x) Arco seno y arco seno hiperblico
acos(x), acosh(x) Arco coseno y arco coseno hiperblico
atan(x), atanh(x) Arco tangente y arco tangente hiperblico
acot(x), acoth(x) Arco cotangente y arco cotangente
hiperblico
asec(x), asech(x) Arco secante y arco secante hiperblico
acsc(x), acsch(x) Arco cosecante y arco cosecante hiperblico
Funciones matemticas elementales.
EJEMPLO:
>> abs(-1)
ans =
1
>> tan(3.14/4)
ans =
0.9992
>> atan(0.9992)
ans =
0.7850
>> exp(1)
ans =
2.7183
>> sqrt(2)
ans =
1.4142
19
MATLAB Orientado a la matemtica aplicada
Algunos nmeros especiales
Existe un grupo importante de nmeros irracionales y reales en general que por su utilizacin merecen trato
especial. MATLAB incorpora los siguientes:
SINTAXIS EXPLICACIN
pi Nmero
exp(1) Nmero
i Unidad imaginaria
Inf Infinito. Se produce con operaciones como 1/0
NaN Indeterminacin. Se produce con operaciones como
0/0 o Inf/Inf
realmin Menor nmero real positivo utilizable
realmax Mayor nmero real positivo utilizable
Nmeros especiales.
EJEMPLO:
>> pi
ans =
3.1416
>> i
ans =
0 + 1.0000i
>> realmin
ans =
2.2251e-308
20
Andrs Prez
VECTORES
Para representar a un vector de n elementos se puede definir en MATLAB una variable de las siguientes
formas:
o Separando los componentes con comas
v=[v1,v2,v3,,vn]
o Separando los componentes con espacios en blanco
v=[v1 v2 v3 vn]
Hay formas prcticas de definir ciertos vectores, sin necesidad de escribir explcitamente todos sus elementos.
Se presentan en la tabla siguiente
SINTAXIS EXPLICACIN
variable=[a:b] Define el vector cuyos primero y ltimo
elementos son a y b, respectivamente, y los
elementos intermedios se diferencian en una
unidad
variable=[a:s:b] Define el vector cuyos primero y ltimo
elementos son a y b, y los elementos
EJEMPLO:
>> w=[1,2,1,2,1,9]
w =
1 2 1 2 1 9
EJEMPLO:
>> w=[1 2 1 2 1 9]
w =
1 2 1 2 1 9
21
MATLAB Orientado a la matemtica aplicada
intermedios se diferencian en la cantidad s
especificada por el incremento
variable=linspace(a,b,n) Define el vector cuyos primero y ltimo
elementos son a y b, y que tiene en total n
elementos uniformemente espaciados entre
s
variable=logspace(a,b,n) Define el vector cuyos primero y ltimo
elementos son especificados y que tiene en
total n elementos en escala logartmica
uniformemente espaciados entre s
Formas de definir vectores.
En MATLAB tambin se pueden definir vectores fila y vectores columna. Un vector columna se obtiene
separando sus elementos por punto y coma.
EJEMPLO:
>>G=[1:0.2:2]
G =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
EJEMPLO:
>>h=[0.2;4;5;10]
h =
0.2000
4.0000
5.0000
10.0000
22
Andrs Prez
Asimismo podemos seleccionar un elemento de un vector o un subconjunto de elementos. La tabla siguiente
nos lo explica
SINTAXIS EXPLICACIN
lenght(x) Devuelve la longitud del vector x
x(n) Devuelve el ensimo elemento del vector x
x(a:b) Devuelve los elementos del vector x situados entre el
a-simo y el b-simo, ambos inclusive.
x(a:p:b) Devuelve los elementos del vector x situados entre el
a-simo y el b-simo (a<b), ambos inclusive, pero
separados de p en p unidades (p>0)
x(b:p:a) Devuelve los elementos del vector x situados entre el
b-simo y el a-simo (b>a), ambos inclusive, pero
separados de p en p unidades y empezando por el b-
simo (p<0)
Opciones para manipular vectores.
EJEMPLO:
>> z=[1 0 2 0 3 0 4 0 5 0];
>> z(4)
ans =
0
>> z(1:2:10)
ans =
1 2 3 4 5
>> z(10:-2:1)
ans =
0 0 0 0 0
23
MATLAB Orientado a la matemtica aplicada
MATRICES
En MATLAB se definen las matrices colocando entre corchetes todos sus vectores fila separados por punto y
coma
Una vez que una variable matricial ha sido definida, MATLAB habilita muchos caminos para insertar, extraer,
reenumerar y manipular en general sus elementos. Para ello consultemos la siguiente tabla
SINTAXIS EXPLICACIN
det(a) Determinante de la matriz A
inv(A) Devuelve la matriz inversa de A
A Devuelve la matriz transpuesta de A
rref(a) Matriz escalonada reducida por filas de Gauss-Jordan
de la matriz A
jordan(a) Forma cannica de Jordan de la matriz A
tril(A) Devuelve la parte triangular inferior de la matriz A
triu(A) Devuelve la parte triangular superior de la matriz A
flipud(A) Devuelve la matriz cuyas filas estn colocadas en
orden inverso (de arrida hacia abajo) a las filas de A
fliplr(A) Devuelve la matriz cuyas columnas estn colocadas
en orden inverso (de izquierda a derecha) a las de A
diag(A) Extrae la diagonal de la matriz A como vector
EJEMPLO:
>> matrix=[1 2 3;4 5 6;7 8 9]
matrix =
1 2 3
4 5 6
7 8 9
24
Andrs Prez
columna
reshape(A,m,n) Devuelve la matriz de orden mn extrada de la
matriz A tomando elementos consecutivos de A por
columnas
size(A) Devuelve el orden (tamao) de la matriz A
diag(V) Crea una matriz diagonal con el vector v en la
diagonal
eye(n) Crea la matriz identidad de orden n
eye(m,n) Crea la matriz de orden mn con unos en la diagonal
principal y ceros en el resto
zeros(m,n) Crea la matriz nula de orden mn
ones(m,n) Crea la matriz de orden mn con todos sus elementos
iguales a 1
pascal(n) Crea una matriz nxn, la cual es una extraccin del
Tringulo de Pascal
magic(n) Crea una matriz mgica, en la cual todas las filas,
columnas y diagonales suman el mismo valor
rosser Devuelve una matriz de valores propios de prueba
A(m,n) Define el elemento
0 1
2 3
0 9
4 3
0 8
=
8 7 1 2
0 0 5
6 1 1
=
1 2 1 3
9 2 0 4
0 6 5
0 8
1 3
0 4
=
2 9
5 0
8 2 3
1 0
0 5 8
7 0
7 2
0 1
=
0 1 5
2 5 1
Calcule
o det ()
o
1
o det()
1
o (
1
)
1
o (1: 3,1: 4) +(1: 3,1: 4)
o
o
o +
o +(1: 2,1: 5)
o (
1
)
o (1: 3,1: 2) +(1: 2,1: 3)
o ( +)
2
2(3: 4,3: 4)
o
donde es la matriz cuyos elementos son iguales a 1
o
donde es la matriz cuyos elementos son iguales a 0
o
o
34
Andrs Prez
CAPITULO 2. ALGORITMOS
Hasta el momento los algoritmos que hemos programado en MATLAB tienen estructura
secuencial, es decir, hemos tipiado sentencias en la ventana de comandos para que se
ejecuten en el orden escrito (desde arriba hacia abajo). No obstante, en MATLAB tambin se
pueden disear algoritmos con estructura selectiva (bifurcaciones) y estructura repetitiva
(bucles).
Antes de explicar dichas estructuras es necesario conocer dos nuevos tipos de operadores, los
cuales citaremos en los siguientes cuadros
SINTAXIS EXPLICACIN
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
== Igual que
~= Distinto de
Operadores relacionales.
Mientras que para las operaciones lgicas tenemos
SINTAXIS EXPLICACIN
~A Negacin lgica de A
A&B Conjuncin lgica de A y B
A|B Disyuncin lgica de A y B
xor(A,B) Disyuncin lgica exclusiva de A y B
Operadores lgicos.
Los operadores lgicos ofrecen un camino para combinar o negar expresiones relacionales.
35
MATLAB Orientado a la matemtica aplicada
COMANDO if
Las bifurcaciones permiten la ejecucin de una o ms sentencias, dependiendo del
cumplimiento de una condicin. A continuacin presentamos dos tipos.
Comando if simple
Ejecuta una o ms sentencias dependiendo del cumplimiento de una condicin. La sintaxis es
if condicin
sentencias
end
Tngase en cuenta que la condicin debe ser una expresin lgica, la cual generalmente es un
combinacin de operadores relacionales y lgicos.
Notar que en ejemplo anterior, no aparece el prompt en las lineas 5, 6 y 7. Esto es propio del
bloque de la sentencia if.
Aqu se teclea el bloque de sentencias, las cuales se
ejecutarn siempre que la condicin sea verdadera
EJEMPLO: crearemos una matriz 33 y si es invertible calculamos su inversa
>> A=[ 8 1 6
3 5 7
4 9 2];
>> if det(A)~=0
disp('La matriz es invertible y su inversa es')
inv(A)
end
La matriz es invertible y su inversa es
ans =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
36
Andrs Prez
Comando if mltiple
A diferencia del anterior, este comando clasifica las sentencias en varios bloques, adjudicando
a cada bloque una condicin, de modo que se ejecutar un solo bloque si la condicin
respectiva es verdadera. La sintaxis es
if condicion1
sentencias 1
elseif condicion2
sentencias 2
elseif condicion3
sentencias 3
else
sentencias 4
end
Debe notarse que las condiciones 1, 2, 3 y 4 son mutuamente excluyentes, de modo que slo
se ejecutar un bloque de sentencias (1, 2, 3 o 4 disyuncin exclusiva).
Aqu se teclea el bloque N1 de sentencias, las cuales
se ejecutarn siempre que la condicin1 sea cierta
Aqu se teclea el bloque N2 de sentencias, las cuales
se ejecutarn siempre que la condicin2 sea cierta
Aqu se teclea el bloque N3 de sentencias, las cuales
se ejecutarn siempre que la condicin3 sea cierta
Aqu se teclea el bloque N4 de sentencias, las cuales se
ejecutarn siempre que las condiciones 1, 2, 3 sean falsas
EJEMPLO: crearemos un matriz 33. Deseamos saber si es invertible o no, y en
caso afirmativo, visualizar su inversa
>> B =[1 2;
4 8];
>> if det(B)~=0
disp('La matriz es invertible')
inv(B)
else
disp('La matriz no es invertible')
end
La matriz no es invertible
37
MATLAB Orientado a la matemtica aplicada
EJEMPLO: calcularemos la suma de los primeros 100 nmeros naturales
>> sum=0;
>> for i=1:100
sum=sum+i;
end
>> sum
sum =
5050
COMANDO for
Los bucles permiten la ejecucin de una o ms sentencias, en forma repetida. A continuacin
presentamos dos tipos.
Comando for simple
El comando for repite un conjunto de sentencias un nmero predeterminado de veces. La
sintaxis es
for i=a:b
entradas
end
La expresin i=a:b significa que las entradas se ejecutarn tantas veces la variable i recorra de
uno en uno los valores desde a (valor inicial) hasta b (valor final).
Una sintaxis muy tpica es la siguiente
for i=1:n
entradas
end
en este caso las sentencias se ejecutarn tantas veces la variable i recorre de uno en uno los
valores de 1 hasta n, es decir, se ejecutarn n-veces.
Este algoritmo calcula la suma. Ntese que
tipiamos >>sum=sum+i; (con punto y coma) en
lugar de >>sum=sum+i (sin punto y coma) para
que MATLAB no imprimiera la lista de las cien
ejecuciones.
Ahora s, visualizamos el ltimo valor de la variable
sum, que almacena la suma 1+2+3+100
38
Andrs Prez
Comando for con especificacin de incremento
Esta es una forma ms general de la sentencia for. La sintaxis ms comn es
for i=1:c:n
sentencias
end
aqu las sentencias se ejecutarn tantas veces la variable i recorre los valores desde 1 hasta n,
en incremento de c (de c en c).
Anidamiento de comandos for
Consiste en un bucle dentro de otro. La sintaxis ms comn es
for i=1:m
for j=1:n
sentencias
end
end
en este caso, las sentencias se ejecutn mn veces.
EJEMPLO: calcularemos la suma de los primeros 50 nmeros pares.
>> sump=0;
>> for i=1:100
if rem(i,2)==0
sump=sump+i;
end
end
>> sump
sump =
2550
39
MATLAB Orientado a la matemtica aplicada
Advertimos al lector que el uso del comando for no siempre es la mejor opcin. Por ejemplo, si
queremos sumar dos matrices de 50x50 podramos definir una matriz de orden 50x50 y luego
emplear dos comando for anidados para suma elemento por elemento. No obstante la
operacin ser ms rpida si sumamos directamente las matrices. Invitamos al lector a
comprobar esto.
COMANDO while
Este comando es una especia de mezcla entre los comandos for e if. Al igual que el comando
for, se encarga de ejecutar una o ms sentencias en forma repetida. La diferencia es que en el
comando while no se indica la cantidad de iteraciones a hacer, ms bien se indica repetir
mientras se cumpla cierta condicin. La sintaxis es
while condicin
sentencias
end
EJEMPLO: a continuacin definiremos una matriz de orden 4x6 y calcularemos la
suma de sus coeficientes
>>M =[8 7 10 10 5 7;
9 2 10 5 9 1;
2 4 2 8 8 9;
9 6 10 2 10 9];
>> sum=0;
>> for i=1:4
for j=1:6
sum=sum+M(i,j);
end
end
>> sum
sum =
162
40
Andrs Prez
Cabe destacar que en el anterior algoritmo, en principio, no se conoca de antemano la
cantidad de iteraciones a realizar, por lo cual no era viable emplear un comando for simple.
Esta es una de las ventajas del comando while.
EJEMPLO: una consecuencia de la Propiedad Arquimediana es que dado un nmero
real > 0, existe un entero > 0 tal que
1
< . Elaboraremos un algoritmo que
encuentre un entero > tal que
1
< 0,123456
>> a=0.123456;
>> n=1;
>> while 1/n>=a
n=n+1;
end
>> n
n =
9
41
MATLAB Orientado a la matemtica aplicada
EJERCICIOS 2
1. Respecto a cada una de las siguientes matrices
2 6
4 0
1 4 3
1 0
5 3 7
0 0 1
2 1 9
3 0 6
1 9 0 1
5 7 3 5
1 4
2 4
2 3 4
0 2
3 7
9 2 1
4 0
1 0
estudie si es invertible o no. En caso afirmativo visualizar su inversa, en caso contrario
visualizar su determinante.
2. Calcule la suma de los nmeros del 1 al 1000.
3. Calcule la suma de los nmeros impares del 1 al 100.
4. Considere la siguiente sucesin infinita {
} , donde
= (1)
,
a) Visualice los primeros 10 trminos.
b) Calcule la suma de los primeros 111 trminos.
c) Calcule la suma de los primeros 10001 trminos.
d) Calcule la suma de los primeros 1000001 trminos.
5. Defina la matriz = (
)
44
, como
=
4 9 2 4 3
7 1 5
3 2 0
3 4 1 1 6
0 3 8 9 1 2 3 2
Para cada coeficiente
)
24
donde
=
1
3
=1
; = 1, 2 ; = 1, 2,3, 4
10. Considere la matriz = (
)
44
, dada como
=
2 5 8
3 0
7 1
0 2
9 2 1
0 6
8 3
1 1 3
Calcule
(, )
4
=1
4
=1
11. A continuacin damos una lista de funciones no acotadas y un nmero positivo
a) () =
2
, = 52
b) () = 1 , = 365
c) () = , = 27
d) () = (), = 100
e) () = (), = 432
Para cada funcin halle un entero positivo tal que |()| > .
12. Cada uno de los siguientes polinomios tiene una nica raz entera positiva
a)
2
45 94
b)
2
26 120
c)
3
+7
2
84 540
d)
4
51
3
721
2
2181 1512
e)
4
87
3
1153
2
3441 2376
Halle la raz entera positiva de cada polinomio.
43
MATLAB Orientado a la matemtica aplicada
CAPITULO 3. M-Ficheros
Hay problemas en los cuales se necesita tipiar una enorme lista de sentencias (o lneas de
cdigo) en la ventana de comandos, dicho algoritmo recibe el nombre de programa principal.
Los M-Ficheros (o simplemente ficheros) son archivos en los que podemos implementar
subprogramas para que sean utilizados desde el programa principal. Veamos el siguiente
esquema para comprender
Ejecutar
Ejecutar
PROGRAMA
PRINCIPAL
Subprograma 1
Subprograma 2
44
Andrs Prez
PROBLEMA 1: consideremos las siguientes matrices
3 1 6
2 3 2
7 8 1
,
4 3 5
1 2 7 7
9 2 9
,
7 8 1 1
9 8 7
1 3 2 1
9 0 2
2 4 6
1 4 8
,
2 2 3
4 5 3 2
1 7 9 8
,
7 1 7
1 4 4
2 3 9
Para cada una de ellas queremos un informe que nos muestre
La suma de los coeficientes
El producto de los coeficientes
Los M-Ficheros son de dos tipos: ficheros script y ficheros de funcin. En el presente captulo
plantaremos dos problemas, los cuales resolveremos definiendo un fichero script y un fichero
de funcin respectivamente.
El cdigo (o algoritmo) para obtener el informe de la primera matriz es
>> A=[-3 1 6;-2 3 2;7 -8 -1];
>> SUM=0;
>> PROD=1;
>> for i=1:3
for j=1:3
SUM=SUM+A(i,j);
PROD=PROD*A(i,j);
end
end
>> SUM
SUM =
5
>> PROD
PROD =
12096
45
MATLAB Orientado a la matemtica aplicada
O sea, para estudiar cada matriz necesitamos escribir 11 lneas de cdigo. Luego en total, para
obtener el informe de las 6 matrices tendramos que escribir nada ms y nada menos que 6x11
= 66 lneas de cdigo.
Afortunadamente MATLAB nos ofrece la forma de simplificar este trabajo, implementando un
subprograma en un M-Fichero, el cual realice el estudio de cada matriz cada vez que se lo
indiquemos en la ventana de comandos (programa principal). A continuacin definiremos un
fichero script para resolver el problema 1. Ms adelante plantearemos otro problema para
resolverlo mediante un fichero de funcin.
FICHEROS SCRIPT
Los ficheros script son el tipo de M-Ficheros ms fciles de definir. Un fichero script (o script)
no tiene explcitamente argumentos de entrada ni de salida. Est formado por comandos de
MATLAB que se ejecutan en una forma preestablecida y opera con datos existentes en el
espacio de trabajo o con nuevos datos creados por el propio script. Cualquier variable que se
cree mediante un script permanecer en el espacio de trabajo y podr utilizarse en clculos
posteriores. Sigamos los siguientes pasos para crear un script que resuelva el problema 1
Paso 1: acceder al editor
En el men File, se selecciona New y luego M-File. Seguidamente se mostrar el editor
en el cual definiremos nuestro fichero script.
46
Andrs Prez
Paso 2: estructurar el fichero
A continuacin escribimos en el editor
%ESTE SUBPROGRAMA CALCULA DE UNA MATRIZ 3X3:
% 1)la suma de sus coeficientes
% 2)el producto de sus coeficientes
SUM=0;
PROD=1;
for 1=1:3
for j=1:3
SUM=SUM+A(i,j);
PROD=PROD*A(i,j);
end
end
SUM
PROD
Paso 3: guardar el fichero
Todo fichero debe ser almacenado en disco antes de utilizarse. Esto se hace utilizando la
opcin Save as del men File, seleccionando el lugar donde se guardar y proporcionando el
nombre del fichero en cuestin.
A nuestro fichero script le llamamos infomatriz, y qued de esta forma
Lneas de comentarios: estas lneas
describen para que sirve el
subprograma. Aunque son opcionales,
resultan muy tiles para proporcionar
informacin sobre el mismo en cuestin
Cuerpo: esta es la parte que contiene el cdigo
del subprograma que realiza las operaciones
especificadas. Dicho cdigo puede contener
cualquier comando de MATLAB
47
MATLAB Orientado a la matemtica aplicada
Paso 4: ejecutar el fichero
Un fichero definido por el usuario se utiliza de la misma forma que un comando predefinido en
MATLAB, desde la ventana de comandos o desde otro fichero. Obviamente, antes de usarlo
debe estar guardado.
Nos dirigimos ahora a la ventana de comandos para obtener el informe de la primera matriz
mediante el fichero infomatriz
PROBLEMA 1 (continuacin): para obtener el informe de la primera matriz
mediante el fichero infomatriz tipiamos
>> A=[-3 1 6;-2 3 2;7 -8 -1]; %primera matriz
>> infomatriz
SUM =
5
PROD =
12096
para obtener el informe de las matrices restantes procedemos de forma similar
>> A=[4 3 5;-1/2 7 -7;9 -2 9]; %segunda matriz
>> infomatriz
SUM =
27.5000
PROD =
-238140
>> A=[-7/8 -1 1;9 8 -7;1/3 -3 -9]; %tercera matriz
>> infomatriz
SUM =
-2.5417
PROD =
-3969
48
Andrs Prez
As, ya no es necesario escribir 66 lneas de cdigo en la ventana de comandos para estudiar las
6 matrices, hemos optimizado nuestro trabajo utilizando slo 2x6 +13= 25 lneas de cdigo (el
cdigo de la ventana de comandos mas el cdigo del fichero). Adems, este fichero script lo
podemos utilizar posteriormente.
Cabe resaltar la siguiente observacin: todas las matrices del problema 1 eran de orden 3x3, lo
que nos permiti utilizar el script infomatriz para estudiar cada una de ellas.
Realmente que es un fichero script?
Hasta ahora los comandos en MATLAB que hemos visto se ejecutan en la ventana de
comandos. Sin embargo, la utilizacin de la ventana de comandos se restringe generalmente a
la ejecucin de un nmero pequeo de sentencias. En caso contrario, cuando el nmero de
>> A=[-9 0 2;-2 4 6;1 4 -8]; %cuarta mariz
>> infomatriz
SUM =
-2
PROD =
0
>> A=[2 -2 3;-4 5/3 2;1 -7 -9/8]; %quinta matriz
>> infomatriz
SUM =
-4.4583
PROD =
1260
>> A=[7 -1 7;-1 4 4;2 -3 -9]; %sexta matriz
>> infomatriz
SUM =
10
PROD =
42336
49
MATLAB Orientado a la matemtica aplicada
sentencias es demasiado elevado (como el algoritmo para resolver el problema 1), esta
metodologa no es apropiada.
El problema proviene, bsicamente, de que la ventana de comandos no es suficientemente
interactiva, los comando no pueden ser guardados y ejecutados de nuevo a peticin del
usuario. Esto implica que cada vez que se pulsa la tecla Enter slo se ejecuta el ltimo
comando, y todo lo anterior permanece inalterable. Si se necesita realizar alguna correccin o
cambio sobre alguno de esos comandos previamente ejecutados, ser necesario volver a
escribirlos y ejecutarlos de nuevo de uno en uno.
Otra forma diferente de ejecutar comandos en MATLAB es crear un fichero script con las
lneas de cdigo para ejecutarlas posteriormente (es decir implementando un subprograma en
MATLAB). Cuando se ejecuta este fichero en la ventana de comandos, las sentencias que
contiene son ejecutadas en el orden en que aparecen en el fichero. Adems, si fueran
necesarias correcciones o cambios posteriores, slo habra que editar el fichero y ejecutarlo de
nuevo.
A continuacin modificaremos el problema 1 y lo resolveremos.
PROBLEMA 2: consideremos las siguientes matrices
0
5
9
4
7
8
,
5 3
4 1 8
, ( 5 9 9 8 4 7 5 6 )
9 7 3
3 0 8
7 9 4
,
1 4
3
7
4
,
3 1
9 0
5 7
7 3
4 4
8 9
0 9
1 0
6 1
Para cada una de ellas queremos un informe que nos muestre
La suma de los coeficientes
El producto de los coeficientes
50
Andrs Prez
Lo que se pide en este nuevo problema es lo mismo en el caso del problema 1, sin embargo,
no podemos utilizar el fichero scritp infomatriz pues este solo se aplica para matrices 3x3, y
como podemos ver el problema 2 nos plantea matrices no cuadradadas y hasta
unidimensionales (la nica matriz 3x3 es la cuarta).
Podramos modificar el scritp infomatriz de manera que pueda hacer el estudio de cualquier
matriz (cuadrada, no cuadrada y unidimensional), bastara cambiar los ndices de los bucles a
m (nmero de filas) y n (nmero de columnas) respectivamente
for 1=1:3
for j=1:3
SUM=SUM+A(i,j);
PROD=PROD*A(i,j);
end
end
y de esta forma , por ejemplo, para estudiar la primera matriz debemos tipiar en la ventana de
comandos
>>m=3;
>>n=2 ;
>>A=[0 4;-5 -7;9 8]
Sin embargo, esta nueva estructura nos obliga a considerar implcitamente a m,n, y A como
argumentos de entrada, lo cual hace ms complejo su uso. Es por ello que MATLAB ofrece otro
tipo de M-Fichero: fichero de funcin.
FICHEROS DE FUNCIN
Un fichero de funcin es prcticamente un fichero script pero ms sofisticado. Su diferencia
principal con el script es que si tiene explcitamente argumentos de entrada y salida. Lo
ficheros de funcin, al igual que los script, estn formado por comandos de MATLAB que se
ejecutan en una forma preestablecida. Los pasos para resolver el problema 2 con un fichero de
funcin son similares al caso script:
Paso 1: acceder al editor
Recurdese que en el men File, se selecciona New y luego M-File. Seguidamente se mostrar
el editor.
Paso 2: estructurar el fichero
A continuacin escribimos en el editor
51
MATLAB Orientado a la matemtica aplicada
function[SUM,PROD]=estudiomatriz(A,m,n)
%ESTE SUBPROGRAMA ESTUDIA UNA MATRIZ
%ARGUMENTOS DE ENTRADA:
%A: matriz a estudiar
%m: numero de filas
%n: numero de columnas
%ARGUMENTOS DE SALIDA:
%SUM: suma de los coeficientes de A
%PROD: producto de los coeficientes de A
SUM=0;
PROD=1;
for i=1:m
for j=1:n
SUM=SUM+A(i,j);
PROD=PROD*A(i,j);
end
end
NOTA: la forma general que tiene la lnea de definicin es
function[argumentos_de_salida]=nombre_funcion(argumentos_de_entrada)
El nombre puede estar formado por letras, dgitos y el carcter subrayado. Las reglas para el
nombre de este tipo de M-Fichero son las mismas que para la construccin de nombres de
La palabra
function debe
ser la primera
palabra
tecleada en
minscula
Lista de
argumentos
de salida
encerrados
entre
corchetes
Nombre
de la
funcin
Lista de
argumentos
de entrada
encerrados
entre
parntesis
Lnea de definicin: esta lnea indica el nombre del
fichero y los argumentos de entrada y salida
Lnea H1: esta lnea de comentario contiene el
nombre y una descripcin corta del fichero
Lneas de texto de ayuda: estas nos ofrecen
informacin sobre cules son los argumentos de
entrada y salida del fichero
Cuerpo: esta es la parte que contiene el cdigo que
realiza las operaciones especificadas
52
Andrs Prez
variables. Se recomienda evitar usar para este propsito nombres de funciones ya predefinidas
en MATLAB (como sin, cos, sqrt, etc) as como nombres de variables ya predefinidas por el
usuario o internamente por MATLAB.
Paso 3: guardar el fichero
El procedimiento es el mismo en caso del fichero script. A nuestro fichero de funcin le
llamamos estudiomatriz, y qued de esta forma
Paso 4: ejecutar el fichero
PROBLEMA 2 (continuacin): tipiamos
>> A=[0 4;-5 -7;9 8]; %primera matriz
>> [SUM,PROD]=estudiomatriz(A,3,2)
SUM =
9
PROD =
0
53
MATLAB Orientado a la matemtica aplicada
Realmente que es un fichero de funcin?
Sabemos que una funcin matemtica y=f(x) asocial un nmero f(x) (variable dependiente) a
cada nmero x (variable independiente). Cuando se introduce un valor x (entrada) en la
expresin de la funcin, se obtiene un valor y (salida).
Existen muchas funciones que estn ya predefinidas en MATLAB y que pueden ser utilizadas en
expresiones simplemente tecleando su nombre junto con el argumento de entrada como por
ejemplo las sunciones sin(x), cos(x), exp(x) y sqrt(x).
Frecuentemente, a la hora de programar, existe la necesidad de operar con funciones distintas
que no estn predefinidas (como el caso de obtener estudiar las matrices del problema 2).
Este problema se puede resolver creando un M-Fichero que sirva como una funcin. Tal M-
Fichero recibe el nombre de fichero de funcin. En forma esquemtica, este tipo de fichero se
comporta de la siguiente forma
donde la entrada y la salida pueden estar compuestas por una o ms variables (escalares,
vectoriales o matriciales).
EL COMANDO help
Antes de utilizar un fichero scirpt o un fichero de funcin, se debe conocer todos los aspectos
del mismo, como por ejemplo para que sirve. Puede suceder que el usuario, una vez definido
un fichero, no recuerde exactamente que trabajo realiza. Para solventar este problema est el
comando help.
Fichero de funcin ENTRADA SALIDA
PROD =
21
>> A=[-3 1 -7 -3 0 9;9 0 4 4 1 0;5 7 8 9 6 1];%sexta matriz
>> [SUM,PROD]=estudiomatriz(A,3,6)
SUM =
51
PROD =
0
54
Andrs Prez
Con el anterior ejemplo queda clara la importancia de las lneas de comentario hechas en los
ficheros.
COMPARATIVA ENTRE UN FICHERO SCRIPT Y UN
FICHERO DE FUNCIN
Algunas similitudes y diferencias son las siguientes:
Ambos son archivos con extensin .m (por tal razn reciben el nombre de M-Ficheros).
En un fichero script no es obligatorio indicar los argumentos de entrada y salida. En
cambio en un fichero de funcin si es necesario, y precisamente se hace en la lnea de
definicin.
EJEMPLO: si queremos consultar que hace el fichero infomatriz tipiamos
> >> help infomatriz
ESTE SUBPROGRAMA CALCULA DE UNA MATRIZ 3X3:
1)la suma de sus coeficientes
2)el producto de sus coeficientes
similarmente para el fichero estudiomatriz
>> help estudiomatriz
ESTE SUBPROGRAMA ESTUDIA UNA MATRIZ
ARGUMENTOS DE ENTRADA:
A: matriz a estudiar
m: numero de filas
n: numero de columnas
ARGUMENTOS DE SALIDA:
SUM: suma de los coeficientes de A
PROD: producto de los coeficientes de A
55
MATLAB Orientado a la matemtica aplicada
Los ficheros script pueden usar variables definidas en el espacio de trabajo. Por el
contrario, para usar una variable definida en el espacio de trabajo dentro de un fichero
de funcin, dicha variable debe estar indicada como argumento de entrada del mismo.
Cualquier variable que se cree en un script, permanecer en el espacio de trabajo. En
un fichero de funcin solamente las variables definidas como argumentos de salida,
permanecern en el espacio de trabajo.
Si se quiere resolver un problema complejo, definir un script puede ser muy largo y el
cdigo se torna engorroso. En cambio puede ser til descomponer el cdigo del script
en una o mas funciones (definiendo ficheros de funcin) que sean llamadas desde un
script compuesto justamente de ocas lneas de cdigo.
Los ficheros script son ms fciles de definir que los ficheros de funcin.
Al momento de usar un fichero de funcin hay libertad de nombrar los argumentos de
entrada y de salida (ntese que cuando empleamos el fichero estudiomatriz en la
tercera matriz no le dimos nombre a esta ltima como A, simplemente la escribimos
directamente como argumento de entrada). En cambio, el uso de un fichero script nos
obliga nombrar los argumentos de entrada de acuerdo a como sern usados en el
script (por cierto que estos aspectos son implcitos).
56
Andrs Prez
EJERCICIOS 3
1. Considere la siguientes matrices
4 0 1
5 4 9
2 3 8
,
7 2 8
1/7 0 3
3 1 9
,
9 4 1
1 3 0
9 0 2
4 2 5
9 9 6
0 3 1
,
7 1 2
1 8 9
3 5 3
,
1 7 9
7 3 1
9 3 5
Para cada matriz = (
)
33
se desea un informe que con lo siguiente
3
=1
3
=1
, (
)
2
3
=1
3
=1
, (
)
3
3
=1
3
=1
Defina un fichero script para ello
2. Para cada una de las matrices del ejercicio anterior, se quiere un informe con los
siguiente
a) Determinante
b) Matriz inversa (si la matriz es invertible)
c) Matriz escalonada reducida por filas de Gauss-Jordan
d) Forma cannica de Jordan
Para ello defina un fichero scritp.
3. El siguiente cdigo de fichero de funcin calcula el mximo comn divisor de dos
enteros no simultneamente nulos
function[mcd]=max_com_div(a,b)
%este subprograma calcula el maximo comun divisor de dos enteros no
simultaneamente nulos
%ARGUMENTOS DE ENTRADA:
%a: entero no negativo
%b: entero cualquiera
%ARGUMENTOS DE SALIDA:
%mcd: maximo comun divisor
r=[a, b];
n=length(r); %cantidad de terminos actual
while r(n)~=0
x=r(n-1); %penultimo termino
57
MATLAB Orientado a la matemtica aplicada
y=r(n); %ultimo termino
z=rem(x,y); %nuevo termino
r=[r, z]; %agrandar el vector columna
n=length(r); %cantidad de terminos actual
end
mcd=r(n-1);
Calcule el mximo comn divisor de los siguientes nmeros
a) 43 y 65
b) 115 y 20
c) 40 y 90
d) 76 y 140
4. El siguiente cdigo calcula el elemento mnimo de un vector
function[minimo]=small(x)
%ESTE SUBPROGRAMA CALCULA EL MINIMO DE UN VECTOR
%ARGUMENTOS DE ENTRADA:
%x: vector a estudiar
%ARGUMENTOS DE SALIDA:
%minimo: menor elemento del vector x
minimo=x(1);
n=length(x);
for i=2:n
if x(i)<minimo
minimo=x(i);
end
end
Calcule el elemento mnimo de los siguientes vectores
a) v=[ 8 9 2 9 7 2 4 6 10]
b) w=[ 8 10 7 1 9 9 7 8 8 5 7]
c) x=[ 3 7 1 3 1 2 8 7 4 10 1]
d) y=[ 2 3 9 3 8 3 9 4 3 3 7 5 4]
e) z=[ 8 1 6 9 4 8 8 4 6 2 1 6 8 9 2 6]
5. Defina un fichero de funcin para calcular el elemento mximo de los vectores del
ejercicio 4.
58
Andrs Prez
6. El siguiente cdigo calcula la posicin mnima en un vector que ocupa el elemento
mnimo del vector
function[k_min]=pos_min(x)
%ESTE SUBPROGRAMA CALCULA LA POSICION MINIMA QUE OCUPA EL MINIMO
DE X EN EL %VECTOR X
%ARGUMENTOS DE ENTRADA:
%x: vector a estudiar
%ARGUMENTOS DE SALIDA:
%k_min: posicion minima que ocupa el minimo de x en el vector x
n=length(x);
for i=1:n
if x(i)==small(x)
k_min=i;
break
end
end
Respecto a cada uno de los vectores del ejercicio 4 calcule la posicin mnima que
ocupa el mnimo. Observe que para utilizar este fichero es necesario que ya est
definido el fichero small. El comando break se utiliza para salir de un bucle.
7. El siguiente cdigo ordena un vector en forma creciente
function[ord_cre]=creciente(x)
%ESTE SUBPROGRAMA ORDENA UN VECTOR DE MAS DE UN ELEMENTO
%EN FORMA CRECIENTE
%ARGUMENTOS DE ENTRADA:
%x: vector
%ARGUMENTOS DE SALIDA:
%ord_cre: ordenacion de x en forma creciente
n=length(x);
ord_cre=[min(x), zeros(1,n-1)]; %vector de n componentes
for i=2:n
m=length(x); %longitud actual del vector x
[k_min]=pos_min(x);
k=k_min;
if k==1 %el minimo ocurre el en el extremo izquierdo
59
MATLAB Orientado a la matemtica aplicada
x=[x(k+1:m)];
elseif 1<k & k<m %el minimo ocurre en el interior
x=[x(1:k-1), x(k+1:m)];
else %el minimo ocurre en el extremo derecho
x=[x(1:k-1)];
end
ord_cre(i)=min(x);
end
Ordene los vectores del ejercicio 4 en forma creciente. Observe que para utilizar este
fichero es necesario que ya est definido el fichero pos_min.
8. Defina un fichero de funcin para ordenar en forma decreciente los vectores del
ejercicio 4.
60
Andrs Prez
EJEMPLO: dada la funcin
() =
3
3
calcular (0) y (4)
>> syms x f
>> f='x^3-3'
f =
x^3-3
>> subs(f,x,0)
ans =
-3
>> subs(f,x,4)
ans =
61
CAPITULO 4. CLCULO SIMBLICO
Cuando hablamos de clculo simblico, nos referimos a cmputos como solucin de
ecuaciones; clculos de lmites, derivadas, integrales, y ese tipo de operaciones en los cuales se
involucran variables. MATLAB dispone de una gran variedad de comandos que facilitan estos
clculos, pero antes de utilizarlos, se debe colocar la entrada
>>syms x y z
con lo cual se indica que x, y, z son variables simblicas.
FUNCIONES
Simblicamente se pueden crear funciones de una o ms variables y evaluarlas en cualquier
expresin.
Esta es la manera de indicar que f
est definida como
() =
3
3
Para este fin siempre debe utilizarse
comillas.
61
MATLAB Orientado a la matemtica aplicada
Tambin se pueden hacer sustituciones mltiples en el caso de funciones simblicas de varias
variables. Para ello, se usa la sintaxis
>> subs(f,{x,y,z,},{a,b,c,})
donde x, y, z, denotan las variables, y a, b, c, denotan los valores que se asignaran a las
variables x, y, z,
A veces, necesitamos evaluar expresiones simblicas dentro de otras expresiones simblicas.
EJEMPLO: dada la funcin
(, ) =
3
+
4
2
calcular (0,1), (1, 2) y (3,3)
>> syms f x y
>> f='(x^3+y)/(x^4-y^2)'
f =
(x^3+y)/(x^4-y^2)
>> subs(f,{x,y},{0,1})
ans =
-1
>> subs(f,{x,y},{1,-2})
ans =
0.3333
>> subs(f,{x,y},{3,3})
ans =
0.4167
62
Andrs Prez
Tambin es posible evaluar una funcin f en un vector v. La sintaxis sera
>>subs(f,x,v)
en este caso el resultado es un vector de igual longitud que v.
ECUACIONES
Para ello se emplea el comando
>>solve(E,x).
donde E denota la ecuacin y x la variable.
EJEMPLO: verificar que y son las races del polinomio
2
+
>> syms f x a b
>> f='x^2-b*x-a*x+b*a'
f =
x^2-b*x-a*x+b*a
>> subs(f,x,a)
ans =
0
>> subs(f,x,b)
ans =
0
63
MATLAB Orientado a la matemtica aplicada
Tambin se pueden resolver ecuaciones cuadrticas.
En algunas expresiones simblicas utilizamos letras como a, b, c para denotar constantes y las
letras x, y, z para denotar variables. En MATLAB todas las letras deben declararse como
variables simblicas.
EJEMPLO: vamos a resolver la ecuacin
2 +1 = 9
tecleamos
>> syms x
>> solve('2*x+1=9',x)
ans =
4
lo cual nos indica que la solucin es = 4.
EJEMPLO: para hallar las races del polinomio
3
2
+ +3
tecleamos
>> solve('-3*x^2+x+3=0',x)
ans =
1/6-1/6*37^(1/2)
1/6+1/6*37^(1/2)
donde 1/6-1/6*37^(1/2) y 1/6+1/6*37^(1/2) son las races del polinomio.
64
Andrs Prez
EJEMPLO: si queremos una mejor visualizacin de las soluciones del ejemplo
anterior tecleamos
>> pretty(solve('a*x^2+b*x+c=0',x))
y MATLAB muestra
soluciones que son exactamente la que nos da la resolvente
=
2
4
2
Ntese que aunque sabemos que en la ecuacin a, b, c son constates, fue necesario declararlas
en el comando syms al igual que x.
Un comando muy til para visualizar correctamente soluciones en el clculo simblico es
>>pretty(expresion)
EJEMPLO: resolver
2
+ + = 0
>> syms a b c x
>> solve('a*x^2+b*x+c=0',x)
ans =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a
65
MATLAB Orientado a la matemtica aplicada
LMITES
El comando afn es
>>limit(f,x,a)
donde f es la expresin, x es la variable, y a es el parmetro.
Tambin se pueden calcular lmites laterales
EJEMPLO: calcular
lim
3
2
4
2
9
2 3
>> syms x
>> limit((4*x^2-9)/(2*x-3),-3/2)
ans =
0
As, el lmite buscado es 0.
EJEMPLO: calcular
lim
0
||
, lim
0
+
||
>> syms x
>> limit(x/abs(x),x,0,'left')
ans =
-1
>> limit(x/abs(x),x,0,'right')
ans =
1
66
Andrs Prez
DERIVADAS
El comando a utilizar es
>>diff(f,x)
donde f es la expresin y x es la variable.
Tambin podemos calcular derivadas parciales de funciones de varias variables
EJEMPLO: derivar la siguiente funcin
() =
( 1)
2
>> diff(-x/(1-x)^2,x)
ans =
-1/(1-x)^2-2*x/(1-x)^3
EJEMPLO: calcule las derivadas parciales de la siguiente funcin
(, ) =
(
2
)
3
>> syms g x y
>> g='(y-x)/(x-y^2)^3';
>> diff(g,x) %derivada parcial respecto a x
ans =
-1/(x-y^2)^3-3*(y-x)/(x-y^2)^4
>> diff(g,y) %derivada parcial respecto a y
ans =
1/(x-y^2)^3+6*(y-x)/(x-y^2)^4*y
67
MATLAB Orientado a la matemtica aplicada
INTEGRALES
Para integrar funciones, se utiliza el comando
>>int(f,x)
donde f es la expresin y x es la variable.
MATLAB tambin calcula integrales definidas
EJEMPLO: calcular
1 +
2
()
2
0
>> syms x
>> int(1/(1+sin(x)^2),x,0,2*pi)
ans =
pi*2^(1/2)
EJEMPLO: integrar
() =
+1
3
7
2
+14 8
>>syms x
>>pretty(int((x+1)/(x^3-7*x^2+14*x-8),x))
68
Andrs Prez
A continuacin damos un compendio de comandos afines al clculo simblico
COMANDO UTILIDAD
subs(f,x,a) Sustituye x por a en la funcin f
subs(f,{x,y,z,},{a,b,c,}) Sustituye x, y, z, por a, b,
c,respectivamente en la funcin f
solve(e,x) Resuelve una ecuacin e en la variable x
solve(e1,e2,...,en) Resuelve varias ecuaciones de varias
variables
limit(f,x,a) Calcula el lmite de la funcin f cuando x
tiende a a
lim
limit(x,a,left) Calcula el lmite de la funcin f cuando x
tiende a a por la izquierda
lim
limit(x,a,right) Calcula el lmite de la funcin f cuando x
tiende a a por la derecha
lim
+
diff(f,x) Deriva la funcin f en la variable x
()
Notar que f puede ser una funcin de
dos variables: x, y. En tal caso la
derivada corresponde a la derivada
parcial de f respecto a x
(, )
diff(f,x,n) Deriva de orden n de la funcin f en la
variable x
()
()
En este caso n debe ser un entero
positivo
69
MATLAB Orientado a la matemtica aplicada
int(f,x) Calcula la integra indefinida de la
funcin f respecto a la variable x
()
int(f,x,a,b) Calcula la integra definida de la funcin
f respecto a la variable x, de a hasta b
()
Comandos para el clculo simblico.
70
Andrs Prez
EJERCICIOS 4
1. Defina la siguiente funcin
() =
3
2
2
+3
Calcule
a) (0)
b) (2)
c) (3)
d) (5.1)
e) 2
f) ( )
2. Considere los siguientes polinomios
2
+ +
2
+
2
+
2
a) Calcule las races del primero y gurdelas en una variable de nombre PRIM
b) Calcule las races del segundo y gurdelas en una variable de nombre SEG
c) Calcule las races del tercero y gurdelas en una variable de nombre TERC
d) Calcule las races del cuarto y gurdelas en una variable de nombre CUAR
e) Verifique que las races del segundo son un caso particular del primero (haga
= 0 en PRIM y compare con SEG)
f) Verifique que las races del tercero son un caso particular del primero (haga
= 0 en PRIM y compare con TERC)
g) Verifique que las races del cuarto son un caso particular del primero, del
segundo y del tercero (haga = 0 y = 0 en PRIM y compare con CUAR,
luego haga = 0 en SEG y compare con CUAR, finalmente haga = 0 en TER
y compare con CUAR)
3. Resuelva las ecuaciones
a) +1 = 3
1
2
b) 3
2
+ 5 = 0
c)
4
2
=
71
MATLAB Orientado a la matemtica aplicada
d)
3
+2 = 2
e) | +1| = 2
f) |
2
+ 5|=
1
3
g)
= 1
h) = 0
i) () = cos()
4. Resuelva los siguientes sistemas de ecuaciones
a)
2 +3 = 13
4 = 5
b)
3
2
= 9
+
2
= 7
c)
1
+
1
=
1
2
+
2
=
2
d)
+4 = 6
2 +5 7 = 9
3 2 + = 2
5. Calcule
a) lim
2
2
+6
) lim
1
2
1
1
) lim
1
2
2
+ 3
1
) lim
1
1
( 1)
2
) lim
3
2
4
2
9
2 3
) lim
3
3
2
+
) lim
1
+ +
+ +
) lim
1
1
) lim
0
()
) lim
0
1 cos (2)
4
2
) lim
0
(2)
(3)
) lim
1 +
1
) lim
0
+
1
) lim
) lim
0
log ()
) lim
3
9
2
3
) lim
3
3
) lim
0
1
||
) lim
4
+
4
| 4|
72
MATLAB Orientado a la matemtica aplicada
6. Derive las siguientes funciones
a) () = 3 +5
b) () = 4
3
+2
c) () =
3
2
7
d) () =
+
3
e) () = ln (1 )
f) () = () +()
7. Calcule
a)
(
2
+
3
)
b)
2
+
2
c)
2
+cos
d)
3
8. Calcule
a) 3
2
5
b)
2
+2
3
+3
2
+1
c)
(+1)
2
d)
411
2
2
+74
e)
1
3++2
f) (
2
+1)
g) tan() ()
h)
2
()
3
()
i)
3
(())
6
(())
j) tan ()
9. Calcule
a)
1
1
1 2
b)
1
0
c)
2
3
+4
2
+5+2
4
0
73
MATLAB Orientado a la matemtica aplicada
d)
4
16
0
e)
3
()
3
()
2
0
f)
()+()
10. Asumiendo que la siguiente matriz es invertible
=
calcule
1
11. Asumiendo que la siguiente matriz es invertible
=
calcule
1
12. Dada una funcin () tal que existen las primeras n derivadas en = 0, el polinomio
de Maclaurin de grado de f viene dado por
() =
()
(0)
=0
Definiendo un fichero de funcin, calcule el polinomio de Maclaurin de grado de las
siguientes funciones:
() =
, = 4
() =
1
(1)
2
, = 8
() = (1 +), = 6
() = (), = 5
() = cosh() , = 7
74
Andrs Prez
CAPITULO 5. GRFICOS
Los grficos son herramientas muy utilizadas para presentar todo tipo de informacin;
informacin que puede proceder de cualquier campo del conocimiento, pero especialmente
de las disciplinas relacionadas con las ciencias y la ingeniara, donde MATLAB es ampliamente
utilizado.
A continuacin estudiaremos como crear grficos en el plano y en el espacio.
GRFICOS EN 2D
Graficando funciones del tipo y=f(x)
Para representar una funcin del tipoy=f(x) se utiliza el comando
>>plot(x,y)
Habiendo creado previamente un vector con los valores x del dominio de la funcin f,
seguidamente de un vector y para los valores de y=f(x) (esto es, expresando simblicamente la
funcin).
Una vez creados ambos vectores se utiliza el comando plot(x,y) para la creacin del grfico de
la funcin.
EJEMPLO: graficar la funcin
() = cos ()
en el intervalo [-2,2]
>> x=-2:0.1:2;
>> y=cos(x);
>> plot(x,y)
MATLAB genera la siguiente figura
Definimos el vector [-2,2] que es
el dominio de la funcin f
Calculamos el valor de y en
cada punto del vector [-2,2]
Finalmente creamos el grfico
75
MATLAB Orientado a la matemtica aplicada
Es importante sealar que para graficar funciones cuya expresin simblica involucra una
potenciacin (o divisin), debe colocarse un punto antes del operador potencia (o divisin).
EJEMPLO: graficar la funcin
=
2
en el intervalo [-2,2]
>> x=-2:0.1:2;
>> y=x.^2;
>> plot(x,y)
Notar que escribimos y=x.^2
en vez de y=x^2
76
Andrs Prez
Graficando curvas paramtricas en el plano
Consideremos la funcin paramtrica
() = (), ()
Donde t es el parmetro y las funciones componente de r son x=f(t) , y=g(t) (estas ltimas son
funciones de valor real en la variable t). Para crear el grfico de la curva paramtrica 2D que
induce este tipo de funcin se tienen los siguientes pasos:
1. Crear un vector con los valores del parmetro t del dominio de la funcin r, por
ejemplo
>>t=-a:i:b
donde i representa el incremento (para mayor informacin consulte la tabla)
Con esto se define el intervalo [a,b] , el cual corresponde al dominio de la funcin r.
2. Calcular el valor de x, y en cada punto del vector anterior (esto es, representar
simblicamente las funciones componentes de t). En este caso, como en el
bidimensional, si la expresin simblica de las funciones f, g involucra una
potenciacin (o divisin), debe colocarse un punto antes del operador potencia (o
divisin).
3. Representar el grfico. Para ello se emplea el comando
>>plot(x,y)
77
MATLAB Orientado a la matemtica aplicada
EJEMPLO: visualizar el grfico de la circunferencia unitaria centrada en el
origen, sabiendo que una parametrizacin de la misma es
t=0:0.1:2*pi
x=cos(t);
y=sin(t);
plot(x,y)
() = (), (), 0 2
Definimos el vector [0,7],
que es el domino de la
funcin r
Definimos las funciones
componente de r
Finalmente representamos el
grfico de la circunferencia
78
Andrs Prez
GRFICOS EN 3D
Los grficos tridimensionales proporcionan una manera muy prctica de representar datos de
ms de dos variables. La sintaxis para estos grficos es anloga a la utilizada para el caso
bidimensional.
Graficando funciones del tipo z=f(x,y)
Para representar funciones que tiene la formaz=f(x,y) (donde x,y son las variables
independientes y la variable dependiente es z) se utilizan los grficos de malla y superficie en
3D. Los grficos de malla y superficie se generan siguiendo tres pasos:
1. Crear una rejilla en el plano XY que cubre el dominio de la funcin. Para ello se deben
definir dos vectores x, y por ejemplo
>>x=[a:i:b]
>>y=[c:i:d]
donde i representa el incremente y seguidamente se utiliza el comando
>>[x,y]=meshgrid(x,y)
Con el cual se define la regin [a,b][c,d] del plano XY, la cual corresponde al dominio
de la funcin f.
2. Calcular el valor de z en cada punto de la rejilla (esto es, representar simblicamente la
funcin). En este caso, como en el bidimensional, si la expresin simblica de la
funcin involucra una potenciacin (o divisin), debe colocarse un punto antes del
operador potencia (o divisin).
3. Representar el grafico. Para ello se tienen dos comandos alternativos:
para crear un grfico de malla:
>>mesh(x,y)
para crear un grfico de superficie:
>>surf(x,y)
A continuacin mostraremos los distintos modelos de grficos de malla y de superficie, para
representar la funcin
(, ) =
cos ((
2
+
2
) 4 )
2
+
2
+3
en el rectngulo [-5,5][-5,5]
79
MATLAB Orientado a la matemtica aplicada
EJEMPLO: visualizar el grfico de malla de la funcin f
>> x=-5:0.1:5;
>> y=-5:0.1:5;
>> [x,y]=meshgrid(x,y);
>> z=cos((x.^2+y.^2)./4)./(3+x.^2+y.^2);
>> mesh(x,y,z)
Otras configuraciones para hacer un grfico de malla son:
meshz(x,y,z) (grfico de malla con cortina)
meshc(x,y,z) (grfico de malla con contorno)
Ahora vamos con la otra modalidad.
80
Andrs Prez
EJEMPLO: visualizar el grfico de superficie de la funcin f
>> x=-5:0.1:5;
>> y=-5:0.1:5;
>> [x,y]=meshgrid(x,y);
>> z=cos((x.^2+y.^2)./4)./(3+x.^2+y.^2);
>> surf(z)
EL grfico de malla tambin ofrece otras configuraciones:
surfc(x,y,z) (grfico de superficie con contorno)
surfl(x,y,z) (grfico de superficie con alumbrado)
81
MATLAB Orientado a la matemtica aplicada
Graficando curvas paramtricas en el espacio
Consideremos la funcin paramtrica
() = (), (), ()
Donde t es la variable independiente (o parmetro) y las funciones componente de r son
x=f(t), y=g(t), z=h(t) (estas ltimas son funciones de valor real en la variable t). Para crear el
grfico de la curva paramtrica 3D que induce este tipo de funcin se tienen los siguientes
pasos:
1. Crear un vector con los valores del parmetro t del dominio de la funcin r, por
ejemplo
>>t=-a:i:b
donde i representa el incremento.
Con esto se define el intervalo [a,b] del eje X, la cual corresponde al dominio de la
funcin r.
2. Calcular el valor de x, y, z en cada punto del vector anterior (esto es, representar
simblicamente las funciones componentes de t). En este caso, como en el
bidimensional, si la expresin simblica de las funciones f, g, h involucra una
potenciacin (o divisin), debe colocarse un punto antes del operador potencia (o
divisin).
3. Representar el grafico. Para ello se emplea el comando
>>plot3(x,y,z)
EJEMPLO: graficar la curva paramtrica en 3D que define la siguiente funcin
() = (), (),
en el dominio [0,7]
t=0:0.1:7*pi;
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z)
82
Andrs Prez
83
MATLAB Orientado a la matemtica aplicada
EJERCICIOS 5
1. Grafique la siguiente funcin
() =
3
en el intervalo [2,2]
2. Grafique la siguiente funcin
() =
+1
en el intervalo [3,2]
3. Considere las siguientes funciones
a) =
4
2
[2,3]
b) =
+3
[3,3]
c) =
[1,2]
d) = ( +2)[4,2]
e) = () +
3
()[2, 2]
Se desea visualizar la grfica de las anteriores funciones en los intervalos indicados.
4. Visualice el grfico de la circunferencia de radio 2 centrada en el origen Sugerencia:
utilice la parametrizacin
() = 2(), 2(), 0 2
5. Visualice la grfica de la hiprbola
2
2
= 1. Sugerencia: utilize la parametrizacin
() = (), (),
6. Considere las siguientes funciones paramtricas
a) () = 4cos() , 3(), 0 2
b) () = (), 1 cos (),
c) () = (), 1 cos (), 0
d) () = () +2cos( 2 ) , () +2( 2 ), 0 2
e) () =
3
(),
3
(), 0
f) () = tanh() , sech(),
84
Andrs Prez
Visualice la grfica de las curvas paramtricas asociadas.
7. Grafique la funcin
(, ) =
3
En el rectngulo [2,2] [2,2]
8. Grafique la function
(, ) =
3
2
+
2
+1
2
2
En el rectngulo [3,3] [3,3]
9. Obtenga el grfico de las siguientes funciones en los rectngulos indicados
a) =
2
+
2
, [2,2] [2,2]
b) =
2
2
, [3,2] [3,2]
c) = () +(), [2, 2] [2, 2]
d) =
()()
[3,3] [3,3]
10. La curva que induce la funcin
() = cos() , (),
Se llama hlice. Bosqueje su grfico para 2 60.
11. Visualice el grfico de la recta que pasa por el punto (3,1, 2) y cuyo vector director
es (2,3,1). Sugerencia: utilize la parametrizacin
() = 3 +2, 1 +2, 2 , 7 6
12. Las siguientes funciones definen curvas paramtricas
a) () = ,
2
,
3
b) () = cos (), ()cos (2),
c) () = (), [(),
d) () = 2(), 2(), 8)
e) () = (2),2
2
() ,2cos ()
Obtenga la grfica de dichas curvas para 3 3.
85
MATLAB Orientado a la matemtica aplicada
CAPITULO 6. ESTADSTICA
El paquete estadstico de MATLAB ha sido desarrollado para proveer ayuda a cualquier tipo de
rea, desde las finanzas hasta la ingeniera, con herramientas interactivas capaces de
establecer anlisis de datos, adems viene acompaado de una completa serie de funciones
para desarrollar desde las ms bsicas aplicaciones estadsticas hasta un completo diseo y
proceso de cualquier anlisis estadstico.
MEDIDAS DE LOCALIZACIN
Media aritmtica
Para calcular la media aritmtica o promedio se emplea la funcin
>>mean(a)
donde a es un vector o una matriz.
Si a es un vector, se calcula la media de los valores
Si a es una matriz, se calcula la media de cada columna
EJEMPLO:
>> a =[8 9 2 9 7 2 4];
>> mean(a)
ans =
5.8571
>> b =[6 2 5 5 10 9;
10 10 8 9 7 9;
10 10 2 8 1 7];
mean(b)
ans =
8.6667 7.3333 5.0000 7.3333 6.0000 8.3333
86
Andrs Prez
Otra sintaxis del comando mean es
>>mean(a,dim)
donde
a es una matriz
dim es 1 o 2. Si es 1 se calcular la media de cada columna. Si es 2 se calcular
la media de cada fila
Media geomtrica
Para este clculo estn los comandos
>>geomean(a)
y
>>geomean(a,dim)
donde a y dim se comportan de la misma forma que en comando mean
EJEMPLO:
>>a =[ 8 6 5 1 0;
8 1 8 6 3;
4 1 9 5 2];
>> mean(a,1)
ans =
6.6667 2.6667 7.3333 4.0000 1.6667
>> mean(a,2)
ans =
4.0000
5.2000
4.2000
87
MATLAB Orientado a la matemtica aplicada
Media armnica
La funcin es
>>harmmean(a)
Y
>>harmmean(a,dim)
donde a y dim se comportan de la misma forma que en comando mean
EJEMPLO:
>>a =[ 9 2 8 5];
>> geomean(a)
ans =
5.1800
EJEMPLO:
>> a =[8 2;
3 2;
7 5;
7 10];
>> harmmean(a,2)
ans =
3.2000
2.4000
5.8333
8.2353
88
Andrs Prez
Media ajustada
Se emplea el comando
>>trimmean(a,y)
donde
a funciona de la misma manera que en el comando mean
y representa el nmero de percentiles que se quieren obviar en los extremos
Mximo
Comando
>>max(a)
donde a es un vector
En caso de que a sea una matriz, el comando es
>>max(a,[ ],dim)
donde dim es 1 o 2
EJEMPLO:
>> a =[4 4 4 2 2 2;
3 8 8 1 6 8;
3 6 8 6 5 4;
7 6 4 8 1 6;
5 9 6 9 4 2];
trimmean(a,3)
ans =
4.4000 6.6000 6.0000 5.2000 3.6000 4.4000
89
MATLAB Orientado a la matemtica aplicada
Si dim es 1 se calcular el mximo de cada columna
Si dim es 2 se calcular la mximo de cada fila
Mnimo
Los comandos afines son
>>min(a)
y
>>min(a,[],dim)
donde a y dim funcionan de la misma forma que en el comando max
EJEMPLO:
>> a =[6 7 2 2;
3 8 3 8;
7 5 9 6];
>> max(a,[],1)
ans =
7 8 9 8
>> max(a,[],2)
ans =
7
8
9
EJEMPLO:
>> a=[2 3 9 3 8];
>> min(a)
ans =
2
90
Andrs Prez
Mediana
Comando
>>median(a,dim)
donde a y dim funcionan de la misma forma que en el comando mean
MEDIDAS DE DISPERSIN
Desviacin estndar
Comando
>>std(a,flag,dim)
donde
a es un vector o una matriz y funciona de la misma manera que en el comando mean
flag es 0 o 1. Si vale 0, retorna la desviacin estndar corregida. Si vale 1 devuelve la
desviacin estndar sin corregir
dim funciona de la misma manera que en el comando mean
EJEMPLO:
>> A=[3 9 4 3];
>> median(a)
ans =
3.5000
EJEMPLO:
>> a =[10 2 5 2 10 1 8];
>> std(a,0)
ans =
3.9097
>> std(a,1)
ans =
3.6197
91
MATLAB Orientado a la matemtica aplicada
Varianza
Para la varianza corregida se usa el comando
>>var(a)
donde a es un vector o una matriz.
Para la varianza sin corregir
>>var(a,1)
Rango
Comando
>>range(a)
donde a se comporta de la misma manera que en el comando mean
EJEMPLO:
>> a=[7 8 5];
>> std(a)
ans =
1.5275
>> std(a,1)
ans =
1.2472
EJEMPLO:
>> a =[8 9 2];
>> range(a)
ans =
7
92
Andrs Prez
Rango intercuartil
Comando
>>iqr(a)
donde a se comporta de la misma manera que en el comando mean
Percentil
Comando
>>prctile(a,p)
donde
a se comporta de la misma manera que en el comando mean
p corresponde al percentil que se busca, puede ser un vector o un escalar
EJEMPLO:
>> a =[4 6 10 10];
>> iqr(a)
ans =
5
>> b =[5 3 6;
3 3 6;
8 2 2;
5 2 9;
9 9 7];
>> iqr(b)
ans =
3.7500 2.5000 2.5000
93
MATLAB Orientado a la matemtica aplicada
Quantil
Comando
>>quantile(a,p,dim)
donde
a se comporta de la misma manera que en el comando mean
p corresponde al quantil que se busca, puede ser un vector o un escalar y se encuentra
entre el rango [0,1]
dim se comporta de la misma manera que en el comando mean
Oblicuidad
Comando
>>skewness(a)
donde a se comporta de la misma manera que en el comando mean
EJEMPLO:
>> a =[8 5 7];
>> prctile(a,3)
ans =
5
EJEMPLO:
>> a =[1 10 5;
9 5 4];
>> quantile(a,0.3,2)
ans =
2.6000
4.4000
94
Andrs Prez
Curtosis
Comando
>>kurtosis(a,flag)
donde
a se comporta de la misma manera que en el comando mean
flag es 0 o 1. Si vale 0 se corrige la diagonal. Si vale 1 no se corrige
Tabla con las frecuencias absolutas y relativas
Comando
>>tabulate(a)
donde a representa la muestra y slo puede ser un vector
EJEMPLO:
>> a =[0 1 3 4 8 4 8;
3 8 10 4 2 6 3;
0 7 0 8 5 7 7];
>> skewness(a)
ans =
0.7071 -0.6520 0.4451 0.7071 0 -0.3818 -0.5952
EJEMPLO:
>>a =[8 9 3;
4 2 1];
>> kurtosis(a,1)
ans =
1 1 1
95
MATLAB Orientado a la matemtica aplicada
Desviacin absoluta
Comando
>>mad(a,flag,dim)
donde
a se comporta de la misma manera que en el comando mean
flag es 0 o 1. si vale 0 se calcula la desviacin absoluta media. Si vale 1 se calcula la
desviacin absoluta mediana
EJEMPLO:
>> a =[4 5];
>> tabulate(a)
Value Count Percent
1 0 0.00%
2 0 0.00%
3 0 0.00%
4 1 50.00%
5 1 50.00%
EJEMPLO:
>>a =[3 5 8 5;
6 4 6 9];
>> mad(a,0,2)
ans =
1.3750
1.3750
96
Andrs Prez
Momentos centrales
Comando
>>moment(a,order,dim)
donde
a se comporta de la misma manera que en el comando mean
order es un entero positivo
dim se comporta de la misma manera que en el comando mean
GRUPOS DE DATOS
Matriz de covarianza
Comando
>>cov(a)
donde a es un vector o una matriz
Si a es un vector, devuelve un valor con la varianza del mismo
Si a es una matriz, cada columna es una observacin y cada columna una variable
EJEMPLO:
>> a =[8 5 4;
1 6 7;
1 4 8;
3 8 2;
7 3 9;
8 7 8;
7 3 5];
>> moment(a,2)
ans =
8.8571 3.2653 5.5510
97
MATLAB Orientado a la matemtica aplicada
Matriz de correlacin lineal
Comando
>>corr(a)
donde a debe ser una matriz
Matriz de los coeficientes de correlacin
El comando es corrcoef, y su sintaxis es
>> [R,P,RLO,RUP]=corrcoef(a)
Donde el argumento de entrada es
a: la cual debe ser una matriz
EJEMPLO:
>> a =[5 6;
2 3];
>> cov(a)
ans =
4.5000 4.5000
4.5000 4.5000
EJEMPLO:
>> a =[8 10;
5 1];
>> corr(a)
ans =
1 1
1 1
98
Andrs Prez
Mientras que los argumentos de salida son
R: matriz con los coeficientes de correlacin
P: matriz con los valores p usados en las pruebas de hiptesis
RLO y RUP son los lmites de determinado intervalo a 95% de confianza
EJEMPLO:
>> a =[7 4;
6 5;
3 3];
>> [R,P,RLO,RUP]=corrcoef(a)
R =
1.0000 0.7206
0.7206 1.0000
P =
1.0000 0.4878
0.4878 1.0000
RLO =
1 NaN
NaN 1
RUP =
1 NaN
NaN 1
99
MATLAB Orientado a la matemtica aplicada
Matriz con tabulacin-cruzada
Comando
>>crosstab (a,b)
donde a y b son vectores
Resumen estadstico por grupo
Comando
>>grpstats(a,group)
donde
a es una matriz
group es el vector que define como se agruparn los datos
EJEMPLO:
>> a =[10 5 8 2 5 9 8 10 7 1 9 9];
>>b =[7 8 8 5 7 3 7 1 3 1 2 8];
>> crosstab(a,b)
ans =
1 0 0 0 0 0
0 0 0 1 0 0
0 0 0 0 1 1
0 0 1 0 0 0
0 0 0 0 1 1
0 1 1 0 0 1
1 0 0 0 1 0
100
Andrs Prez
GRFICOS ESTADSTICOS
MATLAB proporciona grandes facilidades en lo relacionado con grficas, situacin que permite
automatizar y agilizar el manejo y procesamiento de las mismas. Para ello dispone de una serie
de funciones que permiten modificar dentro de la figura los parmetros que afectan el
resultado de la misma.
Las grficas en MATLAB permiten la posibilidad de adecuarlas de tal forma que sean
completamente entendibles para los usuarios, por medio de las diferentes posibilidades
existentes para insertar en las grficas
EJEMPLO:
>>a =[5 10 1 5 3;
3 6 1 6 4;
5 2 3 4 7;
2 3 7 8 8;
2 4 8 3 2;
9 8 7 7 9];
>> group=[9 2 1 4 1 5];
>> grpstats(a,group)
ans =
3.5000 3.0000 5.5000 3.5000 4.5000
3.0000 6.0000 1.0000 6.0000 4.0000
2.0000 3.0000 7.0000 8.0000 8.0000
9.0000 8.0000 7.0000 7.0000 9.0000
5.0000 10.0000 1.0000 5.0000 3.0000
101
MATLAB Orientado a la matemtica aplicada
Grficos simples
Comando
>>plot(x,y)
donde x, y son vectores de igual longitud
Cuando se ejecuta el comando plot, el grfico se crea en la Ventana de Grficos. Si no se ha
abierto previamente, esta ventana se abrir automticamente el a jecutar el comando. La
representacin del grfico que se mostrar se corresponde con una curva donde los valores de
x sern los de la abscisa (eje horizontal) y los de y los de la ordenada (eje vertical). La curva se
construye mediante segmentos de recta que unen los puntos cuyas coordenadas estn
definidas por los elementos de los vectores x, y.
EJEMPLO:
>> x=[1:8];
>> y =[3 7 1 3 1 2 8 7];
>> plot(x,y)
102
Andrs Prez
Lnea de ajuste de mnimos cuadrados
El comando que genera esta lnea es lsline, y la sintaxis de su uso es
>>plot(y,+)
>>lsline
donde y es un vector
EJEMPLO:
>> y =[5 10 4 6 3 8 3 6 7 9 10 6];
>> plot(y,'+');
>> lsline
103
MATLAB Orientado a la matemtica aplicada
Histograma
El comando es hist. Para generar el grfico de histograma con diez barras igualmente
espaciadas, la sintaxis es
>>hist(y)
donde y es un vector
Otra sintaxis es
>>hist(y,n)
donde n representa el nmero de barras que se desean en el grfico
EJEMPLO:
>> y =[4 10 1 5 4 8 8 3 5 5];
>> hist(y)
104
Andrs Prez
Grfico de barras verticales
Comando
>>bar(x,y)
donde x, y son vectores de igual longitud
EJEMPLO:
>> x=[1:8];
>> y =[4 2 8 4 6 2 6 3];
>> bar(x,y)
105
MATLAB Orientado a la matemtica aplicada
Grfico de barras horizontales
Comando
>>barh(x,y)
donde x, y son vectores de igual longitud
EJEMPLO:
> x=[5:13];
>> y =[7 7 8 5 2 3 9 2 8];
>> barh(x,y)
106
Andrs Prez
Grfico de escaleras
Comando
>>stairs(x,y)
donde x, y son vectores de igual longitud
EJEMPLO:
>> x=[-2:4];
>> y=[3 5 2 6 4 7 1];
>> stairs(x,y)
107
MATLAB Orientado a la matemtica aplicada
Grfico de tallo
Comando
>>stem(x,y)
donde x, y son vectores de igual longitud
EJEMPLO:
>> x=[3:8];
>> y =[8 9 2 9 7 2];
>> stem(x,y)
108
Andrs Prez
Grfico de tarta
Comando
>>pie(x)
donde x es un vector
EJEMPLO:
>> x =[4 6 10 10 2];
>> pie(x)
109
MATLAB Orientado a la matemtica aplicada
Generacin de nmeros al azar
Comando
>>randtool
Esta funcin permite generar de forma interactiva nmeros al azar mostrando los resultados
grficos por medio de un histograma. Instala un interfaz grfico que permite indagar los
efectos al realizar cambios en los parmetros que afectan la funcin que se desee graficar
Adems, la interfaz que se abre con la funcin, permite fijar valores de parmetro para la
distribucin y para cambiar sus lmites superiores e inferiores en la generacin de datos
aleatorios.
EJEMPLO:
>>randtool
110
Andrs Prez
Diagramas de distribuciones de probabilidad
Comando
>> disttool
Esta funcin permite generar de forma interactiva diagramas de diferentes distribuciones de
probabilidad. La interfaz generada por esta funcin permite escoger entre dos tipos de
diagramas, el de cdf (genera una funcin distribucin acumulativa elegida) o el de pdf (funcin
de densidad de probabilidad para una distribucin especificada) .
Al igual que la funcin presentada con anterioridad permite realizar modificaciones a los
parmetros relacionados con las caractersticas de la misma interfaz generada.
EJEMPLO:
>> disttool
111
MATLAB Orientado a la matemtica aplicada
EJERCICIOS 6
1. Segn el INE, la poblacin venezolana ha evolucionado (de acuerdo a los censos 1873-
2011) de la siguiente manera
Censos Poblacin
1873 1732411
1881 2005139
1891 2221572
1920 2479525
1926 2814131
1936 3364347
1941 3850771
1950 5034838
1961 7523999
1971 10721522
1981 14516735
1990 18105265
2001 23054210
2011 27227930
Calcule la el promedio y la mediana de la poblacin venezolana entre los aos 1873 y
2011.
2. Segn el INE, la poblacin del estado Lara (mejor conocida como la capital musical de
Venezuela) ha evolucionado (de acuerdo a los censos 1873-2011) de la siguiente
manera
LARA
Censo Poblacin
1873 143818
1881 176079
1891 189624
1920 219816
1926 271369
1936 291230
1941 332975
1950 368169
1961 489140
1971 671410
1981 945064
1990 1193161
2001 1556415
2011 1774867
Calcula la media geomtrica, armnica y ajustada de la poblacin del estado Lara.
3. A continuacin mostramos las cifras dadas por el INE (de acuerdo a los censos 1873-
2011) respecto a la evolucin de la poblacin en 5 estados venezolanos
112
Andrs Prez
Lara Miranda Carabobo Distrito
Capital
Aragua
1873 143818 109917 113715 58050 110828
1881 176079 127844 132316 67735 108085
1891 189624 141446 165156 86965 94195
1920 219816 174266 125514 107236 97251
1926 271369 189572 147204 155499 105849
1936 291230 216527 172127 237069 129746
1941 332975 227604 191442 326712 138235
1950 368169 276273 242923 623713 189891
1961 489140 492349 381636 1116245 313274
1971 671410 856272 659339 1658500 543170
1981 945064 1421442 1062268 1816901 891623
1990 1193161 1871093 1453232 1823222 1120132
2001 1556415 2330872 1932168 1836286 1449616
2011 1774867 2675165 2245744 1943901 1630308
Calcule por estado
a) La desviacin estndar corregida y sin corregir
b) La varianza corregida y sin corregir
4. Considerando los datos del ejercicio 3 calcule por ao
a) La desviacin estndar corregida y sin corregir
b) La varianza corregida y sin corregir
5. Considerando los datos del ejercicio 1 calcule
a) La matriz de covarianza
b) La matriz de correlacin lineal
c) La matriz de los coeficientes de correlacin
6. Considerando los datos del ejercicio 2 visualice l
a) El grfico simple
b) El grfico de barras verticales
c) El grfico de barras horizontales
d) El grfico de escaleras
e) El grfico de tallo
113
MATLAB Orientado a la matemtica aplicada
CAPTULO 7. OPTIMIZACIN
MATLAB proporciona comandos para resolver problemas de optimizacin tales como:
programacin lineal y cuadrtica, minimizacin no lineal con restricciones, minimizacin no
lineal restringida, logro de objetivos minimizacin semi-infinita, entre otros. En este captulo
slo nos enfocaremos en la programacin lineal y la programacin cuadrtica.
PROGRAMACIN LINEAL
Formato general de un programa lineal
Un programa lineal (PL) se escribe de la siguiente forma
Maximizar o minimizar =
1
1
+
2
2
++
Sujeto a
11
1
+
12
2
++
1
21
1
+
22
2
++
2
1
+
2
2
++
11
1
+
12
2
++
1
21
1
+
22
2
++
2
1
+
2
2
++
1
1
1
2
2
2
Si hacemos
Restricciones
de desigualdad
Restricciones
de igualdad
Funcin
objetivo
Acotacin de
las variables
114
Andrs Prez
= (
1
2
) , =
12
12
21
21
1
1
2
, =
12
12
21
21
1
1
2
, =
, =
El PL se puede escribir matricialmente como
Maximizar o minimizar =
Sujeto a
=
Minimizacin
La sintaxis en para resolver un PL de minimizacin es
>>[X,z] = linprog(C,A,B,Aeq,Beq,L,U)
Donde los argumentos de entrada son
o C: el vector fila dado en la funcin objetivo
o A: la matriz dada en la restriccin de desigualdad
o B: es el vector columna dado en la restriccin de desigualdad
o Aeq: es la matriz dada en la restriccin de igualdad
o Beq: es el vector columna dado en la restriccin de igualdad
o L y U son los vectores columna dados en la acotacin de las variables de decisin
Mientras que los argumentos de salida son
o X: vector columna con la solucin ptima del PL
o z: valor mximo de la funcin objetivo
115
MATLAB Orientado a la matemtica aplicada
EJEMPLO: resolver el siguiente PL
Minimizar = 3
1
+5
2
4
3
Sujeto a
7
1
+2
2
+3
3
4
5
1
3
2
2
3
9
2
1
+4
2
+8
3
= 3
1
1
4 , 0
2
7 , 0
3
9
>> C=[3 5 -4];
>> A=[-7 2 3;5 -3 -2];
>> Aeq=[-2 4 8];
>> B=[-4;9];
>> Beq=[-3];
>> L=[1;0;0];
>> U=[4;7;9];
>> [X,z]=linprog(C,A,B,Aeq,Beq,L,U)
Optimization terminated.
X =
1.5
1.7756e-013
3.4227e-012
z =
4.5
As, el mnimo valor de la funcin objetivo es = 4.5 y ocure en la solucin
ptima
1
= 1.5 ,
2
= 1.7756e 013 y
3
= 3.4227e 012.
116
Andrs Prez
Cuando en un PL no hay restricciones de de igualdad, en vez de colocar Aeq y Beq como
argumentos de entrada de la funcin linprog, se escriben dos corchetes []. De forma similar
ocurre cuando no hay acotacin de variables.
EJEMPLO: en Granjas Modelo se usa diariamente un mnimo de 800 libras (lb) de
un alimento especial, que es una mezcla de maz y soya, con las composiciones
siguientes
lb por lb de alimento
Alimento Protenas Fibras Costo ($/lb)
Maz 0.09 0.02 0.30
Soya 0.60 0.06 0.90
Las necesidades dietticas del alimento especial son un mnimo de 30% de
protenas y un mximo de 5% de fibras. Granjas Modelo desea determinar las
proporciones de alimento que produzcan un costo diario mnimo.
Como la mezcla de alimentos consiste en maz y soya, las variables de decisin del
modelo se definen como
1
= lb de maz en la mezcla diaria
2
= lb de soya en la mezcla diaria
La funcin objetivo se expresa como sigue
= 0.3
1
0.9
2
As, el PL a resolver es
Minimizar = 0.3
1
0.9
2
Sujeto a
1
+
2
800
0.21
1
0.30
2
0
0.03
1
0.01
2
0
1
,
2
0
multiplicando por -1 en ambos lados de la primera y tercera restriccin, obtenemos
un PL equivalente al anterior
117
MATLAB Orientado a la matemtica aplicada
Maximizacin
Resolver un PL de maximizacin
Maximizar =
Sujeto a
=
Minimizar = 0.3
1
0.9
2
Sujeto a
1
2
800
0.21
1
0.30
2
0
0.03
1
+0.01
2
0
1
,
2
0
>> C=[0.3 0.9];
>> A=[-1 -1;0.21 -0.30;-0.03 0.01];
>> B=[-800;0;0];
>> [X,z]=linprog(C,A,B,[],[],L,[])
Optimization terminated.
X =
470.5882
329.4118
z =
437.6471
Entonces el costo mnimo correspondiente, de la mezcla de alimentos, es
= $437.6471 diarios.
118
Andrs Prez
es equivalente a resolver un Pl de minimizacin
Minimizar =
Sujeto a
=
Ntese que la diferencia entre estos dos PL es que la funcin objetivo del segundo es el
opuesto aditivo del la del primero. En este caso la solucin ptima del problema de
minimizacin es la misma del problema de maximizacin, y el el valor mximo de Z es el valor
mnimo de z.
EJEMPLO: la compaa Reddy Mikks produce pinturas para interiores y
exteriores, M1 y M2. La tabla siguiente proporciona los datos bsicos del
problema
Ton de materia prima
Pintura para
exteriores
Pintura para
interiores
Disponibilidad
diaria
Materia prima
M1
6 4 24
Materia prima
M2
1 2 6
Utilidad por ton
(miles de $)
5 4
Una encuesta de mercado indica que la demanda diaria de pintura para
interiores no puede ser mayor que 1 tonelada ms que la de pintura para
exteriores. Tambin, que la demanda mxima diaria de pintura para interiores es
de 2 toneladas. Reddy Mikks desea determinar la mezcla ptima (la mejor) de
productos para exteriores y para interiores que maximice la utilidad diaria total.
El modelo a resolver es
119
MATLAB Orientado a la matemtica aplicada
Maximizar Z= 5
1
+4
2
Sujeto a
6
1
+4
2
24
1
+2
2
6
1
+
2
1
2
2
1
,
2
0
por ello resolveremos el siguiente PL
Minimizar = 5
1
4
2
Sujeto a
6
1
+4
2
24
1
+2
2
6
1
+
2
1
2
2
1
,
2
0
>> C=[-5 -4];
>> A=[6 4;1 2;-1 1;0 1];
>> B=[24;6;1;2];
>> L=[0;0];
>> [X,z]=linprog(C,A,B,[],[],L,[])
Optimization terminated.
X =
3.0000
1.5000
z =
-21.0000
Luego, la solucin de PL original es
1
=3.0000 y
2
= 1.5000. Y al utilidad
mxima diaria es de = = (21.0000) = 21.0000 dlares.
120
Andrs Prez
PROGRAMACIN CUADRTICA
Un problema general de este tipo puede definirse como sigue
Minimizar =
1
2
Sujeto a
=
donde D es una matriz cuadrada, simtrica y tal que
0
Aqu
denota la traspuesta de y
2
solucionar el problema
Minimizar =
1
2
Sujeto a
0
Vemos que la matriz es simtrica, adems
=
1
2
2
1
2
+2
2
2
0
entonces nuestro programa es cuadrtico
121
MATLAB Orientado a la matemtica aplicada
Para resolver un programa cuadrtico de maximizacin
Maximizar =
1
2
Sujeto a
=
hacemos
= =
1
2
=
1
2
() + (
)
>> D=[1 -1;-1 2];
>> C=[-2;-6];
>> A=[1 1;-1 2;2 1];
>> B=[2;2;3];
>> L=[0;0];
>> [X,z] = quadprog(D,C,A,B,[],[],L,[])
Warning: Large-scale method does not currently solve this problem formulation,
using medium-scale method instead.
> In quadprog at 264
Optimization terminated.
X =
0.6667
1.3333
z =
-8.2222
122
Andrs Prez
y procedemos a resolver
Minimizar =
1
2
() + ()
Sujeto a
=
verificando que se satisfaga
() 0
EJEMPLO: dadas las matrices
=
4 2
2 4
, =
4
6
, = ( 1 2 ) , = ( 2 )
Maximizar =
1
2
Sujeto a
1
,
2
0
Vemos que
() = 2
1
2
+2
1
2
+2
2
2
0
As el modelo es cuadrtico, y procedemos a hallar que minimice =
>> D=[4 2;2 4];
>> C=[-4;-6];
>> A=[1 2];
>> B=[2];
>> L=[0;0];
>> [X,z]=quadprog(D,C,A,B,[],[],L,[])
Warning: Large-scale method does not currently solve this problem formulation,
using medium-scale method instead.
123
MATLAB Orientado a la matemtica aplicada
Un programa cuadrtico tambin se puede plantear sin especificar las matrices y , en lugar
de ello se muestra la funcin objetivo en la forma
=
1
2
=1
=1
=1
En la parte lineal es evidente la forma de la matriz . Por el contrario, saber como viene dada
la matriz no es fcil. Para ello veamos el siguiente ejemplo.
>> In quadprog at 264
Optimization terminated.
X =
0.3333
0.8333
z =
-4.1667
Luego, el valor mximo de es = = (4.1667) = 4.1667
EJEMPLO:
Minimizar = 2
1
2
4
1
2
+4
2
2
15
1
30
2
Sujeto a
1
+2
2
30
1
,
2
0
Primeramente debemos hallar una matriz D simtrica de orden 2x2 tal que
1
2
= 2
1
2
4
1
2
+4
2
2
124
Andrs Prez
>> syms x1 x2 D d11 d d22
>> D=[d11 d;d d22]
D =
[ d11, d]
[ d, d22]
>> pretty(expand((1/2)*[x1 x2]*D*[x1;x2]))
Lo cual nos indica que
11
= 4 , = 4 y
22
= 8.
De manera que los datos de nuestro problema son
=
4 4
4 8
, =
15
30
, = ( 1 2 ), = ( 30 )
>> D=[4 -4;-4 8];
>> C=[-15;-30];
>> A=[1 2];
>> B=[30];
>> L=[0;0];
>> [X,z]=quadprog(D,C,A,B,[],[],L,[])
Warning: Large-scale method does not currently solve this problem
formulation,
using medium-scale method instead.
> In quadprog at 264
Optimization terminated.
X =
12
9
z =
-270
125
MATLAB Orientado a la matemtica aplicada
En el ejemplo anterior utilizamos el comando simblico expand, el cual permite expresar un
objeto simblico de forma ms amplia.
Lo cual nos muestra que solucin ptima de nuestro programa cuadrtico es
1
= 12 ,
2
= 9
As, el mnimo valor de
= 270
Lo cual nos muestra que solucin ptima de nuestro programa cuadrtico es
1
=
2
= 0
Sin el mnimo valor de
= 0
126
Andrs Prez
EJERCICIOS 7
1. Resolver
Minimizar = 3
1
+8
2
Sujeto a
1
+
2
8
2
1
3
2
0
1
+2
2
30
3
1
2
0
1
10
2
9
1
,
2
0
2. Resolver
Maximizar = 5
1
+4
2
Sujeto a
6
1
+4
2
24
6
1
+3
2
22.5
1
+
2
5
2
+2
2
6
1
+
2
1
2
2
1
,
2
0
3. Modelos Alfa fabrica camisas y blusas para las Tiendas Beta, que aceptan toda la
produccin de Alfa. En el proceso de produccin interviene el corte, costura y
empacado. Alfa emplea 25 trabajadores en el departamento de corte, 35 en el
departamento de costura y 5 en el departamento de empaque. Esa fbrica trabaja
un turno de 8 horas, 5 das por semana. En la tabla siguiente se muestran los
tiempos necesarios y las utilidades unitarias para las dos prendas
127
MATLAB Orientado a la matemtica aplicada
Minutos por unidad
Prenda Corte Costura Empaque Utilidad unitaria
($)
Camisas 20 70 12 8.00
Blusas 60 60 4 12.00
Mediante un programa lineal:
a) Determine el programa de produccin semanal ptimo para Alfa.
b) Determine el valor de corte, costura y empaque por hora.
4. Juan acaba de entrar a la universidad, y se da cuenta que si slo estudia y no juega,
su personalidad ser gris. Desea repartir su tiempo disponible, aproximadamente
de 10 horas por da, entre juego y estudio. Estima que el juego es doblemente
divertido que el estudio. Tambin desea estudiar cuando menos un tiempo igual al
que pasa jugando. Sin embargo, se da cuenta que si debe hacer todas sus tareas
escolares, no puede jugar ms de 4 horas diarias. Cmo debe repartir Juan su
tiempo, para maximizar su placer de estudiar y jugar?
5. Dadas las matrices
=
8 4
4 8
, = ( 12 12 ) , =
0 1
1 1
, =
3
6
Maximizar =
1
2
Sujeto a
0
6. Resolver
Minimizar =
1
2
+
1
2
+
2
2
1
2
Sujeto a
1
+
2
2
2
1
1
1
,
2
0
128
Andrs Prez
6. Resolver
Maximizar = 2
1
2
4
1
2
3
2
2
+6
1
+3
2
Sujeto a
1
+
2
1
2
1
+3
2
4
1
,
2
0
7. Resolver
Minimizar =
1
2
+
1
2
+2
2
2
+
1
2
Sujeto a
1
2
2
2
1
+
2
1
1
,
2
0
8. Resolver
Minimizar = 2
1
2
+2
2
2
+3
3
2
+2
1
2
+2
2
3
+
1
3
2
5
3
Sujeto a
1
+
2
+
3
1
3
1
+2
2
+
3
6
1
,
2
,
3
0
129
MATLAB Orientado a la matemtica aplicada
CAPTULO 8. MTODOS NUMRICOS
Los mtodos numricos se utilizan habitualmente para resolver problemas matemticos
formulados en diferentes campos cientficos y tcnicos, donde es difcil o incluso imposible
obtener soluciones exactas a un problema dado.
MATLAB posee distintas libreras de funciones pensadas para la resolucin numrica de una
gran variedad de problemas matemticos. Sin embargo, el objetivo principal de este captulo
no es presentar estas funciones predefinidas en MATLAB sino ms bien, ensear al lector como
poder implementar mtodos numricos mediante ficheros de funcin.
Este captulo est compuesto por dos secciones: resolucin de ecuaciones no lineales e
interpolacin polinomial. Al final de cada una se mostrar los comandos ya predefinidos en
MATLAB afines a los mtodos numricos planteados.
RESOLUCIN DE ECUACIONES NO LINEALES
En general, no es posible determinar el cero de una funcin, es decir, el valor
tal que
(
) = 0, en un nmero finito de pasos. Esto hace necesario utilizar mtodos numricos. Los
mtodos son usualmente iterativos (es decir, emplean una sucesin {
} )y tienen la forma:
Iniciar con una aproximacin inicial
0
(o en un intervalo [, ]) de
Calcular las aproximaciones sucesivas
1
,
2
, del cero segn el esquema iterativo
dado por el mtodo
Elegir
como aproximacin de
1
| < ( es llamado tolerancia)
b) |(
} dada por
0
(punto inicial)
+1
= (
) , = 0, 1, 2,
130
Andrs Prez
El cdigo del fichero de funcin que resuelve este problema es el siguiente
function[informe]=met_punto_fijo(x0,maxi)
%ESTE SUBPROGRAMA APROXIMA LA UNICA SOLUCION REAL DE LA ECUACION
% x^3-4*x-1=0
%ESTANDO DICHA SOLUCION EN [-1,1]
%METODO:
% punto fijo
%FORMULACION:
% haciendo fx)=(x^3-1)/4
% hallar x tal que x=f(x)
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%x0: termino inicial
%maxi: iteracion maxima
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo
%columna N1: indices
%columna N2: terminos x_k
%columna N3: evaluacion de x_k en la ecuacion principal
x=[x0, zeros(1,maxi)]; %vector que almacenara los k+1 terminos x0, x1, x2, ..., xk
ec_x0=x0^3-4*x0-1; %evaluamos x0 en la ecuacion principal
ec=[ec_x0, zeros(1,maxi)]; %vector que contendra los k+1 terminos f(x0), f(x1), f(x2), ...,f(xk)
N=[0]; %hasta ahora solo tenemos el termino x0
for k=2:maxi+1 %se hacen k iteraciones
x(k)=(x(k-1)^3-1)/4;
ec(k)=x(k)^3-4*x(k)-1; %evaluamos x_k en la ecuacion principal
N=[N, k-1]; %anexamos el indice k
EJEMPLO: aproximaremos una solucin de la ecuacin
3
4 1 = 0
lo cual es equivalente a hallar el punto fijo de la funcin
() =
3
1
4
Punto inicial: 0.5
Criterio de parada: 5 iteraciones
131
MATLAB Orientado a la matemtica aplicada
end
informe=[N',x',ec'];
Mtodo de biseccin
Este es uno de los mtodos ms sencillos y de fcil intuicin, para resolver ecuaciones de una
variable. Si una funcin es tal que () y () tienen signos opuestos, el valor cero es un
valor intermedio entre () y (), por lo que con certeza existe un
en [, ] que cumple
(
) = 0.
El mtodo consiste en lo siguiente: supongamos que en el intervalo [, ] hay un cero de .
Calculamos el punto medio = ( +)/2 del intervalo [, ]. A continuacin calculamos
(). Verificamos si () tiene signo opuesto al de (). Se redefine el intervalo [, ] como
[, ] o [, ] segn se haya determinado en cul de estos intervalos ocurre un cambio de
signo. A este nuevo intervalo se le aplica el mismo procedimiento y as, sucesivamente, iremos
encerrando la solucin en un intervalo cada vez ms pequeo, hasta alcanzar la precisin
deseada.
ESQUEMA ITERATIVO: emplear las sucesiones {
}, {
} y {
} dadas como
1
(extremo izquierdo inicial)
1
(extremo derecho inicial inicial)
[
] =
[
1
,
1
], (
1
)(
1
) > 0
[
1
,
1
], (
1
)(
1
) < 0
; = 2,3,
2
; = 1,2,
En este caso la sucesin {
.
EJEMPLO (continuacin): una vez definido y guardado el fichero, lo podemos
utilizar
>> [informe]=met_punto_fijo(-0.5,5)
informe =
0 -0.5000 0.8750
1.0000 -0.2813 0.1028
2.0000 -0.2556 0.0056
3.0000 -0.2542 0.0003
4.0000 -0.2541 0.0000
5.0000 -0.2541 0.0000
132
Andrs Prez
CDIGO:
function[informe]=met_biseccion(a,b,cota)
%ESTE SUBPROGRAMA APROXIMA EL CERO DE LA FUNCION
% f(x)=x^2-cos(x)-1 en [1,2]
%METODO:
% biseccion
%CRITERIO DE PARADA:
% |f(m_k)|<cota
%ARGUMENTOS DE ENTRADA:
%a: extremo izquierdo inicial
%b: extremo derecho inicial
%cota: cota superior de |f(m_k)|
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo de biseccion
%columna N1: cantidad de iteraciones
%columna N2: terminos a_k
%colmuna N3: terminos b_k
%columna N4: terminos m_k
%colmuna N5: terminos de la sucecion de diametros d_k=(b-a)/2^k
%columna N6: evaluacion f(m_k)
k=1;
N=[k]; %inicializamos el vector N
m=[(a+b)/2]; %inicializamos el vector de terminos m_k
d=[0.5]; %inicializamos el vector de terminos d_k
f_a=a(1)^2-cos(a(1))-1; %evaluacion f(a_1)
f_m=m(1)^2-cos(m(1))-1; %evaluacion f(m_1)
f=[f_m]; %inicializamos el vector de imagenes f(m_k)
EJEMPLO: la funcin
() =
2
cos() 1
tiene un cambio de signo en el intervalo [1,2]. Aproximaremos
mediante el
mtodo de biseccin
Extremo izquierdo inicial:
1
= 1
Extremo derecho inicial:
1
= 2
Criterio de parada: cota = 0.00454
133
MATLAB Orientado a la matemtica aplicada
while abs(f_m(k))>=cota
if f_a*f_m>0
a_k=m(k); %nuevo termino de a
b_k=b(k); %nuevo termino de b
else
a_k=a(k); %nuevo termino de a
b_k=m(k); %nueo termino de b
end
a=[a, a_k]; %agrandar el vector a
b=[b, b_k]; %agrandar el vector b
m_k=(a_k+b_k)/2; %nuevo termino de m
m=[m, m_k]; %agrandar el vector m
f_a=a_k^2-cos(a_k)-1; %evaluacion f(a_k)
f_m=m_k^2-cos(m_k)-1; %evaluacion f(m_k)
k=k+1; %aumentamos el contador
N=[N, k]; %agrandar el vector N
d=[d, 1/2^k]; %agrandar el vector d
f=[f, f_m]; %agrandar el vector f
end
informe=[N', a', b', m', d', f'];
134
Andrs Prez
Mtodo de Newton
El mtodo de Newton es uno de los mtodos que muestra mejor velocidad de convergencia
llegando (bajo ciertas condiciones) a duplicar, en cada iteracin, los decimales exactos.
El mtodo consiste as: partiendo de una aproximacin
0
de un cero
de , entonces
1
es
la interseccin de la recta tangente a en
0
, con el eje . Cuando se ha calculado una
aproximacin
, la siguiente aproximacin
+1
se obtiene hallando la interseccin con el
eje de la recte tangente en el punto (
, (
)).
ESQUEMA ITERATIVO: emplear la sucesin {
} dada por
0
(punto inicial)
+1
=
)
, = 0,1,2,
EJEMPLO (continuacin):
>> [informe]=met_biseccion(1,2,0.00454)
informe =
1.0000 1.0000 2.0000 1.5000 0.5000 1.1793
2.0000 1.0000 1.5000 1.2500 0.2500 0.2472
3.0000 1.0000 1.2500 1.1250 0.1250 -0.1656
4.0000 1.1250 1.2500 1.1875 0.0625 0.0362
5.0000 1.1250 1.1875 1.1563 0.0313 -0.0659
6.0000 1.1563 1.1875 1.1719 0.0156 -0.0151
7.0000 1.1719 1.1875 1.1797 0.0078 0.0104
8.0000 1.1719 1.1797 1.1758 0.0039 -0.0024
EJEMPLO: aproximar la solucin
de la ecuacin
2
= () +1
estando
en [1,2]
Punto inicial:
0
= 1.5
Criterio de parada: tolerancia = 0.0089
135
MATLAB Orientado a la matemtica aplicada
CDIGO:
function[informe]=met_newton(x0,tol)
%ESTE SUBPROGRAMA APROXIMA LA UNICA SOLUCION DE LA ECUACION
% x^2=cos(x)+1 en [1,2]
%METODO:
% Newton
%PLANTEAMIENTO:
% aproximar el cero de la funcion f(x)=x^2-cos(x)-1 en [1,2]
%CRITERIO DE PARADA:
% | x_{n} - x_{n-1} |<=tol
%ARGUMENTOS DE ENTRADA:
%x0: aproximacion del cero de f
%tol: tolerancia
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo de biseccion
%columna N1: cantidad de iteraciones
%columna N2: terminos x_k
%columna N3: error absluto estimado como | x_{n} - x_{n-1} |
x1=x0-(x0^2-cos(x0)-1)/(2*x0+sin(x0));
x=[x1]; %inicializamos el vetor de terminos x_k
est=[abs(x1-x0)]; %inicializamos el vector de estimacion del error absoluto
k=1; %cantidad de terminos actual
N=[k]; %inicializamos el vector de iteraciones
while est(k)>tol
x_new=x(k)-(x(k)^2-cos(x(k))-1)/(2*x(k)+sin(x(k))); %calculamos el nuevo termino
est_new=abs(x_new-x(k)); %calculamos la nueva estimacion del error absluto
k=k+1; %aumentamos el contador
x=[x, x_new]; %agrandamos el vector x
est=[est, est_new]; %agrandamos el vector est
N=[N, k]; %agrandamos el vector N
end
informe=[N', x', est'];
136
Andrs Prez
Mtodo de Euler
El mtodo de Newton puede obtenerse con un polinomio de Taylor de orden 1. Si
aumentamos el orden del polinomio de Taylor, se puede obtener un mtodo de orden
superios. Tal es el mtodo de Euler, el cual es de orden cbico.
ESQUEMA ITERATIVO: emplear la sucecin {
}dada por
0
(punto inicial)
+1
=
)
2
1 +1 2(
)
donde
() =
()
()
() = ()
()
()
CDIGO:
function[informe]=met_euler(x0,maxi)
%ESTE SUBPROGRAMA APROXIMA UN CERO DE LA FUNCION
% f(x)=x^2-2*cos(x)+1
%METODO:
% Euler
EJEMPLO (continuacin):
>> [informe]=met_newton(1.5,0.0089)
informe =
1.0000 1.2050 0.2950
2.0000 1.1768 0.0282
3.0000 1.1765 0.0003
EJEMPLO: aproximar un cero de la funcin
() =
2
2cos() +1
Punto inicial:
0
= 0.5
Criterio de parada: 6 iteraciones
137
MATLAB Orientado a la matemtica aplicada
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%x0: aproximacion del cero de f
%maxi: iteracion maxima
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo de euler
%columna N1: cantidad de iteraciones
%columna N2: terminos x_k
%columna N3: error absluto estimado como | x_{n} - x_{n-1} |
Ux0=(x0^2-2*cos(x0)+1)/(2*x0+2*sin(x0)); %evaluamos la funcion auxiliar U
Tx0=Ux0* (1+cos(x0)/(x0+sin(x0))); %evaluamos la funcion auxiliar T
x1=x0-Ux0*(2/(1+sqrt(1-2*Tx0)));
x=[x1]; %inicializamos el vetor de terminos x_k
est=[abs(x1-x0)]; %inicializamos el vector de estimacion del error absoluto
N=[1]; %inicializamos el vector de iteraciones
for k=2:maxi
Ux_k=(x(k-1)^2-2*cos(x(k-1))+1)/(2*x(k-1)+2*sin(x(k-1))); %evaluamos la funcion
%auxiliar U
Tx_k=Ux0* (1+cos(x(k-1))/(x0+sin(x(k-1)))); %evaluamos la funcion auxiliar T
x_new=x(k-1)-Ux_k*(2/(1+sqrt(1-2*Tx_k)));
est_new=abs(x_new-x(k-1)); %calculamos la nueva estimacion del error absluto
=[x, x_new]; %agrandamos el vector x
est=[est, est_new]; %agrandamos el vector est
N=[N, k]; %agrandamos el vector N
end
informe=[N', x', est'];
138
Andrs Prez
Un mtodo hbrido: Newton-Biseccin
Si el mtodo de Newton falla (en algn sentido) en una iteracin, podemos usar biseccin para
dar un pequeo salto y regresar al mtodo de Newton lo ms pronto posible.
El mtodo es como sigue: supongamos que ()() < 0. Sea
0
= o
0
= . En cada
iteracin una nueva aproximacin
=
0
(
0
)
(
0
) cae en [, ] lo aceptamos, sino usamos biseccinm, es
decir
= ( +) 2
Actualizar:
= o
= ,
)(
) < 0
EJEMPLO (continuacin):
>> [informe]=met_euler(0.5,6)
informe =
1.0000 0.7143 0.2143
2.0000 0.7146 0.0002
3.0000 0.7146 0.0000
4.0000 0.7146 0.0000
5.0000 0.7146 0.0000
6.0000 0.7146 0.0000
EJEMPLO: aproximar el cero
de la funcin
() = 0.2(16) +1.75
sabiendo que cambia de signo en el intervalo [1,2]
Punto inicial:
0
= 1
Extremo izquierdo inicial: = 1
Extremo derecho inicial: = 2
Criterio de parada: 8 iteraciones
139
MATLAB Orientado a la matemtica aplicada
CDIGO:
function[informe]=meth_newton_biseccion(x0,a,b,maxi)
%ESTE SUBPROGRAMA APROXIMA UN CERO DE LA FUNCION
% f(x)=0.2*sen(16*x)-x+1.75
%DICHO CERO ESTA EN [1,2]
%METODO:
% hibrido: newton-biseccion
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%x0: aproximacion del cero de f
%a: extremo izquierdo inicial
%b: extremo derecho inicial
%maxi: iteracion maxima
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo newton-biseccion
%columna N1: cantidad de iteraciones
%columna N2: terminos x_k
%columna N3: error absluto estimado como | x_{n} - x_{n-1} |
%columna N4: metodo empleado en la k-esima iteracion
% 1) Newton
% 2) Biseccion
cand=x0-(0.2*sin(16*x0)-x0+1.75)/(3.2*cos(16*x0)-1); %calculamos el candidato a ser x1
if 1<cand & cand<2
x1=cand;
met=[1]; %metodod de Newton
else
x1=(a+b)/2;
met=[2]; %metodo de Biseccion
end
x=[x1]; %inicializamos el vector de terminos x_k
est=[abs(x1-x0)]; %inicializamos el vector de estimacion del error absoluto
N=[1]; %inicializamos el vector de iteraciones
f_a=0.2*sin(16*1)-1+1.75; %evaluacion f(1)
f_x1=0.2*sin(16*x1)-x1+1.75; %evaluacion f(x1)
if f_a*f_x1<0 %a no varia
140
Andrs Prez
b=x1; %actualizacion de b
else %b no varia
a=x1; %actualizacion de a
end
for k=2:maxi
cand=x(k-1)-(0.2*sin(16*x(k-1))-x(k-1)+1.75)/(3.2*cos(16*x(k-1))-1); %calculamos el
%candidato a ser x_new
if a<cand & cand<b %aplicar el metodo de Newton
x_new=cand;
met=[met, 1]; %agrandar el vetor met
else %aplicar el metodo de Biseccion
x_new=(a+b)/2;
met=[met, 2]; %agrandar el vector met
end
est_new=abs(x_new-x(k-1));
x=[x, x_new]; %agrandar el vector de terminos x_k
est=[est, est_new]; %agrandar el vector de estimacion del error absoluto
N=[N, k]; %agrandar el vector de iteraciones
f_a=0.2*sin(16*a)-a+1.75; %evaluacion f(a)
f_x_new=0.2*sin(16*x_new)-x_new+1.75; %evaluacion f(x_new)
if f_a*f_x_new<0 %a no varia
b=x_new; %actualizacion de b
else %b no varia
a=x_new; %actualizacion de a
end
end
141
MATLAB Orientado a la matemtica aplicada
informe=[N', x', est', met'];
Mtodo de la Falsa Posicin
La idea de este mtodo es similar al de biseccin: iniciar en un intervalo [, ] donde cambia
de signo, y obtener una sucesin de intervalos encajados [
, (
)) y (
, (
)) y el eje .
ESQUEMA ITERATIVO: emplear las sucesiones {
}, {
} y {
} dadas para = 1, 2,
[
] =
[
1
,
1
], (
1
)(
1
) > 0
[
1
,
1
], (
1
)(
1
) < 0
)
(
) (
)
EJEMPLO (continuacin):
>> [informe]=meth_newton_biseccion(1,1,2,8)
informe =
1.0000 1.1704 0.1704 1.0000
2.0000 1.5852 0.4148 2.0000
3.0000 1.7926 0.2074 2.0000
4.0000 1.7617 0.0309 1.0000
5.0000 1.7631 0.0014 1.0000
6.0000 1.7631 0.0000 1.0000
7.0000 1.7631 0.0000 1.0000
8.0000 1.7624 0.0007 2.0000
142
Andrs Prez
CODIGO:
function[informe]=met_falsa_posicion(a,b,maxi)
%ESTE SUBPROGRAMA APROXIMA LA RAIZ DEL POLINOMIO
% P(x)=x^2-1
%DONDE TAL RAIZ SE ENCUENTRA EN EL INTERVALO [0,4]
%MTODO:
% falsa posicion
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%a: extremo izquierdo inicial
%b: extremo derecho inicial
%maxi: numero de iteraciones que se desea
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo
%columna N1: indices
%columna N2: terminos a_k
%columna N3: terminos b_k
%columna N4: terminos x_k (falsa posicion)
f_a=a^2-1; %evaluamos f(a1)
f_b=b^2-1; %evaluamos f(b1)
x=(a*f_b-b*f_a)/(f_b-f_a); %primer termino x_k
f_x=x^2-1; %evaluamos f en la falsa posicion
a=[a]; %inicializamos el vector a
b=[b]; %inicializamos el vector b
x=[x]; %inicializamos el vector x
N=[1]; %inicializamos el vector N
for k=2:maxi
EJEMPLO: hallar una aproximacin de la raz
} dada por
0
(primer punto inicial)
1
(segundo punto inicial)
+1
=
1
(
(
1
)
(
) (
1
)
, = 1,2,
CDIGO:
function[informe]=met_secante(x0,x1,cota)
%ESTE SUBPROGRAMA APROXIMA LA RAIZ DEL POLINOMIO
% P(x)=x^3-0.2*x^2-0.2*x-1.2
%DONDE TAL RAIZ SE ENCUENTRA EN EL INTERVALO [1,1.5]
%MTODO:
% secante
%CRITERIO DE PARADA:
% | f(x_{k+1}) |<cota
%ARGUMENTOS DE ENTRADA:
%x0: primer punto inicial
%x1: segundo punto inicial
%cota: cota de la imagen x_{k+1}
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo
%columna N1: indices
%columna N2: terminos x_{k+1}
%columna N3: estimacion del k+1-esimo error absoluto como | x_{k+1} - x_{k} |
%columna N4: evaluacion | f(x_{k+1}) |
f_x0=x0^3-0.2*x0^2-0.2*x0-1.2; %imagen f(x_{0})
EJEMPLO: aproximar la raz
del polinomio
() =
3
0.2
2
0.2 1.2
estando
en el intervalo [1,1.5].
Primer punto inicial:
0
= 1
Segundo punto inicial:
1
= 1.5
Criterio de parada: cota =
145
MATLAB Orientado a la matemtica aplicada
f_x1=x1^3-0.2*x1^2-0.2*x1-1.2; %imagen f(x_{1})
x2=(x0*f_x1-x1*f_x0)/(f_x1-f_x0);
f_x2=x2^3-0.2*x2^2-0.2*x2-1.2; %imagen f(x_{2})
est1=abs(x1-x0);
est2=abs(x2-x1);
k=2; %hasta ahora tenemos dos terminos
x=[x1, x2]; %inicializamos el vector de terminos
est=[est1, est2]; %inicializamos el vector de estimacion
f=[f_x1, f_x2]; %inicializamos el vector de imagenes
N=[1, 2]; %inicializamos el vector N
while abs(f(k))>=cota %se refiere a f(x_{k}), NO confundir con f(2)
f_a=x(k-1)^3-0.2*x(k-1)^2-0.2*x(k-1)-1.2; %imagen del termino x_{k-1}
f_b=x(k)^3-0.2*x(k)^2-0.2*x(k)-1.2; %imagen del termino x_{k}
x_new=(x(k-1)*f(k)-x(k)*f(k-1))/(f(k)-f(k-1)); %nuevo termino x_{k+1}
f_x_new=x_new^3-0.2*x_new^2-0.2*x_new-1.2; %imagen f(x_{k+1})
est_new=abs(x_new-x(k)); %estimacion | x_{k+1} - x_{k} |
k=k+1; %aumentamos el contador
x=[x, x_new]; %agrandamos el vector x
est=[est, est_new]; %agrandamos el vector est
f=[f, f_x_new]; %agrandamos el vector f
N=[N, k]; %agrandamos el vector N
end
informe=[N', x', est', f'];
146
Andrs Prez
Comandos predefinidos en MATLAB
Para hallar el cero de una funcin, MATLAB habilita el comando fzero, el cual es un M-Fichero
cuyo algoritmo usa una combinacin de los mtodos de biseccin, secante e interpolacin
cuadrtica inversa. La sintaxis para este comando es
>>[x,fval,exitflag,output]=fzero( f ,x0)
donde los argumentos de entrada son
o f: funcin a estudiar, la cual debe introducirse entre comillas
o x0: escalar o vector de dos elementos. Si es un escalar, es interpretado como un punto
inicial del mtodo iterativo a emplear. Si es un vector de dos elementos, digamos
x0=[a,b], MATLAB lo considera como el intervalo inicial del mtodo iterativo (y debe
cumplirse que f(a)f(b)<0).
Mientras que los argumentos de salida son
o x: aproximacin del cero de f
o fval: valor de la funcin f en x
o exitflag: condicin de salida del comando fzero. Los posibles valores son
1 si la funcin converge a la solucin x
-1 si el algoritmo fue por la funcin de salida
-3 NaN o Inf si la funcin toma estos valores en el algoritmo
-4 si la funcin toma valores complejos en el algoritmo
-5 si el comando fzero converge a un punto singular
o output: contiene informacin acerca de la optimizacin. Los posibles valores son
output.algorithm algoritmo usado
output.funcCount N de evaluaciones de la funcin
EJMPLO (continuacin):
>> [informe]=met_secante(1,1.5,0.000023)
informe =
1.0000 1.5000 0.5000 1.4250
2.0000 1.1481 0.3519 -0.1797
3.0000 1.1876 0.0394 -0.0448
4.0000 1.2006 0.0131 0.0023
5.0000 1.2000 0.0006 -0.0000
6.0000 1.2000 0.0000 -0.0000
147
MATLAB Orientado a la matemtica aplicada
output.intervaliterations N de iteraciones hechas para hallar un intervalo
output.iterations N de iteraciones en la bsque del cero de f
output.message mensaje de salida
EJEMPLO: iniciando en el punto
0
= 0.7854 hallar el cero de la funcin
() = () ()
>> [x,fval,exitflag,output]=fsolve('sin(x)-cos(x)',0.7854)
Optimization terminated: first-order optimality is less than options.TolFun.
x =
0.7854
fval =
-3.3307e-015
exitflag =
1
output =
iterations: 1
funcCount: 4
algorithm: 'trust-region dogleg'
firstorderopt: 4.7103e-015
message: 'Optimization terminated: first-order optimality is less than
options.TolFun.'
148
Andrs Prez
INTERPOLACIN POLINOMIAL
Dada una funcin , si conocemos +1 puntos de si grfico, la interpolacin polinomial
consiste en hallar un polinomio
= (
) para
alguna funcin ; encontrar un polinomio
) =
, = 0,1,2, ,
A
() donde
( ).
A continuacin, estudiaremos seis formas de calcular el polinomio interpolante.
Forma de Lagrange
Lagrange demostr que el polinomio interpolante viene dado por
() =
0
,0
() +
1
,1
() ++
,
()
donde para cada = 0,1,2, ,
,
() =
=0
=0
Definimos los pesos baricntricos como
=
1
=0
, = 0,1,2, ,
La forma modificada del polinomio de Lagrange se escribe como
() = ()
=0
CDIGOS:
Para el clculo de los pesos baricntricos
function[W]=pesos_baricentricos(x)
%ESTE SUBPROGRAMA CALCULA LOS PESOS BARICENTRICOS DE n+1 NODOS
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%ARGUMENTOS DE SALIDA:
%W: vector con los pesos baricentricos
m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)
W=zeros(1,m); %damos forma el vector de pesos baricentricos
for k=1:m %en cada iteracion se calcula el k-1 esimo peso baricentrico
%W_{k-1}
fac=1;
for i=1:m
if i~=k
fac=fac*(1/(x(k)-x(i)));
end
151
MATLAB Orientado a la matemtica aplicada
end
W(k)=fac;
end
Para la interpolacin (aqu se utiliza la funcin pesos_baricentricos)
function[f_new]=forma_lagrange_modificada(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre
%si,denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
%este subprograma interpola f %en x_new mediante el polinomio interpolante de grado n
%METODO:
% forma modificada de Lagrange
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)
L=1;
for k=1:m
L=L*(x_new-x(k));
end
[W]=pesos_baricentricos(x);
suma=0;
for k=1:m %evaluamos el polinomio interpolante en x_new
suma=suma+(W(k)/(x_new-x(k)))*y(k);
end
f_new=L*suma;
152
Andrs Prez
Forma baricntrica de Lagrange
La forma baricntrica del polinomio de Lagrange es
() =
, =
=0
=0
,
CDIGO:
Aqu se utiliza la funcin pesos_baricentricos
function[f_new]=forma_baricentrica_lagrange(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre %si,
%denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
%este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
%forma baricentrica del poliniomio de Lagrange
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)
EJEMPLO: considere los siguientes datos del segundo coeficiente virial en funcin
de la temperatura
() 100 150 320 400 500 600
(
() =
, =
(1)
=0
(1)
=0
,
CDIGO:
function[f_new]=forma_lagrange_baricentrica_2(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre si,
%denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
%forma baricentrica del poliniomio de Lagrange con nodos igualmente espaciados
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos igualmente espaciados
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)
n=m-1;
suma1=0;
suma2=0;
for k=1:m
num_comb=factorial(n)/(factorial(k-1)*factorial(n-(k-1)));
suma1=suma1+(-1)^(k-1)*num_comb*(y(k)/(x_new-x(k)));
suma2=suma2+(-1)^(k-1)*num_comb*(1/(x_new-x(k)));
end
f_new=suma1/suma2; %evaluamos el polinomio interpolante en x_new
155
MATLAB Orientado a la matemtica aplicada
Forma de Newton
La representacin
() =
0,0
+
1,1
(
0
) +
2.2
(
0
)(
1
)
++
,
(
0
) (
1
)
para el polinomio interpolante que pasa por los +1 puntos (
0
,
0
), (
1
,
1
), , (
), es
conocida como la presentacin de Newton del polinomio interpolante. Los coeficientes
,
son los elementos de la diagonal de la matriz de diferencias divididas
0,0
1,0
1,1
2,0
2,1
3,0
3,1
,0
,1
2,2
3,2
,2
,
Para el clculo de las diferencias divididas, se utiliza la frmula recursiva
,0
=
, = 0, 1 ,2, ,
,
=
,1
1,1
, = 1, 2, , , = , ,
CDIGOS:
Para la matriz de diferencias divididas
EJEMPLO: de una funcin conocemos los siguientes datos
-0.5 0 0.5 1 1.5 2
() 4.5 6 5.2 4.7 2.9 1
Tomando en cuenta que los nodos estn igualmente espaciados interpole (0.2)
>> x=[-0.5 0 0.5 1 1.5 2];
>> y=[4.5 6 5.2 4.7 2.9 1];
>> [f_new]=forma_lagrange_baricentrica_2(x,y,0.2)
f_new =
5.6348
156
Andrs Prez
function[C]=diferencias_divididas(x,y)
%ESTE SUBPROGRAMA CALCULA LA MATRIZ DE DIFERENCIAS DIVIDIDAS DE n+1 PUNTOS
%(x0,y0), (x1,y1),, (xn, yn)
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%C: matriz con las diferencias divididas
m=length(x); %cantidad de nodos m=n+1
n=m-1;
C=zeros(m); %damos forma a la matriz de diferencias divididas
%con el siguiente bucle llenamos la primera columna de la matriz C
for i=1:m
C(i,1)=y(i); %aqui se calcula C_{i,0}
end
%con el siguiente bucle llenamos el resto de la triangular inferior de la matriz C
for j=1:n
for i=j:n
C(i+1,j+1)=(C(i+1,j)-C(i,j))/(x(i+1)-x(i-j+1));
end
end
Para la interpolacin (aqu se utiliza la funcin diferencias_divididas)
function[f_new]=forma_newton(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre si,
%denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
% forma de Newton
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
m=length(x); %cantidad de nodos m=n+1
157
MATLAB Orientado a la matemtica aplicada
[C]=diferencias_divididas(x,y);
suma=C(1,1);
fac=1;
for j=2:m
fac=fac*(x_new-x(j-1));
suma=suma+C(j,j)*fac;
end
f_new=suma; %evaluamos el polinomio interpolante en x_new
Forma de Newton con nodos igualmente espaciados
Si tenemos nodos igualmente espaciados (de paso ) y =
0
+ , entonces la forma de
Newton del polinomio interpolante adquiere la forma
() =
=0
Donde los coeficientes
,
son las entradas de la diagonal principal de la matriz de diferencias
divididas, y
0
= 1 ,
1
= ,
2
=
( 1)
2
,
=
( 1)( 2) ( ( 1))
!
CDIGOS:
Para el nmero combinatorio extendido
function[combi]=combinatorio_ext(s,k)
%ESTE SUBPROGRAMA CALCULA EL NUMERO COMBINATORIO EXTENDIDO
%ARGUMENTOS DE ENTRADA:
%s: numero real cualquiera
%k: numero entero no negativo
%ARGUMENTOS DE SALIDA:
%combi: numero combinatorio extendido C_{s,k}
fac=1;
for i=0:k-1
fac=fac*(s-i);
end
combi=fac/factorial(k);
Para la interpolacin (aqu se utilizan las funciones diferencias_divididas y combinatorio_ext)
function[f_new,C,s]=forma_newton_2(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre
si,denotando A={x0, x1, ..., xn},
%y dado x_new distinto de cada xi con min(A)<x_new<max(A); este subprograma interpola f
en x_new mediante
%el polinomio interpolante de grado n
%METODO:
%forma de Newton del poliniomio interpolante con nodos igualmente espaciados
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos igualmente espaciados
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
159
MATLAB Orientado a la matemtica aplicada
m=length(x); %cantidad de nodos m=n+1
[C]=diferencias_divididas(x,y);
h=abs(x(1)-x(2)); %distancia entre nodos consecutivos
s=(x_new-x(1))/h; %s es el numero tal que x_new=x(1)+s*h
suma=0;
for k=1:m
[combi]=combinatorio_ext(s,k-1); %numero combinatorio extendido C_{s,k} (pues s es
%real)
suma=suma+combi*factorial(k-1)*h^(k-1)*C(k,k);
end
f_new=suma; %evaluamos el polinomio interpolante en x_new
EJEMPLO: de una funcin , conocemos los siguientes datos
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
() 3 3.1 3.2 3.3 3.4 4.5 4.6 4.7
Interpolar (0.57)
>> x=[0:0.1:0.7];
>> y=[3 3.1 3.2 3.3 .34 4.5 4.6 4.7];
>> [f_new]=forma_newton_2(x,y,0.57)
f_new =
6.4180
160
Andrs Prez
Comandos predefinidos en MATLAB
Para calcular los coeficientes del polinomio interpolador
y: vector fila que almacena los valores
0
,
1
, ,
n: grado del polinomio
Y los argumento de salida es
p: vector fila con los coeficientes del polinomio interpolador
Mas precisamente, p arroja los n+1 coeficientes de
() en sentido decreciente
() =
1
+
2
1
++
+
+1
Una vez obtenido el vector p de los coeficientes del polinomio, este puede ser evaluado en un
valor x con el comando
>>polyval(p,x)
EJEMPLO: la altura () alcanzada en tiempo por un fluido, en un cilindro recto,
ha sido medida cada 5 segundos obtenindose los siguientes valores
0 5 10 15 20
() 0.6350 0.1336 0.4410 1.3572 0.2822
Aproximar la altura del fluido a los 16 segundos
>> x=[0 5 10 15 20];
>> y=[0.6350 0.1336 0.4410 1.3572 0.2822];
>> p=polyfit(x,y,4)
p =
-0.0002 0.0045 -0.0238 -0.0745 0.6350
Para interpolar h(16), evaluamos p(16)
161
MATLAB Orientado a la matemtica aplicada
>> polyval(p,16)
ans =
1.4269
A continuacin, visualizamos el grfico del polinomio interpolante
>> t=[0:0.1:20];
>> u=polyval(p,t);
>> plot(t,u)
162
Andrs Prez
EJERCICIOS 8
1. Resuelva las siguientes ecuaciones con el mtodo indicado
a) cos() = 0, punto fijo,
0
= 0.8, = 0.0023
b)
2
1 = 0, biseccin,
1
= 0.25,
1
= 1.25, siete iteraciones
c)
= 0, Newton,
0
= 0.4, = 0.005
d) 1536 +6272 11328
2
+11872
3
7952
4
+3528
5
1036
6
+194
7
21
8
+
9
= 0, Euler,
0
= 2.2
e)
3
cos() (2) +1, Newton-biseccin,
0
= 1.5, = 1, = 2,
= 0.012
f) () cosh() 1 = 0, falsa posicin, = 3 2 , = 2, cinco
iteraciones
g)
5
100
4
+3995
3
79700
2
+794004 3160075 = 0, secante,
0
= 22.2,
1
= 17, = 0.0007
2. Resuelva la ecuacin
2
2cos() +1 = 0
Aplicando Newton y Euler simultneamente,
0
= 0.5, diez iteraciones. La
salida del fichero que va a definir debe ser una matriz de orden 10 3, donde:
La primera columna indique el ndice de la iteracin
La segunda columna muestre los trminos
2
cos() 1 = 0
Aplicando biseccin y falsa posicin simultneamente,
1
= 1,
1
= 2, nueve
iteraciones. La salida del fichero que va a definir debe ser una matriz de orden
9 3, donde:
La primera columna indique el ndice de la iteracin
La segunda columna muestre los trminos