Vous êtes sur la page 1sur 0

Introduccin al

MATLAB
Luis Rojas Malav
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
i
INDICE
1. Introduccin .................................................................................... 1
2. Comandos de Utilidad .................................................................. 2
3. Comandos de Propsitos Generales ............................................ 7
3.1 Operadores y Caracteres Generales .................................... 8
3.2 Operadores Aritmticos ........................................................ 9
4. Matrices .......................................................................................... 11
4.1 Generacin de Matrices ........................................................ 14
4.2 Ejercicios ................................................................................. 17
4.3 Obteniendo informacin del Workspace .............................. 20
4.4 Guardar las Variables del Workspace ................................. 22
4.5 Nmeros y Expresiones Aritmticas ..................................... 26
4.6 Formato Numrico de Salida ................................................ 28
4.7 Operaciones con Matrices ..................................................... 30
4.7.1 Matriz Transpuesta .................................................... 30
4.7.2 Suma y Resta de Matrices .......................................... 32
4.7.3 Multiplicacin de Matrices ........................................ 37
4.7.4 Divisin de Matrices .................................................... 41
4.7.5 Potenciacin de Matrices ............................................ 44
4.7.6 Operaciones de Elemento por Elemento ................... 45
5. Capacidad de Graficacin .......................................................... 51
5.1 Metodologa de Trabajo ......................................................... 53
5.2 Grficas Bidimensionales ...................................................... 56
5.2.1 Programas:
q CLASE1 .......................................................... 56
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
ii
q CLASE2 .......................................................... 58
q CLASE3 .......................................................... 67
q CLASE4 .......................................................... 69
q CLASE5 .......................................................... 70
q CLASE6 .......................................................... 71
q CLASE7 .......................................................... 72
q CLASE8 .......................................................... 73
q CLASE9 .......................................................... 74
q CLASE10 ........................................................ 75
q CLASE11 ........................................................ 76
q CLASE12 ........................................................ 77
q CLASE13 ........................................................ 78
q CLASE14 ........................................................ 79
q CLASE15 ........................................................ 80
q CLASE16 ........................................................ 81
q CLASE17 ........................................................ 83
q CLASE18 ........................................................ 85
5.3 Grficas Tridimensionales ..................................................... 87
5.3.1 Grficas de Lneas ....................................................... 87
5.3.1.1 Programas:
q CLASE19 ........................................................ 87
q CLASE20 ........................................................ 89
5.3.2 Grficas de Mallas y Superficies ................................ 91
5.3.2.1 Programas:
q CLASE21 ........................................................ 91
q CLASE22 ........................................................ 94
q CLASE23 ........................................................ 97
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
iii
q CLASE24 ....................................................... 100
q CLASE25 ....................................................... 102
q CLASE26 ....................................................... 105
q CLASE27 ....................................................... 108
q CLASE28 ....................................................... 111
q CLASE29 ....................................................... 114
q CLASE30 ....................................................... 116
q CLASE31 ....................................................... 118
q CLASE32 ....................................................... 121
q CLASE33 ....................................................... 124
q CLASE34 ....................................................... 126
q CLASE35 ....................................................... 129
q CLASE36 ....................................................... 130
q CLASE37 ....................................................... 132
q CLASE38 ....................................................... 134
q CLASE39 ....................................................... 135
q CLASE40 ....................................................... 137
q CLASE41 ....................................................... 138
q CLASE42 ....................................................... 139
q CLASE43 ....................................................... 140
q CLASE44 ....................................................... 141
6. Edicin de Programas ............................................................... 142
6.1 Programas:
q PSICRO1 ....................................................... 146
7. Edicin de Funciones ................................................................. 150
7.1 Programas:
q PSICRFUN .................................................... 151
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
iv
8. Operaciones Relacionales y Lgicas ........................................ 154
8.1 Operadores Relacionales ...................................................... 154
8.1.1 Programas:
q LGICA1 ...................................................... 155
q LGICA2 ...................................................... 157
q LGICA3 ...................................................... 159
q LGICA4 ...................................................... 160
8.2 Operadores Lgicos ............................................................... 161
8.2.1 Programas:
q LGICA5 ...................................................... 162
q LGICA6 ...................................................... 163
q LGICA7 ...................................................... 165
8.3 Operadores Adicionales ........................................................ 166
8.3.1 Programas:
q LGICA8 ...................................................... 167
q LGICA9 ...................................................... 168
q LGICA10 .................................................... 169
q LGICA11 .................................................... 170
q LGICA12 .................................................... 172
q LGICA13 .................................................... 174
9. Controladores de Flujo .............................................................. 176
9.1 BUCLES for ............................................................................ 176
9.1.1 Programas:
q BUCLE1 ......................................................... 176
q BUCLE2 ......................................................... 178
q BUCLE3 ......................................................... 180
q BUCLE4 ......................................................... 182
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
v
q BUCLE5 ......................................................... 185
q BUCLE6 ......................................................... 186
q BUCLE7 ......................................................... 188
q BUCLE8 ......................................................... 190
q BUCLE9 ......................................................... 191
q BUCLE10 ....................................................... 194
q BUCLE11 ....................................................... 196
9.2 BUCLES while ........................................................................ 197
9.2.1 Programas:
q BUCLE12 ....................................................... 197
q BUCLE13 ....................................................... 202
9.3 BUCLES if else end .......................................................... 203
9.3.1 Programas:
q BUCLE14 ....................................................... 204
q BUCLE15 ....................................................... 206
10. lgebra Lineal ............................................................................ 208
10.1 Programas:
q Lineal1 ............................................................ 208
q Lineal2 ............................................................ 209
q Lineal3 ............................................................ 210
q Lineal4 ............................................................ 211
q Lineal5 ............................................................ 216
q Lineal6 ............................................................ 222
q Lineal7 ............................................................ 229
q Lineal8 ............................................................ 239
q Lineal9 ............................................................ 247
q Lineal10 ............................................................ 255
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
vi
q Lineal11 ............................................................ 264
q Lineal12 ............................................................ 269
q Lineal13 ............................................................ 275
11. Polinomios ................................................................................... 281
11.1 Operaciones Bsicas .............................................................. 281
11.1.1 Programas:
q Poli1 ................................................................ 281
q Poli2 ................................................................ 283
q Poli3 ................................................................ 286
q Poli4 ................................................................ 289
q Poli5 ................................................................ 290
q Poli6 ................................................................ 293
q Poli7 ................................................................ 297
q Poli8 ................................................................ 301
q Poli9 ................................................................ 304
q Poli10 ............................................................... 306
q Poli11 ............................................................... 309
q Poli12 ............................................................... 312
q Poli13 ............................................................... 313
q Poli14 ............................................................... 314
q Poli15 ............................................................... 317
11.2 Ajustes de Curvas .................................................................. 318
11.2.1 Programas:
q Ajuste1 ............................................................ 318
q Ajuste2 ............................................................ 321
q Ajuste3 ............................................................ 323
q Ajuste4 ............................................................ 325
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
vii
12. Interpolacin ............................................................................... 328
12.1 Unidimensional ...................................................................... 328
12.1.1 Programas:
q Interpol1 ......................................................... 328
q Interpol2 ......................................................... 331
q Interpol3 ......................................................... 332
q Interpol4 ......................................................... 334
q Interpol5 ......................................................... 336
q Interpol6 ......................................................... 339
q Interpol7 ......................................................... 342
q Interpol8 ......................................................... 345
q Interpol9 ......................................................... 348
q Interpol10 ....................................................... 351
q Interpol11 ....................................................... 353
q Interpol12 ....................................................... 355
12.2 Bidimensional ..................................................................... 356
12.2.1 Programas:
q Interpol13 ....................................................... 356
q Interpol14 ....................................................... 360
q Interpol15 ....................................................... 364
q Interpol16 ....................................................... 371
q Interpol17 ....................................................... 376
q Interpol18 ....................................................... 381
q Interpol19 ....................................................... 385
q Interpol20 ....................................................... 390
q Interpol21 ....................................................... 397
13. Integracin y Diferenciacin ..................................................... 404
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
viii
13.1 Integracin sencilla ................................................................. 404
13.1.1 Programas:
q Intgra1 ........................................................... 404
q Intgra2 ........................................................... 405
q Intgra3 ........................................................... 407
q Intgra4 ........................................................... 408
q Intgra5 ........................................................... 411
q Intgra6 ........................................................... 414
q Intgra7 ........................................................... 416
q Intgra8 ........................................................... 419
q Intgra9 ........................................................... 422
q Intgra10 ......................................................... 425
q Intgra11 ......................................................... 428
q Intgra12 ......................................................... 431
q Intgra13 ......................................................... 435
q Intgra14 ......................................................... 437
q Intgra15 ......................................................... 439
13.2 Integracin Doble ................................................................. 443
13.2.1 Programas:
q Intgra16 ......................................................... 443
q Intgra17 ......................................................... 446
q Intgra18 ......................................................... 451
q Intgra19 ......................................................... 455
13.3 Diferenciacin .................................................................... 458
13.3.1 Programas:
q Intgra20 ......................................................... 458
q Intgra21 ......................................................... 463
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
ix
13.4 Aplicaciones .......................................................................... 469
13.4.1 Programas
q Intgra22 ......................................................... 469
q Intgra23 ......................................................... 472
14. Ecuaciones Diferenciales Ordinarias ......................................... 475
14.1 ODE de Primer Orden ........................................................ 475
14.2 ODE de Orden Superior ...................................................... 476
14.3 Metodologa .......................................................................... 477
14.4 Tipos de ODE solver ............................................................ 479
14.5 Aplicaciones .......................................................................... 480
14.5.1 Programas
q ode1 ............................................................... 480
q ode2 ............................................................... 483
q ode3 ............................................................... 486
q ode4 ............................................................... 489
q ode5 ............................................................... 492
q ode6 ............................................................... 495
q ode7 ............................................................... 498
q ode8 ............................................................... 502
q ode9 ............................................................... 506
q ode10 ............................................................. 510
q ode11 ............................................................. 515
q ode12 ............................................................. 520
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 1
INTRODUCCIN
MATLAB es una tcnica de computacin para calculo numrico y operaciones de
visualizacin de alta capacidad. MATLAB permite el anlisis numrico, operaciones
con matrices, procesamiento de seales, y operaciones grficas en forma amigable, en
los cuales, los planteamientos de los problemas y sus soluciones son expresados en la
forma matemtica usual, sin necesidad de utilizar los lenguajes de computacin
ampliamente conocidos.
MATLAB es un avanzado programa matemtico con una poderosa interfase grfica
utilizado para el anlisis, diseo, simulacin y control de complejos sistemas
dinmicos. Por esta razn, se ha convertido en la principal herramienta de los
ingenieros de control de procesos.
MATLAB posee aplicaciones, denominadas toolboxes que permiten realizar, de una
forma relativamente sencilla, complicados diseos y clculos, como son : estadstica,
control de procesos, lgica difusa, redes neuronales, identificacin de sistemas,
simulacin dinmica de procesos ( SI MULI NK ), procesamiento de seales, entre otros.
En el presente curso se explican los conceptos fundamentales del MATLAB, los cuales
permitirn, al participante, alcanzar un nivel suficiente para utilizar el MATLAB en
la solucin de problemas en ingeniera.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 2
COMANDOS DE UTILIDAD
A lo largo de estas notas se utilizar una representacin especial para indicar las
operaciones matemticas ejecutadas por MATLAB en la computadora. MATLAB es
un software interactivo, en el cual se le indica a la persona que debe introducir datos
y/o comandos mediante la aparicin en la pantalla del prompt:
Un recuadro indica que el lector introducir los datos, cuando se lo indique el prompt
e inmediatamente MATLAB dar la respuesta correspondiente. Veamos el siguiente
ejemplo:
v=2+2+3
v =
7
En el recuadro se aprecia una operacin matemtica, que corresponde al valor de la
variable (v). Esta instruccin (v = 2 + 2 + 3) es introducida despus del prompt ( ) y
MATLAB ejecuta la instruccin dando la respuesta ( v = 7).
Ayuda en Lnea ( help )
En todo momento, se puede obtener informacin o ayuda desde MATLAB
escribiendo la palabra help. En este caso se obtendr informacin sobre todos los
directorios que se encuentran en la ruta de acceso a MATLAB.
Ejemplo:
help
HELP topics:
toolbox\local Local function library.
matlab\datafun Data analysis and Fourier transform functions.
matlab\temporal The Control Kit
matlab\program (No table of contents file)
matlab\ascenso (No table of contents file)
matlab\elfun Elementary math functions.
matlab\elmat Elementary matrices and matrix manipulation.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 3
matlab\funfun Function functions nonlinear numerical methods.
matlab\general General purpose commands.
matlab\color Color control and lighting model functions.
matlab\graphics General purpose graphics functions.
matlab\iofun Low level file I /O functions.
matlab\lang Language constructs and debugging.
matlab\matfun Matrix functions numerical linear algebra.
matlab\ops Operators and special characters.
matlab\plotxy Two dimensional graphics.
matlab\plotxyz Three dimensional graphics.
matlab\polyfun Polynomial and interpolation functions.
matlab\sounds Sound processing functions.
matlab\sparfun Sparse matrix functions.
matlab\specfun Specialized math functions.
matlab\specmat Specialized matrices.
matlab\strfun Character string functions.
matlab\dde DDE Toolbox.
matlab\demos The MATLAB Expo and other demonstrations.
toolbox\control Control System Toolbox.
toolbox\signal Signal Processing Toolbox.
toolbox\optim Optimization Toolbox.
toolbox\stats Statistics Toolbox.
simulink\simulink SIMULINK model analysis and construction functions.
simulink\simdemos SIMULINK demonstrations and samples.
simulink\blocks SIMULINK block library.
simulink\sb2sl SystemBuild 3.0 model import into SI MULI NK.
nnet\nnet Neural Network Toolbox.
nnet\nndemos Neural Network Demonstrations and Applications.
fuzzy\fuzzy Fuzzy Logic Toolbox.
fuzzy\fuzdemos Fuzzy Logic Toolbox Demos.
toolbox\wintools GUI tools for MATLAB for MS Windows.
toolbox\robust Robust Control Toolbox.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 4
mpc\mpccmds Model Predictive Control Toolbox
mpc\mpcdemos Model Predictive Control Toolbox
toolbox\uitools User I nterface Utilities.
toolbox\mmle3 MMLE3 I dentification Toolbox.
mutools\commands Mu Analysis and Synthesis Toolbox.: Commands directory
mutools\subs Mu Analysis and Synthesis Toolbox Supplement
toolbox\splines Spline Toolbox.
toolbox\ident System I dentification Toolbox.
For more help on directory/topic, type "help topic".
Para obtener la ayuda sobre un tpico especial, se debe escribir: help topico.
Ejemplo:
help dir
DIR
Directory listing.
DIR directory_name lists the files in a directory.
Pathnames and wildcards may be used.
See also WHAT, CD, TYPE.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 5
Otra forma de obtener ayuda de MATLAB es mediante la instruccin helpwin. Con
esta instruccin aparecer una ventana de ayuda, como se muestra a continuacin:
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 6
Mediante la instruccin helpdesk, se obtiene una ayuda en lnea completa:
Supongamos que queremos ayuda para comenzar en MATLAB, seleccionamos el
tpico Getting Started y con doble click, en el ratn, se nos abre la ventana de ayuda
en este tpico:
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 7
GENERAL PURPOSE COMMANDS
Managing commands and functions
help On line documentation.
what Directory listing of M , MAT and MEX files.
type List M file.
lookfor Keyword search through the HELP entries.
which Locate functions and files.
demo Run demos.
path Control MATLAB's search path.
Managing variables and the workspace
who List current variables.
whos List current variables, long form.
load Retrieve variables from disk.
save Save workspace variables to disk.
clear Clear variables and functions from memory.
pack Consolidate workspace memory.
size Size of matrix.
length Length of vector.
disp Display matrix or text.
Working with files and the operating system
cd Change current working directory.
dir Directory listing.
delete Delete file.
getenv Get environment value.
! Execute operating system command.
unix Execute operating system command & return result.
diary Save text of MATLAB session.
Controlling the command window.
cedit Set command line edit/recall facility parameters.
clc Clear command window.
home Send cursor home.
format Set output format.
echo Echo commands inside script files.
more Control paged output in command window.
Starting and quitting from MATLAB
quit Terminate MATLAB.
startup M file executed when MATLAB is invoked.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 8
matlabrc Master startup M file.
General information
info I nformation about MATLAB and The MathWorks, I nc.
subscribe Become subscribing user of MATLAB.
hostid MATLAB server host identification number.
whatsnew I nformation about new features not yet documented.
ver MATLAB, SI MULI NK, and TOOLBOX version information.
Operators and special characters
Character Name
+ Plus
- Minus
* Matrix multiplication
.* Array multiplication
^ Matrix power
.^ Array power
\ Backslash or left division
/ Slash or right division
./ Array division
kron Kronecker tensor product
: Colon
( ) Parentheses
[ ] Brackets
. Decimal point
.. Parent directory
... Continuation
, Comma
; Semicolon
% Comment
! Exclamation point
' Transpose and quote
= Assignment
== Equality
<> Relational operators
& Logical AND
| Logical OR
~ Logical NOT
xor Logical EXCLUSIVE OR
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 9
Logical characteristics
exist Check if variables or functions are defined.
any True if any element of vector is true.
all True if all elements of vector are true.
find Find indices of non zero elements.
isnan True for Not A Number.
isinf True for infinite elements.
finite True for finite elements.
isempty True for empty matrix.
issparse True for sparse matrix.
isstr True for text string.
isglobal True for global variables.
OPERADORES ARI TMTI COS
+ Plus
X +Y adds matrices X and Y. X and Y must have the same
dimensions unless one is a scalar (a 1-by-1 matrix).
A scalar can be added to anything.
- Minus
X - Y subtracts matrix X from Y. X and Y must have the same
dimensions unless one is a scalar. A scalar can be subtracted
from anything.
* Matrix multiplication
X*Y is the matrix product of X and Y. Any scalar (a 1-by-1 matrix)
may multiply anything. Otherwise, the number of columns of X must
equal the number of rows of Y.
.* Array multiplication
X.*Y denotes element-by-element multiplication. X and Y
must have the same dimensions unless one is a scalar.
A scalar can be multiplied into anything.
^ Matrix power
Z =X^y is X to the y power if y is a scalar and X is square. I f y is an
integer greater than one, the power is computed by repeated
multiplication. For other values of y the calculation
involves eigenvalues and eigenvectors.
Z =x^Y is x to the Y power, if Y is a square matrix and x is a scalar,
computed using eigenvalues and eigenvectors.
Z =X^Y, where both X and Y are matrices, is an error.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav 10
.^ Array power.
Z =X.^Y denotes element-by-element powers. X and Y
must have the same dimensions unless one is a scalar.
A scalar can operate into anything.
\ Backslash or left division
A\B is the matrix division of A into B, which is roughly the
same as I NV(A)*B , except it is computed in a different way.
I f A is an N-by-N matrix and B is a column vector with N
components, or a matrix with several such columns, then
X =A\B is the solution to the equation A*X =B computed by
Gaussian elimination. A warning message is printed if A is
badly scaled or nearly singular. A\EYE(SI ZE(A)) produces the
inverse of A.
I f A is an M-by-N matrix with M <or >N and B is a column
vector with M components, or a matrix with several such columns,
then X =A\B is the solution in the least squares sense to the
under- or overdetermined system of equations A*X =B. The
effective rank, K, of A is determined from the QR decomposition
with pivoting. A solution X is computed which has at most K
nonzero components per column. If K <N this will usually not
be the same solution as PI NV(A)*B. A\EYE(SI ZE(A)) produces a
generalized inverse of A.
/ Slash or right division.
B/A is the matrix division of A into B, which is roughly the
same as B*I NV(A) , except it is computed in a different way.
More precisely, B/A =(A'\B')'. See \.
./ Array division
B./A denotes element-by-element division. A and B
must have the same dimensions unless one is a scalar.
A scalar can be divided with anything.
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
11
MATRICES
MATLAB trabaja fundamentalmente con un solo tipo de elemento base, el cual es una matriz
numrica con posibles elementos complejos. Los escalares son matrices de un elemento por un
elemento y los vectores son matrices de una fila o de una columna
Las matrices pueden ser introducidas al MATLAB de diferentes formas:
1) Introduciendo una lista de nmeros
2) Generando matrices usando funciones
3) Creando matrices en archivos tipo: m-files
4) Cargando matrices desde archivos externos
INTRODUCIENDO MATRICES AL MATLAB
Las matrices se introducen con el siguiente formato:
M = [ e e e; e e e; e e e]
Donde : e = elemento numrico
M = [ 12 11 24 ; -45 -58 -89 ; 4 4.5 5.5]
M =
12.0000 11.0000 24.0000
-45.0000 -58.0000 -89.0000
4.0000 4.5000 5.5000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
12
Utilizando "comas" como separador:
M = [12,11,24;-45,-58,-89;4,4.5,5.5]
M =
12.0000 11.0000 24.0000
-45.0000 -58.0000 -89.0000
4.0000 4.5000 5.5000
Uso de "PUNTO Y COMA". Cuando se usa "punto y coma" despus de una instruccin, la
respuesta no aparece en la pantalla
M = [12,11,24;-45,-58,-89;4,4.5,5.5];
Si queremos ver a la matriz en la pantalla, debemos escribir el nombre de la matriz y enter
M
M =
12.0000 11.0000 24.0000
-45.0000 -58.0000 -89.0000
4.0000 4.5000 5.5000
MATLAB es muy sensitivo con respecto al tipo de letra que se utilice en los nombres de las
matrices y vectores. la matriz ( M ) es muy diferente a la matriz ( m )
m
??? Undefined function or variable m.
La letra ( m ) puede ser utilizada para almacenar otra matriz o vector y no interfiere con el
uso de la letra ( M ), la cual fue previamente utilizada.
m=-458.26
m =
-458.2600
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
13
Las matrices pueden ser generadas sustituyendo funciones numricas por los elementos
numricos :
x=[-14 exp(4) sin(30) (1+2+3+4)/(3+25)]
x =
-14.0000 54.5982 -0.9880 0.3571
Las matrices pueden ser generadas por otras matrices:
a=[1,2,3;7,8,9]
a =
1 2 3
7 8 9
b=[5 6 7]
b =
5 6 7
Con las matrices ( a ) y ( b ) podemos generar la matriz ( c1 ) :
c1=[a;b]
c1 =
1 2 3
7 8 9
5 6 7
Tambin se puede generar la matriz ( c2 ) :
c2=[b;a]
c2 =
5 6 7
1 2 3
7 8 9
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
14
MATLAB permite la generacin de una matriz a partir de los elementos de otra matriz,
utilizando el siguiente formato:
MATRIZ GENERADA = MATRIZ ORIGEN ( FILA , COLUMNA )
las filas y las columnas, de la matriz de origen, que formarn la nueva matriz generada se
pueden indicar utilizando el siguiente formato :
FILA = nmero de fila(i) : nmero de fila(f)
Donde el smbolo ( : ) indica "desde - hasta"
COLUMNA = nmero de columna(i) : nmero de columna(f)
Donde el smbolo ( : ) indica "desde - hasta"
El formato de generacin de matrices puede escribirse de la siguiente forma
MATRIZ GENERADA = MATRIZ ORIGEN ( N de fila(i) : N de fila(f) , N de columna (i) : N de columna (f) )
Si se desean todas las filas de una matriz se sustituye el trmino
( N de fila(i) : N de fila(f) ) por el smbolo ( : )
Si se desean todas las columnas de una matriz se sustituye el trmino
( N de col.(i) : N de col.(f)) ) por el smbolo ( : )
A continuacin se presentan algunos ejemplos :
d1=c2(1:3,1:3)
d1 =
5 6 7
1 2 3
7 8 9
d1=c2(:,:)
d1 =
5 6 7
1 2 3
7 8 9
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
15
d2=c2(1:2,1:2)
d2 =
5 6
1 2
d3=c2(2:3,2:3)
d3 =
2 3
8 9
d4=c2(1,:)
d4 =
5 6 7
d5=c2(2,:)
d5 =
1 2 3
d6=c2(3,:)
d6 =
7 8 9
d7=c2(:,1)
d7 =
5
1
7
d8=c2(:,2)
d8 =
6
2
8
d9=c2(:,3)
d9 =
7
3
9
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
16
d10=[d4;d5;d6]
d10 =
5 6 7
1 2 3
7 8 9
d11=[d7,d8,d9]
d11 =
5 6 7
1 2 3
7 8 9
MATLAB permite la asignacin del valor numrico de un elemento de una matriz a una
variable
v1=c2(1,1)
v1 =
5
v2=c2(1,2)
v2 =
6
v3=c2(1,3)
v3 =
7
v4=c2(2,3)
v4 =
3
v5=c2(2,2)
v5 =
2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
17
EJERCICIOS
1. crear las siguientes matrices
12 13 14
p1 = 8 9 10
5 6 7
1 1 1 1
p2 = 1 1 1 1
1 1 1 1
1 1 1 1
1 0 0 0 0
0 1 0 0 0
p3 = 0 0 1 0 0
0 0 0 1 0
2. verificar las siguientes expresiones:
p4=[sin(30),exp(2);sin(30)/(1-exp(-3)),2*45/(3+25)]
p4 = -0.9880 7.3891
-1.0398 3.2143
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
18
3. Formar nuevas matrices con los nmeros marcados en las
siguientes matices:
12 13 14
p1 = 8 9 10
5 6 7
12 13 14
p1 = 8 9 10
5 6 7
12 13 14
p1 = 8 9 10
5 6 7
4. A partir de la matriz p1, formar la sigiente:
12 13 14 12 13 14
8 9 10 8 9 10
p1_4 = 5 6 7 5 6 7
12 13 14 12 13 14
8 9 10 8 9 10
5 6 7 5 6 7
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
19
RESPUESTAS
1. p1=[12 13 14;8 9 10;5 6 7]
p2=ones(4)
p3=eye(5)
3. p1_1=[p1(1,1),p1(1,3);p1(3,1),p1(3,3)]
p1_2=[p1(:,1),p1(:,3)]
p1_3=[p1(1,:);p1(3,:)]
4. p1_4=[p1,p1;p1,p1]
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
20
OBTENIENDO INFORMACIN DEL WORKSPACE
MATLAB guarda todas las variables creadas en la memoria RAM denominado
"workspace". Se puede obtener informacin sobre estas variables escribiendo las palabras
"who" o "whos" y enter
who
Your variables are:
a d10 d4 d8 v3
b d11 d5 d9 v4
c2 d2 d6 v1 v5
d1 d3 d7 v2 v6
whos
Name Size Elements Bytes Density Complex
a 2 by 3 6 48 Full No
b 1 by 3 3 24 Full No
c 3 by 3 9 72 Full No
d1 3 by 3 9 72 Full No
d10 3 by 3 9 72 Full No
d11 3 by 3 9 72 Full No
d2 2 by 2 4 32 Full No
d3 2 by 2 4 32 Full No
d4 1 by 3 3 24 Full No
d5 1 by 3 3 24 Full No
d6 1 by 3 3 24 Full No
d7 3 by 1 3 24 Full No
d8 3 by 1 3 24 Full No
d9 3 by 1 3 24 Full No
v1 1 by 1 1 8 Full No
v2 1 by 1 1 8 Full No
v3 1 by 1 1 8 Full No
v4 1 by 1 1 8 Full No
v5 1 by 1 1 8 Full No
v6 1 by 1 1 8 Full No
Grand total is 77 elements using 616 bytes
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
21
MATLAB tiene otra forma de informar sobre las variables guardadas en el workspace. Esto
se realiza mediante el botn de Workspace Browser, en la barra de herramientas de
MATLAB, como se muestra a continuacin:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
22
MATLAB permite conocer los archivos abiertos que estn activos en el directorio de
MATLAB mediante la palabra "what". Tambin permite limpiar el "workspace" utilizando
la palabra "clear"
clear
Para asegurarnos de que el "workspace" est completamente limpio, escribimos la palabra
"who" y enter .
who
Your variables are:
GUARDAR LAS VARIABLES DEL WORKSPACE EN EL DISCO DURO
Para guardar los valores numricos, asignados a variables que se encuentran en el
"workspace" de MATLAB, en el disco duro de la computadora, en archivo "ascii", se utiliza
el comando "save" y para recuperarlos, se utiliza el comando "load". En el siguiente ejemplo
crearemos la matriz ( x ), la cual se Encuentra en el "workspace" de MATLAB. Esto es
comprobado con el comando "whos"
x=[1 2 3;4 5 6;7 8 9]
x =
1 2 3
4 5 6
7 8 9
whos
Name Size Elements Bytes Density Complex
x 3 by 3 9 72 Full No
Grand total is 9 elements using 72 bytes
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
23
Los valores numricos de la matriz ( x ) sern guardados con otro nombre opcional, como
archivo "ascii", en el disco duro de la computadora, mediante el comando "save". El nombre
del nuevo archivo que contendr los valores numricos de ( x ) ser de ( pl.mat ), el cual ser
guardado en el directorio MATLAB . BIN
save p1 x -ascii
Para completar el ejemplo, limpiaremos el "workspace" y lo comprobaremos con el comando
"whos". Luego, cargaremos los valores numricos, contenidos en ( pl.mat ) en el
"workspace" mediante el comando "load".
clear
whos
load p1
p1
p1 =
1 2 3
4 5 6
7 8 9
En el caso en que se tengan los valores numricos agrupados en diferentes variables, como el
ejemplo de los siguientes datos que agrupa a tres variables ( V , T , P )
DATOS
V T P
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
24
Los datos se pueden introducir cada uno por separado de la siguiente forma :
v=[1 1 1 1 1 1 1 ]
v =
1 1 1 1 1 1 1
t=[2 2 2 2 2 2 2]
t =
2 2 2 2 2 2 2
p=[3 3 3 3 3 3 3]
p =
3 3 3 3 3 3 3
Comprobamos que lo nico que se tiene en el "workspace" son las variables mencionadas
anteriormente:
whos
Name Size Elements Bytes Density Complex
p 1 by 7 7 56 Full No
t 1 by 7 7 56 Full No
v 1 by 7 7 56 Full No
Grand total is 21 elements using 168 bytes
Guardaremos estos datos en un archivo llamado p2:
save p2 v t p -ascii
Limpiamos el workspace con "clear" y verificamos con " whos" que el workspace esta
limpio:
clear
whos
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
25
Si llamamos a las variables ( V , T , P ) nos dar "error", ya que las mismas fueron
eliminadas con "clear".
V
??? Undefined function or variable V.
T
??? Undefined function or variable T.
P
??? Undefined function or variable P.
Recuperamos el archivo ( p2 ) con el comando ( load )
load p2
En el workspace tenemos, ahora, los valores numricos de las mismas variables pero en el
archivo ( p2 ). Para comprobarlo utilizamos el comando "whos"
whos
Name Size Elements Bytes Density Complex
p2 3 by 7 21 168 Full No
Grand total is 21 elements using 168 bytes
Para saber el contenido numrico de la matriz ( p2 ) :
p2
p2 =
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
26
Si queremos los datos originales en sus variables originales descomponemos la matriz ( p2 ) en
los vectores ( v , t , p )
v=p2(1,:)
v =
1 1 1 1 1 1 1
t=p2(2,:)
t =
2 2 2 2 2 2 2
p=p2(3,:)
p =
3 3 3 3 3 3 3
NMEROS Y EXPRESIONES ARITMTICAS
MATLAB usa una notacin decimal convencional, con notacin opcional de punto decimal
para expresiones numricas. MATLAB usa notacin convencional de potenciacin en base
diez y de nmeros complejos.
Ejemplos:
3 -185 0.000154
35.15486548 1.26487E-25 32.5684e25
2i -3.7845j 25e2i
El rango para expresiones numricas es desde ( 1e-308 ) a ( 1e308 )
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
27
MATLAB permite realizar operaciones aritmticas con los operadores normales:
SMBOLO FUNCIN
+ SUMA
- RESTA
* MULTIPLICACIN
/ DIVISIN DIRECTA
\ DIVISIN INVERSA
^ POTENCIACIN
Numero ( PI ):
pi
ans =
3.1416
3*pi
ans =
9.4248
DIVISIN ENTRE CERO:
32.15487/0
Warning: Divide by zero
ans =
Inf
Warning: Divide by zero
inf/inf
ans =
NaN
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
28
NMEROS COMPLEJOS
2+3i
ans =
2.0000 + 3.0000i
2+3j
ans =
2.0000 + 3.0000i
z=[1 2;3 4] + i*[5 2;8 1]
z =
1.0000 + 5.0000i 2.0000 + 2.0000i
3.0000 + 8.0000i 4.0000 + 1.0000i
FORMATO NUMRICO DE SALIDA
Si todos los elementos de una matriz son nmeros enteros, MATLAB muestra a la matriz en
un formato sin puntos decimales.
x=[-4 -5 -8 5 3 1 7 -8]
x =
-4 -5 -8 5 3 1 7 -8
Si al menos un elemento de una matriz no es entero, varios tipos de formato son posible
utilizar.
z=[2 8 7/3 4]
z =
2.0000 8.0000 2.3333 4.0000 ( FORMATO: SHORT )
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
29
z=[2 8 7/3 4]
z =
2.00000000000000 8.00000000000000 2.33333333333333
4.00000000000000
( FORMATO: LONG )
z=[2 8 7/3 4]
z =
4000000000000000 4020000000000000 4002aaaaaaaaaaab
4010000000000000
( FORMATO: HEX )
z=[2 8 7/3 4]
z =
2.00 8.00 2.33 4.00
( FORMATO: BANK )
z=[2 8 7/3 4]
z =
++++ ( FORMATO: PLUS )
z=[2 8 7/3 4]
z =
2.0000e+000 8.0000e+000 2.3333e+000 4.0000e+000
( FORMATO: SHORT e )
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
30
z=[2 8 7/3 4]
z =
Columns 1 through 3
2.000000000000000e+000 8.000000000000000e+000
2.333333333333334e+000
Column 4
4.000000000000000e+000
( FORMATO: LONG e )
z=[2 8 7/3 4]
z =
2 8 7/3 4
( FORMATO: RATIONAL )
OPERACIONES CON MATRICES
MATLAB permite realizar varias operaciones aritmticas con matrices o vectores tales como
MATRIZ TRANSPUESTA, SUMA Y RESTA, MULTIPLICACIN, DIVISIN DIRECTA,
DIVISIN INVERSA, POTENCIACION, OPERACIN ELEMENTO POR ELEMENTO
MATRIZ TRANSPUESTA
a=[2 3 4 ; 4 5 6 ; 7 8 9]
a =
2 3 4
4 5 6
7 8 9
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
31
La matriz transpuesta de ( a ) es ( a' ) notar el smbolo ( ' )
b=a'
b =
2 4 7
3 5 8
4 6 9
a=b'
a =
2 3 4
4 5 6
7 8 9
Para vectores:
x=[2 3 4 5 6 7 8]
x =
2 3 4 5 6 7 8
y=x'
y =
2
3
4
5
6
7
8
x=y'
x =
2 3 4 5 6 7 8
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
32
SUMA Y RESTA DE MATRICES
MATLAB permite la suma y resta de matrices siempre y cuando las matrices sean de igual
dimensin.
a=[1 2 3;4 5 6;7 8 9]
a =
1 2 3
4 5 6
7 8 9
b=[11 22 33;44 55 66;77 88 99]
b =
11 22 33
44 55 66
77 88 99
c=[9 8 7;6 5 4]
c =
9 8 7
6 5 4
d=[11 11 11;22 22 22]
d =
11 11 11
22 22 22
Se generaron las matrices anteriores para mostrar las siguientes operaciones:
Verificamos los datos en el workspace:
whos
Name Size Elements Bytes Density Complex
a 3 by 3 9 72 Full No
b 3 by 3 9 72 Full No
c 2 by 3 6 48 Full No
d 2 by 3 6 48 Full No
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
33
Procedemos a realizar algunas operaciones:
a+b
ans =
12 24 36
48 60 72
84 96 108
c+d
ans =
20 19 18
28 27 26
a+c
??? Error using ==> +
Matrix dimensions must agree.
b+d
??? Error using ==> +
Matrix dimensions must agree.
a+d
??? Error using ==> +
Matrix dimensions must agree.
b+c
??? Error using ==> +
Matrix dimensions must agree.
b+a
ans =
12 24 36
48 60 72
84 96 108
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
34
d+c
ans =
20 19 18
28 27 26
-a
ans =
-1 -2 -3
-4 -5 -6
-7 -8 -9
-b
ans =
-11 -22 -33
-44 -55 -66
-77 -88 -99
Un numero puede ser sumado o restado a una matriz:
pi+a
ans =
4.1416 5.1416 6.1416
7.1416 8.1416 9.1416
10.1416 11.1416 12.1416
pi+b
ans =
14.1416 25.1416 36.1416
47.1416 58.1416 69.1416
80.1416 91.1416 102.1416
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
35
(pi+c)-(pi-d)
ans =
20 19 18
28 27 26
45.3698+a
ans =
46.3698 47.3698 48.3698
49.3698 50.3698 51.3698
52.3698 53.3698 54.3698
12+b
ans =
23 34 45
56 67 78
89 100 111
10+c
ans =
19 18 17
16 15 14
20+d
ans =
31 31 31
42 42 42
ans =
-10 -20 -30
-40 -50 -60
-70 -80 -90
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
36
b-a
ans =
10 20 30
40 50 60
70 80 90
a-c
??? Error using ==> -
Matrix dimensions must agree.
a-d
??? Error using ==> -
Matrix dimensions must agree.
c-d
ans =
-2 -3 -4
-16 -17 -18
d-c
ans =
2 3 4
16 17 18
a+(-b)
ans =
-10 -20 -30
-40 -50 -60
-70 -80 -90
-a-b
ans =
-12 -24 -36
-48 -60 -72
-84 -96 -108
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
37
-c-d
ans =
-20 -19 -18
-28 -27 -26
-d-c
ans =
-20 -19 -18
-28 -27 -26
MULTIPLICACIN DE MATRICES
MATLAB permite la multiplicacin de matrices siempre que la segunda dimensin de la
primera matriz sea igual a la primera dimensin de la segunda matriz:
PRODUCTO = M1(m,n) * M2(n,p) VALIDO
PRODUCTO = MATRIZ 1 (3 POR 2) * MATRIZ 2 (2 POR 4)
VALIDO
PRODUCTO = MATRIZ 1 (2 POR 3) * MATRIZ 2 (2 POR 4)
NO VALIDO
EJEMPLOS:
a
a =
1 1
2 2
3 3
b
b =
4 4 4
5 5 5
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
38
c
c =
4 5
4 5
4 5
d
d =
5
6
whos
Name Size Elements Bytes Density Complex
a 3 by 2 6 48 Full No
b 2 by 3 6 48 Full No
c 3 by 2 6 48 Full No
d 2 by 1 2 16 Full No
a*b
ans =
9 9 9
18 18 18
27 27 27
b*a
ans =
24 24
30 30
a*c
??? Error using ==> *
Inner matrix dimensions must agree.
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
39
c*a
??? Error using ==> *
Inner matrix dimensions must agree.
a*d
ans =
11
22
33
d*a
??? Error using ==> *
Inner matrix dimensions must agree.
b*d
??? Error using ==> *
Inner matrix dimensions must agree.
d*b
??? Error using ==> *
Inner matrix dimensions must agree.
b*c
ans =
48 60
60 75
c*b
ans =
41 41 41
41 41 41
41 41 41
c*d
ans =
50
50
50
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
40
d*c
??? Error using ==> *
Inner matrix dimensions must agree.
a*a
??? Error using ==> *
Inner matrix dimensions must agree.
b*b
??? Error using ==> *
Inner matrix dimensions must agree
c*c
??? Error using ==> *
Inner matrix dimensions must agree.
d*d
??? Error using ==> *
Inner matrix dimensions must agree.
Fabricaremos una matriz de ( 3 por 3 ) :
e=a*b
e =
9 9 9
18 18 18
27 27 27
e*e
ans =
486 486 486
972 972 972
1458 1458 1458
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
41
DIVISIN DE MATRICES
MATLAB permite dos tipos de divisin : la divisin directa y la divisin inversa. La divisin
directa se realiza con el smbolo operador ( / ) y La divisin inversa se realiza con el smbolo
operador ( \ ). El numerador esta siempre sobre la lnea que representa al smbolo.
Ejemplos:
Si representaremos al NUMERADOR con la letra ( N ) y al DENOMINADOR con la letra (
D ), los dos tipos de divisin se pueden escribir de la siguiente forma :
DIVISIN DIRECTA = N / D
DIVISIN INVERSA = D \ N
Estas divisiones son diferentes, ya que implican operaciones distintas.
Sean las matrices [ A , B , C ]
C = A / B IMPLICA C * B = A (despejando a A )
C = B \ A IMPLICA B * C = A (despejando a A )
Ilustraremos con un ejemplo la diferencia entre los dos tipos de divisin. Si tenemos los
siguientes tipos de matrices :
C = ( 3 POR 2 )
B = ( 2 POR 3 )
a
a =
1 1
2 2
3 3
Matriz de ( 3 por 2 )
f
f =
2 2 2
3 3 3
Matriz de ( 2 por 3 )
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
42
Multipliquemos : a * f = g
a*f
ans =
5 5 5
10 10 10
15 15 15
Esto es valido ya que la matriz [ a de ( 3 por 2 )] multiplica a la matriz [ f de ( 2 por 3 )].
Si se despeja a la matriz ( f ), se debe hacer de la siguiente forma:
f = a \ g VALIDO
f = g / a INVALIDO
a\g
ans =
5 5 5
0 0 0
VALIDO
g/a
??? Error using ==> /
Matrix dimensions must agree.
Esto sucede debido a que las matrices son de diferentes dimensiones o sea el orden de sus
elementos ( fila - columna ) es diferente en cada matriz.
El producto ( a * f ) es diferente al producto ( f * a )
Ejemplos:
g1=a*f
g1 =
5 5 5
10 10 10
15 15 15
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
43
g2=f*a
g2 =
12 12
18 18
a\g1
ans =
5 5 5
0 0 0
g1/a
??? Error using ==> /
Matrix dimensions must agree.
g2/a
ans =
0 0 4.0000
0 0 6.0000
a\g2
??? Error using ==> \
Matrix dimensions must agree.
EJERCICIOS PROPUESTOS :
Realizar las siguientes operaciones, considerando que tenemos en el workspace las siguientes
variables:
whos
Name Size Elements Bytes Density Complex
a 3 by 2 6 48 Full No
ans 2 by 2 4 32 Full No
b 2 by 3 6 48 Full No
c 3 by 2 6 48 Full No
d 2 by 1 2 16 Full No
e 3 by 3 9 72 Full No
f 2 by 3 6 48 Full No
g 3 by 3 9 72 Full No
g1 3 by 3 9 72 Full No
g2 2 by 2 4 32 Full No
Grand total is 61 elements using 488 bytes
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
44
OPERACIONES :
( a/b ), ( b/a ), ( a\b ), ( b\a ), ( a/c ), ( c/a ), ( a\c ), ( c\a ), ( g/g1 ), ( g1\g ), ( g1/g )
POTENCIACIN DE MATRICES
La operacin matemtica representada por ( A^P ) significa que ( A ) es elevado a la
potencia ( P ). Esta operacin es definida si ( A ) es una matriz cuadrada y ( P ) es un escalar
o si ( P ) es una matriz y ( A ) es un escalar. Si ambas son matrices dar error.
Como ejemplo usaremos la matriz mgica de ( 3 X 3 ):
z=magic(3)
z =
8 1 6
3 5 7
4 9 2
Elevaremos a la matriz ( z ) al cuadrado:
z^2
ans =
91 67 67
67 91 67
67 67 91
Si elevamos al nmero 2 a la matriz ( z ):
2^z
ans =
1.0e+004 *
1.0942 1.0906 1.0921
1.0912 1.0933 1.0924
1.0915 1.0930 1.0923
La potenciacin se efecta si la matriz es cuadrada, ejemplo:
a=[2 4 ; 5 8 ]
a =
2 4
5 8
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
45
a^2
ans =
24 40
50 84
6^a
ans =
1.0e+007 *
2.6700 4.4778
5.5972 9.3867
Si la matriz no es cuadrada:
b=[2 3 5 8]
b =
2 3 5 8
b^2
??? Error using ==> ^
Matrix must be square.
2^b
??? Error using ==> ^
Matrix must be square.
OPERACIONES DE ELEMENTOS POR ELEMENTOS
Las operaciones de elemento por elemento se realizan con la ayuda del smbolo ( . )
precediendo a un operador matemtico. La suma y resta se debe realizar con matrices de
igual dimensiones:
A=[2 3]
A =
2 3
B=[4 5]
B =
4 5
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
46
A+B
ans =
6 8
C=[2;3;4;5]
C =
2
3
4
5
D=[5;6;7;8]
D =
5
6
7
8
C+D
ans =
7
9
11
13
A+D
??? Error using ==> +
Matrix dimensions must agree.
A+C
??? Error using ==> +
Matrix dimensions must agree.
z
z =
8 1 6
3 5 7
4 9 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
47
q=[3 5 7 ;1 3 2;7 8 9]
q =
3 5 7
1 3 2
7 8 9
q+z
ans =
11 6 13
4 8 9
11 17 11
La multiplicacin y divisin se realiza con el smbolo ( .* )
q.*z
ans =
24 5 42
3 15 14
28 72 18
si no le ponemos el punto no se realiza elemento por elemento:
q*z
ans =
67 91 67
25 34 31
116 128 116
z.*q
ans =
24 5 42
3 15 14
28 72 18
A.*B
ans =
8 15
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
48
C.*D
ans =
10
18
28
40
A
A =
2 3
q
q =
3 5 7
1 3 2
7 8 9
A.*q
??? Error using ==> .*
Matrix dimensions must agree.
a
a =
2 4
5 8
q
q =
3 5 7
1 3 2
7 8 9
a.*q
??? Error using ==> .*
Matrix dimensions must agree.
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
49
Potenciacin elemento por elemento:
A
A =
2 3
q
q =
3 5 7
1 3 2
7 8 9
a.^2
ans =
4 16
25 64
q.^3
ans =
27 125 343
1 27 8
343 512 729
q^2
ans =
63 86 94
20 30 31
92 131 146
C
C =
2
3
4
5
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malave
50
C^2
??? Error using ==> ^
Matrix must be square.
Esta ultima operacin dio error debido a que la potenciacin no
fue elemento por elemento y en este caso la matriz ( c ) debe ser
cuadrada.
C.^2
ans =
4
9
16
25
Esta operacin si fue correcta
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
51
CAPACIDAD DE GRAFICACIN
MATLAB permite realizar grficas en dos dimensiones y tres dimensiones mediante
una series de instrucciones, las cuales sern descritas en el presente tutorial utilizando
archivos con la extensin ( m ), ( files.m ), editados con el Editor de MATLAB
(MATLAB Editor /Debugger). Estos archivos consisten en una serie de programas, los
cuales se encuentran descritos en este tutorial y los mismos se denominan: CLASE1,
CLASE2, CLASE3, ... ,etc.
El Editor de MATLAB se abre automticamente, seleccionando abrir un archivo,
existente o uno nuevo, en la barra de herramienta o en el men, desplegado de file,
como se muestra a continuacin:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
52
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
53
METODOLOGA
La metodologa de trabajo consiste en:
Abrir el archivo, m-file, donde se encuentra el programa correspondiente al tpico
que se quiera analizar, por ejemplo: instrucciones bsicas para graficar una serie de
pares de datos, CLASE1.m

Estudiar el archivo abierto, en el Editor de MATLAB. Este archivo tiene las
siguientes caractersticas:

Descripcin del tpico.

Las instrucciones en MATLAB que permiten correr el programa, las cuales se
encuentran sombreadas.

Comentarios sobre el programa y sobre algunas instrucciones en particular.
Correr el programa, en MATLAB, para comprender la utilizacin de las
instrucciones que generaron la grfica correspondiente.
A continuacin se muestra el listado, de las instrucciones y sus correspondientes
comentarios, de los programas que permiten entender como se obtienen los diferentes
tipos de grficos mediante MATLAB. En su computadora usted tendr abierta la
ventana de Comandos MATLAB, en ella aparecern los resultados numricos, despus
de haber ejecutado las instrucciones del programa. Tambin tendr abierta las
ventanas del Editor DE MATLAB y la ventana de Edicin de Grficos, como se muestra
en las siguientes figuras:
En las figuras se muestra la ejecucin del PROGRAMA : CLASE 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
54
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
55
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
56
PROGRAMA : CLASE 1
% ESTE PROGRAMA GRAFICA UN PAR DE DATOS CONTENIDOS EN
LOS VECTORES FILAS ( x ),( y )
%
y=[1 3 5 7 9 11 13 15 17]
x=[2 4 6 8 10 12 14 16 18]
%
% NOTA : EL PUNTO Y COMA NO APARECE AL FINAL DE LAS
% INSTRUCCIONES. AL EJECUTAR ESTE PROGRAMA, APARECERN
% EN LA PANTALLA LOS VECTORES ( x ) ( y ) Y LUEGO LA GRFICA
%
plot(x,y)
GRFICA RESULTANTE CLASE 1
2 4 6 8 1 0 1 2 1 4 1 6 1 8
0
2
4
6
8
1 0
1 2
1 4
1 6
1 8
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
57
GRFICA RESULTANTE CLASE 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
58
PROGRAMA : CLASE 2
% ESTE PROGRAMA MUESTRA EL USO DE LAS INSTRUCCIONES PARA
% COLOCARLE TTULO A LA GRFICA , NOMBRE A LOS EJES Y
% TEXTO EN DIVERSOS SITIOS DE LA GRFICA, UTILIZANDO LA
% INSTRUCCIN gtext(' texto ') Y TAMBIN EL BOTN DE
% AADIR TEXTO EN LA BARRA DE HERRAMIENTAS, DE LA
% VENTANA DE LA FIGURA; AS COMO TAMBIN LA EDICIN
% GENERAL DE LA GRFICA
%
% EN ESTE PROGRAMA SE GENERAN LOS DIEZ PRIMEROS
% NMEROS, EN EL VECTOR ( x ) Y LOS CUADRADOS
% CORRESPONDIENTES EN EL VECTOR ( y ).
%
x=[0:1:10];
y=x.^2;
%
% NOTAR EL PUNTO Y COMA AL FINAL DE LAS INSTRUCCIONES
% Y LA OPERACIN DE POTENCIACIN ELEMENTO POR ELEMENTO
%
plot(x,y)
title('TITULO DE LA FIGURA ')
xlabel('TITULO DEL EJE ( X )')
ylabel('TITULO DEL EJE ( Y )')
gtext('ESTA GRFICA ES MIA ----->')
gtext('ESTA GRFICA ES FACIL ------>')
gtext('ESTE TITULO LO PONGO AQUI <-------')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
59
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
60
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
61
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
62
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
63
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
64
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
65
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
66
GRFICA RESULTANTE CLASE 2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
67
PROGRAMA : CLASE 3
% ESTE PROGRAMA MUESTRA COMO SE PUEDEN GRAFICAR LOS
% ELEMENTOS DE DOS MATRICES DIFERENTES
% COLUMNA VERSUS COLUMNA Y SIMULTANEAMENTE
%
x=[8,1,6;3,5,7;4,9,2]
y=[1 2 3;4 5 6;7 8 9]
%
% NOTA : SE GRAFICA LA PRIMERA COLUMNA DE LA MATRIZ ( y )
% VERSUS LA PRIMERA COLUMNA DE LA MATRIZ ( x )
% LUEGO LA SEGUNDA COLUMNA DE LA MATRIZ ( y )
% VERSUS LA SEGUNDA COLUMNA DE LA MATRIZ ( x )
% Y AS SUCESIVAMENTE. MATLAB LE ASIGNA UN COLOR A CADA
% GRFICA AUTOMATICAMENTE
% IMPORTANTE : AMBAS MATRICES DEBEN TENER EL MISMO
% NMERO DE COLUMNAS Y EL MISMO NMERO DE FILAS
%
plot(x,y)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
68
GRFICA RESULTANTE CLASE 3
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
69
PROGRAMA : CLASE 4
% ESTE PROGRAMA MUESTRA COMO SE PUEDE GRAFICAR
% INDICANDO EL COLOR Y EL SMBOLO GRFICO QUE
% REPRESENTA AL PAR DE ELEMENTOS DE LAS MATRICES
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18];
%
plot(x,y,'co')
%
% NOTA : EN ESTA GRFICA EL COLOR ES CYAN Y EL SMBOLO
% ES EL CRCULO
GRFICA RESULTANTE CLASE 4
2 4 6 8 10 12 14 16 18
0
2
4
6
8
10
12
14
16
18
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
70
PROGRAMA : CLASE 5
% ESTE PROGRAMA MUESTRA COMO SE PUEDEN REALIZAR
% DOS GRFICAS ( IGUALES O DIFERENTES ) SIMULTANEAMENTE
% INDICANDO EL COLOR Y EL SIMBOLO GRAFICO
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18];
%
plot(x,y,'co',x,y,'y-')
%
% NOTA : EN ESTE EJEMPLO SE GRAFICARON LOS MISMOS
% DATOS SIMULTANEAMENTE Y CADA GRFICA CON SMBOLOS
% Y COLORES DISTINTOS (CRCULOS COLOR CYAN Y GRFICA
% CONTNUA COLOR AMARILLO)
GRFICA RESULTANTE CLASE 5
2 4 6 8 1 0 1 2 1 4 1 6 1 8
0
2
4
6
8
1 0
1 2
1 4
1 6
1 8
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
71
PROGRAMA : CLASE 6
% ESTE PROGRAMA MUESTRA COMO ES POSIBLE GRAFICAR
% LOS ELEMENTOS DE UNA MATRIZ VERSUS LA POSICIN
% QUE TIENEN EN LA MATRIZ Y ADEMAS MUESTRA COMO
% SE UTILIZA EL COMANDO " HOLD "
%
y=[1 5 9 13 17 21 17 13 9 5 1]
x=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36]
plot(y,'C*')
hold
%
% NOTA : CON EL COMANDO "HOLD" LA PRIMERA GRFICA
% SE MANTIENE Y LA SEGUNDA GRFICA ES REALIZADA
% SOBRE LA PRIMERA
%
plot(x,'ro')
GRFICA RESULTANTE CLASE 6
0 2 4 6 8 10 12 14 16 18
0
5
10
15
20
25
30
35
40
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
72
PROGRAMA : CLASE 7
% ESTE PROGRAMA MUESTRA COMO SE PUEDE GRAFICAR PARES
% DE DATOS SIMULTANEAMENTE Y MATLAB AJUSTA LAS
% ESCALAS DE AMBAS GRFICAS AUTOMATICAMENTE
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36];
y2=y.^3;
x2=x.^2.0+500
%
% NOTA : SE GRAFICAR (y) VERSUS (y2) CON 9 ELEMENTOS
% SE GRAFICAR TAMBIN SIMULTANEAMENTE (x) VERSUS (x2)
% CON 18 ELEMENTOS GRFICOS. MATLAB FIJA LA ESCALA
%
plot(y,y2,'c*',x,x2,'ro')
GRFICA RESULTANTE CLASE 7
0 5 10 15 20 25 30 35 40
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
73
PROGRAMA : CLASE 8
% ESTE PROGRAMA MUESTRA COMO SE PUEDE REALIZAR
% UNA GRFICA CON ESCALAS CUADRICULADAS
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36];
y2=y.^3;
x2=x.^2.0+500
% NOTA : EL COMANDO grid PERMITE CUADRICULAR LA
% GRFICA
plot(y,y2,'c*',x,x2,'ro')
grid
GRFICA RESULTANTE CLASE 8
0 5 10 15 20 25 30 35 40
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
74
PROGRAMA : CLASE 9
% ESTE PROGRAMA MUESTRA COMO SE PUEDE GRAFICAR
% UNA FUNCIN MATEMTICA ALMACENADA EN LA
% LIBRERA DE MATLAB
%
fplot('sin' ,[0 4*pi])
%
% NOTA : LA FUNCIN SENO ( sin ) SE GRAFICA
% ENTRE ( 0 Y 4pi )
% MAS INFORMACIN VER : help fplot
GRFICA RESULTANTE CLASE 9
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
75
PROGRAMA : CLASE 10
% ESTE PROGRAMA MUESTRA COMO SE PUEDE GRAFICAR
% SIMULTANEAMENTE DOS FUNCINES MATEMTICAS
% DE LA LIBRERA DE MATLAB
%
fplot('[sin(x),cos(x)]',[0 4*pi],'-*')
%
% NOTA : SE GRAFICAN SIMULTANEAMENTE LAS
% FUNCINES SENO Y COSENO. AMBAS DESDE 0 HASTA 4pi
% EL IDENTIFICADOR GRFICO ( -* ) SE APLICA
% PERA AMBAS GRFICAS
GRFICA RESULTANTE CLASE 10
0 2 4 6 8 10 12
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
76
PROGRAMA : CLASE 11
% ESTE PROGRAMA MUESTRA COMO SE PUEDEN REALIZAR
% GRFICAS DIFERENTES Y COLOCARLAS EN DETERMINADO
% PUNTO DE LA PANTALLA
%
subplot(3,3,5)
%
% NOTA : LA INSTRUCCIN subplot(f,c,G) DIVIDE
% LA PANTALLA EN ( f ) POR ( c ) ESPACIOS Y COLOCA
% LA GRFICA ACTUAL EN EL ESPACIO ( G )
% EN ESTE EJEMPLO LA PANTALLA ES DIVIDIDA EN
% NUEVE ( 9 ) ESPACIOS Y LA GRFICA ES COLOCADA
% EN EL ESPACIO ( 5 )
%
fplot('[sin(x),cos(x)]',[0 4*pi],'-*')
GRFICA RESULTANTE CLASE 11
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
77
PROGRAMA : CLASE 12
% ESTE PROGRAMA MUESTRA COMO SE PUEDEN REALIZAR
% GRFICAS DIFERENTES Y COLOCARLAS EN DETERMINADO
% PUNTO DE LA PANTALLA
%
subplot(2,2,4)
% NOTA : LA INSTRUCCIN subplot SE UTILIZA SIEMPRE
% PARA UBICAR LA GRFICA ACTUAL, POR LO TANTO
% SE DEBE ESCRIBIR ANTES DE LA INSTRUCCIN ( plot )
% O ( fplot ). EN ESTE EJEMPLO SE DIVIDE LA
% PANTALLA EN CUATRO PARTES Y LA GRFICA INMEDIATA
% SE GRAFICA EN EL ESPACIO ( 4 )
%
fplot('[sin(x),cos(x)]',[0 4*pi],'-*')
%
% NOTA : DOS INTRUCCIONES PUEDEN SER ESCRITAS
% EN UNA MISMA LINEA SI SON SEPARADAS POR ( ; )
% LA SIGUIENTE GRFICA ES COLOCADA EN EL ESPACIO ( 3 )
%
subplot(2,2,3);fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o')
GRFICA RESULTANTE CLASE 12
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
78
PROGRAMA : CLASE 13
% ESTE PROGRAMA MUESTRA COMO SE PUEDE REALIZAR
% GRFICAS DIFERENTES Y COLOCARLAS EN DETERMINADOS
% PUNTOS DE LA PANTALLA
%
subplot(2,2,4)
fplot('[sin(x),cos(x)]',[0 4*pi],'-*')
%
subplot(2,2,1);fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi],'-o')
%
subplot(2,2,2); fplot('tan' ,[-2*pi 2*pi -2*pi 2*pi],'-*')
%
subplot(2,2,3); fplot('[tan(x),sin(x),cos(x)]',[-2*pi 2*pi -2*pi
2*pi])%fplot('tan',[-2*pi 2*pi -2*pi 2*pi],'-*')
GRFICA RESULTANTE CLASE 13
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
79
PROGRAMA : CLASE 14
% ESTE PROGRAMA MUESTRA COMO SE PUDE GRAFICAR PARES
% DE DATOS SIMULTANEAMENTE Y EL USUARIO AJUSTA LAS
% ESCALAS DE AMBAS GRFICAS UTLIZANDO LA INSTRUCCIN
% ( axis )
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36];
y2=y.^3;
x2=x.^2.0+500
%
% NOTA : SE GRAFICARA Y VERSUS Y2 CON 9 ELEMENTOS
% SE GRAFICARA TAMBIEN SIMULTANEAMENTE X VERSUS X2
% CON 18 ELEMENTOS GRAFICOS.
%
plot(y,y2,'c*',x,x2,'ro')
axis([-20 80 -500 10000])
%
% NOTA : LA INSTRUCCIN ( axis ) PERMITE QUE EL USUARIO
% FIJE ARBITRARIAMENTE LAS ESCALAS DE LOS EJES
GRFICA RESULTANTE CLASE 14
- 2 0 0 2 0 4 0 6 0 8 0
0
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
5 0 0 0
6 0 0 0
7 0 0 0
8 0 0 0
9 0 0 0
1 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
80
PROGRAMA : CLASE 15
% ESTE PROGRAMA MUESTRA COMO SE PUDE GRAFICAR PARES
% DE DATOS SIMULTANEAMENTE Y LAS ESCALAS DE AMBAS
% GRFICAS REGRESAN AL AJUSTE AUTOMATICO UTLIZANDO
% LA INSTRUCCIN : axis('auto')
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36];
y2=y.^3;
x2=x.^2.0+500
%
% NOTA : SE GRAFICARA Y VERSUS Y2 CON 9 ELEMENTOS
% SE GRAFICARA TAMBIEN SIMULTANEAMENTE X VERSUS X2
% CON 18 ELEMENTOS GRAFICOS.
%
plot(y,y2,'c*',x,x2,'ro')
axis([-20 80 -500 10000])
axis('auto')
%
% NOTA : SE HA FIJADO ARBITRARIAMENTE LAS ESCALAS DE
% LOS EJES PERO CON LA INSTRUCCIN axis('auto')
% MATLAB AJUSTA LA ESCALA DE LOS EJES AUTOMATICAMENTE
GRFICA RESULTANTE CLASE 15
0 5 1 0 1 5 2 0 2 5 3 0 3 5 4 0
0
5 0 0
1 0 0 0
1 5 0 0
2 0 0 0
2 5 0 0
3 0 0 0
3 5 0 0
4 0 0 0
4 5 0 0
5 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
81
PROGRAMA : CLASE 16
% ESTE PROGRAMA MUESTRA COMO SE PUEDE CAMBIAR EL
% ORIGEN O INICIO DE UNA GRFICA CON LA INSTRUCCIN
% axis('ij')
%
subplot(2,1,1)
fplot('sin' ,[1.8 4*pi],'c')
title('axis(xy) AUTOMATICO ')
%
% NOTA : LA FUNCIN SENO ( sin ) SE GRAFICA
% ENTRE 1.8 Y 4pi UTILIZANDO EL COLOR cyan
% EN ESTA GRFICA MATLAB UTILIZA AUTOMTICAMENTE
% LA INSTRUCCIN : axis('xy') SIGNIFICANDO QUE EL ORIGEN
% DE LA GRFICA EST SITUADO EN EL NGULO INFERIOR
% IZQUIERDO.
% EL EJE HORIZONTAL AUMENTA DE IZQUIERDA A DERECHA
% EL EJE VERTICAL AUMENTA DE ABAJO HACIA ARRIBA
% MAS INFORMACIN VER : help axis
%
subplot(2,1,2)
fplot('sin' ,[1.8 4*pi],'r')
axis('ij')
title('axis(ij) OPCIONAL')
%
% LA MISMA FUNCIN SE GRAFICA UTILIZANDO EL COLOR ROJO
% EN ESTE CASO LA INSTRUCCIN: axis('ij') PRODUCE
% QUE LA GRFICA SE ORIGINE EN EL NGULO SUPERIOR
% IZQUIERDO.
% EL EJE HORIZONTAL AUMENTA DE IZQUIERDA A DERECHA
% EL EJE VERTICAL AUMENTA DE ARRIBA HACIA ABAJO.
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
82
GRFICA RESULTANTE CLASE 16
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
83
PROGRAMA : CLASE 17
% ESTE PROGRAMA MUESTRA COMO SE PUDE OBTENER
% GRFICAS CON FORMAS DIFERENTES A LA RECTANGULAR,
% LA CUAL ES FIJADA POR MATLAB AUTOMATICAMENTE.
% CON LA INSTRUCCIN: axis('square') SE OBTIENE UNA
% GRFICA DE FORMA CUADRADA
%
y=[1 3 5 7 9 11 13 15 17];
x=[2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36];
y2=y.^3;
x2=x.^2.0+500
%
% NOTA : SE GRAFICAR (y) VERSUS (y2), CON 9 ELEMENTOS.
% SE GRAFICAR TAMBIN SIMULTANEAMENTE (x) VERSUS (x2),
% CON 18 ELEMENTOS GRFICOS. MATLAB FIJA LA ESCALA
%
subplot(2,1,1)
plot(y,y2,'c',x,x2,'r')
title(' GRFICA RECTANGULAR AUTOMATICO')
%
subplot(2,1,2)
plot(y,y2,'c',x,x2,'r')
axis('square')
title(' axis(square) OPCIONAL ')
%
% UTILIZANDO subplot SE PUEDE NOTAR LA DIFERENCIA
% ENTRE LA MISMA GRFICA EN FORMA RECTANGULAR
% ( FIJADA AUTOMATICAMENTE POR MATLAB ) Y EN FORMA
% CUADRADA
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
84
GRFICA RESULTANTE CLASE 17
0 5 10 15 20 25 30 35 40
0
2000
4000
6000
GRAFICA RECTANGULAR AUTOMATICO
0 20 40
0
2000
4000
6000
axis(square) OPCIONAL
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
85
PROGRAMA : CLASE 18
% ESTE PROGRAMA MUESTRA EL USO DE LA INSTRUCCIN
% axis('equal') LA CUAL PERMITE QUE MATLAB FIJE LOS FACTORES
% DE ESCALA PARA AMBOS EJES IGUALES
%
% EN ESTE PROGRAMA SE GENERAN LOS DIEZ PRIMEROS
% NMEROS, EN EL VECTOR ( X )
% Y LOS CUADRADOS EN EL VECTOR ( Y ).
%
x=[0:1:10];
y=x.^2;
%
subplot(1,2,1)
plot(x,y)
title('AUTOMATICO ')
xlabel('TITULO DEL EJE ( X )')
ylabel('TITULO DEL EJE ( Y )')
% EN ESTA FIGURA MATLAB AJUSTA LOS EJES DE
% LA GRFICA AUTOMATICAMENTE
%
subplot(1,2,2)
plot(x,y)
title('axis(equal) ')
xlabel('TITULO DEL EJE ( X )')
ylabel('TITULO DEL EJE ( Y )')
axis('equal')
% EN ESTA FIGURA MATLAB AJUSTA LOS EJES IGUALES DE
% LA GRFICA OPCIONALMENTE CON axis('equal')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
86
GRFICA RESULTANTE CLASE 18
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
87
GRFICOS TRIDIMENSIONALES
MATLAB permite visualizar datos mediante grficas en tres dimensiones, 3D,
algunas funciones estn representadas por lneas en tres dimensiones, otras se
representan mediante superficies o mallas
GRFICOS DE LNEAS
PROGRAMA : CLASE 19
% GRFICOS DE LNEAS
% ~~~~~~~~~~~~~~~~~~~~
%
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE GRAFICAR
% UNA LNEA, PRODUCIDA POR UNA FUNCIN Y GRAFICARLA
% TRIDIMENCIONALMENTE CON LA INSTRUCCIN: plot3(x,y,z)
%
% EJEMPLO
%
x=-20:1:20
y=-40:2:40
% SE TIENEN DOS VECTORES DE IGUAL ELEMENTOS
%
z=(x.^2).*(y.^2)
% SE INTRODUCE LA FUNCIN (z) PRODUCIDA MEDIANTE
% UNA OPERACIN ELEMENTO POR ELEMENTO PARA PRODUCIR
% UN NUEVO VECTOR CON LOS VALORES DE LA FUNCIN
% DE IGUAL DIMENSIN DE (x) Y (y).
plot3(x,y,z)
title('GRFICA DE LA FUNCIN')
zlabel(' FUNCIN')
xlabel(' VECTOR X ')
ylabel(' VECTOR Y ')
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
88
GRFICA RESULTANTE CLASE 19
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
89
PROGRAMA : CLASE 20
% GRFICOS DE LNEAS
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE GRAFICAR
% UNA LNEA, PRODUCIDA POR UNA FUNCIN Y GRAFICARLA
% TRIDIMENCIONALMENTE CON LA INSTRUCCIN: plot3(x,y,z)
%
% EJEMPLO DE FUNCIN SENO Y COSENO
x=0:1:20;
y=1./sqrt(x);
% SE TIENEN DOS VECTORES DE IGUAL ELEMENTOS
z=(sin(x)).^2.*sin(y);
% SE INTRODUCE LA FUNCIN (z), PRODUCIDA MEDIANTE
% UNA OPERACIN ELEMENTO POR ELEMENTO, PARA
% GENERAR UN NUEVO VECTOR CON LOS VALORES DE
% LA FUNCIN DE IGUAL DIMENSIN DE (x) Y (y).
%
subplot(2,2,1)
plot3(x,y,z)
title('GRFICA TRIDIMENCIONAL')
zlabel('FUNCIN')
xlabel('VECTOR X ')
ylabel('VECTOR Y ')
%
subplot(2,2,2)
plot(x,z)
title('GRFICA 2D')
ylabel('FUNCIN')
xlabel('VECTOR X')
%
subplot(2,2,3)
plot(y,z)
title('GRFICA 2D')
ylabel('FUNCIN')
xlabel('VECTOR Y')
%
subplot(2,2,4)
plot(x,y)
xlabel('VECTOR X')
ylabel('VECTOR Y')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
90
GRFICA RESULTANTE CLASE 20
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
91
GRFICOS DE MALLA Y SUPERFICIE
PROGRAMA : CLASE 21
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% Y SE CUENTA CON DATOS DE (x) Y DE (y)
% O SE CUENTA CON LOS VALORES MNIMO Y MXIMO
% DEL RANGO DEL DOMINIO DE (x) Y DE (y)
%
% METODOLOGA
%
% 1) SE TIENE LOS VALORES DEL VECTOR : x
% 2) SE TIENE LOS VALORES DEL VECTOR : y
% 3) SE CONOCE LA FUNCIN ENTRE (x) Y (Y)
% 4) SE GENERA LA MATRIZ, MALLA, QUE CONTIENE
% COMO FILAS COPIA DEL VECTOR (X) Y COMO
% COLUMNAS COPIA DEL VECTOR (y).
% LAS FILAS Y COLUMNAS DE ESTA MATRIZ, MALLA,
% SE DENOMINAN (xm) Y (ym)
% 5) LA MATRIZ MALLA SE GENERA CON LA
% INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 6) SE INTRODUCE A MATLAB LA MATRIZ FUNCIN
% zm=f(xm,ym). LA RELACIN DEBE SER ELEMENTO
% POR ELEMENTO PARA QUE LA MATRIZ, FUNCIN,
% (zm), QUE SE GENERE SEA DE LA MISMA
% DIMENSION DE LA MATRIZ, MALLA, [xm,ym]
% 7) SE GRAFICA LA MATRIZ, MALLA, CON LOS
% CAMBIOS PROPORCIONADOS EN SU SUPERFICIE
% POR LA MATRIZ, FUNCIN, (zm), EN TRES
% DIMENSIONES: (x),(y) Y (z), MEDIANTE LA
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
92
% INSTRUCCIN : mesh(xm,ym,z)
%
% EJEMPLO
%
x=0:2:20
y=0:3:40
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y)
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=0.*xm;
% SE ESTABLECE CERO RELACIN CON (xm), POR LO
% TANTO SE DEBE GENERAR UNA MALLA PLANA EN EL
% VALOR CERO DE LA FUNCIN, EN LA GRFICA
% TRIDIMENSIONAL
%
mesh(xm,ym,zm)
% SE GRAFICA TRIDIMENSIONALMENTE A LA MATRIZ,
% MALLA
title(' MALLA ')
xlabel('ESCALA DE X')
ylabel('ESCALA DE Y')
zlabel('VALORES DE LA FUNCIN')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
93
GRFICA RESULTANTE CLASE 21
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
94
PROGRAMA : CLASE 22
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN(x,y)
% Y SE CUENTA CON DATOS DE (x) Y DE (y)
% O SE CUENTA CON LOS VALORES MNIMO Y MXIMO
% DEL RANGO DEL DOMINIO DE (x) Y DE (y)
%
% METODOLOGA
%
% 1) SE TIENE LOS VALORES DEL VECTOR : x
% 2) SE TIENE LOS VALORES DEL VECTOR : y
% 3) SE CONOCE LA FUNCIN ENTRE (x) Y (Y)
% 4) SE GENERA LA MATRIZ, MALLA, QUE CONTIENE
% COMO FILAS COPIA DEL VECTOR (X) Y COMO
% COLUMNAS COPIA DEL VECTOR (y).
% LAS FILAS Y COLUMNAS DE ESTA MATRIZ, MALLA,
% SE DENOMINAN (xm) Y (ym)
% 5) LA MATRIZ MALLA SE GENERA CON LA
% INSTRUCCIN : [xm,ym]=meshgrid(x,y)
% 6) SE INTRODUCE A MATLAB LA MATRIZ FUNCIN
% zm=f(xm,ym). LA RELACIN DEBE SER ELEMENTO
% POR ELEMENTO PARA QUE LA MATRIZ, FUNCIN,
% (zm), QUE SE GENERE SEA DE LA MISMA
% DIMENSION DE LA MATRIZ, MALLA, [xm,ym]
% 7) SE GRAFICA LA MATRIZ, MALLA, CON LOS
% CAMBIOS PROPORCIONADOS EN SU SUPERFICIE
% POR LA MATRIZ, FUNCIN, (zm), EN TRES
% DIMENSIONES : (x),(y) Y (z), MEDIANTE LA
% INSTRUCCIN : mesh(xm,ym,z)
%
% EJEMPLO
%
x=0:2:20
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
95
y=0:3:40
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y)
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
% SE ESTABLECE UNA RELACIN CON (xm) Y (ym) , POR LO
% TANTO SE DEBE GENERAR UNA MALLA DEFORMADA,
% SEGUN EL VALOR DE LA FUNCIN, EN LA GRFICA
% TRIDIMENSIONAL
%
mesh(xm,ym,zm)
% SE GRAFICA TRIDIMENSIONALMENTE A LA MATRIZ,
% MALLA
title(' MALLA DEFORMADA ')
xlabel('ESCALA DE X')
ylabel('ESCALA DE Y')
zlabel('VALORES DE LA FUNCIN')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
96
GRFICA RESULTANTE CLASE 22
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
97
PROGRAMA : CLASE 23
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% Y SE CUENTA CON DATOS DE (x) Y DE (y)
% O SE CUENTA CON LOS VALORES MNIMO Y MXIMO
% DEL RANGO DEL DOMINIO DE (x) Y DE (y)
%
% METODOLOGA
%
% 1) SE TIENE LOS VALORES DEL VECTOR : x
% 2) SE TIENE LOS VALORES DEL VECTOR : y
% 3) SE CONOCE LA FUNCIN ENTRE (x) Y (Y)
% 4) SE GENERA LA MATRIZ, MALLA, QUE CONTIENE
% COMO FILAS COPIA DEL VECTOR (X) Y COMO
% COLUMNAS COPIA DEL VECTOR (y).
% LAS FILAS Y COLUMNAS DE ESTA MATRIZ, MALLA,
% SE DENOMINAN (xm) Y (ym)
% 5) LA MATRIZ MALLA SE GENERA CON LA
% INSTRUCCIN : [xm,ym]=meshgrid(x,y)
% 6) SE INTRODUCE A MATLAB LA MATRIZ FUNCIN
% zm=f(xm,ym). LA RELACIN DEBE SER ELEMENTO
% POR ELEMENTO PARA QUE LA MATRIZ, FUNCIN,
% (zm), QUE SE GENERE SEA DE LA MISMA
% DIMENSION DE LA MATRIZ, MALLA, [xm,ym]
% 7) SE GRAFICA LA MATRIZ, MALLA, CON LOS
% CAMBIOS PROPORCIONADOS EN SU SUPERFICIE
% POR LA MATRIZ, FUNCIN, (zm), EN TRES
% DIMENSIONES : (x),(y) Y (z), MEDIANTE LA
% INSTRUCCIN : mesh(xm,ym,z)
%
% EJEMPLO
%
% SUPERFICIE
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
98
%
x=0:.2:20;
y=0:.3:40;
% SE TIENEN LOS VECTORES (x) Y (y)
% POR EL ESPACIAMIETO ENTRE LOS ELEMENTOS
% DE CADA VECTOR, SE PRODUCIRA UNA SUPERFICIE
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
%
mesh(xm,ym,zm)
% SE GRAFICA TRIDIMENSIONALMENTE A LA MATRIZ,
% MALLA
title(' SUPERFICIE DEFORMADA ')
xlabel('ESCALA DE X')
ylabel('ESCALA DE Y')
zlabel('VALORES DE LA FUNCIN')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
99
GRFICA RESULTANTE CLASE 23
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
100
PROGRAMA : CLASE 24
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% CON DIFERENTES VISTAS
%
%
% EJEMPLO DE LA INSTRUCCIN:
% view(azimuth,elevation)
%
% EL AZIMUT SE MIDE EN GRADOS DESDE EL EJE
% NEGATIVO DE (y), GIRANDO EL NMERO INDICADO
% CONTRARIO A LAS AGUJAS DEL RELOJ
%
% LA ELEVACIN ES EL NGULO EN GRADOS
% EN EL QUE LOS OJOS DEL OBSERVADOR
% VEN EL PLANO xy
%
% EL VALOR POR DEFECTO ES: view(-37.5,30)
%
x=0:2:20;
y=0:.3:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
%
subplot(1,2,1)
mesh(xm,ym,zm)
title(' VISTA 1 - view(-37.5,30) AUTOMTICA ')
xlabel('X')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
101
ylabel('Y')
zlabel('FUNCIN')
%
subplot(1,2,2)
mesh(xm,ym,zm)
title(' VISTA 2 - view(-45,5) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-45,5)
GRFICA RESULTANTE CLASE 24
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
102
PROGRAMA : CLASE 25
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% CON DIFERENTES VISTAS
%
% EJEMPLO DE LA INSTRUCCIN:
% view(azimuth,elevation)
%
% EL AZIMUT SE MIDE EN GRADOS DESDE EL EJE
% NEGATIVO DE y GIRANDO EL NMERO INDICADO
% CONTRARIO A LAS AGUJAS DEL RELOJ
%
% LA ELEVACIN ES EL NGULO EN GRADOS
% EN EL QUE LOS OJOS DEL OBSERVADOR
% VEN EL PLANO xy
%
%
% EL VALOR POR DEFECTO ES: view(-37.5,30)
%
%
% EN ESTE EJEMPLO SE ILUSTRA EL EFECTO DE
% CAMBIAR EL AZIMUT, MANTENIENDO LA ELEVACION
%
x=0:2:20;
y=0:.3:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
103
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
%
subplot(2,2,1)
mesh(xm,ym,zm)
title('VISTA 1 - view(-37.5,30')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
% ESTA VISTA ES view(-37.5,30) AUTOMTICA
%
subplot(2,2,2)
mesh(xm,ym,zm)
title(' VISTA 2 - view(-20,30) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-20,30)
%
subplot(2,2,3)
mesh(xm,ym,zm)
title(' VISTA 3 - view(0,30) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(0,30)
%
subplot(2,2,4)
mesh(xm,ym,zm)
title(' VISTA 4 - view(-45,30) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-65,30)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
104
GRFICA RESULTANTE CLASE 25
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
105
PROGRAMA : CLASE 26
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% CON DIFERENTES VISTAS
%
% EJEMPLO DE LA INSTRUCCIN:
% view(azimuth,elevation)
%
% EL AZIMUT SE MIDE EN GRADOS DESDE EL EJE
% NEGATIVO DE y GIRANDO EL NMERO INDICADO
% CONTRARIO A LAS AGUJAS DEL RELOJ
%
% LA ELEVACIN ES EL NGULO EN GRADOS
% EN EL QUE LOS OJOS DEL OBSERVADOR
% VEN EL PLANO xy
%
%
% EL VALOR POR DEFECTO ES: view(-37.5,30)
%
%
% EN ESTE EJEMPLO SE ILUSTRA EL EFECTO DE
% CAMBIAR LA ELEVACION, MANTENIENDO EL AZIMUT
%
%
x=0:2:20;
y=0:.3:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
106
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
%
subplot(2,2,1)
mesh(xm,ym,zm)
title('VISTA 1 - view(-37.5,30')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
% ESTA VISTA ES view(-37.5,30) AUTOMTICA
%
subplot(2,2,2)
mesh(xm,ym,zm)
title(' VISTA 2 - view(-37.5,60) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-37.5,60)
%
subplot(2,2,3)
mesh(xm,ym,zm)
title(' VISTA 3 - view(-37.5,90) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-37.5,90)
%
subplot(2,2,4)
mesh(xm,ym,zm)
title(' VISTA 4 - view(-45,-30) DESDE ABAJO ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-65,-90)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
107
GRFICA RESULTANTE CLASE 26
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
108
PROGRAMA : CLASE 27
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% CON DIFERENTES VISTAS
%
% EJEMPLO DE LA INSTRUCCIN:
% view(azimuth,elevation)
%
% EL AZIMUT SE MIDE EN GRADOS DESDE EL EJE
% NEGATIVO DE y GIRANDO EL NMERO INDICADO
% CONTRARIO A LAS AGUJAS DEL RELOJ
%
% LA ELEVACIN ES EL NGULO EN GRADOS
% EN EL QUE LOS OJOS DEL OBSERVADOR
% VEN EL PLANO xy
%
%
% EL VALOR POR DEFECTO ES: view(-37.5,30)
%
%
% EN ESTE EJEMPLO SE ILUSTRA EL EFECTO DE
% CAMBIAR EL AZIMUT Y LA ELEVACION SIMULTANEAMENTE
%
x=0:2:20;
y=0:.3:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
109
%
subplot(2,2,1)
mesh(xm,ym,zm)
title('VISTA 1 - view(-37.5,30')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
% ESTA VISTA ES view(-37.5,30) AUTOMTICA
%
subplot(2,2,2)
mesh(xm,ym,zm)
title(' VISTA 2 - view(-20,60) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-20,60)
%
subplot(2,2,3)
mesh(xm,ym,zm)
title(' VISTA 3 - view(0,0) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(0,0)
%
subplot(2,2,4)
mesh(xm,ym,zm)
title(' VISTA 4 - view(-45,0) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-45,0)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
110
GRFICA RESULTANTE CLASE 27
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
111
PROGRAMA : CLASE 28
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA LA
% METODOLOGA PARA REALIZAR UNA GRFICA
% EN TRES DIMENSIONES, DE MALLA Y DE
% SUPERFICIE, DE UNA FUNCIN QUE DEPENDE
% DE DOS VARIABLES Z = FUNCIN (x,y)
% CON DIFERENTES VISTAS
%
% EJEMPLO DE LA INSTRUCCIN:
% view(azimuth,elevation)
%
% EL AZIMUT SE MIDE EN GRADOS DESDE EL EJE
% NEGATIVO DE y GIRANDO EL NMERO INDICADO
% CONTRARIO A LAS AGUJAS DEL RELOJ
%
% LA ELEVACIN ES EL NGULO EN GRADOS
% EN EL CUAL LOS OJOS DEL OBSERVADOR
% VEN EL PLANO xy
%
%
% EL VALOR POR DEFECTO ES: view(-37.5,30)
%
%
% EN ESTE EJEMPLO SE CAMBIA EL AZIMUT Y
% LA ELEVACION SIMULTANEAMENTE PARA ILUSTRAR
% LAS GRFICAS EN TRES DIMENSIONES Y LA MISMA
% EN DOS DIMENSIONES
%
x=-20:4:20;
y=-40:2:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
112
%
zm=sin(pi*xm/20)-cosh(pi*ym/20)+ xm.^2;
%
subplot(2,2,1)
mesh(xm,ym,zm)
title('VISTA 1 - view(-37.5,30')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
% ESTA VISTA ES view(-37.5,30) AUTOMTICA
%
subplot(2,2,2)
mesh(xm,ym,zm)
title(' VISTA 2 - view(0,0) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(0,0)
%
subplot(2,2,3)
mesh(xm,ym,zm)
title(' VISTA 3 - view(-90,0) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-90,0)
%
subplot(2,2,4)
mesh(xm,ym,zm)
title(' VISTA 4 - view(-45,-90) ')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-45,-90)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
113
GRFICA RESULTANTE CLASE 28
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
114
PROGRAMA : CLASE 29
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% EL PRESENTE PROGRAMA ILUSTRA COMO SE
% PUEDEN APRECIAR LAS PARTES ESCONDIDAS
% DETRAS DE UNA MALLA O SUPERFICIE, CON LA
% INSTRUCCIN : hidden off -- hidden on
%
% hidden on ES AUTOMTICA
%
x=-20:4:20;
y=-40:4:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=sin(pi*xm/20)-cosh(pi*ym/20)+ xm.^2;
%
subplot(1,2,1)
mesh(xm,ym,zm)
title('HIDDEN ON')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
view(-10,20)
%
subplot(1,2,2)
mesh(xm,ym,zm)
title('HIDDEN OFF')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-10,20)
hidden off
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
115
GRFICA RESULTANTE CLASE 29
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
116
PROGRAMA : CLASE 30
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% EL PRESENTE PROGRAMA ILUSTRA COMO SE
% GRFICA UNA MALLA Y SE LE DA APARIENCIA
% DE SUPERFICIE CON COLORES, MEDIANTE LA
% INSTRUCCIN : surf(xm,ym,zm,c)
%
% LA LETRA c REPRESENTA LOS COLORES
%
x=-20:4:20;
y=-40:6:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=sin(pi*xm/20)-cosh(pi*ym/20)+ xm.^2;
%
subplot(1,2,1)
surf(xm,ym,zm)
title('')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
view(-10,20)
%
subplot(1,2,2)
mesh(xm,ym,zm)
title('')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-10,20)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
117
GRFICA RESULTANTE CLASE 30
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
118
PROGRAMA : CLASE 31
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA COMO SE
% GRAFICA UNA MALLA Y SE LE DA APARIENCIA
% DE SUPERFICIE CON COLORES DETERMINADOS,
% MEDIANTE LAS INSTRUCCIONES : surf(xm,ym,zm,c)
% Y colormap(nombre)
%
% VER : help colormap
%
% EJEMPLOS :
%
% colormap(hsv)
% colormap(hot)
% colormap(cool)
% colormap(pink)
% colormap(gray)
% colormap(bone)
% colormap(jet)
% colormap(copper)
% colormap(prism)
% colormap(flag)
%
x=-20:4:20;
y=-40:6:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=sin(pi*xm/20)-cosh(pi*ym/20)+ xm.^2;
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
119
subplot(1,2,1)
colormap(pink)
surf(xm,ym,zm)
title('')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
view(-10,20)
%
%
subplot(1,2,2)
mesh(xm,ym,zm)
title('')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-10,20)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
120
GRFICA RESULTANTE CLASE 31
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
121
PROGRAMA : CLASE 32
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA COMO SE
% GRAFICA UNA MALLA Y SE LE DA APARIENCIA
% DE SUPERFICIE CON COLORES DETERMINADOS,
% MEDIANTE LAS INSTRUCCIONES : surfl(xm,ym,zm,c)
% Y colormap(nombre)
%
% VER : help colormap, surfl
%
% EJEMPLOS :
%
% colormap(hsv)
% colormap(hot)
% colormap(cool)
% colormap(pink)
% colormap(gray)
% colormap(bone)
% colormap(jet)
% colormap(copper)
% colormap(prism)
% colormap(flag)
%
x=-20:4:20;
y=-40:6:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
zm=sin(pi*xm/20)-cosh(pi*ym/20)+ xm.^2;
%
subplot(1,2,1)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
122
colormap(gray)
surfl(xm,ym,zm),shading interp
title('')
xlabel('X')
ylabel('Y')
zlabel('FUNCIN')
view(-10,20)
%
%
subplot(1,2,2)
mesh(xm,ym,zm)
title('')
xlabel(' X')
ylabel(' Y')
zlabel('FUNCIN')
view(-10,20)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
123
GRFICA RESULTANTE CLASE 32
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
124
PROGRAMA : CLASE 33
% GRFICAS DE MALLA Y DE SUPERFICIE
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% EL PRESENTE PROGRAMA ILUSTRA EL MISMO
% EJEMPLO ANTERIOR PERO CON OTRA FUNCIN
x=0:.2:20;
y=0:.3:40;
% SE TIENEN LOS VECTORES (x) Y (y)
%
[xm,ym]=meshgrid(x,y);
% SE GENER LA MATRIZ MALLA
% xm FILAS
% ym COLUMNAS
%
colormap(gray)
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
%
surfl(xm,ym,zm),shading interp
%
title(' SUPERFICIE ')
xlabel('ESCALA DE X')
ylabel('ESCALA DE Y')
zlabel('VALORES DE LA FUNCIN')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
125
GRFICA RESULTANTE CLASE 33
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
126
PROGRAMA : CLASE 34
% EL PRESENTE PROGRAMA PERMITE GRAFICAR
% EL PERFIL DE TEMPERATURA EN UNA REGIN
% BIDIMENSIONAL DE UN SLIDO SOMETIDO
% A CONDUCCIN DE CALOR EN ESTADO ESTACIONARIO
% LA REGIN DEL SLIDO DONDE EXISTE CONDUCCIN
% DE CALOR EN DOS DIMENSIONES x Y y TIENE
% LAS SIGUIENTES DIMENSIONES FSICAS :
% LADO = 10 PULGADAS EJE x
% ANCHO = 20 PULGADAS EJE y
%
% DOMINIO DE LAS VARIABLES :
% 0 <= x <= 10
% 0 <= y <= 20
% LAS CONDICIONES DE FRONTERA SON TALES
% QUE EL PERFIL DE TEMPERATURA SE EXPRESA
% DE LA SIGUIENTE FORMA :
% T(x,y)=100+sin(pi*xm/20).*sinh(pi*ym/20)
% SOLUCION
% 1) SE TOMAN VALORES ARBITRARIOS DE x
% ENTRE 0 Y 10
% 2) SE TOMAN VALORES ARBITRARIOS DE y
% ENTRE 0 Y 20
x=0:1:10;
y=0:0.5:20;
%
[xm,ym]=meshgrid(x,y);
zm=100+sin(pi*xm/20).*sinh(pi*ym/20);
subplot(1,2,1)
mesh(xm,ym,zm)
title('PERFIL TRIDIMENSIONAL')
xlabel('LADO')
ylabel('ancho')
%
subplot(1,2,2)
contour(xm,ym,zm,30)
title('PERFIL BIDIMENSIONAL')
xlabel('LADO')
ylabel('ancho')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
127
GRFICA RESULTANTE CLASE 34
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
128
GRFICA RESULTANTE CLASE 34
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
129
PROGRAMA : CLASE 35
% EL PRESENTE PROGRAMA PERMITE GRAFICAR
% ESFERAS, CILINDROS EN FORMA ANIMADA
colormap(gray)
sphere(50),shading interp
spinmap(20,.01)
hold on
cylinder(1,50)
spinmap(20,.01)
hold on
colormap(prism)
cylinder(2,100)
spinmap(20,.001)
sphere(50)
cylinder(2,100),shading interp
GRFICA RESULTANTE CLASE 35
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
130
PROGRAMA : CLASE 36
% EL PRESENTE PROGRAMA ES UNA CURIOSIDAD
% DE ANIMACION PARA MATLAB, TOMADO
% DE DEL WWW DE INTERNET, EN LA DIRECCION :
%
% http://www.dice.ucl.ac.be/~colinge/smk.html
%
%smk simulation
x=0:300;
t=x/300*pi*2;
T=max(t);
I=10;
while (1)
for ni=0: I
i=ni/I*2*pi;
p=sin(t-i).*(t.^2/T^2);
p2=cos(t-i).*t.^2/T^2;
p3=sin(2*t-i).*t.^1.5/T^2;
plot(p+0.01-0.03,t,'y',p2-0.03,t,'y',p3-0.01-0.03,t,'y');
hold on
fill([-1 0 0 -1 -1],[0.1 0.1 -0.3 -0.3 0.1],'w');
fill([-0.05 0 0 -0.05 -0.05],[0.1 0.1 -0.3 -0.3 0.1],'r');
axis('off');
axis([-1 1 -0.3 6]);
hold off
drawnow
end;
end;
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
131
GRFICA RESULTANTE CLASE 36
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
132
PROGRAMA : CLASE 37
% ESTE PROGRAMA ILUSTRA COMO REALIZAR GRAFICAS SIN EJES
% Y COMO MANIPULARLAS PARA CAMBIAR LA ORIENTACION EN EL
ESPACIO
subplot(2,2,1)
x=-20:2:20;
y=-40:3:40;
[xm,ym]=meshgrid(x,y);
zm=100+sin(pi*xm/20)+cosh(pi*ym/20);
surfl(xm,ym,zm),shading interp
axis off
subplot(2,2,2)
x=-20:2:20;
y=-40:3:40;
[xm,ym]=meshgrid(x,y);
zm=100+sin(pi*xm/20)+cosh(pi*ym/20);
surfl(xm,ym,zm),shading interp
axis off
subplot(2,2,3)
x=-20:2:20;
y=-40:3:40;
[xm,ym]=meshgrid(x,y);
zm=100+sin(pi*xm/20)+cosh(pi*ym/20);
surfl(xm,ym,zm),shading interp
axis off
subplot(2,2,4)
x=-20:2:20;
y=-40:3:40;
[xm,ym]=meshgrid(x,y);
zm=100+sin(pi*xm/20)+cosh(pi*ym/20);
surfl(xm,ym,zm),shading interp
axis off
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
133
GRFICA RESULTANTE CLASE 37
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
134
PROGRAMA : CLASE 38
surf(peaks)
GRFICA RESULTANTE CLASE 38
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
135
PROGRAMA : CLASE 39
subplot(2,2,1)
colormap(gray)
surfl(peaks),shading interp
axis off
subplot(2,2,2)
colormap(gray)
surfl(peaks),shading interp
axis off
subplot(2,2,3)
colormap(gray)
surfl(peaks),shading interp
axis off
subplot(2,2,4)
colormap(gray)
surfl(peaks),shading interp
axis off
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
136
GRFICA RESULTANTE CLASE 39
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
137
PROGRAMA : CLASE 40
meshc(peaks)
GRFICA RESULTANTE CLASE 40
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
138
PROGRAMA : CLASE 41
meshz(peaks)
GRFICA RESULTANTE CLASE 41
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
139
PROGRAMA : CLASE 42
plot(peaks)
GRFICA RESULTANTE CLASE 42
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
140
PROGRAMA : CLASE 43
mesh(peaks(20)+7)
axis off
hold on
pcolor(peaks(20))
hidden off
GRFICA RESULTANTE CLASE 43
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
141
PROGRAMA : CLASE 44
t=0:pi/10:2*pi;
[x,y,z]=cylinder(cos(t));
colormap(gray)
surfl(x,y,z),shading interp
axis off
GRFICA RESULTANTE CLASE 44
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
142
EDICIN DE PROGRAMAS EN MATLAB
MATLAB permite la edicin de programas, con el objeto de guardarlos y ejecutarlos
posteriormente, mediante el uso de un editor de palabras. En caso de no especificar el tipo
de editor, MATLAB selecciona automticamente el editor MATLAB Editor/Debugger.
Para crear un programa nuevo se procede de la siguiente forma :
En la barra de comandos se selecciona: file
En el men de file se selecciona: new
Al desplegarse el men del cuadro new, se selecciona M-file
Abrindose la ventana del MATLAB Editor/Debugger, como se muestra a
continuacin:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
143
El editor de MATLAB se puede abrir, directamente, utilizando el botn de "new M- file",
en la barra de herramienta de la Ventana de Comando de MATLAB:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
144
El editor aparece sin ttulos y debe ser guardado, colocndole un ttulo cuyo nombre
tenga la extensin ( . m ). Este procedimiento permite escribir instrucciones de MATLAB
en un archivo de texto para que pueda ser abierto por MATLAB y evaluar las
instrucciones. De esta manera se puede correr y editar el archivo cuando sea necesario.
Estos archivos se denominan script , ya que producen que MATLAB siga el guin de
instrucciones indicados en el mismo.
Cuando se quiera editar un archivo tipo M-file, simplemente se abre el men de file y se
selecciona open M-file, apareciendo la ventana para buscar archivos y seleccionando el
archivo cuya extensin ( .m ) se est solicitando. Realizada esta operacin, aparecer la
ventana con el editor de MATLAB, que contiene el programa requerido, como se ilustra:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
145
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
146
MATLAB permite correr un programa contenido en un archivo tipo M-file, escribiendo el
nombre del archivo sin la extensin. MATLAB regresa al espacio de trabajo, workspace,
todas las variables que se generaron en la ejecucin de dicho programa. En el siguiente
ejemplo se tiene un programa llamado PSICRO1.m
PSICRO1.m
% CARTA PSICROMETRICA
%
% El presente programa calcula las humedades
% absolutas y de saturacin del aire en ( Lb agua / Lb aire seco )
%
% el programa solicita que se introduzcan los siguientes datos
% 1) tbhc, la temperatura de bulbo humedo en grados centgrados
% 2) tbsc, la temperatura de bulbo seco en grados centgrados
%
% El programa determina :
% a) pv = presion de vapor del agua ( PSI )
% b) ysat = humedad de saturacin del aire (LB agua/Lb aire seco)
% c) y = humedad absoluta del aire (LB agua/Lb aire seco)
tbhc=29;
tbsc=40;
tbhk=tbhc+273.16;
x=647.27-tbhk;
ch=((3.2437814+5.86826e-3*x+1.1702379e-8*x^3)/(1+2.1878462e-3*x))*x/tbhk;
pv=218.167*14.696/10^ch;
ysat=0.622*pv/(14.696-pv);
tbhf=1.8*tbhc+32.0;
landa=1075.8*((705.632-tbhf)/673.632)^0.3436;
tbsf=tbsc*1.8+32.0;
f=(tbsf-tbhf)/landa;
y=(ysat-0.24*f)/(1+0.45*f);
disp('presin de vapor del agua @ tbhc');pv
disp('humedad de saturacion del aire @ tbsc ');ysat
disp('humedad absoluta del aire @ tbhc y tbsc ');y
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
147
Ejecutando el programa PSICRO1.m se obtendrn las variables de salida del mismo y las
variables intermedias que se utilizaron en el clculo. Antes de correr el programa, el
espacio de trabajo de MATLAB se vaca, con la instruccin clear, y verificamos con la
instruccin whos, el cual nos indica que el workspace est vaco. Despus de correr el
programa la instruccin whos mostrar a todas las variables que se generaron con la
ejecucin :
Antes de correr el programa PSICRO1.m
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
148
Despus de correr el programa PSICRO1.m
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
149
MATLAB permite la ayuda en lnea para cualquier programa tipo M-file, si tiene
comentarios desde la primera lnea del programa, hasta la primera instruccin MATLAB
que no sea comentario. Si se escribe help psicro1 la respuesta ser lo que aparece
sombreado en el programa PSICRO1:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
150
FUNCIONES EN ARCHIVOS TIPO .m
En archivos tipo ( .m ) se pueden escribir FUNCIONES, de la misma manera como se
escriben los programas tipo ( .m ), descritos anteriormente. La diferencia es que en la
funcin se introducen las variables desde el exterior del archivo y MATLAB regresa al
espacio de trabajo solo las variables de salida. Las variables intermedias de clculo no
aparecern en el espacio de trabajo.
La funcin debe ser escrita en el Editor con el siguiente formato :
function [ VR1,VR2,VR3,.......,VRn ] = nombre( VE1,VE2,...,VEn )
% nombre
% comentario
% comentario
% comentario
CALCULOS INTERMEDIOS
VR1 = funcin(VE1,VE2,....,VEn)
VR2 = funcin(VE1,VE2,....,VEn)
VR3 = funcin(VE1,VE2,....,VEn)
. . . . . . . . . .
VRn = funcin(VE1,VE2,....,VEn)
Donde :
VE = variable de entrada
VR = variable de retorno
Las caractersticas ms importantes de los archivos function son :
El nombre de la funcin y el nombre del archivo deben ser los mismos. Por ejemplo, la
funcin sin se almacena en el archivo sin.m .
Las variables intermedias de los clculos no retornan al espacio de trabajo de
MATLAB.
Si se tiene una sola variable de retorno, no se necesitan los corchetes.
Si se invoca la funcin sin asignarle nombre a la variables de retorno, MATLAB coloca
a la primera variable de retorno producida en la variable genrica ans ( answer ) y el
resto de las variables se pierde.
Si se invoca la funcin asignndole arbitrariamente nombres a la variables de retorno,
MATLAB coloca los valores numricos de retorno en las variables de nombres
asignados, en el orden en que se producen.
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
151
Las lneas de comentarios, desde la primera lnea hasta la ltima de no comentario,
constituyen el texto de la ayuda en lnea.
La primera lnea es examinada por la instruccin lookfor.
A continuacin se presenta al mismo programa anterior, PSICRO1.m, convertido en una
funcin, llamada PSICRFUN.m
function [pv,ysat,y] = psicrfun(tbhc,tbsc)
% psicrfun
% ---------------
% Es una funcin que retorna los valores de la presin de vapor del agua en ( PSI )
% la humedad absoluta y la humedad de saturacin del aire en ( Lb agua / Lb aire seco )
%
% [pv,ysat,y] = psicrfun(tbhc,tbsc)
% donde :
% pv = presin de vapor en ( PSI )
% ysat = humedad de saturacin del aire en ( Lb agua / Lb aire seco )
% y = humedad de absoluta del aire en ( Lb agua / Lb aire seco )
%
% tbhc = temperatura de bulbo hmedo del aire en grados centgrados
% tbsc = temperatura de bulbo seco del aire en grados centgrados
%
% Ing. Luis Rojas Malav 1997 UNEXPO
%tbhc=input('temperatura de bulbo humedo en grados centigrados');
%tbsc=input('temperatura de bulbo seco en grados centigrados');
tbhk=tbhc+273.16;
x=647.27-tbhk;
ch=((3.2437814+5.86826e-3*x+1.1702379e-8*x^3)/(1+2.1878462e-3*x))*x/tbhk;
pv=218.167*14.696/10^ch;
ysat=0.622*pv/(14.696-pv);
tbhf=1.8*tbhc+32.0;
landa=1075.8*((705.632-tbhf)/673.632)^0.3436;
tbsf=tbsc*1.8+32.0;
f=(tbsf-tbhf)/landa;
y=(ysat-0.24*f)/(1+0.45*f);
%disp('humedad absoluta del aire');y
%disp('humedad de saturacion del aire @ tbh y tbs');ysat
%disp('calor latente de vaporizacin del agua @ tbhc, en unidades de ( BTU / Lb.)');landa
%disp('presion de vapor del agua en unidades de ( PSI ) @ tbhc');pv
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
152
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
153
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
154
OPERACIONES RELACIONALES Y LGICAS
MATLAB permite operaciones relacionales y lgicas, mediante el uso de operadores
especiales, los cuales con respuestas a preguntas del tipo de verdadero y falso, permiten
controlar el flujo de instrucciones a ejecutarse.
MATLAB establece que cualquier nmero diferente de cero es verdadero y cualquier
nmero igual a cero es falso. Por lo tanto, la salida de todas las expresiones
relacionales y lgicas produce uno ( 1 ) si es verdadero y produce cero ( 0 ) si es falso.
OPERADORES RELACIONALES
OPERADOR
DESCRIPCIN
<
MENOR QUE
<=
MENOR O IGUAL QUE
>
MAYOR QUE
>=
MAYOR O IGUAL QUE
==
IGUAL A
~=
NO IGUAL A
Veamos los siguientes ejemplos:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
155
PROGRAMA: LGICA1
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% COMPARAR DOS VECTORES CON RELACIONES LGICAS
% ELEMENTO POR ELEMENTO
% EN LA COMPARACIN LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
a=[1,5,6,7,2,8,3,4,8]
b=[2,5,2,4,7,2,9,4,1]
r1=a>b
r2=a<b
r3=a<=b
r4=a>=b
r5=a==b
r6=a~=b
a =
1 5 6 7 2 8 3 4 8
b =
2 5 2 4 7 2 9 4 1
r1 =
0 0 1 1 0 1 0 0 1
r2 =
1 0 0 0 1 0 1 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
156
r3 =
1 1 0 0 1 0 1 1 0
r4 =
0 1 1 1 0 1 0 1 1
r5 =
0 1 0 0 0 0 0 1 0
r6 =
1 0 1 1 1 1 1 0 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
157
PROGRAMA: LGICA2
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% COMPARAR DOS VECTORES CON RELACIONES LGICAS
% ELEMENTO POR ELEMENTO
% EN LA COMPARACIN LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
% ( A ) Y ( B ) SON MATRICES
a=[1,5,6;7,2,8;3,4,8]
b=[2,5,2;4,7,2;9,4,1]
r1=a>b
r2=a<b
r3=a<=b
r4=a>=b
r5=a==b
r6=a~=b
a =
1 5 6
7 2 8
3 4 8
b =
2 5 2
4 7 2
9 4 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
158
r1 =
0 0 1
1 0 1
0 0 1
r2 =
1 0 0
0 1 0
1 0 0
r3 =
1 1 0
0 1 0
1 1 0
r4 =
0 1 1
1 0 1
0 1 1
r5 =
0 1 0
0 0 0
0 1 0
r6 =
1 0 1
1 1 1
1 0 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
159
PROGRAMA: LGICA3
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% COMPARAR DOS VECTORES CON RELACIONES LGICAS
% ELEMENTO POR ELEMENTO
% EN LA COMPARACIN LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
a=[1,5,6;7,2,8;3,4,8]
b=[2,5,2;4,7,2]
% EN ESTE PROGRAMA SE PRODUCE UN ERROR YA QUE
% LAS MATRICES SON DE NMEROS DE ELEMENTOS
% DIFERENTES, POR LO TANTO LA COMPARACIN NO
% SE PUEDE REALIZAR
r1=a>b
r2=a<b
r3=a<=b
r4=a>=b
r5=a==b
r6=a~=b
a =
1 5 6
7 2 8
3 4 8
b =
2 5 2
4 7 2
??? Error using ==> >
Matrix dimensions must agree.
Error in ==> c:\matlab\program\logica3.m
On line 17 ==> r1=a>b
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
160
PROGRAMA: LGICA4
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% COMPARAR DOS VECTORES CON RELACIONES LGICAS
% ELEMENTO POR ELEMENTO
% EN LA COMPARACIN LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
a=[1,5,6,7,2,8,3,4,8]
b=[2,5,2,4,7,2,4,3,8]'
% EN ESTE PROGRAMA SE PRODUCE UN ERROR YA QUE
% LAS MATRICES SON DE NMEROS DE ELEMENTOS
% DIFERENTES, POR LO TANTO LA COMPARACIN NO
% SE PUEDE REALIZAR
r1=a>b
r2=a<b
r3=a<=b
r4=a>=b
r5=a==b
r6=a~=b
a =
1 5 6 7 2 8 3 4 8
b =
2
5
2
4
7
2
4
3
8
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
161
??? Error using ==> >
Matrix dimensions must agree.
Error in ==> c:\matlab\program\logica4.m
On line 17 ==> r1=a>b
OPERADORES LGICOS
OPERADOR
DESCRIPCION
&
AND
|
OR
~
NOT
El smbolo ( | ) se obtiene: ALT + 124
Veamos algunos ejemplos:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
162
PROGRAMA: LGICA5
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% COMPARAR DOS VECTORES CON RELACIONES LGICAS
% ELEMENTO POR ELEMENTO
% EN LA COMPARACIN LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
a=[1,5,6,7,2,8,3,4,8]
b=[2,5,2,4,7,2,9,4,1]
% SE BUSCAN TODOS LOS ELEMENTOS DE LA MATRIZ ( a )
% QUE SEAN MAYORES A ( 4 ) Y SE BUSCAN TODOS LOS
% ELEMENTOS DE LA MATRIZ ( b ) QUE SEAN MENORES A
% ( 4 )
r1=a>4
r2=b<4
% LUEGO SE NIEGAN AMBAS INSTRUCCIONES CON ( ~ ) NOT
% INVIRTIENDOSE EL RESULTADO
r3=~(a>4)
r4=~(b<4)
a =
1 5 6 7 2 8 3 4 8
b =
2 5 2 4 7 2 9 4 1
r1 =
0 1 1 1 0 1 0 0 1
r2 =
1 0 1 0 0 1 0 0 1
r3 =
1 0 0 0 1 0 1 1 0
r4 =
0 1 0 1 1 0 1 1 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
163
PROGRAMA: LGICA6
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% UTILIZAR LOS OPERADORES LGICOS
% ( AND ),( OR ) Y ( NOT) PARA DISCRIMINAR
% ELEMENTOS DE UN VECTOR O DE UNA MATRIZ.
% EN LA COMPARACIN, LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
b=[1,5,6;7,2,8;3,4,8]
r1=(b>7)&(b<9)
r2=(b>7)&(b<1)
r3=(b>7)|(b<3)
r4=~(b<3)
r5=~(b>7)
b =
1 5 6
7 2 8
3 4 8
r1 =
0 0 0
0 0 1
0 0 1
r2 =
0 0 0
0 0 0
0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
164
r3 =
1 0 0
0 1 1
0 0 1
r4 =
0 1 1
1 0 1
1 1 1
r5 =
1 1 1
1 1 0
1 1 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
165
PROGRAMA: LGICA7
% EL SIGUIENTE PROGRAMA ILUSTRA COMO SE PUDE
% UTILIZAR LOS OPERADORES LGICOS
% ( AND ),( OR ) Y ( NOT) PARA DISCRIMINAR
% ELEMENTOS DE UN VECTOR O UNA MATRIZ.
% EN LA COMPARACIN, LA SALIDA PRODUCE:
% VALOR UNO ( 1 ) SI ES VERDADERO
% VALOR CERO ( 0 ) SI ES FALSO
b=linspace(1,12,12)
r1=(b>7)&(b<10)
r2=(b>7)&(b<1)
r3=(b>7)|(b<3)
r4=~(b<3)
r5=~(b>7)
b =
1 2 3 4 5 6 7 8 9 10 11 12
r1 =
0 0 0 0 0 0 0 1 1 0 0 0
r2 =
0 0 0 0 0 0 0 0 0 0 0 0
r3 =
1 1 0 0 0 0 0 1 1 1 1 1
r4 =
0 0 1 1 1 1 1 1 1 1 1 1
r5 =
1 1 1 1 1 1 1 0 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
166
OPERADORES ADICIONALES
FUNCIN
DESCRIPCIN
xor(x,y)
Devuelve uno (1) donde (x) o (y) son distintos de ceros.
Devuelve ceros (0) donde ambos (x) y (y) son ceros o ambos
son distintos de ceros
any(x)
Devuelve uno (1) si algn elemento en un vector (x) es
nulo. Devuelve uno (1) para cada columna en una matriz
(x) que tiene cualquier elemento no nulo
all(x)
Devuelve uno (1) si todos los elementos en un vector (x)
son no nulos. Devuelve uno (1) para cada columna en una
matriz (x) que tiene todos los elementos no nulos
isnan(x) Devuelve unos (1) en magnitudes no numricas (NaN) en (x)
isinf(x) Devuelve unos (1) en magnitudes infinitas (inf) en (x)
finite(x) Devuelve unos (1) en valores finitos en (x)
Veamos algunos ejemplos de Operadores Adicionales:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
167
PROGRAMA: LGICA8
% Este programa ilustra como utilizar la funcin relacional: xor(x)
%
% xor(x)
% Devuelve uno (1) donde o (x) o (y) son distintos
% de ceros. Devuelve ceros (0) donde ambos
% (x) y (y) son ceros o ambos son distintos de ceros
x1=[1:1:10]
x2=[1:2:20]
x3=[0:1:9]
x4=[0:2:19]
r1=xor(x1,x2)
r2=xor(x1,x3)
r3=xor(x3,x4)
x1 =
1 2 3 4 5 6 7 8 9 10
x2 =
1 3 5 7 9 11 13 15 17 19
x3 =
0 1 2 3 4 5 6 7 8 9
x4 =
0 2 4 6 8 10 12 14 16 18
r1 =
0 0 0 0 0 0 0 0 0 0
r2 =
1 0 0 0 0 0 0 0 0 0
r3 =
0 0 0 0 0 0 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
168
PROGRAMA: LGICA9
% Este programa ilustra como utilizar la funcin relacional: any(x)
%
% any(x)
% Devuelve uno (1) si algun elemento en un vector
% (x) es no nulo. Devuelve uno (1) para cada columna
% en una matriz (x) que tiene cualquier elemento no nulo
x1=[1:1:10]
r1=any(x1)
x2=[0,0,0]
r2=any(x2)
x3=[0,4,5;0,8,6;0,7,7]
r3=any(x3)
x1 =
1 2 3 4 5 6 7 8 9 10
r1 =
1
x2 =
0 0 0
r2 =
0
x3 =
0 4 5
0 8 6
0 7 7
r3 =
0 1 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
169
PROGRAMA: LGICA10
% Este programa ilustra como utilizar la funcin relacional: all(x)
%
% all(x)
% Devuelve uno (1) si todos los elementos en un
% vector (x) son no nulos. Devuelve uno (1)
% para cada columna en una matriz (x) que tiene
% todos los elementos no nulos
x1=[1:1:10]
r1=all(x1)
x2=[0,0,0]
r2=all(x2)
x3=[0,4,5;0,8,6;0,7,7]
r3=all(x3)
x1 =
1 2 3 4 5 6 7 8 9 10
r1 =
1
x2 =
0 0 0
r2 =
0
x3 =
0 4 5
0 8 6
0 7 7
r3 =
0 1 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
170
PROGRAMA: LGICA11
% Este programa ilustra como utilizar la funcin relacional: isnan(x)
%
% isnan(x)
% Devuelve unos (1) en magnitudes no numericas (NaN)
% en (x)
z=magic(10) % una matriz muy grande
r1=isnan(z)
% colocaremos una magnitud no numerica en la matriz (z)
z(9,9)=NaN
r2=isnan(z)
z =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
r1 =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
171
z =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 NaN 53
11 18 100 77 84 36 43 50 27 59
r2 =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
172
PROGRAMA: LGICA12
% Este programa ilustra como utilizar la funcin relacional: isinf(x)
%
% isinf(x)
% Devuelve unos (1) en valores infinitos en (x)
z=magic(10) % una matriz muy grande
r1=isinf(z)
% colocaremos una magnitud infinita en la matriz (z)
z(9,9)=inf
r2=isinf(z)
z =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
r1 =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
173
z =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 Inf 53
11 18 100 77 84 36 43 50 27 59
r2 =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
174
PROGRAMA: LGICA13
% Este programa ilustra como utilizar la funcin relacional: finite(x)
%
% finite(x)
% Devuelve unos (1) en valores finitos en (x)
z=magic(10) % una matriz muy grande
r1=finite(z)
% colocaremos una magnitud infinita en la matriz (z)
z(9,9)=inf
r2=finite(z)
z =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
r1 =
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
175
z =
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 Inf 53
11 18 100 77 84 36 43 50 27 59
r2 =
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
176
CONTROLADORES DE FLUJO
MATLAB permite controlar el flujo o el orden de ejecucin de las instrucciones a
travs de operadores y estructuras de toma de decisiones, las cuales se clasifican como:
Bucles for
Bucles while
Bucles if else end
BUCLES for
Los Bucles for permiten que una serie de instrucciones se repitan un numero fijo y
predeterminado de veces. La estructura bsica para un Bucles for es la siguiente:
for variable = expresin
ordenes
end
Las instrucciones entre las sentencias for y end se ejecutan una vez para cada
elemento de cada columna en el vector o matriz, como lo muestran los siguientes
ejemplos:
PROGRAMA: BUCLE1
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for - end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
177
% que regir la ejecucin de las instrucciones
for n=1:10 % La variable ( n ) no es un vector fila
n % se muestra ( n ) como una orden del for
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( n ) es el siguiente =')
n % se muestra ( n ) al finalizar el bucle
n =
1
n =
2
n =
3
n =
4
n =
5
n =
6
n =
7
n =
8
n =
9
n =
10
Hasta este punto llega el bucle for - end
**********************************************
El valor almacenado de ( n ) es el siguiente =
n =
10
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
178
PROGRAMA: BUCLE2
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
for n=1:10 % La variable ( n ) no es un vector fila
n % se muestra ( n ) como una orden del for
x=cos(n*pi/10)
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( n ) es el siguiente =')
n % se muestra ( n ) al finalizar el bucle
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( x ) es el siguiente =')
x % se muestra ( x ) al finalizar el bucle
n =2
1
x =
0.9511
n =
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
179
2
x =
0.8090
n =
3
x =
0.5878
n =
4
x =
0.3090
n =
5
x =
6.1232e-017
n =
6
x =
-0.3090
n =
7
x =
-0.5878
n =
8
x =
-0.8090
n =
9
x =
-0.9511
n =
10
x =
-1
Hasta este punto llega el bucle for - end
**********************************************
El valor almacenado de ( n ) es el siguiente =
n =
10
**********************************************
El valor almacenado de ( x ) es el siguiente =
x =
-1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
180
PROGRAMA: BUCLE3
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
data=[1:1:10] % La variable ( data ) es un vector fila
for n=data
x=cos(n*pi/10);
m=[n,x] % Se muestra a ( n ) y a ( x ) como una matriz
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( n ) es el siguiente =')
n % se muestra ( n ) al finalizar el bucle
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( x ) es el siguiente =')
x % se muestra ( x ) al finalizar el bucle
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
181
data =
1 2 3 4 5 6 7 8 9 10
m =
1.0000 0.9511
m =
2.0000 0.8090
m =
3.0000 0.5878
m =
4.0000 0.3090
m =
5.0000 0.0000
m =
6.0000 -0.3090
m =
7.0000 -0.5878
m =
8.0000 -0.8090
m =
9.0000 -0.9511
m =
10 -1
Hasta este punto llega el bucle for - end
**********************************************
El valor almacenado de ( n ) es el siguiente =
n =
10
**********************************************
El valor almacenado de ( x ) es el siguiente =
x =
-1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
182
PROGRAMA: BUCLE4
% Bucle for - end
% -----------------
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
data=[1:1:10]' % La variable ( data ) es un vector columna
for n=data
x=cos(n*pi/10);
m=[n,x] % Se muestra a ( n ) y a ( x ) como una matriz
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( n ) es el siguiente =')
n % se muestra ( n ) al finalizar el bucle
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( x ) es el siguiente =')
x % se muestra ( x ) al finalizar el bucle
data =
1
2
3
4
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
183
5
6
7
8
9
10
m =
1.0000 0.9511
2.0000 0.8090
3.0000 0.5878
4.0000 0.3090
5.0000 0.0000
6.0000 -0.3090
7.0000 -0.5878
8.0000 -0.8090
9.0000 -0.9511
10.0000 -1.0000
Hasta este punto llega el bucle for - end
**********************************************
El valor almacenado de ( n ) es el siguiente =
n =
1
2
3
4
5
6
7
8
9
10
**********************************************
El valor almacenado de ( x ) es el siguiente =
x =
0.9511
0.8090
0.5878
0.3090
0.0000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
184
-0.3090
-0.5878
-0.8090
-0.9511
-1.0000
PROGRAMA: BUCLE5
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
data=[1,2,3;4,5,6;7,8,9]' % La variable ( data ) es una matriz
for n=data
x=cos(n*pi/10);
m=[n,x] % Se muestra a ( n ) y a ( x ) como una matriz
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( n ) es el siguiente =')
n % se muestra ( n ) al finalizar el bucle
disp('')
disp('**********************************************')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
185
disp('')
disp(' El valor almacenado de ( x ) es el siguiente =')
x % se muestra ( x ) al finalizar el bucle
data =
1 4 7
2 5 8
3 6 9
m =
1.0000 0.9511
2.0000 0.8090
3.0000 0.5878
m =
4.0000 0.3090
5.0000 0.0000
6.0000 -0.3090
m =
7.0000 -0.5878
8.0000 -0.8090
9.0000 -0.9511
Hasta este punto llega el bucle for - end
**********************************************
El valor almacenado de ( n ) es el siguiente =
n =
7
8
9
**********************************************
El valor almacenado de ( x ) es el siguiente =
x =
-0.5878
-0.8090
-0.9511
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
186
PROGRAMA: BUCLE6
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
data=magic(3) % La variable ( data ) es una matriz
% sin ningn tipo de orden numrico
for n=data
x=cos(n*pi/10);
m=[n,x] % Se muestra a ( n ) y a ( x ) como una matriz
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( n ) es el siguiente =')
n % se muestra ( n ) al finalizar el bucle
disp('')
disp('**********************************************')
disp('')
disp(' El valor almacenado de ( x ) es el siguiente =')
x % se muestra ( x ) al finalizar el bucle
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
187
data =
8 1 6
3 5 7
4 9 2
m =
8.0000 -0.8090
3.0000 0.5878
4.0000 0.3090
m =
1.0000 0.9511
5.0000 0.0000
9.0000 -0.9511
m =
6.0000 -0.3090
7.0000 -0.5878
2.0000 0.8090
Hasta este punto llega el bucle for - end
**********************************************
El valor almacenado de ( n ) es el siguiente =
n =
6
7
2
**********************************************
El valor almacenado de ( x ) es el siguiente =
x =
-0.3090
-0.5878
0.8090
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
188
PROGRAMA: BUCLE7
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de utilizar el
% Bucle de control de flujo for - end
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
data=[1,9,7,3,5,1,8,2,9]' % La variable ( data )
% es un vector columna
% sin ningn tipo de orden numrico
for n=data
x=cos(n*pi/10);
m=[n,x] % Se muestra a ( n ) y a ( x ) como una matriz
end
disp(' Hasta este punto llega el bucle for - end ')
disp('')
disp('**********************************************')
disp('')
disp(' Los valores almacenados de ( n ) y ( x ) son los siguientes =')
mf=[n,x] % se muestra ( n ) al finalizar el bucle
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
189
data =
1
9
7
3
5
1
8
2
9
m =
1.0000 0.9511
9.0000 -0.9511
7.0000 -0.5878
3.0000 0.5878
5.0000 0.0000
1.0000 0.9511
8.0000 -0.8090
2.0000 0.8090
9.0000 -0.9511
Hasta este punto llega el bucle for - end
Los valores almacenados de ( n ) y ( x ) son los siguientes =
mf =
1.0000 0.9511
9.0000 -0.9511
7.0000 -0.5878
3.0000 0.5878
5.0000 0.0000
1.0000 0.9511
8.0000 -0.8090
2.0000 0.8090
9.0000 -0.9511
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
190
PROGRAMA: BUCLE8
% Bucle for - end
% -----------------
%
% Este programa muestra la forma de evitar el
% Bucle de control de flujo for - end
% El presente programa ejecuta las mismas instrucciones
% del programa anterior, pero sin necesidad del
% bucle for - end
% En lo posible, se debe evitar el uso del bucle for - end
n=[1,9,7,3,5,1,8,2,9]' % La variable ( n ) es un vector columna
x=cos(n*pi/10);
disp('')
disp(' Los valores almacenados de ( n ) y ( x ) son los siguientes =')
mf=[n,x] % se muestran ( n ) y ( x ) al finalizar el calculo
n =
1
9
7
3
5
1
8
2
9
Los valores almacenados de ( n ) y ( x ) son los siguientes =
mf =
1.0000 0.9511
9.0000 -0.9511
7.0000 -0.5878
3.0000 0.5878
5.0000 0.0000
1.0000 0.9511
8.0000 -0.8090
2.0000 0.8090
9.0000 -0.9511
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
191
PROGRAMA: BUCLE9
% Bucles for - end anidados
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo for - end anidados
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
for m=1:3
disp('En este punto comienza el bucle interno')
for n=1:3
x=n^2+m^2;
mb1=[n,m,x] % Se muestra a ( n ) y a ( x ) como una matriz
end
disp(' En este punto finaliza el bucle interno ')
disp('')
disp('**********************************************')
disp('')
disp(' Los valores almacenados de ( n ) y ( x )')
disp(' al salir del bucle son los siguientes =')
mb1f=[n,m,x] % se muestra ( n ) al finalizar el bucle
end
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
192
En este punto comienza el bucle interno
mb1 =
1 1 2
mb1 =
2 1 5
mb1 =
3 1 10
En este punto finaliza el bucle interno
**********************************************
Los valores almacenados de ( n ) y ( x )
al salir del bucle son los siguientes =
mb1f =
3 1 10
En este punto comienza el bucle interno
mb1 =
1 2 5
mb1 =
2 2 8
mb1 =
3 2 13
En este punto finaliza el bucle interno
**********************************************
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
193
Los valores almacenados de ( n ) y ( x )
al salir del bucle son los siguientes =
mb1f =
3 2 13
En este punto comienza el bucle interno
mb1 =
1 3 10
mb1 =
2 3 13
mb1 =
3 3 18
En este punto finaliza el bucle interno
**********************************************
Los valores almacenados de ( n ) y ( x )
al salir del bucle son los siguientes =
mb1f =
3 3 18
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
194
PROGRAMA: BUCLE10
% Bucles for - end anidados
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo for - end anidados
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
clear
for m=1:3
disp('**********************************************')
disp('En este punto comienza el bucle interno')
disp('**********************************************')
for n=1:3
x(m,n)=n^2+m^2;
end
disp(x)
disp('**********************************************')
disp(' En este punto finaliza el bucle interno ')
disp('**********************************************')
end
x
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
195
**********************************************
En este punto comienza el bucle interno
**********************************************
2 5 10
**********************************************
En este punto finaliza el bucle interno
**********************************************
**********************************************
En este punto comienza el bucle interno
**********************************************
2 5 10
5 8 13
**********************************************
En este punto finaliza el bucle interno
**********************************************
**********************************************
En este punto comienza el bucle interno
**********************************************
2 5 10
5 8 13
10 13 18
**********************************************
En este punto finaliza el bucle interno
**********************************************
x =
2 5 10
5 8 13
10 13 18
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
196
PROGRAMA: BUCLE11
% Bucles for - end anidados
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo for - end anidados
% La estructura bsica para un Bucle for
% es la siguiente:
%
% for variable = expresin
% ordenes
% end
%
% Las instrucciones, entre las sentencias for y end,
% se ejecutan una vez para cada elemento de cada
% columna en el vector o matriz
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
clear
for m=1:3
for n=1:3
x(m,n)=n^2+m^2;
end
end
x
x =
2 5 10
5 8 13
10 13 18
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
197
BUCLES WHILE
En MATLAB se utiliza un bucle while para ejecutar un grupo de instrucciones, un
numero indefinido de veces. La forma como un bucle while debe ser utilizado es la
siguiente:
while expresin
instrucciones
end
Las instrucciones, entre las sentencias while y end, se ejecutan mientras todos los
elementos contenidos en ( expresin ) sean verdaderos, como se muestra en los
siguientes ejemplos:
PROGRAMA: BUCLE12
% Bucles while - end
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo while - end
% La estructura bsica es la siguiente:
%
% while expresin
% instrucciones
% end
%
%
% Las instrucciones, entre las sentencias while y end,
% se ejecutan mientras todos los elementos de expresin
% sean verdaderos
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
clear
m=0;
while m<3
disp('***************************************************')
disp(' inicio del bucle de while')
disp('***************************************************')
m=m+1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
198
disp('***************************************************')
disp(' inicio del bucle de for')
disp('***************************************************')
for n=1:5
n
x(n,m)=n^2+m^2
end
disp('***************************************************')
disp(' final del bucle de for')
disp('***************************************************')
end
disp('Esta es la matriz'),x
***************************************************
inicio del bucle de while
***************************************************
m =
1
***************************************************
inicio del bucle de for
***************************************************
n =
1
x =
2
n =
2
x =
2
5
n =
3
x =
2
5
10
n =
4
x =
2
5
10
17
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
199
n =
5
x =
2
5
10
17
26
***************************************************
final del bucle de for
***************************************************
***************************************************
inicio del bucle de while
***************************************************
m =
2
***************************************************
inicio del bucle de for
***************************************************
n =
1
x =
2 5
5 0
10 0
17 0
26 0
n =
2
x =
2 5
5 8
10 0
17 0
26 0
n =
3
x =
2 5
5 8
10 13
17 0
26 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
200
n =
4
x =
2 5
5 8
10 13
17 20
26 0
n =
5
x =
2 5
5 8
10 13
17 20
26 29
***************************************************
final del bucle de for
***************************************************
***************************************************
inicio del bucle de while
***************************************************
m =
3
***************************************************
inicio del bucle de for
***************************************************
n =
1
x =
2 5 10
5 8 0
10 13 0
17 20 0
26 29 0
n =
2
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
201
x =
2 5 10
5 8 13
10 13 0
17 20 0
26 29 0
n =
3
x =
2 5 10
5 8 13
10 13 18
17 20 0
26 29 0
n =
4
x =
2 5 10
5 8 13
10 13 18
17 20 25
26 29 0
n =
5
x =
2 5 10
5 8 13
10 13 18
17 20 25
26 29 34
***************************************************
final del bucle de for
***************************************************
Esta es la matriz
x =
2 5 10
5 8 13
10 13 18
17 20 25
26 29 34
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
202
PROGRAMA: BUCLE13
% Bucles while - end
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo while - end
% La estructura bsica es la siguiente :
%
% while expresin
% instrucciones
% end
%
%
% Las instrucciones, entre las sentencias while y end,
% se ejecutan mientras todos los elementos de expresin
% sean verdaderos
% En este ejemplo se genera la expresin numrica
% que regir la ejecucin de las instrucciones
clear
error=0.00001;
dif=error; % dif = diferencia
x=0;
y=0;
while dif>=error
x=x+.001;
y=y+.001;
p1=x^2+y^2;
p2=2*y-x;
dif=abs(p1-p2);
end
x,y
x =
0.5000
y =
0.5000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
203
BUCLES I F - ELSE - END
Los bucles if else end permiten realizar condicionalmente secuencias de
instrucciones, basndose en un test relacional y lgico. La forma mas simple de este
tipo de bucle es el siguiente:
if expresin
instrucciones
end
Las instrucciones entre if y end se ejecutan si todos los elementos en expresin son
verdaderos ( distintos de cero ). Otra forma de utilizar al bucle if else end es
cuando se tienen instrucciones como alternativa, como se muestra:
if expresin
instrucciones ( ejecutadas s expresin es verdadero )
else
instrucciones ( ejecutadas s expresin es falso )
end
Si se tienen varias instrucciones que deben ser ejecutadas con diferentes expresiones,
el bucle toma la forma siguiente:
if expresion1
instrucciones ejecutadas si expresion1 es verdadero
elseif expresion2
instrucciones ejecutadas si expresion2 es verdadero
elseif expresion3
instrucciones ejecutadas si expresion3 es verdadero
elseif expresion4
instrucciones ejecutadas si expresion4 es verdadero
...
.
.
.
else
instrucciones ejecutadas si ninguna de las expresiones anteriores
es verdadera
end
A continuacin se muestran varios ejemplos:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
204
PROGRAMA: BUCLE14
% Bucles if - else - end
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo if - else - end
% La estructura bsica es la siguiente:
%
%
% if expresion1
% instrucciones ejecutadas si expresion1 es correcta
% elseif expresion2
% instrucciones ejecutadas si expresion2 es correcta
% elseif expresion3
% instrucciones ejecutadas si expresion3 es correcta
% ...
% .
% .
% else
% instrucciones ejecutadas si todas las expresiones
% anteriores son falsas ( ninguna verdadera )
%
% end
%
clear
n=0; % ndice para construir una matriz
data=[4,-5,8,-1,-7,-3,2,12,6,23,41,-22];
disp(data')
for x=data
n=n+1;
e(n,1)=x; % elemento de la matriz (e) cuyas filas son (n), primera columna
if x>0
y=x.^3+4.*sqrt(x);
else
y=0;
end
e(n,2)=y; % elemento de la matriz (e) cuyas filas son (n), segunda columna
m=[x,y]
end
disp('la matriz ( e ) queda de la siguiente forma'),e
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
205
data
----
4.00
-5.00
8.00
-1.00
-7.00
-3.00
2.00
12.00
6.00
23.00
41.00
-22.00
m =
4.00 72.00
m =
-5.00 0
m =
8.00 523.31
m =
-1.00 0
m =
-7.00 0
m =
-3.00 0
m =
2.00 13.66
m =
12.00 1741.86
m =
6.00 225.80
m =
23.00 12186.18
m =
41.00 68946.61
m =
-22.00 0
la matriz ( e ) queda de la siguiente forma
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
206
e =
4.00 72.00
-5.00 0
8.00 523.31
-1.00 0
-7.00 0
-3.00 0
2.00 13.66
12.00 1741.86
6.00 225.80
23.00 12186.18
41.00 68946.61
-22.00 0
PROGRAMA: BUCLE15
% Bucles if - else - end
% ---------------------------
%
% Este programa muestra la forma de utilizar
% Bucles de control de flujo if - else - end
% La estructura bsica es la siguiente:
%
%
% if expresion1
% instrucciones ejecutadas si expresion1 es correcta
% elseif expresion2
% instrucciones ejecutadas si expresion2 es correcta
% elseif expresion3
% instrucciones ejecutadas si expresion3 es correcta
% ...
% .
% .
% else
% instrucciones ejecutadas si todas las expresiones
% anteriores son falsas ( ninguna verdadera )
%
% end
%
%
clear
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
207
n=0; % ndice para construir una matriz
data=[4,-5,8,-1,-7,-3,2,12,6,23,41,-22,7,3,15,18,55,60];
for x=data
n=n+1;
e(n,1)=x; % elemento de la matriz (e) cuyas filas son (n), primera columna
if x>0
if x>10
y=1;
else
y=-1;
end
else
y=0;
end
e(n,2)=y; % elemento de la matriz (e) cuyas filas son (n), segunda columna
end
disp('la matriz ( e ) queda de la siguiente forma'),e
la matriz ( e ) queda de la siguiente forma
e =
4.00 -1.00
-5.00 0
8.00 -1.00
-1.00 0
-7.00 0
-3.00 0
2.00 -1.00
12.00 1.00
6.00 -1.00
23.00 1.00
41.00 1.00
-22.00 0
7.00 -1.00
3.00 -1.00
15.00 1.00
18.00 1.00
55.00 1.00
60.00 1.00
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
208
ALGEBRA LINEAL
El lgebra Lineal es la base fundamental del Anlisis Numrico. El manejo de matrices
y vectores permite aplicar los mtodos de clculo numrico en la solucin de sistemas de
ecuacines lineales. En los siguientes programas se ilustra los principios del lgebra
lineal en la solucin de ecuaciones lineales. Tomando como base lo estudiado sobre
matrices y vectores, sus operaciones y manipulacin, se tratar lo siguiente:
1. Definir Matriz Inversa
2. Expresar las Ecuaciones Lineales y sus operaciones bsicas en notacin de matrices
3. Utilizar las instrucciones MATLAB para la solucin de Ecuaciones Lineales
4. Estudiar los casos de Ecuaciones Lineales difciles o imposibles de resolver
PROGRAMA: Lineal1.m
% Este programa ilustra como se determina la matriz inversa
%
% b = inv(a)
%
% la matriz (b) es la matriz inversa de (a)
% donde la matriz (a) debe ser cuadrada y no singular
a=[4,5,9;2,7,1;3,5,8]
disp('la matriz inversa de (a) es:')
b=inv(a)
disp('comprobando la relacin inversa entre las dos matrices')
d=a*b
c=b*a
a =
4 5 9
2 7 1
3 5 8
la matriz inversa de (a) es:
b =
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
209
1.2750 0.1250 -1.4500
-0.3250 0.1250 0.3500
-0.2750 -0.1250 0.4500
comprobando la relacin inversa entre las dos matrices
d =
1.0000 0 0.0000
0.0000 1.0000 0.0000
0.0000 0 1.0000
c =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0 0.0000 1.0000
PROGRAMA: Lineal2.m
% Este programa ilustra como se determina la matriz inversa
%
% b = inv(a)
%
% la matriz (b) es la matriz inversa de (a)
% donde la matriz (a) debe ser cuadrada y no singular
a=[4,5,9;2,7,1;] % matriz no cuadrada
disp('la matriz inversa de (a) es:')
b=inv(a)
disp('comprobando la relacin inversa entre las dos matrices')
d=a*b
c=b*a
a =
4 5 9
2 7 1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
210
la matriz inversa de (a) es:
??? Error using ==> inv
Matrix must be square.
Error in ==> c:\matlab\program\lineal2.m
On line 10 ==> b=inv(a)
PROGRAMA: Lineal3.m
% Este programa ilustra como se determina la matriz inversa
%
% b = inv(a)
%
% la matriz (b) es la matriz inversa de (a)
% donde la matriz (a) debe ser cuadrada y no singular
a=[4,5,9;2,7,1;8,10,18] % matriz singular
disp('la matriz inversa de (a) es:')
b=inv(a)
disp('comprobando la relacin inversa entre las dos matrices')
d=a*b
c=b*a
a =
4 5 9
2 7 1
8 10 18
la matriz inversa de (a) es:
Warning: Matrix is singular to working precision.
b =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
211
comprobando la relacin inversa entre las dos matrices
d =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf
c =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf
PROGRAMA: Lineal4.m
% Este programa ilustra como se pueden resolver sistemas
% de ecuaciones lineales, aplicando lgebra lineal
%
% Supogamos que, tenemos un sistema de (m) ecuaciones lineales
% con (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
%
% Las ecuaciones lineales se pueden expresar de la forma:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
212
% a*x=y
%
% donde:
% (a) es la matriz que contiene a los coeficientes de las ecuaciones
%
% a=
% (a1,1) (a1,2) (a1,3) ..... (a1,n)
% (a2,1) (a2,2) (a2,3) ..... (a2,n)
% (a3,1) (a3,2) (a3,3) ..... (a3,n)
%
% ... ... ... ..... ...
%
% (am,1) (am,2) (am,3) ..... (am,n)
%
% (x) es el vector columna que contiene a las incgnitas
%
% x=
% X1
% X2
% X3
% .
% .
% .
% xn
%
% (y) es el vector columna que contiene a los trminos independientes
%
% y =
% y1
% y2
% y3
% .
% .
% .
% ym
%
% Estas ecuaciones tambin pueden ser expresadas de la siguiente forma:
%
% x'*a'=y'
%
% Primer caso:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
213
%
% Igual nmero de ecuaciones y de incgnitas
%
% m = n
%
% La matriz (a) es cuadrada y la solucin de las ecuaciones es de la siguiente:
%
% x=a\y
%
% Otra forma equivalente:
%
% x=inv(a)*y
%
% Otra forma equivalente:
%
% z=x'=y'/a'
%
% En este ltimo caso (y') y (x') son vectores fila y la misma solucin
% viene en un vector fila (z)
%
% Otras formas equivalentes que producen el mismo resultado:
%
% x=a^(-1)*y
%
% z=x'=y'*inv(a)
%
% Ejemplo:
%
% Se tienen las siguientes ecuaciones:
%
% 3x1 + 2x2 + 10x3 = 25
% 7x1 + 0x2 + 35x3 = 150
% 20x1 + 1x2 + 0x3 = 75
%
% Determinar x1,x2, y x3
%
% Solucin:
a=[3,2,10;7,0,35;20,1,0]
y=[25,150,75]'
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
disp('El nmero de condicin de la matriz (a) es el siguiente:')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
214
nmero_de_condicin=cond(a)
disp('************************************************************')
disp('Determinacin de las incgnitas:')
disp('************************************************************')
disp('')
disp('solucin tipo A')
disp('************************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo B')
disp('************************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z')
disp('************************************************************')
disp('')
disp('solucin tipo C')
disp('************************************************************')
x=inv(a)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo D')
disp('************************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo E')
disp('************************************************************')
z=y'*inv(a');
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
215
a =
3 2 10
7 0 35
20 1 0
y =
25
150
75
El determinante de la matriz (a) es el siguiente:
determinante =
1365
El nmero de condicin de la matriz (a) es el siguiente:
nmero_de_condicin =
20.0472
************************************************************
Determinacin de las incgnitas:
************************************************************
solucin tipo A
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
4.3040
-11.0806
3.4249
************************************************************
solucin tipo B
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
4.3040
-11.0806
3.4249
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
216
************************************************************
solucin tipo C
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
4.3040
-11.0806
3.4249
************************************************************
solucin tipo D
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
4.3040
-11.0806
3.4249
************************************************************
solucin tipo E
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
4.3040
-11.0806
3.4249
PROGRAMA: Lineal5.m
% Este programa ilustra como se pueden detectar sistemas
% de ecuaciones lineales singulares
%
% Supogamos que, tenemos un sistema de (m) ecuaciones lineales
% con (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
217
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
%
% Las ecuaciones lineales se pueden expresar de la forma:
%
% a*x=y
%
% donde:
% (a) es la matriz que contiene a los coeficientes de las ecuaciones
%
% a=
% (a1,1) (a1,2) (a1,3) ..... (a1,n)
% (a2,1) (a2,2) (a2,3) ..... (a2,n)
% (a3,1) (a3,2) (a3,3) ..... (a3,n)
%
% ... ... ... ..... ...
%
% (am,1) (am,2) (am,3) ..... (am,n)
%
%
% Si una de las ecuaciones es combinacin lineal de cualquiera
% de las ecuaciones restantes, entonces se dice que se
% tiene una matriz singular; con el determinante igual a cero
%
% (x) es el vector columna que contiene a las incgnitas
%
% x=
% X1
% X2
% X3
% .
% .
% .
% xn
%
% (y) es el vector columna que contiene a los trminos independientes
%
% y =
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
218
% y1
% y2
% y3
% .
% .
% .
% ym
%
% Estas ecuaciones tambin pueden ser expresadas de la siguiente forma:
%
% x'*a'=y'
%
% Primer caso:
%
% Igual nmero de ecuaciones y de incgnitas
%
% m = n
%
% La matriz (a) es cuadrada y la solucin de las ecuaciones es de la siguiente:
%
% x=a\y
%
% Otra forma equivalente:
%
% x=inv(a)*y
%
% Otra forma equivalente:
%
% z=x'=y'/a'
%
% En este ltimo caso (y') y (x') son vectores fila y la misma solucin
% viene en un vector fila (z)
%
% Otras formas equivalentes que producen el mismo resultado:
%
% x=a^(-1)*y
%
% z=x'=y'*inv(a)
%
% Ejemplo:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
219
% Se tienen las siguientes ecuaciones:
%
% 3x1 + 2x2 + 9x3 = 25
% 7x1 + 0x2 + 7x3 = 150
% 10x1 + 2x2 + 16x3 = 175
%
% Determinar x1,x2, y x3
%
% Solucin:
a=[3,2,9;7,0,7;10,2,16]
y=[25,150,175]'
disp('********************************')
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
if determinante == 0
disp('La matriz es singular')
end
disp('********************************')
disp('El nmero de condicin de la matriz (a) es el siguiente:')
nmero_de_condicin=cond(a)
disp('************************************************************')
disp('Determinacin de las incgnitas:')
disp('************************************************************')
disp('')
disp('solucin tipo A')
disp('************************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo B')
disp('************************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
disp('************************************************************')
disp('')
disp('solucin tipo C')
disp('************************************************************')
x=inv(a)*y;
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
220
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo D')
disp('************************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo E')
disp('************************************************************')
z=y'*inv(a');
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
a =
3 2 9
7 0 7
10 2 16
y =
25
150
175
********************************
El determinante de la matriz (a) es el siguiente:
determinante =
0
La matriz es singular
********************************
El nmero de condicin de la matriz (a) es el siguiente:
Condition is infinite
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
221
nmero_de_condicin =
Inf
************************************************************
Determinacin de las incgnitas:
************************************************************
solucin tipo A
************************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 5.274644e-018
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
-6.8551
-104.4938
28.2837
************************************************************
solucin tipo B
************************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 5.274644e-018
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
-6.8551 -104.4938 28.2837
************************************************************
solucin tipo C
************************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 5.274644e-018
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
0
-137.5000
37.5000
************************************************************
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
222
solucin tipo D
************************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 5.274644e-018
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
0
-137.5000
37.5000
************************************************************
solucin tipo E
************************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 8.008312e-019
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
150 0 -150
PROGRAMA: Lineal6.m
% Este programa ilustra como se pueden detectar sistemas
% de ecuaciones lineales mal acondicionadoss
%
% Supogamos que, tenemos un sistema de (m) ecuaciones lineales
% con (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
223
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
%
% Las ecuaciones lineales se pueden expresar de la forma:
%
% a*x=y
%
% donde:
% (a) es la matriz que contiene a los coeficientes de las ecuaciones
%
% a=
% (a1,1) (a1,2) (a1,3) ..... (a1,n)
% (a2,1) (a2,2) (a2,3) ..... (a2,n)
% (a3,1) (a3,2) (a3,3) ..... (a3,n)
%
% ... ... ... ..... ...
%
% (am,1) (am,2) (am,3) ..... (am,n)
%
% (x) es el vector columna que contiene a las incgnitas
%
% x=
% X1
% X2
% X3
% .
% .
% .
% xn
%
% (y) es el vector columna que contiene a los trminos independientes
%
% y =
% y1
% y2
% y3
% .
% .
% .
% ym
%
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
224
% Un sistema mal acondicionado (badly scaled) se define como
% un sistema cuyas soluciones son muy inexactas debido a graves
% errores de redondeo. Pequeos errores de redondeo durante
% el Clculo o pequeos cambios en los coeficientes pueden
% causar errores significativos al obtener las soluciones
%
% Este efecto es importante para tamaos grandes de matrices.
% Cuando la matriz es pequa, el efecto del acondicionamiento
% no es importante, no obstante se recomienda realizar las
% pruebas descritas a continuacin.
%
% La forma de determinar si un sistema est mal acondicionado
% es a travs de las siguientes pruebas:
%
% prueba_1=det(a)*det(a^(-1))
% si es mal acondicionado, prueba_1 se aparta de 1
%
% prueba_2=((a^(-1))^(-1)
% si es mal acondicionado, prueba_2 es diferente de (a)
%
% prueba_3=a*(a)^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz identidad
%
% prueba_4=(a^(-1))*((a^(-1))^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz
% identidad mas significativamente que prueba_3
%
% Ejemplo:
%
% Se tienen las siguientes ecuaciones:
%
% 0.0321x1 + 0.0128x2 + 0.1774x3 = 0.25
% 0.0366x1 + 0.0000x2 + 0.1119x3 = 0.150
% 0.0084x1 + 0.0036x2 + 0.0424x3 = 0.75
%
% Determinar x1,x2, y x3
%
% Solucin:
a=[0.0321,0.0128,0.1774;0.0366,0.0000,0.1119;0.0084,0.0036,0.0424]
y=[0.25,0.150,0.75]'
disp('**********************************************************')
disp('Realizacin de las pruebas de acondicionamiento')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
225
disp('**********************************************************')
prueba_1=det(a)*det(a^(-1))
disp('si es mal acondicionado, prueba_1 se aparta de 1')
prueba_2=(a^(-1))^(-1)
disp('si es mal acondicionado, prueba_2 es diferente de (a)')
prueba_3=a*(a)^(-1)
disp('si es mal acondicionado, prueba_3 se aparta de la matriz identidad')
prueba_4=(a^(-1))*((a^(-1))^(-1))
disp('si es mal acondicionado, prueba_4 se aparta de la matriz')
disp(' identidad mas significativamente que prueba_3')
disp('**********************************************************')
disp(' Sistema bien acondicionado')
disp('**********************************************************')
disp('**********************************************************')
disp(' Final de las pruebas')
disp('**********************************************************')
disp('**********************************************************')
disp('**********************************************************')
disp('Clculo del Determinante y Condicin de la matriz (a)')
disp('**********************************************************')
disp('**********************************************************')
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
if determinante == 0
disp('*******************************************************')
disp('La matriz es singular <---------------------- *******')
disp('*******************************************************')
end
disp('**********************************************************')
disp('El nmero de condicin de la matriz (a) es el siguiente:')
nmero_de_condicin=cond(a)
disp('**********************************************************')
disp('**********************************************************')
disp('Determinacin de las incgnitas:')
disp('**********************************************************')
disp('**********************************************************')
disp('')
disp('solucin tipo A')
disp('**********************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
226
disp('**********************************************************')
disp('')
disp('solucin tipo B')
disp('**********************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
disp('**********************************************************')
disp('')
disp('solucin tipo C')
disp('**********************************************************')
x=inv(a)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('**********************************************************')
disp('')
disp('solucin tipo D')
disp('**********************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('**********************************************************')
disp('')
disp('solucin tipo E')
disp('**********************************************************')
z=y'*inv(a');
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
a =
0.0321 0.0128 0.1774
0.0366 0 0.1119
0.0084 0.0036 0.0424
y =
0.2500
0.1500
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
227
0.7500
**********************************************************
Realizacin de las pruebas de acondicionamiento
**********************************************************
prueba_1 =
1.0000
si es mal acondicionado, prueba_1 se aparta de 1
prueba_2 =
0.0321 0.0128 0.1774
0.0366 0.0000 0.1119
0.0084 0.0036 0.0424
si es mal acondicionado, prueba_2 es diferente de (a)
prueba_3 =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
si es mal acondicionado, prueba_3 se aparta de la matriz identidad
prueba_4 =
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
si es mal acondicionado, prueba_4 se aparta de la matriz
identidad mas significativamente que prueba_3
**********************************************************
Sistema bien acondicionado
**********************************************************
**********************************************************
Final de las pruebas
**********************************************************
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
228
**********************************************************
**********************************************************
Clculo del Determinante y Condicin de la matriz (a)
**********************************************************
**********************************************************
El determinante de la matriz (a) es el siguiente:
determinante =
2.6110e-006
**********************************************************
El nmero de condicin de la matriz (a) es el siguiente:
nmero_de_condicin =
281.7831
**********************************************************
**********************************************************
Determinacin de las incgnitas:
**********************************************************
**********************************************************
solucin tipo A
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
378.3683
767.2549
-122.4154
**********************************************************
solucin tipo B
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
378.3683
767.2549
-122.4154
**********************************************************
solucin tipo C
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
229
378.3683
767.2549
-122.4154
**********************************************************
solucin tipo D
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
378.3683
767.2549
-122.4154
**********************************************************
solucin tipo E
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
378.3683
767.2549
-122.4154
PROGRAMA: Lineal7.m
% Este programa ilustra como se pueden detectar sistemas
% de ecuaciones lineales mal acondicionados
%
% Supogamos que, tenemos un sistema de (m) ecuaciones lineales
% con (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
230
%
% Las ecuaciones lineales se pueden expresar de la forma:
%
% a*x=y
%
% donde:
% (a) es la matriz que contiene a los coeficientes de las ecuaciones
%
% a=
% (a1,1) (a1,2) (a1,3) ..... (a1,n)
% (a2,1) (a2,2) (a2,3) ..... (a2,n)
% (a3,1) (a3,2) (a3,3) ..... (a3,n)
%
% ... ... ... ..... ...
%
% (am,1) (am,2) (am,3) ..... (am,n)
%
% (x) es el vector columna que contiene a las incgnitas
%
% x=
% X1
% X2
% X3
% .
% .
% .
% xn
%
% (y) es el vector columna que contiene a los trminos independientes
%
% y =
% y1
% y2
% y3
% .
% .
% .
% ym
%
%
% Un sistema mal acondicionado (badly scaled) se define como
% un sistema cuyas soluciones son muy inexactas debido a graves
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
231
% errores de redondeo. Pequeos errores de redondeo durante
% el Clculo o pequeos cambios en los coeficientes pueden
% causar errores significativos al obtener las soluciones
%
% Este efecto es importante para tamaos grandes de matrices.
% Cuando la matriz es pequa, el efecto del acondicionamiento
% no es importante, no obstante se recomienda realizar las
% pruebas descritas a continuacin.
%
% La forma de determinar si un sistema est mal acondicionado
% es a travs de las siguientes pruebas:
%
% prueba_1=det(a)*det(a^(-1))
% si es mal acondicionado, prueba_1 se aparta de 1
%
% prueba_2=((a^(-1))^(-1)
% si es mal acondicionado, prueba_2 es diferente de (a)
%
% prueba_3=a*(a)^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz identidad
%
% prueba_4=(a^(-1))*((a^(-1))^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz
% identidad mas significativamente que prueba_3
%
% Ejemplo:
%
% Simularemos un sistema de 10 ecuaciones con 10 incgnitas
% mal acondicionadas. Esto se logra utilzando una matriz
% mal acondicionada, estudiada por MATLAB
% Esta matriz especial se obtiene mediante la instruccin
%
% matriz = hilb(n)
%
% Donde:
% n = Dimensin de la matriz cuadrada
%
% Para este ejemplo utilizaremos:
%
% a = hilb(10)
%
% Determinar x1,x2, ...... hasta x10
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
232
%
% Solucin:
a=hilb(20);
y=[0.25,0.150,0.75,0.23,0.45,0.65,0.98,0.41,0.47,0.48 ...
0.55,0.750,0.65,0.43,0.28,0.11,0.90,0.32,0.88,0.12]';
disp('**********************************************************')
disp('Realizacin de las pruebas de acondicionamiento')
disp('**********************************************************')
prueba_1=det(a)*det(a^(-1))
disp('si es mal acondicionado, prueba_1 se aparta de 1')
prueba_2=(a^(-1))^(-1);
disp('si es mal acondicionado, prueba_2 es diferente de (a)')
prueba_3=a*(a)^(-1);
disp('si es mal acondicionado, prueba_3 se aparta de la matriz identidad')
prueba_4=(a^(-1))*((a^(-1))^(-1));
disp('si es mal acondicionado, prueba_4 se aparta de la matriz')
disp(' identidad mas significativamente que prueba_3')
disp('**********************************************************')
disp(' Sistema mal acondicionado')
disp('**********************************************************')
disp('**********************************************************')
disp(' Final de las pruebas')
disp('**********************************************************')
disp('**********************************************************')
disp('**********************************************************')
disp('Clculo del Determinante y Condicin de la matriz (a)')
disp('**********************************************************')
disp('**********************************************************')
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
if determinante == 0
disp('*******************************************************')
disp('La matriz es singular <---------------------- *******')
disp('*******************************************************')
end
disp('**********************************************************')
disp('El nmero de condicin de la matriz (a) es el siguiente:')
nmero_de_condicin=cond(a)
disp('**********************************************************')
disp('**********************************************************')
disp('Determinacin de las incgnitas:')
disp('**********************************************************')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
233
disp('**********************************************************')
disp('')
disp('solucin tipo A')
disp('**********************************************************')
x=a\y;
disp('x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('**********************************************************')
disp('')
disp('solucin tipo B')
disp('**********************************************************')
z=y'/a';
disp('x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:')
disp(z')
disp('**********************************************************')
disp('')
disp('solucin tipo C')
disp('**********************************************************')
x=inv(a)*y;
disp('x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('**********************************************************')
disp('')
disp('solucin tipo D')
disp('**********************************************************')
x=a^(-1)*y;
disp('x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('**********************************************************')
disp('')
disp('solucin tipo E')
disp('**********************************************************')
z=y'*inv(a');
disp('x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:')
disp(z')
**********************************************************
Realizacin de las pruebas de acondicionamiento
**********************************************************
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
234
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
prueba_1 =
0.1333
si es mal acondicionado, prueba_1 se aparta de 1
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.411482e-020
si es mal acondicionado, prueba_2 es diferente de (a)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
si es mal acondicionado, prueba_3 se aparta de la matriz identidad
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.411482e-020
si es mal acondicionado, prueba_4 se aparta de la matriz
identidad mas significativamente que prueba_3
**********************************************************
Sistema mal acondicionado
**********************************************************
**********************************************************
Final de las pruebas
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
235
**********************************************************
**********************************************************
**********************************************************
Clculo del Determinante y Condicin de la matriz (a)
**********************************************************
**********************************************************
El determinante de la matriz (a) es el siguiente:
determinante =
5.7671e-196
**********************************************************
El nmero de condicin de la matriz (a) es el siguiente:
nmero_de_condicin =
8.0639e+017
**********************************************************
**********************************************************
Determinacin de las incgnitas:
**********************************************************
**********************************************************
solucin tipo A
**********************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:
1.0e+017 *
0.0000
0.0000
0.0000
0.0001
-0.0007
0.0009
0.0091
-0.0537
0.1269
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
236
-0.1217
-0.0528
0.2147
-0.1478
0.1529
-0.6021
1.0618
-0.9166
0.4028
-0.0754
0.0015
**********************************************************
solucin tipo B
**********************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:
1.0e+017 *
0.0000
0.0000
0.0000
0.0001
-0.0007
0.0009
0.0091
-0.0537
0.1269
-0.1217
-0.0528
0.2147
-0.1478
0.1529
-0.6021
1.0618
-0.9166
0.4028
-0.0754
0.0015
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
237
**********************************************************
solucin tipo C
**********************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:
1.0e+017 *
0.0000
0.0000
0.0000
0.0001
-0.0007
0.0009
0.0091
-0.0537
0.1269
-0.1217
-0.0528
0.2147
-0.1478
0.1529
-0.6021
1.0618
-0.9166
0.4028
-0.0754
0.0015
**********************************************************
solucin tipo D
**********************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:
1.0e+017 *
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
238
0.0000
0.0000
0.0000
0.0001
-0.0007
0.0009
0.0091
-0.0537
0.1269
-0.1217
-0.0528
0.2147
-0.1478
0.1529
-0.6021
1.0618
-0.9166
0.4028
-0.0754
0.0015
**********************************************************
solucin tipo E
**********************************************************
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.460470e-019
x1,x2 ... hasta x10 tienen, respectivamente, los siguientes valores:
1.0e+017 *
0.0000
0.0000
0.0001
-0.0020
0.0158
-0.0658
0.1325
-0.0228
-0.4117
0.5382
0.5421
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
239
-1.7573
1.2131
-0.5003
1.8674
-2.4956
-0.0074
2.1876
-1.6058
0.3719
PROGRAMA: Lineal8.m
% Este programa ilustra como se pueden detectar sistemas
% de ecuaciones lineales mal acondicionados
%
% Supogamos que, tenemos un sistema de (m) ecuaciones lineales
% con (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
%
% Las ecuaciones lineales se pueden expresar de la forma:
%
% a*x=y
%
% donde:
% (a) es la matriz que contiene a los coeficientes de las ecuaciones
%
% a=
% (a1,1) (a1,2) (a1,3) ..... (a1,n)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
240
% (a2,1) (a2,2) (a2,3) ..... (a2,n)
% (a3,1) (a3,2) (a3,3) ..... (a3,n)
%
% ... ... ... ..... ...
%
% (am,1) (am,2) (am,3) ..... (am,n)
%
% (x) es el vector columna que contiene a las incgnitas
%
% x=
% X1
% X2
% X3
% .
% .
% .
% xn
%
% (y) es el vector columna que contiene a los trminos independientes
%
% y =
% y1
% y2
% y3
% .
% .
% .
% ym
%
%
% Un sistema mal acondicionado (badly scaled) se define como
% un sistema cuyas soluciones son muy inexactas debido a graves
% errores de redondeo. Pequeos errores de redondeo durante
% el Clculo o pequeos cambios en los coeficientes pueden
% causar errores significativos al obtener las soluciones
%
% Este efecto es importante para tamaos grandes de matrices.
% Cuando la matriz es pequa, el efecto del acondicionamiento
% no es importante, no obstante se recomienda realizar las
% pruebas descritas a continuacin.
%
% La forma de determinar si un sistema est mal acondicionado
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
241
% es a travs de las siguientes pruebas:
%
% prueba_1=det(a)*det(a^(-1))
% si es mal acondicionado, prueba_1 se aparta de 1
%
% prueba_2=((a^(-1))^(-1)
% si es mal acondicionado, prueba_2 es diferente de (a)
%
% prueba_3=a*(a)^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz identidad
%
% prueba_4=(a^(-1))*((a^(-1))^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz
% identidad mas significativamente que prueba_3
%
% Ejemplo:
%
% Hay ecuaciones lineales que pueden resolverse pero cuyas soluciones
% son muy inexactas debido a graves errores de redondeo, un problema
% de este tipo es mal acondicionado.
% Pequeos errores de redondeo durante el Clculo o pequeos cambios
% en los coeficientes, debido a aproximaciones o redondeos, pueden
% causar errores significativos en la solucin del sistema.
%
% El efecto de aproximacin en los coeficientes se ilustra a continuacin:
%
% Se tienen las siguientes ecuaciones:
%
% CASO A
%
% 0.12065x1 + 0.98775x2 = 2.01045
% 0.12032x1 + 0.98775x2 = 2.00555
%
% CASO B : Cambio en el trmino independiente por aproximacin
% se incrementa artificialmente el trmino independiente
% de la primera ecuacin en 0.001
%
% 0.12065x1 + 0.98775x2 = 2.01145
% 0.12032x1 + 0.98775x2 = 2.00555
%
% Determinar x1,x2, y x3 para ambos casos
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
242
%
% NOTA
% ***********
%
% correr este programa con tres tipos de FORMATO NUMERICO
% 1) TIPO BANK
% 2) TIPO SHORT
% 3) TIPO LONG
%
% ANALIZAR RESULTADOS
%
% Solucin:
a=[0.12065,0.98775;0.12032,0.98775]
y1=[2.01045,2.00555]'
y2=[2.01145,2.00555]'
disp('**********************************************************')
disp('Realizacin de las pruebas de acondicionamiento')
disp('**********************************************************')
prueba_1=det(a)*det(a^(-1))
disp('si es mal acondicionado, prueba_1 se aparta de 1')
prueba_2=(a^(-1))^(-1)
disp('si es mal acondicionado, prueba_2 es diferente de (a)')
prueba_3=a*(a)^(-1)
disp('si es mal acondicionado, prueba_3 se aparta de la matriz identidad')
prueba_4=(a^(-1))*((a^(-1))^(-1))
disp('si es mal acondicionado, prueba_4 se aparta de la matriz')
disp(' identidad mas significativamente que prueba_3')
disp('**********************************************************')
disp(' Sistema bien acondicionado')
disp('**********************************************************')
disp('**********************************************************')
disp(' Final de las pruebas')
disp('**********************************************************')
disp('**********************************************************')
disp('**********************************************************')
disp('Clculo del Determinante y Condicin de la matriz (a)')
disp('**********************************************************')
disp('**********************************************************')
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
if determinante == 0
disp('*******************************************************')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
243
disp('La matriz es singular <---------------------- *******')
disp('*******************************************************')
end
disp('**********************************************************')
disp('El nmero de condicin de la matriz (a) es el siguiente:')
nmero_de_condicin=cond(a)
disp('**********************************************************')
disp('**********************************************************')
disp('Determinacin de las incgnitas:')
disp('**********************************************************')
disp('**********************************************************')
disp('')
disp('solucin tipo A')
disp('**********************************************************')
xa=a\y1;
xb=a\y2;
ma=[xa,xb];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp(' CASO A CASO B')
disp(ma)
disp('**********************************************************')
disp('')
disp('solucin tipo B')
disp('**********************************************************')
za=y1'/a';
zb=y2'/a';
mb=[za',zb'];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp(' CASO A CASO B')
disp(mb)
disp('**********************************************************')
disp('')
disp('solucin tipo C')
disp('**********************************************************')
xa=inv(a)*y1;
xb=inv(a)*y2;
mc=[xa,xb];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp(' CASO A CASO B')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
244
disp(mc)
disp('**********************************************************')
disp('')
disp('solucin tipo D')
disp('**********************************************************')
xa=a^(-1)*y1;
xb=a^(-1)*y2;
md=[xa,xb];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp(' CASO A CASO B')
disp(md)
disp('**********************************************************')
disp('')
disp('solucin tipo E')
disp('**********************************************************')
za=y1'*inv(a');
zb=y2'*inv(a');
me=[za',zb'];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp(' CASO A CASO B')
disp(me)
a =
0.1206 0.9878
0.1203 0.9878
y1 =
2.0104
2.0056
y2 =
2.0114
2.0056
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
245
**********************************************************
Realizacin de las pruebas de acondicionamiento
**********************************************************
prueba_1 =
1.0000
si es mal acondicionado, prueba_1 se aparta de 1
prueba_2 =
0.1207 0.9878
0.1203 0.9878
si es mal acondicionado, prueba_2 es diferente de (a)
prueba_3 =
1.0000 0.0000
0.0000 1.0000
si es mal acondicionado, prueba_3 se aparta de la matriz identidad
prueba_4 =
1.0000 0
0.0000 1.0000
si es mal acondicionado, prueba_4 se aparta de la matriz
identidad mas significativamente que prueba_3
**********************************************************
Sistema bien acondicionado
**********************************************************
Final de las pruebas
**********************************************************
Clculo del Determinante y Condicin de la matriz (a)
**********************************************************
**********************************************************
El determinante de la matriz (a) es el siguiente:
determinante =
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
246
3.2596e-004
**********************************************************
El nmero de condicin de la matriz (a) es el siguiente:
nmero_de_condicin =
6.0754e+003
**********************************************************
Determinacin de las incgnitas:
**********************************************************
solucin tipo A
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
14.8485 17.8788
0.2217 -0.1474
**********************************************************
solucin tipo B
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
14.8485 17.8788
0.2217 -0.1474
**********************************************************
solucin tipo C
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
14.8485 17.8788
0.2217 -0.1474
**********************************************************
solucin tipo D
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
247
CASO A CASO B
14.8485 17.8788
0.2217 -0.1474
**********************************************************
solucin tipo E
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
14.8485 17.8788
0.2217 -0.1474
PROGRAMA: Lineal9.m
% Este programa ilustra como, cambios en el trmino independiente
% por aproximaciones o redondeos no necesariamente produce un
% caso de mal acondicionamiento
%
% Supogamos que, tenemos un sistema de (m) ecuaciones lineales
% con (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
%
% Las ecuaciones lineales se pueden expresar de la forma:
%
% a*x=y
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
248
% donde:
% (a) es la matriz que contiene a los coeficientes de las ecuaciones
%
% a=
% (a1,1) (a1,2) (a1,3) ..... (a1,n)
% (a2,1) (a2,2) (a2,3) ..... (a2,n)
% (a3,1) (a3,2) (a3,3) ..... (a3,n)
%
% ... ... ... ..... ...
%
% (am,1) (am,2) (am,3) ..... (am,n)
%
% (x) es el vector columna que contiene a las incgnitas
%
% x=
% X1
% X2
% X3
% .
% .
% .
% xn
%
% (y) es el vector columna que contiene a los trminos independientes
%
% y =
% y1
% y2
% y3
% .
% .
% .
% ym
%
%
% Un sistema mal acondicionado (badly scaled) se define como
% un sistema cuyas soluciones son muy inexactas debido a graves
% errores de redondeo. Pequeos errores de redondeo durante
% el Clculo o pequeos cambios en los coeficientes pueden
% causar errores significativos al obtener las soluciones
%
% Este efecto es importante para tamaos grandes de matrices.
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
249
% Cuando la matriz es pequa, el efecto del acondicionamiento
% no es importante, no obstante se recomienda realizar las
% pruebas descritas a continuacin.
%
% La forma de determinar si un sistema est mal acondicionado
% es a travs de las siguientes pruebas:
%
% prueba_1=det(a)*det(a^(-1))
% si es mal acondicionado, prueba_1 se aparta de 1
%
% prueba_2=((a^(-1))^(-1)
% si es mal acondicionado, prueba_2 es diferente de (a)
%
% prueba_3=a*(a)^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz identidad
%
% prueba_4=(a^(-1))*((a^(-1))^(-1)
% si es mal acondicionado, prueba_1 se aparta de la matriz
% identidad mas significativamente que prueba_3
%
% Ejemplo:
%
% Hay ecuaciones lineales que pueden resolverse pero cuyas soluciones
% son muy inexactas debido a graves errores de redondeo, un problema
% de este tipo es mal acondicionado.
% Pequeos errores de redondeo durante el Clculo o pequeos cambios
% en los coeficientes, debido a aproximaciones o redondeos, pueden
% causar errores significativos en la solucin del sistema.
%
% El efecto de aproximacin en los coeficientes se ilustra a continuacin:
%
% Se tienen las siguientes ecuaciones:
%
% CASO A
%
% 0.12065x1 + 0.98775x2 = 2.01045
% 0.22432x1 + 2.35485x2 = 8.35147
%
% CASO B : Cambio en el trmino independiente por aproximacin
% se incrementa artificialmente el trmino independiente
% de la primera ecuacin en 0.001
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
250
%
% 0.12065x1 + 0.98775x2 = 2.01145
% 0.22432x1 + 2.35485x2 = 8.35147
%
% Determinar x1,x2, y x3 para ambos casos
%
%
%
% Solucin:
a=[0.12065,0.98775;0.22432,2.35485]
y1=[2.01045,8.35147]'
y2=[2.01145,8.35147]'
disp('**********************************************************')
disp('Realizacin de las pruebas de acondicionamiento')
disp('**********************************************************')
prueba_1=det(a)*det(a^(-1))
disp('si es mal acondicionado, prueba_1 se aparta de 1')
prueba_2=(a^(-1))^(-1)
disp('si es mal acondicionado, prueba_2 es diferente de (a)')
prueba_3=a*(a)^(-1)
disp('si es mal acondicionado, prueba_3 se aparta de la matriz identidad')
prueba_4=(a^(-1))*((a^(-1))^(-1))
disp('si es mal acondicionado, prueba_4 se aparta de la matriz')
disp(' identidad mas significativamente que prueba_3')
disp('**********************************************************')
disp(' Sistema bien acondicionado')
disp('**********************************************************')
disp('**********************************************************')
disp(' Final de las pruebas')
disp('**********************************************************')
disp('**********************************************************')
disp('Clculo del Determinante y Condicin de la matriz (a)')
disp('**********************************************************')
disp('**********************************************************')
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
if determinante == 0
disp('*******************************************************')
disp('La matriz es singular <---------------------- *******')
disp('*******************************************************')
end
disp('**********************************************************')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
251
disp('El nmero de condicin de la matriz (a) es el siguiente:')
nmero_de_condicin=cond(a)
disp('**********************************************************')
disp('**********************************************************')
disp('Determinacin de las incgnitas:')
disp('**********************************************************')
disp('')
disp('solucin tipo A')
disp('**********************************************************')
xa=a\y1;
xb=a\y2;
ma=[xa,xb];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp('CASO A CASO B')
disp(ma)
disp('**********************************************************')
disp('')
disp('solucin tipo B')
disp('**********************************************************')
za=y1'/a';
zb=y2'/a';
mb=[za',zb'];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp('CASO A CASO B')
disp(mb)
disp('**********************************************************')
disp('')
disp('solucin tipo C')
disp('**********************************************************')
xa=inv(a)*y1;
xb=inv(a)*y2;
mc=[xa,xb];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp('CASO A CASO B')
disp(mc)
disp('**********************************************************')
disp('')
disp('solucin tipo D')
disp('**********************************************************')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
252
xa=a^(-1)*y1;
xb=a^(-1)*y2;
md=[xa,xb];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp('CASO A CASO B')
disp(md)
disp('**********************************************************')
disp('')
disp('solucin tipo E')
disp('**********************************************************')
za=y1'*inv(a');
zb=y2'*inv(a');
me=[za',zb'];
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(' ')
disp('CASO A CASO B')
disp(me)
a =
0.1206 0.9878
0.2243 2.3548
y1 =
2.0104
8.3515
y2 =
2.0114
8.3515
**********************************************************
Realizacin de las pruebas de acondicionamiento
**********************************************************
prueba_1 =
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
253
1
si es mal acondicionado, prueba_1 se aparta de 1
prueba_2 =
0.1206 0.9878
0.2243 2.3548
si es mal acondicionado, prueba_2 es diferente de (a)
prueba_3 =
1.0000 0.0000
0.0000 1.0000
si es mal acondicionado, prueba_3 se aparta de la matriz identidad
prueba_4 =
1.0000 0.0000
0.0000 1.0000
si es mal acondicionado, prueba_4 se aparta de la matriz
identidad mas significativamente que prueba_3
**********************************************************
Sistema bien acondicionado
**********************************************************
**********************************************************
Final de las pruebas
**********************************************************
**********************************************************
**********************************************************
Clculo del Determinante y Condicin de la matriz (a)
**********************************************************
**********************************************************
El determinante de la matriz (a) es el siguiente:
determinante =
0.0625
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
254
**********************************************************
El nmero de condicin de la matriz (a) es el siguiente:
nmero_de_condicin =
105.2957
**********************************************************
**********************************************************
Determinacin de las incgnitas:
**********************************************************
**********************************************************
solucin tipo A
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
-56.2012 -56.1636
8.9002 8.8966
**********************************************************
solucin tipo B
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
-56.2012 -56.1636
8.9002 8.8966
**********************************************************
solucin tipo C
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
-56.2012 -56.1636
8.9002 8.8966
**********************************************************
solucin tipo D
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
255
CASO A CASO B
-56.2012 -56.1636
8.9002 8.8966
**********************************************************
solucin tipo E
**********************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
CASO A CASO B
-56.2012 -56.1636
8.9002 8.8966
PROGRAMA: Lineal10.m
% Este programa ilustra como se puede resolver un sistema
% de ecuaciones lineales aplicando el mtodo GAUSS con PIVOTEO
%
% La eliminacin de GAUSS consiste en la eliminacin hacia adelante
% y la sustitucion hacia atras, aplicada a sistemas de ecuaciones
% como se muestra, donde m = n :
% sistema de (m) ecuaciones lineales com (n) incgnitas:
%
% (a1,1)*x1 + (a1,2)*x2 + (a1,3)*x3 +.....+ (a1,n)*xn = y1
% (a2,1)*x1 + (a2,2)*x2 + (a2,3)*x3 +.....+ (a2,n)*xn = y2
% (a3,1)*x1 + (a3,2)*x2 + (a3,3)*x3 +.....+ (a3,n)*xn = y3
%
% ... ... ... ..... ... ..
%
% (am,1)*x1 + (am,2)*x2 + (am,3)*x3 +.....+ (am,n)*xn = ym
%
% donde:
% (am,n) son los coeficientes de las ecuaciones (valores conocidos)
% xn son las incgnitas de las (m) ecuaciones
% ym son los trminos independientes (valores conocidos)
%
% La eliminacin hacia adelante consiste en:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
256
% 1) Multiplicar la primera ecuacin por el trmino a(2,1)/a(1,1)
% 2) El resultado se resta de la segunda ecuacin para eliminar
% el primer trmino
% 3) Similarmente, el primer trmino de cada una de las ecuaciones
% subsecuentes se elimina
%
% El Pivoteo consiste en intercambiar el orden de las ecuaciones
% de modo que el primer coeficiente de la ecuacin que sirve de
% pivote tenga una magnitud mayor que cualquier otro coeficiente
% que este por debajo del mismo, en la misma columna y por lo tanto
% vaya a ser eliminado.
% El primer pivote sera entonces a(1,1)
% Si el valor absoluto de a(1,1) es mayor en la comparacion no hace
% falta el pivoteo; en caso contrario la primera ecuacin ( primera fila )
% se intercambia con la segunda ecuacin ( segunda fila )
%
% Al final del proceso de pivotear y eliminar, el conjunto de ecuaciones
% o la matriz queda de la siguiente forma:
%
% a(1,1)x1 + a(1,2)x2 + a(1,3)x3 + ... + a(1,n)xn = y1
% 0 + a(2,2)x2 + a(2,3)x3 + ... + a(2,n)xn = y2
% 0 + 0 + a(3,3)x3 + ... + a(3,n)xn = y3
%
% ............
% a(n,n)xn = yn
%
%
% Luego comieza el proceso de eliminacin hacia atras, calculando
% el trmino ( xn ) de la siguiente forma:
%
% x(n) = yn/a(n,n)
%
% x(n-1) = ( y(n-1) - a((n-1),n)xn )/a((n-1),(n-1))
%
% .........
% i = n
% x(1) = ( y1 - sumatoria( a(1,i)xi )/a(1,1)
% i = 2
%
%
% El mtodo de Gauss con Pivoteo se ilustra en el siguiente ejemplo:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
257
% Resolver las siguientes ecuaciones:
%
% -0.04*x1 + 0.04*x2 + 0.12*x3 = 3
%
% 0.56*x1 - 1.56*x2 + 0.32*x3 = 1
%
% -0.24*x1 + 1.24*x2 - 0.28*x3 = 0
%
% Solucin:
%
% Como primer paso se define la matriz ampliada ( a ) con los trminos
% independientes:
%
% -0.04 0.04 0.12 3
% 0.56 -1.56 0.32 1
% -0.24 1.24 -0.28 0
a=[-0.04,0.04,0.12,3;0.56,-1.56,0.32,1;-0.24,1.24,-0.28,0]
x=[0,0,0]' % se inicializa el vector columna
%
% primer pivoteo
%
tempo=a(2,:)
a(2,:)=a(1,:);
a(1,:)=tempo;
disp('transformacion de la matriz (a) despues del primer pivoteo'),a
%
% Eliminacin de elementos despues del primer pivoteo
%
a(2,:)=a(2,:)-a(1,:)*a(2,1)/a(1,1);
a(3,:)=a(3,:)-a(1,:)*a(3,1)/a(1,1);
disp('transformacion de la matriz (a) despues de la primera eliminacin'),a
%
% segundo pivoteo
%
tempo=a(3,:);
a(3,:)=a(2,:);
a(2,:)=tempo;
disp('transformacion de la matriz (a) despues del segundo pivoteo'),a
%
% Eliminacin de elementos debajo del segundo pivoteo
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
258
%
a(3,:)=a(3,:)-a(2,:)*a(3,2)/a(2,2);
disp('transformacion de la matriz (a) despues de la segunda eliminacin'),a
%
% sustitucion hacia atras
%
disp('primera sustitucion')
x(3)=a(3,4)/a(3,3)
disp('segunda sustitucion')
x(2)=(a(2,4)-a(2,3)*x(3))/a(2,2)
disp('tercera sustitucion y resultado final')
x(1)=(a(1,4)-a(1,2:3)*x(2:3))/a(1,1)
xg=x;
disp(' PARA COMPARAR ESTE METODO')
input(' CON LOS METODOS ANTERIORES ======> ENTER')
% Para efecto de comparacion, se aplicaran los metodos anteriores
%
a=[-0.04,0.04,0.12;0.56,-1.56,0.32;-0.24,1.24,-0.28]
y=[3,1,0]'
disp('El determinante de la matriz (a) es el siguiente:')
determinante=det(a)
disp('El nmero de condicin de la matriz (a) es el siguiente:')
nmero_de_condicin=cond(a)
disp('************************************************************')
disp('Determinacin de las incgnitas:')
disp('************************************************************')
disp('')
disp('solucin tipo A')
disp('************************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo B')
disp('************************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z')
disp('************************************************************')
disp('')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
259
disp('solucin tipo C')
disp('************************************************************')
x=inv(a)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo D')
disp('************************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo E')
disp('************************************************************')
z=y'*inv(a');
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z')
disp('solucin Metodo Gauss con Pivoteo')
disp('************************************************************')
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(xg)
a =
-0.0400 0.0400 0.1200 3.0000
0.5600 -1.5600 0.3200 1.0000
-0.2400 1.2400 -0.2800 0
x =
0
0
0
tempo =
0.5600 -1.5600 0.3200 1.0000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
260
transformacion de la matriz (a) despues del primer pivoteo
a =
0.5600 -1.5600 0.3200 1.0000
-0.0400 0.0400 0.1200 3.0000
-0.2400 1.2400 -0.2800 0
transformacion de la matriz (a) despues de la primera eliminacin
a =
0.5600 -1.5600 0.3200 1.0000
0 -0.0714 0.1429 3.0714
0.0000 0.5714 -0.1429 0.4286
transformacion de la matriz (a) despues del segundo pivoteo
a =
0.5600 -1.5600 0.3200 1.0000
0.0000 0.5714 -0.1429 0.4286
0 -0.0714 0.1429 3.0714
transformacion de la matriz (a) despues de la segunda eliminacin
a =
0.5600 -1.5600 0.3200 1.0000
0.0000 0.5714 -0.1429 0.4286
0.0000 0 0.1250 3.1250
primera sustitucion
x =
0
0
25.0000
segunda sustitucion
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
261
x =
0
7.0000
25.0000
tercera sustitucion y resultado final
x =
7.0000
7.0000
25.0000
PARA COMPARAR ESTE METODO
CON LOS METODOS ANTERIORES ======> ENTER
ans =
[]
a =
-0.0400 0.0400 0.1200
0.5600 -1.5600 0.3200
-0.2400 1.2400 -0.2800
y =
3
1
0
El determinante de la matriz (a) es el siguiente:
determinante =
0.0400
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
262
El nmero de condicin de la matriz (a) es el siguiente:
nmero_de_condicin =
19.3044
************************************************************
Determinacin de las incgnitas:
************************************************************
solucin tipo A
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
7.0000
7.0000
25.0000
************************************************************
solucin tipo B
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
7.0000
7.0000
25.0000
************************************************************
solucin tipo C
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
7.0000
7.0000
25.0000
************************************************************
solucin tipo D
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
7.0000
7.0000
25.0000
************************************************************
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
263
solucin tipo E
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
7.0000
7.0000
25.0000
solucin Metodo Gauss con Pivoteo
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
7.0000
7.0000
25.0000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
264
PROGRAMA: Lineal11.m
% RESOLUCIN ITERATIVA
%
% la resolucin iterativa de ecuaciones lineales no es aplicable
% a todos los problemas, pero resulta de gran utilidad para
% sistemas cuyos nmeros de incgnitas es muy grande y la matriz
% de coeficiente esta despoblada.
%
% Existen tres metodos iterativos:
%
% 1) Metodo de Jacobi
%
% 2) Metodo de Gauss - Seidel
%
% 3) mtodo de Sobre Relajacion Sucesiva (SOR)
%
% Consideremos una ecuacin lineal:
%
% a * x = y
%
% Donde:
%
% (a) es la matriz cuadrada de los coeficientes
%
% (x) es el vector de las incgnitas
%
% (y) es el vector de los trminos independientes
%
% Todos los metodos requieren una estimacion inicial, la cual
% denotaremos con x(t), donde t= nmero de iteracion
% se puede comenzar con el vector nulo, todos los valores
% iniciales de X(t=0) son cero.
%
% Una condicin suficiente para que la resolucin iterativa
% converja es:
%
% n
% |a(i,i)|>= sumatoria(|a(i,j)|), para todo i
% j=1,j~=i
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
265
%
%
% La solucin por el mtodo de Jacobi se expresa:
%
% n
% x(i) = (y(i)-sumatoria(a(i,j)*x(j)))/a(i,i)
% j=1,j~=i
%
%
%
% La solucin por el mtodo de Gauss - siedel se expresa:
%
%
%% i-1 n
% x(i) = (y(i)-sumatoria(a(i,j)*x(j))-sumatoria(a(i,j)*x(j))/a(i,i)
% j=1 j=i+1
%
%
%
%
% La solucin por el mtodo de SOR se expresa:
%
%
%
% i-1 n
% x(i) = w*(y(i)-sumatoria(a(i,j)*x(j))-sumatoria(a(i,j)*x(j))/a(i,i)+(1-w)*x(i)
% j=1 j=i+1
%
% Donde (w) es un parametro de sobre relajacion que satisface la expresion:
%
% 1<=w<2
%
% Como regla empirica se puede asignar un valor a (w) entre 1.2 y 1.7
%
%
% El siguiente ejemplo ilustra como se puede resolver un sistema de
% ecuaciones lineales utilizando el mtodo GAUSS - SEIDEL
% y luego para efectos de comparacion se aplican los metodos
% anteriormente explicados.
%
% El sistema de ecuaciones es el siguiente:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
266
% %
% Escribiendo la matriz, tendremos:
%
% a =
%
% 1.0833 -0.2500 -0.3333
% -0.2500 0.7833 -0.2000
% -0.3333 -0.2000 0.8667
%
%
% y =
%
% 10.0000
% 0
% 1.6667
% Solucin:
clear
a(1,1)=1/2+1/4+1/3;
a(1,2)=-1/4;
a(1,3)=-1/3;
a(2,1)=a(1,2);
a(2,2)=1/4+1/3+1/5;
a(2,3)=-1/5;
a(3,1)=a(1,3);
a(3,2)=a(2,3);
a(3,3)=1/3+1/5+1/3;
a
y=[20/2,0,5/3]'
x=zeros(1,3)';
for elem=1:50
error=0;
for i=1:3
s=0; xb=x(i);
for j=1:3
if i~=j,s=s+a(i,j)*x(j);end
end
x(i)=(y(i)-s)/a(i,i);
error=error+abs(x(i)-xb);
end
fprintf('elem. num. =%3.0f,error = %7.2e\n',elem,error)
if error/3 <0.001,break;end
end
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
267
x
disp('solucin por la via tradicional')
disp('************************************************************')
disp('Determinacin de las incgnitas:')
disp('************************************************************')
disp('')
disp('solucin tipo A')
disp('************************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo B')
disp('************************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
disp('************************************************************')
disp('')
disp('solucin tipo C')
disp('************************************************************')
x=inv(a)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo D')
disp('************************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo E')
disp('************************************************************')
z=y'*inv(a');
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
268
a =
1.0833 -0.2500 -0.3333
-0.2500 0.7833 -0.2000
-0.3333 -0.2000 0.8667
y =
10.0000
0
1.6667
elem. num. = 1,error = 1.83e+001
elem. num. = 2,error = 6.51e+000
elem. num. = 3,error = 2.31e+000
elem. num. = 4,error = 7.79e-001
elem. num. = 5,error = 2.65e-001
elem. num. = 6,error = 9.03e-002
elem. num. = 7,error = 3.07e-002
elem. num. = 8,error = 1.04e-002
elem. num. = 9,error = 3.55e-003
elem. num. = 10,error = 1.21e-003
x =
13.3450
6.4399
8.5419
solucin por la via tradicional
************************************************************
Determinacin de las incgnitas:
************************************************************
solucin tipo A
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453
6.4401
8.5420
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
269
************************************************************
solucin tipo B
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453 6.4401 8.5420
************************************************************
solucin tipo C
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453
6.4401
8.5420
************************************************************
solucin tipo D
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453
6.4401
8.5420
************************************************************
solucin tipo E
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453 6.4401 8.5420
PROGRAMA: Lineal12.m
% RESOLUCIN ITERATIVA
%
% la resolucin iterativa de ecuaciones lineales no es aplicable
% a todos los problemas, pero resulta de gran utilidad para
% sistemas cuyos nmeros de incgnitas es muy grande y la matriz
% de coeficiente esta despoblada.
%
% Existen tres metodos iterativos:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
270
% 1) Metodo de Jacobi
%
% 2) Metodo de Gauss - Seidel
%
% 3) mtodo de Sobre Relajacion Sucesiva (SOR)
%
% Consideremos una ecuacin lineal:
%
% a * x = y
%
% Donde:
%
% (a) es la matriz cuadrada de los coeficientes
%
% (x) es el vector de las incgnitas
%
% (y) es el vector de los trminos independientes
%
% Todos los metodos requieren una estimacion inicial, la cual
% denotaremos con x(t), donde t= nmero de iteracion
% se puede comenzar con el vector nulo, todos los valores
% iniciales de X(t=0) son cero.
%
% Una condicin suficiente para que la resolucin iterativa
% converja es:
%
% n
% |a(i,i)|>= sumatoria(|a(i,j)|), para todo i
% j=1,j~=i
%
%
% La solucin por el mtodo de Jacobi se expresa:
%
% n
% x(i) = (y(i)-sumatoria(a(i,j)*x(j)))/a(i,i)
% j=1,j~=i
%
%
%
% La solucin por el mtodo de Gauss - siedel se expresa:
%
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
271
%% i-1 n
% x(i) = (y(i)-sumatoria(a(i,j)*x(j))-sumatoria(a(i,j)*x(j))/a(i,i)
% j=1 j=i+1
%
%
%
%
% La solucin por el mtodo de SOR se expresa:
%
%
%
% i-1 n
% x(i) = w*(y(i)-sumatoria(a(i,j)*x(j))-sumatoria(a(i,j)*x(j))/a(i,i)+(1-w)*x(i)
% j=1 j=i+1
%
% Donde (w) es un parametro de sobre relajacion que satisface la expresion:
%
% 1<=w<2
%
% Como regla empirica se puede asignar un valor a (w) entre 1.2 y 1.7
%
%
% El siguiente ejemplo ilustra como se puede resolver un sistema de
% ecuaciones lineales cuya matriz de coeficientes esta despoblada
% utilizando el mtodo SOR y luego para efectos de comparacion se
% aplican los metodos anteriormente explicados.
%
% El sistema de ecuaciones es el siguiente:
%
% 4x1 = 12
% 5x2 + 19x3 = 0
% 14x3 = 15
%
% Escribiendo la matriz, tendremos:
%
% a =
% 4 0 0
% 0 5 19 MATRIZ DESPOBLADA
% 0 0 14
%
% y =
% 12
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
272
% 0
% 15
%
% Solucin:
a=[4,0,0;0,5,19;0,0,14]
y=[12,0,15]'
x=zeros(1,3)';
w=1.2;
for elem=1:50
error=0;
for i=1:3
s=0; xb=x(i);
for j=1:3
if i~=j,s=s+a(i,j)*x(j);end
end
x(i)=w*(y(i)-s)/a(i,i)+(1-w)*x(i);
error=error+abs(x(i)-xb);
end
fprintf('elem. num. =%3.0f,error = %7.2e\n',elem,error)
if error/3<0.001,break;end
end
x
disp('solucin por la via tradicional')
disp('************************************************************')
disp('Determinacin de las incgnitas:')
disp('************************************************************')
disp('')
disp('solucin tipo A')
disp('************************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo B')
disp('************************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
disp('************************************************************')
disp('')
disp('solucin tipo C')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
273
disp('************************************************************')
x=inv(a)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo D')
disp('************************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo E')
disp('************************************************************')
z=y'*inv(a');
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
a =
4 0 0
0 5 19
0 0 14
y =
12
0
15
elem. num. = 1,error = 4.89e+000
elem. num. = 2,error = 6.84e+000
elem. num. = 3,error = 2.54e+000
elem. num. = 4,error = 7.43e-001
elem. num. = 5,error = 1.95e-001
elem. num. = 6,error = 4.85e-002
elem. num. = 7,error = 1.16e-002
elem. num. = 8,error = 2.69e-003
x =
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
274
3.0000
-4.0719
1.0714
solucin por la via tradicional
************************************************************
Determinacin de las incgnitas:
************************************************************
solucin tipo A
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
3.0000
-4.0714
1.0714
************************************************************
solucin tipo B
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
3.0000 -4.0714 1.0714
************************************************************
solucin tipo C
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
3.0000
-4.0714
1.0714
************************************************************
solucin tipo D
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
3.0000
-4.0714
1.0714
************************************************************
solucin tipo E
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
275
3.0000 -4.0714 1.0714
PROGRAMA: Lineal13.m
% RESOLUCIN ITERATIVA
%
% la resolucin iterativa de ecuaciones lineales no es aplicable
% a todos los problemas, pero resulta de gran utilidad para
% sistemas cuyos nmeros de incgnitas es muy grande y la matriz
% de coeficiente esta despoblada.
%
% Existen tres metodos iterativos:
%
% 1) Metodo de Jacobi
%
% 2) Metodo de Gauss - Seidel
%
% 3) mtodo de Sobre Relajacion Sucesiva (SOR)
%
% Consideremos una ecuacin lineal:
%
% a * x = y
%
% Donde:
%
% (a) es la matriz cuadrada de los coeficientes
%
% (x) es el vector de las incgnitas
%
% (y) es el vector de los trminos independientes
%
% Todos los metodos requieren una estimacion inicial, la cual
% denotaremos con x(t), donde t= nmero de iteracion
% se puede comenzar con el vector nulo, todos los valores
% iniciales de X(t=0) son cero.
%
% Una condicin suficiente para que la resolucin iterativa
% converja es:
%
% n
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
276
% |a(i,i)|>= sumatoria(|a(i,j)|), para todo i
% j=1,j~=i
%
%
% La solucin por el mtodo de Jacobi se expresa:
%
% n
% x(i) = (y(i)-sumatoria(a(i,j)*x(j)))/a(i,i)
% j=1,j~=i
%
%
%
% La solucin por el mtodo de Gauss - siedel se expresa:
%
%
%% i-1 n
% x(i) = (y(i)-sumatoria(a(i,j)*x(j))-sumatoria(a(i,j)*x(j))/a(i,i)
% j=1 j=i+1
%
%
%
%
% La solucin por el mtodo de SOR se expresa:
%
%
%
% i-1 n
% x(i) = w*(y(i)-sumatoria(a(i,j)*x(j))-sumatoria(a(i,j)*x(j))/a(i,i)+(1-w)*x(i)
% j=1 j=i+1
%
% Donde (w) es un parametro de sobre relajacion que satisface la expresion:
%
% 1<=w<2
%
% Como regla empirica se puede asignar un valor a (w) entre 1.2 y 1.7
%
%
% El siguiente ejemplo ilustra como se puede resolver un sistema de
% ecuaciones lineales utilizando el mtodo SOR
% y luego para efectos de comparacion se aplican los metodos
% anteriormente explicados.
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
277
% El sistema de ecuaciones es el siguiente:
%
%
% Escribiendo la matriz, tendremos:
%
% a =
%
% 1.0833 -0.2500 -0.3333
% -0.2500 0.7833 -0.2000
% -0.3333 -0.2000 0.8667
%
%
% y =
%
% 10.0000
% 0
% 1.6667
% Solucin:
clear
a(1,1)=1/2+1/4+1/3;
a(1,2)=-1/4;
a(1,3)=-1/3;
a(2,1)=a(1,2);
a(2,2)=1/4+1/3+1/5;
a(2,3)=-1/5;
a(3,1)=a(1,3);
a(3,2)=a(2,3);
a(3,3)=1/3+1/5+1/3;
a
y=[20/2,0,5/3]'
x=zeros(1,3)';
w=1.2;
for elem=1:50
error=0;
for i=1:3
s=0; xb=x(i);
for j=1:3
if i~=j,s=s+a(i,j)*x(j);end
end
x(i)=w*(y(i)-s)/a(i,i)+(1-w)*x(i);
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
278
error=error+abs(x(i)-xb);
end
fprintf('elem. num. =%3.0f,error = %7.2e\n',elem,error)
if error/3 <0.001,break;end
end
x
disp('solucin por la via tradicional')
disp('************************************************************')
disp('Determinacin de las incgnitas:')
disp('************************************************************')
disp('')
disp('solucin tipo A')
disp('************************************************************')
x=a\y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo B')
disp('************************************************************')
z=y'/a';
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
disp('************************************************************')
disp('')
disp('solucin tipo C')
disp('************************************************************')
x=inv(a)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo D')
disp('************************************************************')
x=a^(-1)*y;
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(x)
disp('************************************************************')
disp('')
disp('solucin tipo E')
disp('************************************************************')
z=y'*inv(a');
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
279
disp('x1,x2 y x3 tienen, respectivamente, los siguientes valores:')
disp(z)
a =
1.0833 -0.2500 -0.3333
-0.2500 0.7833 -0.2000
-0.3333 -0.2000 0.8667
y =
10.0000
0
1.6667
elem. num. = 1,error = 2.39e+001
elem. num. = 2,error = 4.75e+000
elem. num. = 3,error = 7.24e-001
elem. num. = 4,error = 2.64e-001
elem. num. = 5,error = 5.03e-002
elem. num. = 6,error = 1.36e-002
elem. num. = 7,error = 4.39e-003
elem. num. = 8,error = 1.16e-003
x =
13.3452
6.4402
8.5420
solucin por la via tradicional
************************************************************
Determinacin de las incgnitas:
************************************************************
solucin tipo A
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
280
13.3453
6.4401
8.5420
************************************************************
solucin tipo B
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453 6.4401 8.5420
************************************************************
solucin tipo C
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453
6.4401
8.5420
************************************************************
solucin tipo D
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453
6.4401
8.5420
************************************************************
solucin tipo E
************************************************************
x1,x2 y x3 tienen, respectivamente, los siguientes valores:
13.3453 6.4401 8.5420
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
281
POLINOMIOS
Los polinomios son de gran utilidad en las operaciones de interpolacin y de integracin
numrica; adems, los polinomios son la base para el control de procesos, ya que las
funciones de transferencia son expresadas como polinomios de la variable compleja (s),
para sistemas continuos lineales.
A continuacin se muestran varios programas que ilustran las operaciones bsicas con
polinomios:
PROGRAMA: Poli1.m
% Este programa ilustra como puede definirse un polinomio
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
282
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Del ejemplo anterior:
y1=[1,2,-7,-8,12];
y2=[2 3 0 0 1];
y3=[3 0 5 0 7 0];
disp(' POLINOMIO_1 ')
disp(y1)
disp(' POLINOMIO_2 ')
disp(y2)
disp(' POLINOMIO_3 ')
disp(y3)
POLINOMIO_1
1 2 -7 -8 12
POLINOMIO_2
2 3 0 0 1
POLINOMIO_3
3 0 5 0 7 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
283
PROGRAMA: Poli2.m
% Este programa ilustra como pueden calcularse las races
% de un polinomio
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Las races pueden ser determinadas mediante la instruccin:
%
% r = roots(y)
%
% Del ejemplo anterior:
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
284
y1=[1,2,-7,-8,12];
r1=roots(y1);
y2=[2 3 0 0 1];
r2=roots(y2);
y3=[3 0 5 0 7 0];
r3=roots(y3);
disp(' POLINOMIO_1 ')
disp(y1)
disp(' RAICES ')
disp(r1)
disp(' POLINOMIO_2 ')
disp(y2)
disp(' RAICES ')
disp(r2)
disp(' POLINOMIO_3 ')
disp(y3)
disp(' RAICES ')
disp(r3)
POLINOMIO_1
1 2 -7 -8 12
RAICES
-3.0000
2.0000
-2.0000
1.0000
POLINOMIO_2
2 3 0 0 1
RAICES
-1.2338
-1.0000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
285
0.3669 + 0.5203i
0.3669 - 0.5203i
POLINOMIO_3
3 0 5 0 7 0
RAICES
0
-0.5891 + 1.0865i
-0.5891 - 1.0865i
0.5891 + 1.0865i
0.5891 - 1.0865i
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
286
PROGRAMA: Poli3.m
% Este programa ilustra como puede determinarse un polinomio
% a partir de las races
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% A partir de las races el polinomio puede ser determinado
% mediante la instruccin:
%
% y = poly(r)
%
r1=[-3.0000
2.0000
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
287
-2.0000
1.0000];
r2=[-1.2338
-1.0000
0.3669 + 0.5203i
0.3669 - 0.5203i];
r3=[ 0
-0.5891 + 1.0865i
-0.5891 - 1.0865i
0.5891 + 1.0865i
0.5891 - 1.0865i];
y1=poly(r1);
y2=poly(r2);
y3=poly(r3);
disp(' RAICES_1 ')
disp(r1)
disp(' POLINOMIO_1 ')
disp(y1)
disp(' RAICES_2 ')
disp(r2)
disp(' POLINOMIO_2 ')
disp(y2)
disp(' RAICES_3 ')
disp(r3)
disp(' POLINOMIO_3 ')
disp(y3)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
288
RAICES_1
-3
2
-2
1
POLINOMIO_1
1 2 -7 -8 12
RAICES_2
-1.2338
-1.0000
0.3669 + 0.5203i
0.3669 - 0.5203i
POLINOMIO_2
Columns 1 through 4
1.0000 1.5000 0.0000 0.0001
Column 5
0.5001 - 0.0000i
RAICES_3
0
-0.5891 + 1.0865i
-0.5891 - 1.0865i
0.5891 + 1.0865i
0.5891 - 1.0865i
POLINOMIO_3
Columns 1 through 4
1.0000 0 1.6669 0 - 0.0000i
Columns 5 through 6
2.3333 + 0.0000i 0
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
289
PROGRAMA: Poli4.m
% Este programa ilustra como puede evaluarse un polinomio
% en un rango de valores
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser evaluado con la instruccin:
%
% yi = polyval(y,xi)
%
% Donde:
%
% y = polinomio en (x)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
290
%
% yi = valor del polinomio cuando x = xi
%
y=[3 6 -1 -3 6];
xi=2;
yi=polyval(y,xi);
disp('POLINOMIO ')
disp(y)
disp('EVALUAR EL POLINOMIO EN xi = 2 ')
disp(xi)
disp('EL VALOR DEL POLINOMIO EN ( xi = 2 ) ES :')
disp(yi)
POLINOMIO
3 6 -1 -3 6
EVALUAR EL POLINOMIO EN xi = 2
2
EL VALOR DEL POLINOMIO EN ( xi = 2 ) ES :
92
PROGRAMA: Poli5.m
% Este programa ilustra como puede evaluarse un polinomio
% en un rango de valores
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
291
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser evaluado con la instruccin:
%
% yi = polyval(y,xi)
%
% Donde:
%
% y = polinomio en (x)
%
% yi = valor del polinomio cuando x = xi
%
% xi puede ser un vector
%
y=[3 6 -1 -3 6];
xi=0:1:20;
yi=polyval(y,xi);
disp('POLINOMIO ')
disp(y)
disp('EVALUAR EL POLINOMIO EN ( xi ) IGUAL A')
disp(xi)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
292
disp('LOS VALORES DEL POLINOMIO EN ( xi ) SON :')
disp(yi)
POLINOMIO
3 6 -1 -3 6
EVALUAR EL POLINOMIO EN ( xi ) IGUAL A
Columns 1 through 12
0 1 2 3 4 5 6 7 8 9 10 11
Columns 13 through 21
12 13 14 15 16 17 18 19 20
LOS VALORES DEL POLINOMIO EN ( xi ) SON :
Columns 1 through 6
6 11 92 393 1130 2591
Columns 7 through 12
5136 9197 15278 23955 35876 51761
Columns 13 through 18
72402 98663 131480 171861 220886 279707
Columns 19 through 21
349548 431705 527546
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
293
PROGRAMA: Poli6.m
% Este programa ilustra como puede evaluarse un polinomio
% en un rango de valores
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser evaluado con la instruccin:
%
% yi = polyval(y,xi)
%
% Donde:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
294
% y = polinomio en (x)
%
% yi = valor del polinomio cuando x = xi
%
% xi puede ser un vector
%
y=[3 6 -1 -3 6];
xi=0:1:20;
yi=polyval(y,xi);
disp('POLINOMIO ')
disp(y)
disp('EVALUAR EL POLINOMIO EN xi IGUAL A')
disp(xi)
disp('EL VALOR DEL POLINOMIO ES:')
disp(yi)
input(' ============> ENTER <============= ');
plot(xi,yi,'ro',xi,yi)
title('EVALUACIN DE UN POLINOMIO')
ylabel('POLINOMIO EVALUADO (yi) ')
xlabel('VALORES DE (xi)')
POLINOMIO
3 6 -1 -3 6
EVALUAR EL POLINOMIO EN xi IGUAL A
Columns 1 through 12
0 1 2 3 4 5 6 7 8 9 10 11
Columns 13 through 21
12 13 14 15 16 17 18 19 20
EL VALOR DEL POLINOMIO ES:
Columns 1 through 6
6 11 92 393 1130 2591
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
295
Columns 7 through 12
5136 9197 15278 23955 35876 51761
Columns 13 through 18
72402 98663 131480 171861 220886 279707
Columns 19 through 21
349548 431705 527546
============> ENTER <=============
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
296
0 5 10 15 20
0
1
2
3
4
5
6
x 10
5
EVALUACION DE UN POLINOMIO
P
O
L
I
N
O
M
I
O

E
V
A
L
U
A
D
O

(
y
i
)

VALORES DE (xi)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
297
PROGRAMA: Poli7.m
% Este programa ilustra como puede evaluarse un polinomio
% en un rango de valores
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser evaluado con la instruccin:
%
% yi = polyval(y,xi)
%
% Donde:
%
% y = polinomio en (x)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
298
%
% yi = valor del polinomio cuando x = xi
%
% xi puede ser un vector
%
y=[-0.2015 1.4385 -2.7477 5.4370];
xi=0:.2:6;
yi=polyval(y,xi);
disp('POLINOMIO ')
disp(y)
disp('EVALUAR EL POLINOMIO EN xi IGUAL A')
disp(xi)
disp('EL VALOR DEL POLINOMIO ES:')
disp(yi)
input(' ============> ENTER <============= ');
plot(xi,yi,'ro',xi,yi)
title('EVALUACIN DE UN POLINOMIO')
ylabel('POLINOMIO EVALUADO (yi) ')
xlabel('VALORES DE (xi)')
POLINOMIO
-0.2015 1.4385 -2.7477 5.4370
EVALUAR EL POLINOMIO EN xi IGUAL A
Columns 1 through 7
0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000
Columns 8 through 14
1.4000 1.6000 1.8000 2.0000 2.2000 2.4000 2.6000
Columns 15 through 21
2.8000 3.0000 3.2000 3.4000 3.6000 3.8000 4.0000
Columns 22 through 28
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
299
4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000
Columns 29 through 31
5.6000 5.8000 6.0000
EL VALOR DEL POLINOMIO ES:
Columns 1 through 7
5.4370 4.9434 4.5552 4.2627 4.0563 3.9263 3.8630
Columns 8 through 14
3.8568 3.8979 3.9767 4.0836 4.2088 4.3427 4.4757
Columns 15 through 21
4.5980 4.6999 4.7718 4.8041 4.7871 4.7110 4.5662
Columns 22 through 28
4.3431 4.0319 3.6230 3.1068 2.4735 1.7135 0.8171
Columns 29 through 31
-0.2254 -1.4236 -2.7872
============> ENTER <=============
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
300
0 1 2 3 4 5 6
-3
-2
-1
0
1
2
3
4
5
6
EVALUACI ON DE UN POLI NOMI O
P
O
L
I
N
O
M
I
O

E
V
A
L
U
A
D
O

(
y
i
)

VALORES DE ( x i )
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
301
PROGRAMA: Poli8.m
% Este programa ilustra como puede evaluarse un polinomio
% en un rango de valores
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser evaluado con la instruccin:
%
% yi = polyval(y,xi)
%
% Donde:
%
% y = polinomio en (x)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
302
%
% yi = valor del polinomio cuando x = xi
%
% xi puede ser un vector
%
y=[-0.2015 1.4385 -2.7477 5.4370];
xi=[-4:1:4]';
yi=polyval(y,xi);
m=[xi,yi];
disp('POLINOMIO ')
disp(y)
disp(' Xi VALOR')
disp(m)
input(' ============> ENTER <============= ');
plot(xi,yi,'wo',xi,yi,'w-')
title('EVALUACIN DE UN POLINOMIO')
ylabel('POLINOMIO EVALUADO (yi) ')
xlabel('VALORES DE (xi)')
POLINOMIO
-0.2015 1.4385 -2.7477 5.4370
Xi VALOR
-4.0000 52.3398
-3.0000 32.0671
-2.0000 18.2984
-1.0000 9.8247
0 5.4370
1.0000 3.9263
2.0000 4.0836
3.0000 4.6999
4.0000 4.5662
============> ENTER <=============
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
303
-4 -3 -2 -1 0 1 2 3 4
0
1 0
2 0
3 0
4 0
5 0
6 0
EVALUACI ON DE UN POLI NOMI O
P
O
L
I
N
O
M
I
O

E
V
A
L
U
A
D
O

(
y
i
)

VALORES DE ( x i )
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
304
PROGRAMA: Poli9.m
% Este programa ilustra como puede ajustarse un polinomio
% a partir de un conjunto de datos:
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser ajustado con la instruccin:
%
% c = polyfit(x,y,n)
%
% Donde:
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
305
% c = vector con los coeficientes del polinomio
%
% x = vector con los datos de (x)
%
% y = vector con los datos de (y)
%
% n = orden del polinomio
% n = nmero de datos de (x) menos uno
%
coeficientes_conocidos=[-0.2015 1.4385 -2.7477 5.4370];
% coeficientes conocidos del problema anterior ( poli8 )
x=[-4,-3,-2,-1,0,1,2,3,4];
y=[ 52.3398
32.0671
18.2984
9.8247
5.4370
3.9263
4.0836
4.6999
4.5662]';
n=length(x)-1; % longitud o nmeros de valores del vector
[c]=polyfit(x,y,n);
disp('POLINOMIO CONOCIDO ')
disp(coeficientes_conocidos)
disp('POLINOMIO AJUSTADO')
disp(c)
POLINOMIO CONOCIDO
-0.2015 1.4385 -2.7477 5.4370
POLINOMIO AJUSTADO
Columns 1 through 7
0.0000 0.0000 0.0000 0.0000 0.0000 -0.2015 1.4385
Columns 8 through 9
-2.7477 5.4370
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
306
PROGRAMA: Poli10.m
% Este programa ilustra como puede ajustarse un polinomio
% a partir de un conjunto de datos:
%
% Un polinomio puede expresarse de la siguiente forma:
%
% c1*x^n + c2*x^n-1 + ..... + cn*x + cn+1 = y
%
% Otra forma:
%
% c1*(x-r1)(x-r2)(x-r3)....(x-rn) = y
%
% Donde:
%
% r1,r2,r3, ...... ,rn son las races del polinomio
% Los valores que hacen al polinomio igual a cero
%
% c1,c2,c3, ....... ,cn son los coeficientes del polinomio
%
% Ejemplo:
%
% x^4 + 2*x^3 - 7*x^2 - 8*x + 12 = y
%
% (x-1)(x-2)(x+2)(x+3) = y
%
% En MATLAB los polinomios se introducen de la siguiente manera:
%
% y = [c1,c2,c3,c4,.....,cn]
%
% Un polinomio puede ser ajustado con la instruccin:
%
% c = polyfit(x,y,n)
%
% Donde:
%
% c = vector con los coeficientes del polinomio
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
307
%
% x = vector con los datos de (x)
%
% y = vector con los datos de (y)
%
% n = orden del polinomio
% n = nmero de datos de (x) menos uno
%
x=[-4,-3,-2,-1,0,1,2,3,4];
y=[ 3.5214,1.2654,-1.0284,-2.3547,-1.2784,0.00147,2.3547,5.2647,6.2147];
n=length(x)-1; % longitud o nmeros de valores del vector
[c]=polyfit(x,y,n);
disp('POLINOMIO AJUSTADO')
disp(c)
c_eval1=polyval(c,x);
xi=[-4:.01:4]; % para evaluar el polinomio con mas puntos
c_eval2=polyval(c,xi);
input(' ============> ENTER <============= ');
plot(x,c_eval1,'wo',xi,c_eval2,'w--',x,y,'w-')
title('AJUSTE DE UN POLINOMIO')
ylabel('POLINOMIO EVALUADO (yi) ')
xlabel('VALORES DE X')
POLINOMIO AJUSTADO
Columns 1 through 7
0.0009 -0.0007 -0.0283 0.0190 0.2502 -0.1913 -0.1210
Columns 8 through 9
1.3511 -1.2784
============> ENTER <=============
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
308
-4 -3 -2 -1 0 1 2 3 4
-3
-2
-1
0
1
2
3
4
5
6
7
AJ USTE DE UN POL I NOMI O
P
O
L
I
N
O
M
I
O

E
V
A
L
U
A
D
O

(
y
i
)

VAL ORES DE X
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
309
PROGRAMA: Poli11.m
% Este programa ilustra como pueden sumarse polinomios
%
%
% En MATLAB los polinomios se suman o restan de
% la siguiente forma:
%
% pr = p1 - p2
% pr = p1 + p2
%
% Donde:
% pr = polinomio resultante
%
% p1 = polinomio nmero 1
%
% p2 = polinomio nmero 2
%
% Si los polinomios son de diferentes tamaos, el de menor
% tamao se debe rellenar con ceros hasta igualar el tamao
% del polinomio mayor
% ejemplos:
p1=[2,9,3,7,2];
p2=[8,1,7,3,8];
p3=[3,8];
pr1=p1+p2;
disp('POLINOMIO P1')
disp(p1)
disp('POLINOMIO P2')
disp(p2)
disp('POLINOMIO P3')
disp(p3)
disp('POLINOMIO RESULTANTE pr1 = p1 + p2')
disp(pr1)
disp('POLINOMIO RESULTANTE pr2 = p1 + p3')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
310
disp('pr2=p1+p2 =====> error - polinomios diferentes tamaos')
%pr2=p1+p3 % esta operacin es errnea, ya que los
% polinomios son de diferentes tamaos.
% para corregir esto y proceder con el clculo
% se puede hacer lo siguiente:
n1=length(p1);
disp('nmero de elementos del polinomio p1'),n1
n3=length(p3);
disp('nmero de elementos del polinomio p3'),n3
nr=n1-n3;
disp('diferencia en el nmero de elementos entre p1 y p3'),nr
pa(1,nr)=0; % vector de ceros para igualar tamaos de los polinomios
disp('polinomio de ceros para igualar tamaos'),pa
% pa3 = polinomio ajustado p3
pa3=[pa,p3];
disp('polinomio ajustado con ceros para igualar tamaos'),pa3
disp('AHORA SI PROCEDE LA OPERACIN DE SUMA DE POLINOMIOS')
disp('polinomio p1'),p1
disp('polinomio p3 ajustado'),pa3
pr2=p1+pa3;
disp('resultado de la suma entre p1 p3'),pr2
POLINOMIO P1
2 9 3 7 2
POLINOMIO P2
8 1 7 3 8
POLINOMIO P3
3 8
POLINOMIO RESULTANTE pr1 = p1 + p2
10 10 10 10 10
POLINOMIO RESULTANTE pr2 = p1 + p3
pr2=p1+p2 =====> error - polinomios diferentes tamaos
nmero de elementos del polinomio p1
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
311
n1 =
5
nmero de elementos del polinomio p3
n3 =
2
diferencia en el nmero de elementos entre p1 y p3
nr =
3
polinomio de ceros para igualar tamaos
pa =
0 0 0
polinomio ajustado con ceros para igualar tamaos
pa3 =
0 0 0 3 8
AHORA SI PROCEDE LA OPERACIN DE SUMA DE POLINOMIOS
polinomio p1
p1 =
2 9 3 7 2
polinomio p3 ajustado
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
312
pa3 =
0 0 0 3 8
resultado de la suma entre p1 p3
pr2 =
2 9 3 10 10
PROGRAMA: Poli12.m
% Este programa ilustra como pueden restarse polinomios
%
%
% En MATLAB los polinomios se suman o restan de
% la siguiente forma:
%
% pr = p1 - p2
% pr = p1 + p2
%
% Donde:
% pr = polinomio resultante
%
% p1 = polinomio nmero 1
%
% p2 = polinomio nmero 2
%
% Si los polinomios son de diferentes tamaos, el de menor
% tamao se debe rellenar con ceros hasta igualar el tamao
% del polinomio mayor
% ejemplos:
p1=[2,9,3,7,2];
p3=[3,8];
lp1=length(p1);
lp3=length(p3);
nmeros_zeros=abs(lp1-lp3);
nz=[1:1:nmeros_zeros].*0;
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
313
p3m=[nz,p3]; % polinomio p3 modificado;
disp('POLINOMIO P1')
disp(p1)
disp('POLINOMIO P3')
disp(p3)
disp('POLINOMIO P3m MODIFICADO CON CEROS')
disp(p3m)
pr2=p1-p3m;
disp('POLINOMIO RESULTANTE pr2 = p1 - p3m')
disp(pr2)
POLINOMIO P1
2 9 3 7 2
POLINOMIO P3
3 8
POLINOMIO P3m MODIFICADO CON CEROS
0 0 0 3 8
POLINOMIO RESULTANTE pr2 = p1 - p3m
2 9 3 4 -6
PROGRAMA: Poli13.m
% Este programa ilustra como pueden multiplicarse polinomios
%
% pr = p1 * p2
%
% En MATLAB los polinomios se multiplican de
% la siguiente forma:
%
% pr = conv(p1,p2)
%
% Donde:
% pr = polinomio resultante
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
314
%
% p1 = polinomio nmero 1
%
% p2 = polinomio nmero 2
%
% ejemplos:
p1=[2,9,3,7,2];
p2=[3,8];
disp('POLINOMIO P1')
disp(p1)
disp('POLINOMIO P2')
disp(p2)
pr2=conv(p1,p2);
disp('POLINOMIO RESULTANTE pr2 = p1 * p2')
disp(pr2)
POLINOMIO P1
2 9 3 7 2
POLINOMIO P2
3 8
POLINOMIO RESULTANTE pr2 = p1 * p2
6 43 81 45 62 16
PROGRAMA: Poli14.m
% Este programa ilustra como pueden multiplicarse polinomios
%
% pr = p1 * p2 * p3 * p4
%
% En MATLAB los polinomios se multiplican de
% la siguiente forma:
%
% pr = conv(p1,p2)
%
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
315
% Donde:
% pr = polinomio resultante
%
% p1 = polinomio nmero 1
%
% p2 = polinomio nmero 2
%
% p3 = polinomio nmero 3
%
% p4 = polinomio nmero 4
%
% En este caso se debe utilizar la instruccin (conv)
% en forma sucesiva
% ejemplos:
p1=[2,9,3,7,2];
p2=[3,8];
p3=[-3,-5,7];
p4=[0.001,0.025,0.0023];
disp('POLINOMIO P1'),p1
disp('POLINOMIO P2'),p2
disp('POLINOMIO P3'),p3
disp('POLINOMIO P4'),p4
pr1=conv(p1,p2);
disp('POLINOMIO RESULTANTE pr1 = p1 * p2'),pr1
pr2=conv(pr1,p3);
disp('POLINOMIO RESULTANTE pr2 = p1 * p2 * p3'),pr2
pr3=conv(pr2,p4);
disp('POLINOMIO RESULTANTE pr3 = p1 * p2 * p3 * p4'),pr3
POLINOMIO P1
p1 =
2 9 3 7 2
POLINOMIO P2
p2 =
3 8
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
316
POLINOMIO P3
p3 =
-3 -5 7
POLINOMIO P4
p4 =
0.0010 0.0250 0.0023
POLINOMIO RESULTANTE pr1 = p1 * p2
pr1 =
6 43 81 45 62 16
POLINOMIO RESULTANTE pr2 = p1 * p2 * p3
pr2 =
-18 -159 -416 -239 156 -43 354 112
POLINOMIO RESULTANTE pr3 = p1 * p2 * p3 * p4
pr3 =
Columns 1 through 7
-0.0180 -0.6090 -4.4324 -11.0047 -6.7758 3.3073 -0.3622
Columns 8 through 10
8.8631 3.6142 0.2576
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
317
PROGRAMA: Poli15.m
% Este programa ilustra como pueden dividirse polinomios
%
% pr = p1 / p2
%
% En MATLAB los polinomios se dividen de
% la siguiente forma:
%
% pr = deconv(p1,p2)
%
% Donde:
% pr = polinomio resultante
%
% p1 = polinomio nmero 1
%
% p2 = polinomio nmero 2
%
% ejemplos:
p1=[2,9,3,7,2];
p2=[3,8];
disp('POLINOMIO P1')
disp(p1)
disp('POLINOMIO P2')
disp(p2)
pr1=deconv(p1,p2);
disp('POLINOMIO RESULTANTE pr1 = p1 / p2')
disp(pr1)
POLINOMIO P1
2 9 3 7 2
POLINOMIO P2
3 8
POLINOMIO RESULTANTE pr1 = p1 / p2
0.6667 1.2222 -2.2593 8.3580
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
318
AJUSTE DE CURVAS
PROGRAMA: Ajuste1.m
% Este programa ilustra como se puede ajustar una curva
% o realizar una interpolacin
%
% MATLAB permite ajustar curvas por el mtodo de los mnimos
% cuadrados mediante la instruccin (polyfit)
%
% c = polyfit(x,y,n)
%
% Donde:
% c = coeficientes del polinomio ajustado a los datos
% x = datos de (x)
% y = datos de (y)
% n = el orden del polinomio ajustado a los datos
%
% Ejemplo:
x=[1:1:20];
y=[-0.23,2,6,12.1,25.8,18,4,-11,-20,-8,-0.026,11,14,-0.47,-15,-35,-25,-10,0,26];
%
%
n=2; % ajuste de datos con polinomio de segundo orden
c1=polyfit(x,y,n);
c1_val=polyval(c1,x);
subplot(2,2,1)
plot(x,y,'ro',x,c1_val)
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
%
%
n=6; % ajuste de datos con polinomio de sexto orden
c2=polyfit(x,y,n);
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
319
c2_val=polyval(c2,x);
subplot(2,2,2)
plot(x,y,'ro',x,c2_val)
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
%
%
n=8; % ajuste de datos con polinomio de octavo orden
c3=polyfit(x,y,n);
c3_val=polyval(c3,x);
subplot(2,2,3)
plot(x,y,'ro',x,c3_val)
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
%
%
n=19; % ajuste de datos con polinomio de vigsimo orden
c4=polyfit(x,y,n);
c4_val=polyval(c4,x);
subplot(2,2,4)
plot(x,y,'ro',x,c4_val)
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
320
0 10 20
-40
-20
0
20
40
V
A
L
O
R
E
S

D
E

(
y
)
VALORES DE (X)
0 10 20
-40
-20
0
20
40
V
A
L
O
R
E
S

D
E

(
y
)
VALORES DE (X)
0 10 20
-40
-20
0
20
40
V
A
L
O
R
E
S

D
E

(
y
)
VALORES DE (X)
0 10 20
-40
-20
0
20
40
V
A
L
O
R
E
S

D
E

(
y
)
VALORES DE (X)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
321
PROGRAMA: Ajuste2.m
% Este programa ilustra como se puede ajustar una curva
% o realizar una interpolacin
%
% MATLAB permite ajustar curvas por el mtodo de los mnimos
% cuadrados mediante la instruccin (polyfit)
%
% c = polyfit(x,y,n)
%
% Donde:
% c = coeficientes del polinomio ajustado a los datos
% x = datos de (x)
% y = datos de (y)
% n = el orden del polinomio ajustado a los datos
%
% Ejemplo:
x=[1:1:20];
y=[-0.23,2,6,12.1,25.8,18,4,-11,-20,-8,-0.026,11,14,-0.47,-15,-35,-25,-10,0,26];
%
%
n=8; % ajuste de datos con polinomio de dcimo segundo orden
c1=polyfit(x,y,n);
c1_val=polyval(c1,x);
plot(x,y,'wo',x,c1_val,'w-')
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
322
0 5 1 0 1 5 2 0
- 40
- 30
- 20
- 10
0
1 0
2 0
3 0
V
A
L
O
R
E
S

D
E

(
y
)
VAL ORES DE ( X)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
323
PROGRAMA: Ajuste3.m
% Este programa ilustra como se puede ajustar una curva
% o realizar una interpolacin
%
% MATLAB permite ajustar curvas por el mtodo de los mnimos
% cuadrados mediante la instruccin (polyfit)
%
% c = polyfit(x,y,n)
%
% Donde:
% c = coeficientes del polinomio ajustado a los datos
% x = datos de (x)
% y = datos de (y)
% n = el orden del polinomio ajustado a los datos
%
% Ejemplo:
x=[1:1:20];
y=[-0.23,2,6,12.1,25.8,18,4,-11,-20,-8,-0.026,11,14,-0.47,-15,-35,-25,-10,0,26];
%
%
n=8; % ajuste de datos con polinomio de octavo orden
c1=polyfit(x,y,n);
xi=linspace(1,20,100);
c1_val=polyval(c1,xi);
plot(x,y,'wo',xi,c1_val,'w-')
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
324
0 5 1 0 1 5 2 0
- 40
- 30
- 20
- 10
0
1 0
2 0
3 0
V
A
L
O
R
E
S

D
E

(
y
)
VAL ORES DE ( X)
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
325
PROGRAMA: Ajuste4.m
% Este programa ilustra como se puede ajustar una curva
% o realizar una interpolacin
%
% MATLAB permite ajustar curvas por el mtodo de los mnimos
% cuadrados mediante la instruccin (polyfit)
%
% c = polyfit(x,y,n)
%
% Donde:
% c = coeficientes del polinomio ajustado a los datos
% x = datos de (x)
% y = datos de (y)
% n = el orden del polinomio ajustado a los datos
%
% Ejemplo:
x=[1:1:20];
y=[-0.23,2,6,12.1,25.8,18,4,-11,-20,-8,-0.026,11,14,-0.47,-15,-35,-25,-10,0,26];
%
%
n=15; % ajuste de datos con polinomio de dcimo quinto orden
c1=polyfit(x,y,n);
xi=linspace(1,20,100);
c1_val=polyval(c1,xi);
plot(x,y,'wo',xi,c1_val,'w-')
ylabel('VALORES DE (y)')
xlabel('VALORES DE (X)')
I ntroduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
326
0 5 10 15 20
-60
-40
-20
0
20
40
60
80
V
A
L
O
R
E
S

D
E

(
y
)
VALORES DE ( X)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
328
PROGRAMA: Interpol1.m
% interpol1
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% POR EL MTODO APROXIMADO GRFICO
clc
close
clear
x=1:2.35:15; % GENERACIN DE LA VARIABLE MONTONA, UNIFORMEMENTE
% ESPACIADA
y=4.25+x.^(.2+0.0005.*x);
m=[x',y'];;
xi=5.0;
yi=4.25+xi.^(.2+0.0005.*xi);
disp('SE DISPONE DE UNA TABLA CON VALORES DE (X) y DE (Y)')
disp('SE DESEA CONOCER EL VALOR DE (Y) PARA (X=5.0)')
disp(' TABLA DE VALORES')
disp('__________________________ ')
disp(' ')
disp(' X Y ')
disp('__________________________ ')
disp(m)
disp(' ')
input('PRESIONAR enter PARA CONTINUAR')
disp(' ')
disp(' ')
disp('SE UTILIZAR EL MTODO GRFICO APROXIMADO,')
disp('PARA ELLO SE GRAFICAN LOS VALORES DE LA TABLA.')
disp('LUEGO,CON AYUDA DEL BOTN DE AMPLIACIN, (zoom in)')
disp('EN LA BARRA DE BOTONES,DE LA VENTANA DE LA FIGURA,')
disp('SE AMPLIFICA LA GRFICA')
disp('COLOCANDO EL PUNTERO DEL RATN,EN UN PUNTO SOBRE LA CURVA,')
disp('CORRESPONDIENTE AL VALOR DE X=5.0,')
disp('Y PRESIONANDO EL BOTN DE LA IZQUIERDA,DEL RATN ')
disp('TANTAS VECES COMO SE QUIERA AMPLIFICAR LA GRAFICA')
disp('AL FINAL,SE PUEDE LEER EL CORRESPONDIENTE VALOR DE (Y)')
disp(' ')
disp('PARA TENER IDEA DEL ERROR QUE SE COMETE CON ESTE MTODO')
disp('SE INDICAR A CONTINUACIN EL VALOR VERDADERO DE (Y) PARA
(X=5.0)')
fprintf('PARA X=5.0 EL VALOR DE Y=%2.4f',yi)
disp(' ')
disp(' ')
disp('PARA TRABAJAR CON LA GRFICA, PULSE enter')
input('')
plot(x,y,'ro',x,y,'b-')
YLABEL('VALORES DE Y ')
XLABEL('VALORES DE X ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
329
TITLE('GRFICA DE Y versus X, PARA X=5.0 VALOR VERDADERO DE Y=
5.6353 ')
grid
SE DISPONE DE UNA TABLA CON VALORES DE (X) y VALORES DE (Y)
SE DESEA CONOCER EL VALOR DE (Y) PARA (X=5.0)
TABLA DE VALORES
__________________________
X Y
__________________________
1.0000 5.2500
3.3500 5.5261
5.7000 5.6734
8.0500 5.7804
10.4000 5.8669
12.7500 5.9410
PRESIONAR enter PARA CONTINUAR
SE UTILIZAR EL MTODO GRFICO APROXIMADO,
PARA ELLO SE GRAFICAN LOS VALORES DE LA TABLA.
LUEGO,CON AYUDA DEL BOTN DE AMPLIACIN, (zoom in)
EN LA BARRA DE BOTONES,DE LA VENTANA DE LA FIGURA,
SE AMPLIFICA LA GRFICA
COLOCANDO EL PUNTERO DEL RATN,EN UN PUNTO SOBRE LA CURVA,
CORRESPONDIENTE AL VALOR DE X=5.0,
Y PRESIONANDO EL BOTN DE LA IZQUIERDA,DEL RATN
TANTAS VECES COMO SE QUIERA AMPLIFICAR LA GRAFICA
AL FINAL,SE PUEDE LEER EL CORRESPONDIENTE VALOR DE (Y)
PARA TENER UNA IDEA DEL ERROR QUE SE COMETE CON ESTE MTODO
SE INDICAR A CONTINUACIN EL VALOR VERDADERO DE (Y) PARA
(X=5.0)
PARA X=5.0 EL VALOR DE Y=5.6353
PARA TRABAJAR CON LA GRFICA, PULSE enter
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
330
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
331
PROGRAMA: Interpol2.m
% interpol2
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi)
%
% DONDE:
% yi = VALOR INTERPOLADO
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALOR CORRESPONDIENTE A LA VARIABLE (Y)
% y = VALOR CORRESPONDIENTE A LA VARIABLE (x)
% xi = VALOR DE (x), AL CUAL SE DESEA INTERPOLAR
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA, DE LO CONTRARIO
DAR ERROR
clc
close
clear
x=1:2.35:15; % GENERACIN DE LA VARIABLE MONTONA, UNIFORMEMENTE
ESPACIADA
y=4.25+x.^(.2+0.0005.*x); % GENERACIN DE LA TABLA
m=[x',y']; % TABLA
xi=5.0;
yc=4.25+xi.^(.2+0.0005.*xi);
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA (xi=5.0)')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi) ')
disp(' TABLA DE VALORES')
disp('__________________________ ')
disp(' ')
disp(' x y ')
disp('__________________________ ')
disp(m)
yi=interp1(x,y,xi);
fprintf('xi=%2.2f VERDADERO yc =%2.4f INTERPOLADO yi = %2.4f\n',xi,yc,yi)
disp('POR QUE ESTE RESULTADO ES IGUAL AL DEL PROGRAMA ANTERIOR ?')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
332
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA (xi=5.0)
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi)
TABLA DE VALORES
__________________________
x y
__________________________
1.0000 5.2500
3.3500 5.5261
5.7000 5.6734
8.0500 5.7804
10.4000 5.8669
12.7500 5.9410
xi=5.00 VERDADERO yc =5.6353 INTERPOLADO yi = 5.6295
POR QUE ESTE RESULTADO ES IGUAL AL DEL PROGRAMA ANTERIOR ?
PROGRAMA: Interpol3.m
% interpol3
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi)
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALOR CORRESPONDIENTE A LA VARIABLE (Y)
% y = VALOR CORRESPONDIENTE A LA VARIABLE (x)
% xi = VECTOR CON LOS VALORES DE (x),
% A LOS CUALES SE DESEA INTERPOLAR
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR
clc
close
clear
x=1:2.35:15; % GENERACIN DE LA VARIABLE MONTONA, UNIFORMEMENTE
ESPACIADA
y=4.25+x.^(.2+0.0005.*x); % GENERACIN DE LA TABLA
m=[x',y']; % TABLA
xi=[3.0,5.0,7.0,9.0,15.0]'; % VECTOR CON LOS VALORES DE xi
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
333
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA,
% POR LO TANTO LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
yc=4.25+xi.^(.2+0.0005.*xi); % VALORES CALCULADOS
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE
(y)')
disp('SE DESEA CONOCER LOS VALORES DE (yi) ')
disp('PARA UNA SERIE DE VALOES DE xi')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi) ')
disp(' TABLA DE VALORES')
disp(' x y ')
disp('------------------------------')
disp(m)
yi=interp1(x,y,xi);
l=length(xi);
for n=1:l
fprintf(' xi=%2.2f CALCULADO yc =%2.4f INTERPOLADO yi =
%2.4f\n',xi(n),yc(n),yi(n))
end
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER LOS VALORES DE (yi)
PARA UNA SERIE DE VALOES DE xi
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi)
TABLA DE VALORES
x y
------------------------------
1.0000 5.2500
3.3500 5.5261
5.7000 5.6734
8.0500 5.7804
10.4000 5.8669
12.7500 5.9410
xi=3.00 CALCULADO yc =5.4978 INTERPOLADO yi = 5.4850
xi=5.00 CALCULADO yc =5.6353 INTERPOLADO yi = 5.6295
xi=7.00 CALCULADO yc =5.7359 INTERPOLADO yi = 5.7326
xi=9.00 CALCULADO yc =5.8173 INTERPOLADO yi = 5.8154
xi=15.00 CALCULADO yc =6.0040 INTERPOLADO yi = NaN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
334
PROGRAMA: Interpol4.m
% interpol4
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi)
%
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x),
% A LOS CUALES SE DESEA INTERPOLAR
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR.
% LA INTERPOLACIN SE REALIZA COMPARANDO
% LA PRIMERA COLUMNA DE LA MATRIZ (y)
% CON EL VECTOR (x), LUEGO LA SEGUNDA COLUMNA
% DE LA MATRIZ (y) CON EL VECTOR (x)
% Y ASI SUCESIVAMENTE.
% LOS RESULTADOS SON REPORTADOS EN LA MATRIZ (yi),
% EN LA CUAL, EN CADA COLUMNA, SE ENCUENTRAN
% LOS VALORES INTERPOLADOS.
clc
close
clear
% GENERACIN DE LA MATRIZ (x)
for n=1:6
s=-1.35;
for m=1:6
s=s+2.35;
x(m,n)=s; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
y(m,n)=[n+4.25+x(m,n).^(.2+0.0005.*x(m,n))]';
% GENERACIN DE LA MATRIZ (y)
end
c=0;
for xi=[3.0,5.0,7.0,9.0,15.0]
c=c+1;
yc(c,n)=[n+4.25+xi.^(.2+0.0005.*xi)];
end
end
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
335
x=1:2.35:15; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
m=[x',y];
xi=[3.0,5.0,7.0,9.0,15.0];
mc=[xi',yc];
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA,
% POR LO TANTO LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA ...
xi=[3.0,5.0,7.0,9.0,15.0]')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi) ')
disp(' TABLA DE VALORES')
disp('_________________________________________________________ ')
disp(' ')
disp(' x y ')
disp('_________________________________________________________ ')
disp(m)
yi=interp1(x,y,xi);
disp('_________________________________________________________ ')
disp(' ')
disp(' xi yc ')
disp('_________________________________________________________ ')
disp(mc)
mi=[xi',yi];
disp('_________________________________________________________ ')
disp(' ')
disp(' xi yi ')
disp('_________________________________________________________ ')
disp(mi)
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA xi=[3.0,5.0,7.0,9.0,15.0]
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi)
TABLA DE VALORES
________________________________________________________________
x y
________________________________________________________________
1.0000 6.2500 7.2500 8.2500 9.2500 10.2500 11.2500
3.3500 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
5.7000 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
8.0500 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
336
10.4000 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
12.7500 6.9410 7.9410 8.9410 9.9410 10.9410 11.9410
________________________________________________________________
xi yc
________________________________________________________________
3.0000 6.4978 7.4978 8.4978 9.4978 10.4978 11.4978
5.0000 6.6353 7.6353 8.6353 9.6353 10.6353 11.6353
7.0000 6.7359 7.7359 8.7359 9.7359 10.7359 11.7359
9.0000 6.8173 7.8173 8.8173 9.8173 10.8173 11.8173
15.0000 7.0040 8.0040 9.0040 10.0040 11.0040 12.0040
________________________________________________________________
xi yi
________________________________________________________________
3.0000 6.4850 7.4850 8.4850 9.4850 10.4850 11.4850
5.0000 6.6295 7.6295 8.6295 9.6295 10.6295 11.6295
7.0000 6.7326 7.7326 8.7326 9.7326 10.7326 11.7326
9.0000 6.8154 7.8154 8.8154 9.8154 10.8154 11.8154
15.0000 NaN NaN NaN NaN NaN NaN
PROGRAMA: Interpol5.m
% interpol5
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi)
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x),
% A LOS CUALES SE DESEA INTERPOLAR
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
337
% DE LO CONTRARIO DAR ERROR.
% LA INTERPOLACIN SE REALIZA COMPARANDO
% LA PRIMERA COLUMNA DE LA MATRIZ (y)
% CON EL VECTOR (x), LUEGO LA SEGUNDA COLUMNA
% DE LA MATRIZ (y) CON EL VECTOR (x)
% Y ASI SUCESIVAMENTE.
% LOS RESULTADOS SON REPORTADOS EN LA MATRIZ (yi),
% EN LA CUAL, EN CADA COLUMNA, SE ENCUENTRAN
% LOS VALORES INTERPOLADOS.
clc
close
clear
% GENERACIN DE LA MATRIZ (x)
for n=1:6
s=-1.35;
for m=1:6
s=s+2.35;
x(m,n)=s; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
% SOLO PARA LA GENERACIN DE LOS VALORES
% EN LA MATRIZ (y)
y(m,n)=[n+4.25+x(m,n).^(.2+0.0005.*x(m,n))]';
% GENERACIN DE LA MATRIZ (y)
end
c=0;
for xi=[3.0,5.0,7.0,9.0,15.0]
c=c+1;
yc(c,n)=[n+4.25+xi.^(.2+0.0005.*xi)]; % VALORES CALCULADOS
end
end
x=[1.12,3.01,4.25,7.56,8.45,12.25];
% GENERACIN DE LA VARIABLE MONTONA,
% NO UNIFORMEMENTE ESPACIADA,
% PARA LA GENERACIN DEL VECTOR COLUMNA DE (x)
m=[x',y];
xi=[3.0,5.0,7.0,9.0,15.0];
mc=[xi',yc]; % TABLA DE xi CON LOS VALORES CALCULADOS
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA,
% POR LO TANTO LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA
xi=[3.0,5.0,7.0,9.0,15.0]')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi) ')
disp(' TABLA DE VALORES')
disp('________________________________________________________ ')
disp(' ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
338
disp(' x y ')
disp('________________________________________________________ ')
disp(m)
yi=interp1(x,y,xi);
disp('________________________________________________________ ')
disp(' ')
disp(' xi yc ')
disp('________________________________________________________ ')
disp(mc)
mi=[xi',yi]; % TABLA DE xi CON LOS VALORES INTERPOLADOS
disp('________________________________________________________ ')
disp(' ')
disp(' xi yi ')
disp('________________________________________________________ ')
disp(mi)
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA xi=[3.0,5.0,7.0,9.0,15.0]
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi)
TABLA DE VALORES
________________________________________________________________
x y
________________________________________________________________
1.1200 6.2500 7.2500 8.2500 9.2500 10.2500 11.2500
3.0100 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
4.2500 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
7.5600 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
8.4500 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
12.2500 6.9410 7.9410 8.9410 9.9410 10.9410 11.9410
________________________________________________________________
xi yc
________________________________________________________________
3.0000 6.4978 7.4978 8.4978 9.4978 10.4978 11.4978
5.0000 6.6353 7.6353 8.6353 9.6353 10.6353 11.6353
7.0000 6.7359 7.7359 8.7359 9.7359 10.7359 11.7359
9.0000 6.8173 7.8173 8.8173 9.8173 10.8173 11.8173
15.0000 7.0040 8.0040 9.0040 10.0040 11.0040 12.0040
________________________________________________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
339
xi yi
________________________________________________________________
3.0000 6.5246 7.5246 8.5246 9.5246 10.5246 11.5246
5.0000 6.6977 7.6977 8.6977 9.6977 10.6977 11.6977
7.0000 6.7623 7.7623 8.7623 9.7623 10.7623 11.7623
9.0000 6.8777 7.8777 8.8777 9.8777 10.8777 11.8777
15.0000 NaN NaN NaN NaN NaN NaN
PROGRAMA: Interpol6.m
% interpol6
% ESTE PROGRAMA ILUSTRA UN ERROR COMN COMETIDO EN LA
INTERPOLACIN
% UNIDIMENSIONAL, LA VARIABLE (X) NO ES MONTONA:
%
% yi=interp1(x,y,xi)
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x),
% A LOS CUALES SE DESEA INTERPOLAR
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR.
% LA INTERPOLACIN SE REALIZA COMPARANDO
% LA PRIMERA COLUMNA DE LA MATRIZ (y)
% CON EL VECTOR (x), LUEGO LA SEGUNDA COLUMNA
% DE LA MATRIZ (y) CON EL VECTOR (x)
% Y ASI SUCESIVAMENTE.
% LOS RESULTADOS SON REPORTADOS EN LA MATRIZ (yi),
% EN LA CUAL, EN CADA COLUMNA, SE ENCUENTRAN
% LOS VALORES INTERPOLADOS.
clc
close
clear
% GENERACIN DE LA MATRIZ (x)
for n=1:6
s=-1.35;
for m=1:6
s=s+2.35;
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
340
x(m,n)=s;
% GENERACIN DE LA VARIABLE MONTONA, UNIFORMEMENTE ESPACIADA
% SOLO PARA LA GENERACIN DE LOS VALORES EN LA MATRIZ (y)
y(m,n)=[n+4.25+x(m,n).^(.2+0.0005.*x(m,n))]';
% GENERACIN DE LA MATRIZ (y)
end
c=0;
for xi=[3.0,5.0,7.0,9.0,15.0]
c=c+1;
yc(c,n)=[n+4.25+xi.^(.2+0.0005.*xi)]; % VALORES CALCULADOS
end
end
% COMETIENDO EL ERROR
x=[1.12,3.01,1.25,7.56,5.45,12.25];
% GENERACIN DE LA VARIABLE NO MONTONA,
% NO UNIFORMEMENTE ESPACIADA,
% PARA LA GENERACIN DEL VECTOR COLUMNA DE (x)
m=[x',y];
xi=[3.0,5.0,7.0,9.0,15.0];
mc=[xi',yc]; % TABLA DE xi CON LOS VALORES CALCULADOS
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA,
% POR LO TANTO LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
disp(' ')
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA
xi=[3.0,5.0,7.0,9.0,15.0]')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi) ')
disp(' TABLA DE VALORES')
disp('________________________________________________________ ')
disp(' ')
disp(' x y ')
disp('________________________________________________________ ')
disp(m)
disp(' ')
disp(' ESTE PROGRAMA DEBE DAR ERROR DEBIDO A QUE ')
disp(' LA VARIABLE (X) NO ES MONTONA')
disp(' ')
disp(' [ENTER] ')
input(' ')
yi=interp1(x,y,xi);
disp('________________________________________________________ ')
disp(' ')
disp(' xi yc ')
disp('________________________________________________________ ')
disp(mc)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
341
mi=[xi',yi]; % TABLA DE xi CON LOS VALORES INTERPOLADOS
disp('________________________________________________________ ')
disp(' ')
disp(' xi yi ')
disp('________________________________________________________ ')
disp(mi)
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA xi=[3.0,5.0,7.0,9.0,15.0]
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi)
TABLA DE VALORES
________________________________________________________________
x y
________________________________________________________________
1.1200 6.2500 7.2500 8.2500 9.2500 10.2500 11.2500
3.0100 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
1.2500 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
7.5600 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
5.4500 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
12.2500 6.9410 7.9410 8.9410 9.9410 10.9410 11.9410
ESTE PROGRAMA DEBE DAR ERROR DEBIDO A QUE
LA VARIABLE (X) NO ES MONTONA
[ENTER]
??? Error using ==> interp1
X must be monotonic.
Error in ==> F:\MATLAB\PROGRAM\interpol6.m
On line 80 ==> yi=interp1(x,y,xi);
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
342
PROGRAMA: Interpol7.m
% interpol7
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi,'mtodo')
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x), A LOS
% CUALES SE DESEA INTERPOLAR
% 'mtodo' = TCNICA DE INTERPOLACIN, LOS CUALES SON:
% 'nearest' - nearest neighbor interpolation
% 'linear' - linear interpolation
% 'spline' - cubic spline interpolation
% 'cubic' - cubic interpolation
%
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR.
% LA INTERPOLACIN SE REALIZA COMPARANDO
% LA PRIMERA COLUMNA DE LA MATRIZ (y)
% CON EL VECTOR (x), LUEGO LA SEGUNDA COLUMNA
% DE LA MATRIZ (y) CON EL VECTOR (x)
% Y ASI SUCESIVAMENTE.
% LOS RESULTADOS SON REPORTADOS EN LA MATRIZ (yi),
% EN LA CUAL, EN CADA COLUMNA, SE ENCUENTRAN
% LOS VALORES INTERPOLADOS.
clc
close
clear
% GENERACIN DE LA MATRIZ (x)
for n=1:6
s=-1.35;
for m=1:6
s=s+2.35;
x(m,n)=s; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
% SOLO PARA LA GENERACIN DE LOS VALORES
% EN LA MATRIZ (y)
y(m,n)=[n+4.25+x(m,n).^(.2+0.0005.*x(m,n))]';
% GENERACIN DE LA MATRIZ (y)
end
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
343
c=0;
for xi=[3.0,5.0,7.0,9.0,15.0]
c=c+1;
yc(c,n)=[n+4.25+xi.^(.2+0.0005.*xi)]; % VALORES CALCULADOS
end
end
x=[1.12,3.01,4.25,7.56,8.45,12.25];
% GENERACIN DE LA VARIABLE MONTONA,
% NO UNIFORMEMENTE ESPACIADA,
% PARA LA GENERACIN DEL VECTOR COLUMNA DE (x)
m=[x',y];
xi=[3.0,5.0,7.0,9.0,15.0];
mc=[xi',yc]; % TABLA DE xi CON LOS VALORES CALCULADOS
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA,
% POR LO TANTO LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA
xi=[3.0,5.0,7.0,9.0,15.0]')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,nearest) ')
disp(' TABLA DE VALORES')
disp('_______________________________________________________ ')
disp(' ')
disp(' x y ')
disp('_______________________________________________________ ')
disp(m)
yi=interp1(x,y,xi,'nearest');
disp('_______________________________________________________ ')
disp(' ')
disp(' xi yc ')
disp('_______________________________________________________ ')
disp(mc)
mi=[xi',yi]; % TABLA DE xi CON LOS VALORES INTERPOLADOS
disp('_______________________________________________________ ')
disp(' ')
disp(' xi yi ')
disp('_______________________________________________________ ')
disp(mi)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
344
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA xi=[3.0,5.0,7.0,9.0,15.0]
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,nearest)
TABLA DE VALORES
________________________________________________________________
x y
________________________________________________________________
1.1200 6.2500 7.2500 8.2500 9.2500 10.2500 11.2500
3.0100 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
4.2500 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
7.5600 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
8.4500 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
12.2500 6.9410 7.9410 8.9410 9.9410 10.9410 11.9410
________________________________________________________________
xi yc
________________________________________________________________
3.0000 6.4978 7.4978 8.4978 9.4978 10.4978 11.4978
5.0000 6.6353 7.6353 8.6353 9.6353 10.6353 11.6353
7.0000 6.7359 7.7359 8.7359 9.7359 10.7359 11.7359
9.0000 6.8173 7.8173 8.8173 9.8173 10.8173 11.8173
15.0000 7.0040 8.0040 9.0040 10.0040 11.0040 12.0040
________________________________________________________________
xi yi
________________________________________________________________
3.0000 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
5.0000 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
7.0000 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
9.0000 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
15.0000 NaN NaN NaN NaN NaN NaN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
345
PROGRAMA: Interpol8.m
% interpol8
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi,'mtodo')
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x), A LOS
% CUALES SE DESEA INTERPOLAR
% 'mtodo' = TCNICA DE INTERPOLACIN, LOS CUALES SON:
% 'nearest' - nearest neighbor interpolation
% 'linear' - linear interpolation
% 'spline' - cubic spline interpolation
% 'cubic' - cubic interpolation
%
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR.
% LA INTERPOLACIN SE REALIZA COMPARANDO
% LA PRIMERA COLUMNA DE LA MATRIZ (y)
% CON EL VECTOR (x), LUEGO LA SEGUNDA COLUMNA
% DE LA MATRIZ (y) CON EL VECTOR (x)
% Y ASI SUCESIVAMENTE.
% LOS RESULTADOS SON REPORTADOS EN LA MATRIZ (yi),
% EN LA CUAL, EN CADA COLUMNA, SE ENCUENTRAN
% LOS VALORES INTERPOLADOS.
clc
close
clear
% GENERACIN DE LA MATRIZ (x)
for n=1:6
s=-1.35;
for m=1:6
s=s+2.35;
x(m,n)=s; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
% SOLO PARA LA GENERACIN DE LOS VALORES
% EN LA MATRIZ (y)
y(m,n)=[n+4.25+x(m,n).^(.2+0.0005.*x(m,n))]';
% GENERACIN DE LA MATRIZ (y)
end
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
346
c=0;
for xi=[3.0,5.0,7.0,9.0,15.0]
c=c+1;
yc(c,n)=[n+4.25+xi.^(.2+0.0005.*xi)]; % VALORES CALCULADOS
end
end
x=[1.12,3.01,4.25,7.56,8.45,12.25];
% GENERACIN DE LA VARIABLE MONTONA,
% NO UNIFORMEMENTE ESPACIADA,
% PARA LA GENERACIN DEL VECTOR COLUMNA DE (x)
m=[x',y];
xi=[3.0,5.0,7.0,9.0,15.0];
mc=[xi',yc]; % TABLA DE xi CON LOS VALORES CALCULADOS
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA, POR LO TANTO
% LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA
xi=[3.0,5.0,7.0,9.0,15.0]')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,spline) ')
disp(' TABLA DE VALORES')
disp('________________________________________________________ ')
disp(' ')
disp(' x y ')
disp('________________________________________________________ ')
disp(m)
yi=interp1(x,y,xi,'spline');
disp('________________________________________________________ ')
disp(' ')
disp(' xi yc ')
disp('________________________________________________________ ')
disp(mc)
mi=[xi',yi]; % TABLA DE xi CON LOS VALORES INTERPOLADOS
disp('________________________________________________________ ')
disp(' ')
disp(' xi yi ')
disp('________________________________________________________ ')
disp(mi)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
347
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA xi=[3.0,5.0,7.0,9.0,15.0]
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,spline)
TABLA DE VALORES
________________________________________________________________
x y
________________________________________________________________
1.1200 6.2500 7.2500 8.2500 9.2500 10.2500 11.2500
3.0100 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
4.2500 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
7.5600 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
8.4500 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
12.2500 6.9410 7.9410 8.9410 9.9410 10.9410 11.9410
________________________________________________________________
xi yc
________________________________________________________________
3.0000 6.4978 7.4978 8.4978 9.4978 10.4978 11.4978
5.0000 6.6353 7.6353 8.6353 9.6353 10.6353 11.6353
7.0000 6.7359 7.7359 8.7359 9.7359 10.7359 11.7359
9.0000 6.8173 7.8173 8.8173 9.8173 10.8173 11.8173
15.0000 7.0040 8.0040 9.0040 10.0040 11.0040 12.0040
________________________________________________________________
xi yi
________________________________________________________________
3.0000 6.5246 7.5246 8.5246 9.5246 10.5246 11.5246
5.0000 6.7138 7.7138 8.7138 9.7138 10.7138 11.7138
7.0000 6.7510 7.7510 8.7510 9.7510 10.7510 11.7510
9.0000 6.9324 7.9324 8.9324 9.9324 10.9324 11.9324
15.0000 5.3884 6.3884 7.3884 8.3884 9.3884 10.3884
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
348
PROGRAMA: Interpol9.m
% interpol9
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA INTERPOLACIN
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi,'mtodo')
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x), A LOS
% CUALES SE DESEA INTERPOLAR
% 'mtodo' = TCNICA DE INTERPOLACIN, LOS CUALES SON:
% 'nearest' - nearest neighbor interpolation
% 'linear' - linear interpolation
% 'spline' - cubic spline interpolation
% 'cubic' - cubic interpolation
%
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR.
% LA INTERPOLACIN SE REALIZA COMPARANDO
% LA PRIMERA COLUMNA DE LA MATRIZ (y)
% CON EL VECTOR (x), LUEGO LA SEGUNDA COLUMNA
% DE LA MATRIZ (y) CON EL VECTOR (x)
% Y ASI SUCESIVAMENTE.
% LOS RESULTADOS SON REPORTADOS EN LA MATRIZ (yi),
% EN LA CUAL, EN CADA COLUMNA, SE ENCUENTRAN
% LOS VALORES INTERPOLADOS.
clc
close
clear
% GENERACIN DE LA MATRIZ (x)
for n=1:6
s=-1.35;
for m=1:6
s=s+2.35;
x(m,n)=s; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
% SOLO PARA LA GENERACIN DE LOS VALORES
% EN LA MATRIZ (y)
y(m,n)=[n+4.25+x(m,n).^(.2+0.0005.*x(m,n))]';
% GENERACIN DE LA MATRIZ (y)
end
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
349
c=0;
for xi=[3.0,5.0,7.0,9.0,15.0]
c=c+1;
yc(c,n)=[n+4.25+xi.^(.2+0.0005.*xi)]; % VALORES CALCULADOS
end
end
x=[1.12,3.01,4.25,7.56,8.45,12.25];
% GENERACIN DE LA VARIABLE MONTONA,
% NO UNIFORMEMENTE ESPACIADA,
% PARA LA GENERACIN DEL VECTOR COLUMNA DE (x)
m=[x',y];
xi=[3.0,5.0,7.0,9.0,15.0];
mc=[xi',yc]; % TABLA DE xi CON LOS VALORES CALCULADOS
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA, POR LO TANTO
% LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
disp(' ')
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER EL VALOR DE (yi) PARA
xi=[3.0,5.0,7.0,9.0,15.0]')
disp(' ')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,cubic) ')
disp(' TABLA DE VALORES')
disp('________________________________________________________ ')
disp(' ')
disp(' x y ')
disp('________________________________________________________ ')
disp(m)
yi=interp1(x,y,xi,'cubic');
disp('________________________________________________________ ')
disp(' ')
disp(' xi yc ')
disp('________________________________________________________ ')
disp(mc)
mi=[xi',yi]; % TABLA DE xi CON LOS VALORES INTERPOLADOS
disp('________________________________________________________ ')
disp(' ')
disp(' xi yi ')
disp('________________________________________________________ ')
disp(mi)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
350
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER EL VALOR DE (yi) PARA xi=[3.0,5.0,7.0,9.0,15.0]
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,cubic)
TABLA DE VALORES
________________________________________________________________
x y
________________________________________________________________
1.1200 6.2500 7.2500 8.2500 9.2500 10.2500 11.2500
3.0100 6.5261 7.5261 8.5261 9.5261 10.5261 11.5261
4.2500 6.6734 7.6734 8.6734 9.6734 10.6734 11.6734
7.5600 6.7804 7.7804 8.7804 9.7804 10.7804 11.7804
8.4500 6.8669 7.8669 8.8669 9.8669 10.8669 11.8669
12.2500 6.9410 7.9410 8.9410 9.9410 10.9410 11.9410
________________________________________________________________
xi yc
________________________________________________________________
3.0000 6.4978 7.4978 8.4978 9.4978 10.4978 11.4978
5.0000 6.6353 7.6353 8.6353 9.6353 10.6353 11.6353
7.0000 6.7359 7.7359 8.7359 9.7359 10.7359 11.7359
9.0000 6.8173 7.8173 8.8173 9.8173 10.8173 11.8173
15.0000 7.0040 8.0040 9.0040 10.0040 11.0040 12.0040
________________________________________________________________
xi yi
________________________________________________________________
3.0000 6.5246 7.5246 8.5246 9.5246 10.5246 11.5246
5.0000 6.7138 7.7138 8.7138 9.7138 10.7138 11.7138
7.0000 6.7510 7.7510 8.7510 9.7510 10.7510 11.7510
9.0000 6.9324 7.9324 8.9324 9.9324 10.9324 11.9324
15.0000 NaN NaN NaN NaN NaN NaN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
351
PROGRAMA: Interpol10.m
% interpol10
% ESTE PROGRAMA COMPARA LA INTERPOLACIN UNIDIMENSIONAL
% UTILIZANDO VARIOS MTODOS
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi,'mtodo')
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x), A LOS
% CUALES SE DESEA INTERPOLAR
% 'mtodo' = TCNICA DE INTERPOLACIN, LOS CUALES SON:
% 'nearest' - nearest neighbor interpolation
% 'linear' - linear interpolation
% 'spline' - cubic spline interpolation
% 'cubic' - cubic interpolation
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR
clc
close
clear
x=1:2.35:15; % GENERACIN DE LA VARIABLE MONTONA,
% UNIFORMEMENTE ESPACIADA
y=4.25+x.^(.2+0.0005.*x); % GENERACIN DE LA TABLA
m=[x',y']; % TABLA
xi=[3.0,5.0,7.0,9.0,15.0]'; % VECTOR CON LOS VALORES DE xi
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA, POR LO TANTO
% LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
yc=4.25+xi.^(.2+0.0005.*xi); % VALORES CALCULADOS
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER LOS VALORES DE (yi) ')
disp('PARA UNA SERIE DE VALOES DE xi')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,mtodo) ')
disp('COMPARANDO LOS DIFERENTES MTODOS DISPONIBLES ')
disp(' TABLA DE VALORES')
disp(' x y ')
disp('------------------------------')
disp(m)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
352
yin=interp1(x,y,xi,'nearest'); % mtodo 'nearest'
yil=interp1(x,y,xi,'linear'); % mtodo 'linear'
yis=interp1(x,y,xi,'spline'); % mtodo 'spline'
yic=interp1(x,y,xi,'cubic'); % mtodo 'cubic'
disp(' calculado nearest linear spline cubic')
disp(' xi yc yin yil yis yic ')
disp('---------------------------------------------------------')
mr=[xi,yc,yin,yil,yis,yic];
disp(mr)
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER LOS VALORES DE (yi)
PARA UNA SERIE DE VALOES DE xi
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,mtodo)
COMPARANDO LOS DIFERENTES MTODOS DISPONIBLES
TABLA DE VALORES
x y
------------------------------
1.0000 5.2500
3.3500 5.5261
5.7000 5.6734
8.0500 5.7804
10.4000 5.8669
12.7500 5.9410
calculado nearest linear spline cubic
xi yc yin yil yis yic
------------------------------------------------------------------------
3.0000 5.4978 5.5261 5.4850 5.4957 5.4932
5.0000 5.6353 5.6734 5.6295 5.6367 5.6365
7.0000 5.7359 5.7804 5.7326 5.7354 5.7362
9.0000 5.8173 5.7804 5.8154 5.8175 5.8175
15.0000 6.0040 NaN NaN 6.0089 NaN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
353
PROGRAMA: Interpol11.m
% interpol11
% ESTE PROGRAMA COMPARA LA INTERPOLACIN UNIDIMENSIONAL
% UTILIZANDO VARIOS MTODOS
% CON LA INSTRUCCIN:
%
% yi=interp1(x,y,xi,'mtodo')
%
% DONDE:
% yi = VECTOR CON LOS VALORES INTERPOLADOS
% interp1 = INTERPOLACIN EN UNA (1) DIMENSIN
% x = VALORES QUE SE CORRESPONDEN A LAS COLUMNAS
% DE LA MATRIZ (y)
% y = MATRIZ CON LOS VALORES (EN LAS COLUMNAS)
% QUE SE CORRESPONDEN CON (x)
% xi = VECTOR CON LOS VALORES DE (x), A LOS
% CUALES SE DESEA INTERPOLAR
% 'mtodo' = TCNICA DE INTERPOLACIN, LOS CUALES SON:
% 'nearest' - nearest neighbor interpolation
% 'linear' - linear interpolation
% 'spline' - cubic spline interpolation
% 'cubic' - cubic interpolation
%
% IMPORTANTE: LA VARIABLE (x) DEBE SER MONTONA,
% DE LO CONTRARIO DAR ERROR
clc
close
clear
x=[1.12,3.91,4.25,4.56,8.45,12.25];
% GENERACIN DE LA VARIABLE MONTONA,
% NO UNIFORMEMENTE ESPACIADA,
% PARA LA GENERACIN DEL VECTOR COLUMNA DE (x)
y=4.25+x.^(.2+0.0005.*x); % GENERACIN DE LA TABLA
m=[x',y']; % TABLA
xi=[3.0,5.0,7.0,9.0,15.0]'; % VECTOR CON LOS VALORES DE xi
% NOTESE QUE EL LTIMO VALOR DE (xi), EL CUAL ES 15.0
% EST FUERA DEL RANGO DE LA TABLA,
% POR LO TANTO LA INTERPOLACIN NO PROCEDE
% INFORMANDO DE ESTA SITUACIN MEDIANTE EL RESULTADO (NaN)
yc=4.25+xi.^(.2+0.0005.*xi); % VALORES CALCULADOS
disp('SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)')
disp('SE DESEA CONOCER LOS VALORES DE (yi) ')
disp('PARA UNA SERIE DE VALOES DE xi')
disp('UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,mtodo) ')
disp('COMPARANDO LOS DIFERENTES MTODOS DISPONIBLES ')
disp(' TABLA DE VALORES')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
354
disp(' x y ')
disp('------------------------------')
disp(m)
yin=interp1(x,y,xi,'nearest'); % mtodo 'nearest'
yil=interp1(x,y,xi,'linear'); % mtodo 'linear'
yis=interp1(x,y,xi,'spline'); % mtodo 'spline'
yic=interp1(x,y,xi,'cubic'); % mtodo 'cubic'
disp(' calculado nearest linear spline cubic')
disp(' xi yc yin yil yis yic ')
disp('--------------------------------------------------------')
mr=[xi,yc,yin,yil,yis,yic];
disp(mr)
SE DISPONE DE UNA TABLA CON VALORES DE (x) y VALORES DE (y)
SE DESEA CONOCER LOS VALORES DE (yi)
PARA UNA SERIE DE VALOES DE xi
UTILIZANDO LA INSTRUCCIN: yi=interp1(x,y,xi,mtodo)
COMPARANDO LOS DIFERENTES MTODOS DISPONIBLES
TABLA DE VALORES
x y
------------------------------
1.1200 5.2730
3.9100 5.5670
4.2500 5.5897
4.5600 5.6092
8.4500 5.7963
12.2500 5.9261
calculado nearest linear spline cubic
xi yc yin yil yis yic
------------------------------------------------------------------------
3.0000 5.4978 5.5670 5.4711 5.4963 5.4963
5.0000 5.6353 5.6092 5.6304 5.6355 5.6355
7.0000 5.7359 5.7963 5.7266 5.7369 5.7369
9.0000 5.8173 5.7963 5.8151 5.8166 5.8166
15.0000 6.0040 NaN NaN 6.0274 NaN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
355
PROGRAMA: Interpol12.m
% interpol12
% ESTE PROGRAMA ILUSTRA LA INTERPOLACIN UNIDIMENSIONAL
% DE UNA FUNCIN MEDIANTE EL MTODO
% DE LA TRANSFORMADA DE FOURIER
%
% LA INSTRUCCIN ES:
%
% y = interpft(x,n)
%
% DONDE:
% X = VECTOR CON LOS VALORES DE UNA FUNCIN PERIDICA
% n = NMERO DE PUNTOS, IGUALMENTE ESPACIADOS, EN LOS CUALES
% SE REALIZAR LA INTERPOLACIN DE LA FUNCIN
% y = VECTOR CON LOS (n) VALORES INTERPOLADOS DE LA FUNCIN
clear all
close all
clc
m=1000;
i=[1:m];
p=pi;
x=sin((i)*p/m); % GENERACIN DEL VECTOR CON LOS VALORES DE LA FUNCIN
c=0;
for n=[250,500,1000,1500,2000]
y=interpft(x,n); % INTERPOLACIN DE LA FUNCIN
c=c+1;
np=[1:n];
subplot(2,3,c)
plot(np,y,'r*',np,y,'r-') % GRFICA DE LOS VALORES INTERPOLADOS
if n>m
axis([min(np),max(np),min(x),max(x)])
else
axis([min(i),max(i),min(x),max(x)])
end
title('Interpolacin')
end
c=c+1;
subplot(2,3,c)
plot(i,x,'b*')
axis([min(i),max(i),min(x),max(x)])
title('Original')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
356
PROGRAMA: Interpol13.m
% interpol13
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN
% EN DOS DIMENSIONES UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi)
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
357
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
358
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE ILISTRAR EL CASO (1)
%
% PARA LA SIGUIENTE TABLA DE VALORES, INTERPOLAR PARA:
%
% xi = 35
% yi = 50
close
clear
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
359
[xm,ym]=meshgrid(x,y);
mesh(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(jet)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=-1;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = 35;
yi = 50;
zi=interp2(xm,ym,zm,xi,yi);
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA
% EN LA INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR
% EL VALOR CALCULADO DE LA FUNCIN
% Y COMPARARLO CON EL VALOR INTERPOLADO:
% FUNCIN PARA GENERAR LA TABLA
m=100;
zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
disp(' ')
disp(' ')
disp(' RESULTADO DE LA INTERPOLACIN ')
disp(' ')
fprintf(' VALOR INTERPOLADO zi = %2.6f\n',zi)
disp(' ')
fprintf(' VALOR CALCULADO zc = %2.6f\n',zc)
RESULTADO DE LA INTERPOLACIN
VALOR INTERPOLADO zi = 0.668776
VALOR CALCULADO zc = 0.660098
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
360
PROGRAMA: Interpol14.m
% interpol14
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN
% EN DOS DIMENSIONES UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi)
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
361
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
362
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE ILISTRAR EL CASO (2)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES
VECTORES
%
% xi = [35,45,55,65] VECTORES DE IGUAL TAMAO
% yi = [50,75,125,185
close
clear
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
363
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
[xm,ym]=meshgrid(x,y);
mesh(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(bone)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=-1;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [35,45,55,65];
yi = [50,75,125,185]; % VECTORES DE IGUAL TAMAO
zi=interp2(xm,ym,zm,xi,yi); % INTERPOLACIN
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA
INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA
FUNCIN
% Y COMPARARLO CON EL VALOR INTERPOLADO:
% FUNCIN PARA GENERAR LA TABLA
m=100;
zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
disp(' ')
disp(' ')
disp(' RESULTADO DE LA INTERPOLACIN ')
disp(' ')
ma=[xi',yi',zi',zc'];
disp(' xi yi zi zc ')
disp('------------------------------------------------ ')
disp(ma)
RESULTADO DE LA INTERPOLACIN
xi yi zi zc
------------------------------------------------
35.0000 50.0000 0.6688 0.6601
45.0000 75.0000 -0.6596 -0.6797
55.0000 125.0000 -0.5143 -0.4958
65.0000 185.0000 0.5372 0.5460
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
364
PROGRAMA: Interpol15.m
% interpol15
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN
% EN DOS DIMENSIONES UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi)
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
365
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
366
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE ILISTRAR EL CASO (2)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES
VECTORES
%
% xi = [35,45,55,65] VECTORES DE DIFERENTES TAMAOS
% yi = [1,15,25,45,50,75,125,185
close all hidden
close all
clear all
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
367
[xm,ym]=meshgrid(x,y);
surf(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(JET)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=-.9;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [35,45,55,65]; % VECTOR FILA
yi = [1,15,25,45,50,75,125,185]'; % VECTOR COLUMNA
zi=interp2(xm,ym,zm,xi,yi); % INTERPOLACIN
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA
INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA
FUNCIN
% Y COMPARARLO CON EL VALOR INTERPOLADO:
% FUNCIN PARA GENERAR LA TABLA
m=100;
[xim,yim]=meshgrid(xi,yi);
zc=sin((xim+yim)*pi/m).*(1+cos((xim)*pi/m));
disp(' RESULTADO DE LA INTERPOLACIN ')
disp(' EN LOS SIGUIENTES VALORES:')
disp(' ')
disp(' xi ')
disp('------------------------- ')
disp(xi)
disp(' ')
disp(' yi ')
disp('--------- ')
disp(yi)
disp(' zi ')
disp('------------------------------------------------ ')
disp(zi)
disp(' zc ')
disp('------------------------------------------------ ')
disp(zc)
% A CONTINUACIN SE GRAFICAN LOS VALORES INTERPOLADOS Y LOS
CALCULADOS
figure
surf(xim,yim,zi)
colormap(pink)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
b=.8;
brighten(b)
figure
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
368
surf(xim,yim,zc)
colormap(cool)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES CALCULADOS')
b=-.9;
brighten(b)
RESULTADO DE LA INTERPOLACIN
EN LOS SIGUIENTES VALORES:
xi
-------------------------
35 45 55 65
yi
---------
1
15
25
45
50
75
125
185
zi
------------------------------------------------
1.2659 1.1335 0.8170 0.4986
1.4093 1.0838 0.6900 0.3493
1.3259 0.9069 0.5102 0.1983
0.8609 0.3609 0.0502 -0.1347
0.6688 0.1879 -0.0750 -0.2115
-0.3972 -0.6596 -0.6311 -0.5077
-1.3336 -0.9132 -0.5143 -0.2006
0.7809 0.8980 0.7489 0.5372
zc
------------------------------------------------
1.3156 1.1473 0.8286 0.4785
1.4540 1.0998 0.6825 0.3209
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
369
1.3828 0.9356 0.4958 0.1687
0.8546 0.3574 0.0000 -0.1687
0.6601 0.1809 -0.1320 -0.2479
-0.4493 -0.6797 -0.6825 -0.5193
-1.3828 -0.9356 -0.4958 -0.1687
0.8546 0.9356 0.8023 0.5460
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
370
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
371
PROGRAMA: Interpol16.m
% interpol16
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN
% EN DOS DIMENSIONES UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi)
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
372
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE ILISTRAR EL CASO (2)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES
VECTORES
%
% xi = [1:0.5:91] VECTOR DE TAMAO (1 x 31)
% yi = [1:0.5:196] VECTOR DE TAMAO (66 X 1)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
373
%
% EN ESTE EJEMPLO NO SE MUESTRAN LOS RESULTADOS NUMRICOS, YA QUE
LAS
% MATRICES SON MUY GRANDE. SOLO SE MOSTRARN LAS GRFICAS QUE
ILUSTRAN
% LA INTERPOLACIN
close all hidden
close all
clear all
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
[xm,ym]=meshgrid(x,y);
surf(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(winter)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=.8;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [1:3:91]; % VECTOR FILA
yi = [1:3:196]'; % VECTOR COLUMNA
zi=interp2(xm,ym,zm,xi,yi); % INTERPOLACIN
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA
INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA
FUNCIN
% Y COMPARARLO CON EL VALOR INTERPOLADO:
% FUNCIN PARA GENERAR LA TABLA
m=100;
[xim,yim]=meshgrid(xi,yi);
zc=sin((xim+yim)*pi/m).*(1+cos((xim)*pi/m));
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
374
% A CONTINUACIN SE GRAFICAN LOS VALORES INTERPOLADOS Y LOS
CALCULADOS
figure
surf(xim,yim,zi)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
b=.8;
brighten(b)
figure
surf(xim,yim,zc)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES CALCULADOS')
b=.8;
brighten(b)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
375
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
376
PROGRAMA: Interpol17.m
% interpol17
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN
% EN DOS DIMENSIONES UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi)
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
377
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE ILISTRAR EL CASO (3)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES
VECTORES
%
% xi = [10,35
% 45,53] MATRIZ DE TAMAO (2 X 2)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
378
%
% yi = [1,15
% 31,45
% 85,96
% 135,175] MATRIZ DE TAMAO (4 X 2)
%
% EN ESTE EJEMPLO NO SE MUESTRAN LOS RESULTADOS NUMRICOS, YA QUE
LAS
% MATRICES SON MUY GRANDE. SOLO SE MOSTRARN LAS GRFICAS QUE
ILUSTRAN
% LA INTERPOLACIN
close all
clear
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
[xm,ym]=meshgrid(x,y);
surf(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(winter)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=.8;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [10,35
45,53]; %MATRIZ DE TAMAO (3 X 3)
yi = [ 1,15
31,45
85,96
135,175]; % MATRIZ DE TAMAO (4 X 2)
[xim,yim]=meshgrid(xi,yi);
zi=interp2(xm,ym,zm,xim,yim); % INTERPOLACIN
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA
INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
379
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA
FUNCIN
% Y COMPARARLO CON EL VALOR INTERPOLADO:
% FUNCIN PARA GENERAR LA TABLA
m=100;
zc=sin((xim+yim)*pi/m).*(1+cos((xim)*pi/m));
% A CONTINUACIN SE GRAFICAN LOS VALORES INTERPOLADOS Y LOS
CALCULADOS
disp(' RESULTADO DE LA INTERPOLACIN ')
disp(' EN LOS SIGUIENTES VALORES:')
disp(' ')
disp(' xi ')
disp('--------------- ')
disp(xi)
disp(' ')
disp(' yi ')
disp('-------------- ')
disp(yi)
disp(' zi ')
disp('------------------------------------------------ ')
disp(zi)
disp(' zc ')
disp('------------------------------------------------ ')
disp(zc)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
380
RESULTADO DE LA INTERPOLACIN
EN LOS SIGUIENTES VALORES:
xi
---------------
10 35
45 53
yi
--------------
1 15
31 45
85 96
135 175
zi
------------------------------------------------
0.6233 1.1335 1.2659 0.8844
1.7961 0.7914 1.2635 0.4736
0.2956 -0.8951 -0.7798 -0.7816
-1.8366 -0.6761 -1.1638 -0.3727
1.3087 1.0838 1.4093 0.7703
1.8398 0.3609 0.8609 0.1081
-0.3285 -1.0682 -1.1207 -0.8608
-0.8374 0.6464 0.3891 0.6304
zc
------------------------------------------------
0.6609 1.1473 1.3156 0.8987
1.8736 0.7916 1.2741 0.4364
0.3052 -0.9356 -0.8546 -0.8423
-1.9270 -0.6797 -1.1763 -0.3335
1.3796 1.0998 1.4540 0.7649
1.9270 0.3574 0.8546 0.0569
-0.3656 -1.1105 -1.2026 -0.9054
-0.8858 0.6797 0.4493 0.6980
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
381
PROGRAMA: Interpol18.m
% interpol18
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN EN DOS DIMENSIONES
% UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi,'mtodo')
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% mtodo = TCNICA UTILIZADA PARA LA INTERPOLACIN,
% LA CUAL PUEDE SER:
%
% 'nearest' - nearest neighbor interpolation
% 'linear' - bilinear interpolation
% 'cubic' - bicubic interpolation
% 'spline' - spline interpolation
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
382
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
% NOTA: PARA TODOS LOS CASOS SE DEBE ESCOGER EL MTODO A UTILIZAR
%
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
383
% EJEMPLO
%
% EN ESTE EJEMPLO SE MUESTRA LA DIFERENCIA
% ENTRE LOS MTODOS DE INTERPOLACIN,
% APLICADOS AL CASO (1)
%
% PARA LA SIGUIENTE TABLA DE VALORES, INTERPOLAR PARA:
%
% xi = 35
% yi = 50
%
% UTILIZANDO TODOS LOS MTODOS DE INTERPOLACIN
close
clear
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
[xm,ym]=meshgrid(x,y);
surf(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(winter)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=.8;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = 35;
yi = 50;
zin=interp2(xm,ym,zm,xi,yi,'nearest');
zil=interp2(xm,ym,zm,xi,yi,'linear');
zic=interp2(xm,ym,zm,xi,yi,'cubic');
zis=interp2(xm,ym,zm,xi,yi,'spline');
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA FUNCIN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
384
% Y COMPARARLO CON LOS VALORES INTERPOLADOS:
% FUNCIN PARA GENERAR LA TABLA
m=100;
zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
disp(' ')
disp(' ')
disp(' RESULTADO DE LA INTERPOLACIN ')
disp(' EN LOS SIGUIENTES VALORES:')
disp(' ')
disp(' xi ')
disp('------------- ')
disp(xi)
disp(' ')
disp(' yi ')
disp('------------ ')
disp(yi)
disp(' ')
disp(' ')
disp(' calculado nearest linear spline cubic')
disp(' xi yi zc zin zil zis zic ')
disp('--------------------------------------------------------')
mr=[xi,yi,zc,zin,zil,zis,zic];
disp(mr)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
385
RESULTADO DE LA INTERPOLACIN
EN LOS SIGUIENTES VALORES:
xi
-------------
35
yi
------------
50
calculado nearest linear spline cubic
xi yi zc zin zil zis zic
----------------------------------------------------------------------------
35.0000 50.0000 0.6601 1.0330 0.6688 0.6613 0.6713
PROGRAMA: Interpol19.m
% interpol19
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN EN DOS DIMENSIONES
% UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi,'mtodo')
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
386
%
% mtodo = TCNICA UTILIZADA PARA LA INTERPOLACIN,
% LA CUAL PUEDE SER:
%
% 'nearest' - nearest neighbor interpolation
% 'linear' - bilinear interpolation
% 'cubic' - bicubic interpolation
% 'spline' - spline interpolation
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
387
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
% NOTA: PARA TODOS LOS CASOS SE DEBE ESCOGER EL MTODO A UTILIZAR
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE MUESTRA LA DIFERENCIA ENTRE LOS MTODOS DE
INTERPOLACIN,
% APLICADOS AL CASO (1)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES
VECTORES
%
% xi = [35,45,55,65] VECTORES DE IGUAL TAMAO
% yi = [50,75,125,185
%
% UTILIZANDO TODOS LOS MTODOS DE INTERPOLACIN
close all
clear all
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
388
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
[xm,ym]=meshgrid(x,y);
surf(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(winter)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
b=.8;
brighten(b)
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [35,45,55,65];
yi = [50,75,125,185]; % VECTORES DE IGUAL TAMAO
zin=interp2(xm,ym,zm,xi,yi,'nearest');
zil=interp2(xm,ym,zm,xi,yi,'linear');
zic=interp2(xm,ym,zm,xi,yi,'cubic');
zis=interp2(xm,ym,zm,xi,yi,'spline');
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA
INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA
FUNCIN
% Y COMPARARLO CON LOS VALORES INTERPOLADOS:
% FUNCIN PARA GENERAR LA TABLA
m=100;
zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
disp(' ')
disp(' ')
disp(' RESULTADO DE LA INTERPOLACIN ')
disp(' EN LOS SIGUIENTES VALORES:')
disp(' ')
disp(' xi ')
disp('------------- ')
disp(xi)
disp(' ')
disp(' yi ')
disp('------------ ')
disp(yi)
disp(' ')
disp(' ')
disp(' calculado nearest linear spline cubic')
disp(' xi yi zc zin zil zis zic ')
disp('--------------------------------------------------------')
mr=[xi',yi',zc',zin',zil',zis',zic'];
disp(mr)
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
389
RESULTADO DE LA INTERPOLACIN
EN LOS SIGUIENTES VALORES:
xi
-------------
35 45 55 65
yi
------------
50 75 125 185
calculado nearest linear spline cubic
xi yi zc zin zil zis zic
----------------------------------------------------------------------------
35.0000 50.0000 0.6601 1.0330 0.6688 0.6613 0.6713
45.0000 75.0000 -0.6797 -0.7173 -0.6596 0.1810 -0.6791
55.0000 125.0000 -0.4958 -0.3543 -0.5143 -0.1309 -0.5007
65.0000 185.0000 0.5460 0.6405 0.5372 -0.2475 0.5534
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
390
PROGRAMA: Interpol20.m
% interpol20
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN EN DOS DIMENSIONES
% UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi,'mtodo')
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% mtodo = TCNICA UTILIZADA PARA LA INTERPOLACIN,
% LA CUAL PUEDE SER:
%
% 'nearest' - nearest neighbor interpolation
% 'linear' - bilinear interpolation
% 'cubic' - bicubic interpolation
% 'spline' - spline interpolation
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
391
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
% NOTA: PARA TODOS LOS CASOS SE DEBE ESCOGER EL MTODO A UTILIZAR
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
392
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE MUESTRA LA DIFERENCIA ENTRE LOS MTODOS DE
INTERPOLACIN,
% APLICADOS AL CASO (1)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES
VECTORES
%
% xi = [1:0.5:91] VECTOR DE TAMAO (1 x 31)
% yi = [1:0.5:196] VECTOR DE TAMAO (66 X 1)
%
% UTILIZANDO TODOS LOS MTODOS DE INTERPOLACIN
%
% EN ESTE EJEMPLO NO SE MUESTRAN LOS RESULTADOS NUMRICOS, YA QUE LAS
% MATRICES SON MUY GRANDE. SOLO SE MOSTRARN LAS GRFICAS QUE ILUSTRAN
% LA INTERPOLACIN
close all
clear
clc
% TABLA:
zm=[0.1256 0.9551 1.3189 1.1203 0.6148 0.1792 0.0099
1.0178 1.5842 1.5552 1.0463 0.4373 0.0674 -0.0087
1.6882 1.8680 .4524 0.7442 0.1644 -0.0591 -0.0253
1.9906 1.7445 1.0330 0.2799 0.1442 -0.1728 -0.0364
1.8591 1.2408 0.3885 -0.2455 -0.4215 -0.2487 -0.0396
1.3223 0.4666 -0.3408 -0.7173 -0.6069 -0.2705 -0.0342
0.4973 -0.4093 -0.9957 -1.0328 -0.6600 -0.2333 -0.0213
-0.4362 -1.1960 -1.4336 -1.1231 -0.5692 -0.1452 -0.0037
-1.2745 -1.7220 -1.5590 -0.9686 -0.3543 -0.0255 0.0146
-1.8351 -1.8726 -1.3446 -0.6030 -0.0622 0.0998 0.0298
-1.9956 -1.6150 -0.8370 -0.1059 0.2434 0.2033 0.0385
-1.7211 -1.0054 -0.1470 0.4143 0.4960 0.2625 0.0388
-1.0714 -0.1766 0.5750 0.8441 0.6405 0.2645 0.0306
-0.1882 0.6907 1.1717 1.0900 0.6453 0.2088 0.0158];
% VARIABLES (x) Y (y)
x=[ 1,16,31,46,61,76,91];
y=[1,16,31,46,61,76,91,106,121,136,151,166,181,196 ];
[xm,ym]=meshgrid(x,y);
surfl(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(winter)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [1:3:91]; % VECTOR FILA
yi = [1:2.5:196]'; % VECTOR COLUMNA
zin=interp2(xm,ym,zm,xi,yi,'nearest');
zil=interp2(xm,ym,zm,xi,yi,'linear');
zic=interp2(xm,ym,zm,xi,yi,'cubic');
zis=interp2(xm,ym,zm,xi,yi,'spline');
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
393
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA
INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=sin((xi+yi)*pi/m).*(1+cos((xi)*pi/m));
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA FUNCIN
% Y COMPARARLO CON LOS VALORES INTERPOLADOS:
% FUNCIN PARA GENERAR LA TABLA
m=100;
[xim,yim]=meshgrid(xi,yi);
zc=sin((xim+yim)*pi/m).*(1+cos((xim)*pi/m));
% A CONTINUACIN SE GRAFICAN LOS VALORES INTERPOLADOS Y LOS CALCULADOS
figure
surfl(xim,yim,zin)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO NEAREST')
figure
surfl(xim,yim,zil)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO LINEAR')
figure
surfl(xim,yim,zis)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO SPLINE')
figure
surfl(xim,yim,zic)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO CUBIC')
figure
surfl(xim,yim,zc)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES CALCULADOS')
title('CALCULADOS')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
394
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
395
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
396
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
397
PROGRAMA: Interpol21.m
% interpol21
% EL PRESENTE PROGRAMA ILUSTRA LA INTERPOLACIN EN DOS DIMENSIONES
% UTILIZANDO LA INSTRUCCIN:
%
% y = interp2(xm,ym,zm,xi,yi,'mtodo')
%
% DONDE:
%
% xm = MATRIZ MALLA, CUADRADA (a X a),
% FORMADA CON EL VECTOR (x), DE (1 X a)
% Ym = MATRIZ MALLA, CUADRADA (b X b),
% FORMADA CON EL VECTOR (y), DE (1 X b)
% zm = MATRIZ DE (b X a), FORMADA CON VALORES
% RELACIONADOS BIDIMENSIONALMENTE
% CON LOS VECTORES (x) Y (y)
% xi = VALOR DE (x) AL CUAL SE DESEA
% INTERPOLAR LA TABLA BIDIMENSIONAL
% FORMADA POR LA MATRIZ (zm)
% yi = VALOR DE (y) AL CUAL SE DESEA INTERPOLAR
% LA TABLA BIDIMENSIONAL FORMADA POR LA MATRIZ (zm)
% y = VALOR INTERPOLADO DE LA TABLA BIDIMENSIONAL,
% FORMADA POR LA MATRIZ (zm)
%
% mtodo = TCNICA UTILIZADA PARA LA INTERPOLACIN,
% LA CUAL PUEDE SER:
%
% 'nearest' - nearest neighbor interpolation
% 'linear' - bilinear interpolation
% 'cubic' - bicubic interpolation
% 'spline' - spline interpolation
%
% IMPORTANTE:
%
% LOS VECTORES (x) Y (y) DEBEN SER MONTONOS
% CRECIENTES O DECRECIENTES
% TAMBIN PUEDEN SER UNIFORME O NO UNIFORMEMENTE ESPACIADOS
% EN LAS INTERPOLACIONES FUERA DE RANGO
% SE DAR COMO RERSULTADO: NaN
%
% METODOLOGA
%
% 1) SE TIENE UNA TABLA DE DATOS (MATRIZ zm), LOS CUALES DEPENDEN
% DE DOS VARIABLES (x) Y (y)
% 2) SE TIENE A LA VARIABLE (x), COMO UN VECTOR
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
398
% 3) SE TIENE A LA VARIABLE (Y), COMO UN VECTOR
% 4) SE GENERAN LAS MATRICES MALLA, A PARTIR DE LOS VECTORES
% (x) Y (y) MEDIANTE LA INSTRUCCIN: [xm,ym]=meshgrid(x,y)
% 5) SE GRAFICAN LOS VALORES DE LA TABLA (zm)
% VERSUS LAS MALLAS (xm) Y (ym)
% ESTE PASO ES OPCIONAL, PERO ES CONVENIENTE
% OBSERVAR TRIDIMENSIONALMENTE LOS DATOS DE LA
% TABLA (zm) VERSUS (X) Y (y)
% 6) SE FIJAN LOS VALORES DE (x) y (y), LOS CUALES
% SE QUIERE INTERPOLAR, EN LA TABLA (zm),
% ESTOS VALORES DEBEN SER UBICADOS EN LAS VARIABLES
% (xi) Y (yi). EN ESTE PUNTO EXISTEN TRES CASOS:
%
% CASO 1)
% xi = UN NMERO
% yi = UN NMERO
%
% CASO 2)
% xi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X a)
% yi = VECTOR DE VARIOS VALORES NMERICOS, DE TAMAO (1 X b)
%
% IMPORTANTE: ESTOS VECTORES DEBEN SER DE IGUAL TAMAO O EN SU
% DEFECTO DEBEN SER VECTORES CON DIFERENTES
% ORIENTACIONES, UNO VECTOR COLUMNA Y EL OTRO
% VECTOR FILA
%
% CASO 3)
% xi = MATRIZ DE VARIOS NMEROS, DE TAMAO (a X b)
% yi = MATRIZ DE VARIOS NMEROS, DE TAMAO (c X d)
%
% IMPORTANTE: EN ESTE CASO, SE DEBEN GENERAR LA MATRICES MALLAS
% (xim) Y (yim) CON LA INSTRUCCIN:
% [xim,yim]=meshgrid(xi,yi);
% LA INTERPOLACIN SE REALIZA COLUMNA POR COLUMNA
%
%
% 7) SE APLICA LA INSTRUCCIN DE INTERPOLACIN
% EN DOS DIMENSIONES, SEGN:
%
% CASO 1) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO: zi = UN NMERO
%
% CASO 2) zi=interp2(xm,ym,zm,xi,yi)
% RESULTANDO:
% zi = UNA MATRIZ, PARA VECTORES DE DIFERENTES TAMAOS
% zi = UN VECTOR, PARA VECTORES DE IGUAL TAMAO
%
%
% CASO 3) zi=interp2(xm,ym,zm,xim,yim)
% RESULTANDO: zi = UNA MATRIZ
%
% NOTA: PARA TODOS LOS CASOS SE DEBE ESCOGER EL MTODO A UTILIZAR
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
399
%
%
% EJEMPLO
%
% EN ESTE EJEMPLO SE MUESTRA LA DIFERENCIA ENTRE LOS MTODOS DE INTERPOLACIN,
% APLICADOS AL CASO (1)
%
% PARA LA TABLA DE VALORES, INTERPOLAR PARA LOS SIGUIENTES VECTORES
%
% xi = [1:0.5:91] VECTOR DE TAMAO (1 x 31)
% yi = [1:0.5:196] VECTOR DE TAMAO (66 X 1)
%
% UTILIZANDO TODOS LOS MTODOS DE INTERPOLACIN
%
% EN ESTE EJEMPLO NO SE MUESTRAN LOS RESULTADOS NUMRICOS, YA QUE LAS
% MATRICES SON MUY GRANDE. SOLO SE MOSTRARN LAS GRFICAS QUE ILUSTRAN
% LA INTERPOLACIN
close all hidden
close all
clear all
clc
% TABLA:
zm=[0.0001 0.0034 -0.0299 -0.2450 -0.1100 -0.0043 -0.0000
0.0007 0.0468 -0.5921 -4.7596 -2.1024 -0.0616 0.0004
-0.0088 -0.1301 1.8559 -0.7239 -0.2729 0.4996 0.0130
-0.0365 -1.3327 -1.6523 0.9810 2.9369 1.4122 0.0331
-0.0137 -0.4808 0.2289 3.6886 2.4338 0.5805 0.0125
0.0000 0.0797 2.0967 5.8591 2.2099 0.1328 0.0013
0.0000 0.0053 0.1099 0.2999 0.1107 0.0057 0.0000];
% VARIABLES (x) Y (y)
x=[-3,-2,-1,0,1,2,3];
y=[-3,-2,-1,0,1,2,3];
[xm,ym]=meshgrid(x,y);
surfl(xm,ym,zm) % GRFICA DE LA TABLA VERSUS (x) Y (y)
colormap(winter)
xlabel('VALORES DE X')
ylabel('VALORES DE Y')
zlabel('VALORES DE LA TABLA')
title('DATOS')
axis([-3,+3,-3,+3,-6,+6])
% VALORES DONDE SE REALIZAR LA INTERPOLACIN
xi = [-3:0.10:3]; % VECTOR FILA
yi = [-3:0.10:3]'; % VECTOR COLUMNA
[xim,yim]=meshgrid(xi,yi);
zin=interp2(xm,ym,zm,xim,yim,'nearest');
zil=interp2(xm,ym,zm,xim,yim,'linear');
zic=interp2(xm,ym,zm,xim,yim,'cubic');
zis=interp2(xm,ym,zm,xim,yim,'spline');
% PARA EFECTOS DE COMPARACIN, LA TABLA UTILIZADA EN LA INTERPOLACIN
% FUE GENERADA MEDIANTE LA SIGUIENTE FUNCIN:
% zc=peaks(xm,ym)
% POR LO TANTO, ES POSIBLE DETERMINAR EL VALOR CALCULADO DE LA FUNCIN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
400
% Y COMPARARLO CON LOS VALORES INTERPOLADOS:
% FUNCIN PARA GENERAR LA TABLA
zc=peaks(xim,yim);
% A CONTINUACIN SE GRAFICAN LOS VALORES INTERPOLADOS Y LOS CALCULADOS
figure
surfl(xim,yim,zin)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO NEAREST')
axis([-3,+3,-3,+3,-6,+6])
figure
surfl(xim,yim,zil)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO LINEAR')
axis([-3,+3,-3,+3,-6,+6])
figure
surfl(xim,yim,zis)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO SPLINE')
axis([-3,+3,-3,+3,-6,+6])
figure
surfl(xim,yim,zic)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES INTERPOLADOS')
title('MTODO CUBIC')
axis([-3,+3,-3,+3,-6,+6])
figure
surfl(xim,yim,zc)
colormap(winter)
xlabel('VALORES DE xi')
ylabel('VALORES DE Yi')
zlabel('VALORES CALCULADOS')
title('CALCULADOS')
axis([-3,+3,-3,+3,-6,+6])
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
401
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
402
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
403
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
404
INTEGRACIN Y DERIVACIN
La integracin numrica se puede realizar, en MATLAB, mediante las siguientes
instrucciones: "quad", la cual utiliza la regla de Simpson y "quad8", la cual utiliza el
mtodo de Newton Cotes 8. Ambas instrucciones permiten determinar el rea bajo la
seccin de una curva, definida por una funcin. Este proceso matemtico se fundamenta en
el concepto conocido como Cuadratura. Otra instruccin de utilidad en la integracin
numrica es "trapz", la cual aproxima la integral de una seccin de una funcin mediante la
suma de las reas de los trapezoides formados en dicha seccin.
La diferenciacin numrica se puede realizar mediante la instruccin "diff", la cual utiliza
el mtodo del cociente de diferencias finitas de variables definidas por una funcin. A
continuacin se muestran varios programas que ilustran el uso de estas instrucciones, as
como tambin las instrucciones "fmin" y "fmax", las cuales permiten determinar los puntos
de valor mnimo y valor mximo de una funcin:
PROGRAMA: intgra1.m
% intgra1
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc.
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
%
% EJEMPLO
%
clc
close all
clear all
%
% EVALUAR LA INTEGRAL DEL SENO ENTRE 0 Y pi
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
405
a=0;
b=pi;
q=quad('sin',a,b); % RESPUESTA NUMRICA
%
% LA RESPUESTA ANLTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = -cos entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=-cos(b)-(-cos(a));
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________________')
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________________')
RESPUESTA
----------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 3.141593
______________________________________
RESPUESTA NUMRICA = 2.000017
RESPUESTA ANALTICA = 2.000000
______________________________________
PROGRAMA: intgra2.m
% intgra2
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b)
%
% DONDE:
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
406
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
clc
close all
clear all
%
% EJEMPLO
%
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% cos(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = pi
%
% LMITE SUPERIOR b = pi/2
%
a=pi/3;
b=pi/2;
q=quad('cos',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANALTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = sin entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=sin(b)-sin(a);
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________________')
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________________')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
407
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 1.047198
LMITE SUPERIOR b = 1.570796
______________________________________
RESPUESTA NUMRICA = 0.133975
RESPUESTA ANALTICA = 0.133975
______________________________________
PROGRAMA: intgra3.m
% intgra3
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
clc
clear all
close all
%
% EJEMPLO
%
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% cot(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
408
% LMITE INFERIOR a = pi
%
% LMITE SUPERIOR b = pi/2
%
a=pi/3;
b=pi/2;
q=quad('cot',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANLTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = log(abs(sin(x))) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=log(abs(sin(b)))-log(abs(sin(a)));
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('_______________________________________')
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('_______________________________________')
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 1.047198
LMITE SUPERIOR b = 1.570796
_______________________________________
RESPUESTA NUMRICA = 0.143841
RESPUESTA ANALTICA = 0.143841
_______________________________________
PROGRAMA: intgra4.m
% intgra4
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b)
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
409
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
clc
close all
clear all
%
% EJEMPLO : SI UNA FUNCIN ES CONTINUA EN EL RANGO ( a,b )
% ENTONCES ES INTEGRABLE EN EL MISMO RANGO
% LA INSTRUCCIN (QUAD) UTILIZA HASTA 10 ITERACIONES
% PARA EVALUAR UNA INTEGRAL
% CUANDO LA FUNCIN NO ES CONTINUA EN EL RANGO
% DE INTEGRACIN MATLAB MUESTRA EL SIGUIENTE AVISO:
%
% Recursion level limit reached in quad. Singularity likely.
%
% Y PUEDE DAR UN VALOR APROXIMADO DEL CLCULO NUMRICO DE LA
% INTEGRAL O PUEDE MOSTRAR UN NMERO COMPLETAMENTE ERRADO
%
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% cot(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = pi/3 EN ESTE RANGO LA FUNCIN ES
% DISCONTINUA ( SINGULAR )
% LMITE SUPERIOR b = pi
%
fplot('cot',[pi/3 1.5*pi],'r*')
hold
fplot('cot',[pi/3 1.5*pi],'b+')
input('PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR')
a=pi/3;
b=pi;
q=quad('cot',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANLTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = log(abs(sin(x))) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=log(abs(sin(b)))-log(abs(sin(a)));
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
410
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
Current plot held
PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR
Warning: Recursion level limit reached in quad. Singularity
likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 102
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 72
In F:\MATLAB\PROGRAM\intgra4.m at line 53
Warning: Recursion level limit reached 16 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 80
In F:\MATLAB\PROGRAM\intgra4.m at line 53
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 1.047198
LMITE SUPERIOR b = 3.141593
______________________________
RESPUESTA NUMRICA = -2783534156692.487800
RESPUESTA ANALTICA = -36.494868
______________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
411
PROGRAMA: intgra5.m
% intgra5
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
412
%
clc
close all
clear all
%
% EJEMPLO : SI UNA FUNCIN ES CONTINUA EN EL RANGO ( a,b )
% ENTONCES ES INTEGRABLE EN EL MISMO RANGO
% LA INSTRUCCIN (QUAD) UTILIZA HASTA 10 ITERACIONES
% PARA EVALUAR UNA INTEGRAL
% CUANDO LA FUNCIN NO ES CONTINUA EN EL RANGO
% DE INTEGRACIN MATLAB MUESTRA EL SIGUIENTE AVISO:
%
% Recursion level limit reached in quad. Singularity
likely.
%
% Y PUEDE DAR UN VALOR APROXIMADO DEL CLCULO NUMRICO
DE LA
% INTEGRAL O PUEDE MOSTRAR UN NMERO COMPLETAMENTE
ERRADO
%
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% SQRT(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = 0 EN ESTE RANGO LA FUNCIN ES
% DISCONTINUA ( SINGULAR )
% LMITE SUPERIOR b = 1
%
fplot('sqrt',[0 1],'r*')
input('PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR')
a=0;
b=1;
q=quad('sqrt',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANALTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = (2/3)*x^(3/2) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=(2/3)*b^(3/2)-(2/3)*a^(3/2);
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
413
PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR
Warning: Recursion level limit reached in quad. Singularity
likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 102
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 72
In F:\MATLAB\PROGRAM\intgra5.m at line 50
Warning: Recursion level limit reached 8 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 80
In F:\MATLAB\PROGRAM\intgra5.m at line 50
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 1.000000
______________________________
RESPUESTA NUMRICA = 0.666663
RESPUESTA ANALTICA = 0.666667
______________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
414
PROGRAMA: intgra6.m
% intgra6
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b,tol)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
clc
close all
clear all
%
% EJEMPLO : EN ESTE EJEMPLO VEREMOS EL USO DEL ARGUMENTO = tol
%
% tol ES LA TOLERANCIA CON QUE MATLAB EJECUTA LAS ITERACIONES.
% LAS ITERACIOENES SE REALIZAN MIENTRAS SE CUMPLA LO SIGUIENTE,
% HASTA UN LIMITE DE 10 ITERACIONES:
%
% ERROR = (CLCULO PREVIO - CLCULO ACTUAL)/CLCULO PREVIO < TOL
%
% POR DEFECTO tol = 1.0 E-3
%
% EN ESTE EJEMPLO UTILIZAREMOS UNA TOLERANCIA DE tol = 1.e-1
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% SQRT(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = 0 EN ESTE RANGO LA FUNCION ES
% DISCONTINUA ( SINGULAR )
% LMITE SUPERIOR b = 1
%
fplot('sqrt',[0 1],'r*')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
415
input('PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR')
a=0;
b=1;
tol=1.e-1;
q=quad('sqrt',a,b,tol); % RESPUESTA NUMRICA
% LA RESPUESTA ANALTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = (2/3)*x^(3/2) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=(2/3)*b^(3/2)-(2/3)*a^(3/2);
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
disp('NOTE QUE LA FUNCION ES DISCUNTINUA, PERO POR LA TOLERANCIA')
disp('DE 1.0*E-1, LA OPERACIN NO DI SINGULAR ')
PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 1.000000
______________________________
RESPUESTA NUMRICA = 0.663079
RESPUESTA ANALTICA = 0.666667
______________________________
NOTE QUE LA FUNCION ES DISCUNTINUA, PERO POR LA TOLERANCIA
DE 1.0*E-1, LA OPERACIN NO DI SINGULAR
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
416
PROGRAMA: intgra7.m
% intgra7
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE SIMPSON.
% MEDIANTE LA INSTRUCCIN: QUAD
%
% Q = QUAD('nombre de la funcin',a,b,tol,TRACE)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
417
close all hidden
close all
clc
clear all
% EJEMPLO : EN ESTE EJEMPLO VEREMOS EL USO DE LOS ARGUMENTOS
% TOL Y TRACE
%
% tol ES LA TOLERANCIA CON QUE MATLAB EJECUTA LAS ITERACIONES.
% LAS ITERACIOENES SE REALIZAN MIENTRAS SE CUMPLA LO SIGUIENTE,
% HASTA UN LIMITE DE 10 ITERACIONES:
%
% ERROR = (CLCULO PREVIO - CLCULO ACTUAL)/CLCULO PREVIO <
TOL
%
% POR DEFECTO tol = 1.0 E-3
%
% TRACE ES UN PARMETRO QUE CUANDO ES DIFERENTE DE CERO MUESTRA
% UNA GRFICA CON EL PROGRESO DE LA INTEGRACIN
%
% EN ESTE EJEMPLO UTILIZAREMOS UNA TOLERANCIA DE tol = 1.e-5
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% SQRT(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = 0 EN ESTE RANGO LA FUNCIN ES
%
% LMITE SUPERIOR b = 1 DISCONTINUA ( SINGULAR )
%
a=0;
b=1;
tol=1.e-5;
q=quad('sqrt',a,b,tol,1);
% RESPUESTA NUMRICA
% LA RESPUESTA ANALTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = (2/3)*x^(3/2) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=(2/3)*b^(3/2)-(2/3)*a^(3/2);
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
418
fprintf('\n RESPUESTA NUMRICA = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
Warning: Recursion level limit reached in quad. Singularity
likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 102
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 72
In F:\MATLAB\PROGRAM\intgra7.m at line 53
Warning: Recursion level limit reached 22 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 80
In F:\MATLAB\PROGRAM\intgra7.m at line 53
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 1.000000
______________________________
RESPUESTA NUMRICA = 0.666666
RESPUESTA ANALTICA = 0.666667
______________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
419
PROGRAMA: intgra8.m
% intgra8
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE LONGITUD 8
% DE NEWTON - COTES
% MEDIANTE LA INSTRUCCIN: QUAD8
%
% Q = QUAD8('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
420
% b = LMITE SUPERIOR DE INTEGRACIN
%
clc
close all
clear all
%
% EJEMPLO : SI UNA FUNCION ES CONTINUA EN EL RANGO ( a,b )
% ENTONCES ES INTEGRABLE EN EL MISMO RANGO
% LA INSTRUCCIN (QUAD) UTILIZA HASTA 10 ITERACIONES
% PARA EVALUAR UNA INTEGRAL.
% CUANDO LA FUNCION NO ES CONTINUA EN EL RANGO
% DE INTEGRACION, MATLAB MUESTRA EL SIGUIENTE AVISO:
%
% Recursion level limit reached in quad. Singularity likely.
%
% PUEDE DAR UN VALOR APROXIMADO DEL CLCULO NUMRICO DE LA
% INTEGRAL O PUEDE MOSTRAR UN NMERO COMPLETAMENTE ERRADO
%
% QUAD8 ES MEJOR QUE QUAD PARA EL MANEJO DE SINGULARIDADES
% PERO AMBOS MTODOS NO MANEJAN BIEN LAS FUNCIONES SINGULARES
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCION =
%
% cot(x)
%
% ENTRE LOS SIGUIENTES LIMITES:
%
% LMITE INFERIOR a = pi/3 EN ESTE RANGO LA FUNCIN ES
% DISCONTINUA ( SINGULAR )
% LMITE SUPERIOR b = pi/2
%
fplot('cot',[pi/3 1.5*pi],'r*')
input('PARA CONTINUAR ===========> ENTER <=========== PARA
CONTINUAR')
a=pi/3;
b=pi/2;
q=quad('cot',a,b); % RESPUESTA NUMRICA
q8=quad8('cot',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANALTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = log(abs(sin(x))) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=log(abs(sin(b)))-log(abs(sin(a)));
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('____________________________________________')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
421
fprintf('\n RESPUESTA NUMRICA ( QUAD ) = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('____________________________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD8 ) = %f \n RESPUESTA ANALTICA = %f \n ',q8,qa);
disp('____________________________________________')
PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 1.047198
LMITE SUPERIOR b = 1.570796
____________________________________________
RESPUESTA NUMRICA ( QUAD ) = 0.143841
RESPUESTA ANALTICA = 0.143841
____________________________________________
RESPUESTA NUMRICA ( QUAD8 ) = 0.143841
RESPUESTA ANALTICA = 0.143841
____________________________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
422
PROGRAMA: intgra9.m
% intgra9
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE LONGITUD 8
% DE NEWTON - COTES
% MEDIANTE LA INSTRUCCIN: QUAD8
%
% Q = QUAD8('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
%
% EJEMPLO : SI UNA FUNCIN ES CONTINUA EN EL RANGO ( a,b )
% ENTONCES ES INTEGRABLE EN EL MISMO RANGO
% LA INSTRUCCIN (QUAD) UTILIZA HASTA 10 ITERACIONES
% PARA EVALUAR UNA INTEGRAL.
% CUANDO LA FUNCIN NO ES CONTINUA EN EL RANGO
% DE INTEGRACIN, MATLAB MUESTRA EL SIGUIENTE AVISO:
%
% Recursion level limit reached in quad. Singularity likely.
%
% Y PUEDE DAR UN VALOR APROXIMADO DEL CLCULO NUMRICO DE LA
% INTEGRAL O PUEDE MOSTRAR UN NMERO COMPLETAMENTE ERRADO
%
% QUAD8 ES MEJOR QUE QUAD PARA EL MANEJO DE SINGULARIDADES
% PERO AMBOS MTODOS NO MANEJAN BIEN LAS FUNCIONES SINGULARES
clc
close all
clear all
close all hidden
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% cot(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = pi/3 EN ESTE RANGO LA FUNCIN ES
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
423
% DISCONTINUA ( SINGULAR )
% LMITE SUPERIOR b = pi
%
fplot('cot',[pi/3 1.5*pi],'r*')
input('PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR')
a=pi/3;
b=pi;
q=quad('cot',a,b); % RESPUESTA NUMRICA
q8=quad8('cot',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANELTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = log(abs(sin(x))) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=log(abs(sin(b)))-log(abs(sin(a)));
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD ) = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD8 ) = %f \n RESPUESTA ANALTICA = %f \n ',q8,qa);
disp('______________________________')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
424
PARA CONTINUAR ===========> ENTER <=========== PARA CONTINUAR
Warning: Recursion level limit reached in quad. Singularity
likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 102
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 142
In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 72
In F:\MATLAB\PROGRAM\intgra9.m at line 55
Warning: Recursion level limit reached 16 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 80
In F:\MATLAB\PROGRAM\intgra9.m at line 55
Warning: Recursion level limit reached in quad8. Singularity likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 129
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 123
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
425
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m (quad8stp) at line 124
In F:\MATLAB\toolbox\matlab\funfun\quad8.m at line 70
In F:\MATLAB\PROGRAM\intgra9.m at line 56
Warning: Recursion level limit reached 2 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad8.m at line 77
In F:\MATLAB\PROGRAM\intgra9.m at line 56
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 1.047198
LMITE SUPERIOR b = 3.141593
______________________________
RESPUESTA NUMRICA ( QUAD ) = -2783534156692.487800
RESPUESTA ANALTICA = -36.494868
______________________________
RESPUESTA NUMRICA ( QUAD8 ) = -291313786354.882200
RESPUESTA ANALTICA = -36.494868
______________________________
PROGRAMA: intgra10.m
% intgra10
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO
% EL MTODO INTERACTIVO ADAPTADO DE LA REGLA DE LONGITUD 8
% DE NEWTON - COTES
% MEDIANTE LA INSTRUCCIN: QUAD8
%
% Q = QUAD8('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = sin, cos, abs, sinh, sqrt, etc
%
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
426
%
clc
close all
clear all
close all hidden
%
% EJEMPLO : QUAD8 ES MEJOR QUE QUAD PARA EL MANEJO DE
SINGULARIDADES
% PERO AMBOS MTODOS NO MANEJAN BIEN LAS FUNCIONES
SINGULARES.
% EN ESTE EJEMPLO VEREMOS EL USO DE LOS ARGUMENTOS
% TOL Y TRACE en quad8
%
% tol ES LA TOLERANCIA CON QUE MATLAB EJECUTA LAS ITERACIONES.
% LAS ITERACIOENES SE REALIZAN MIENTRAS SE CUMPLA LO SIGUIENTE,
% HASTA UN LIMITE DE 10 ITERACIONES:
%
% ERROR = (CLCULO PREVIO - CLCULO ACTUAL)/CLCULO PREVIO <
TOL
%
% POR DEFECTO tol = 1.0 E-3
%
% TRACE ES UN PARMETRO QUE CUANDO ES DIFERENTE DE CERO MUESTRA
% UNA GRFICA CON EL PROGRESO DE LA INTEGRACIN
%
% EN ESTE EJEMPLO UTILIZAREMOS UNA TOLERANCIA DE tol = 1.e-5
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN =
%
% SQRT(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = 0 EN ESTE RANGO LA FUNCIN ES
% DISCONTINUA ( SINGULAR )
% LMITE SUPERIOR b = 1
%
a=0;
b=1;
tol=1.e-2;
q=quad('sqrt',a,b,tol,1); % RESPUESTA NUMRICA
q8=quad8('sqrt',a,b,tol,1); % RESPUESTA NUMRICA
% LA RESPUESTA ANALTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = (2/3)*x^(3/2) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=(2/3)*b^(3/2)-(2/3)*a^(3/2);
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
427
disp(' ')
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD ) = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD8 ) = %f \n RESPUESTA ANALTICA = %f \n ',q8,qa);
disp('______________________________')
Warning: Recursion level limit reached in quad. Singularity
likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 102
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 72
In F:\MATLAB\PROGRAM\intgra10.m at line 57
Warning: Recursion level limit reached 4 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 80
In F:\MATLAB\PROGRAM\intgra10.m at line 57
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 1.000000
______________________________
RESPUESTA NUMRICA ( QUAD ) = 0.666662
RESPUESTA ANALTICA = 0.666667
______________________________
RESPUESTA NUMRICA ( QUAD8 ) = 0.666339
RESPUESTA ANALTICA = 0.666667
______________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
428
PROGRAMA: intgra11.m
% intgra11
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO LOS
% MTODOS INTERACTIVOS ADAPTADOS DE LA REGLA DE LONGITUD 8
% DE NEWTON - COTES ( QUAD8 ) Y LA REGLA DE SIMPSON ( QUAD )
% MEDIANTE LAS INSTRUCCIONES: QUAD8 Y QUAD
% PARA FUNCIONES QUE NO ESTN EN LA LIBRERA DE MATLAB
%
% Q = QUAD8('nombre de la funcion',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = DEBE SER CREADA CON LA
INSTRUCCION:
%
% function
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
429
% a = LMITE INFERIOR DE INTEGRACIN
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
%
% EJEMPLO : QUAD8 ES MEJOR QUE QUAD PARA EL MANEJO DE
SINGULARIDADES
% PERO AMBOS MTODOS NO MANEJAN BIEN LAS FUNCIONES
SINGULARES.
% EN ESTE EJEMPLO SE CREAR LA FUNCIN LLAMADA ====>
itgfun1
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN :
%
% y=sec(x)*tan(x)
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = 0
%
% LMITE SUPERIOR b = pi/4
%
clc
close all
clear all
clear function
close all hidden
disp(' ')
disp(' FUNCIN itgfun1 ')
disp('-----------------------------------------------------')
type itgfun1
disp('-----------------------------------------------------')
disp(' [enter]')
input(' ')
a=0;
b=pi/4;
fplot('itgfun1',[a,b],('r*'))
q=quad('itgfun1',a,b); % RESPUESTA NUMRICA
q8=quad8('itgfun1',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANLTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = sec(x) entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
qa=sec(b)-sec(a);
disp(' ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
430
disp(' RESPUESTA')
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('___________________________________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD ) = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('___________________________________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD8 ) = %f \n RESPUESTA ANALTICA = %f \n ',q8,qa);
disp('___________________________________________________')
FUNCIN itgfun1
-----------------------------------------------------
function [y] = itgfun(x)
% funcin creada para el progranma intgra11.m
y=sec(x).*tan(x);
-----------------------------------------------------
[enter]
RESPUESTA
-----------------------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 0.785398
___________________________________________________
RESPUESTA NUMRICA ( QUAD ) = 0.414216
RESPUESTA ANALTICA = 0.414214
___________________________________________________
RESPUESTA NUMRICA ( QUAD8 ) = 0.414214
RESPUESTA ANALTICA = 0.414214
___________________________________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
431
PROGRAMA: intgra12.m
% intgra12
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE INTEGRAR EN FORMA
% DEFINIDA, ENTRE DOS VALORES, UNA FUNCIN UTILIZANDO LOS
% MTODOS INTERACTIVOS ADAPTADOS DE LA REGLA DE LONGITUD 8
% DE NEWTON - COTES ( QUAD8 ) Y LA REGLA DE SIMPSON ( QUAD )
% MEDIANTE LA INSTRUCCIN: QUAD8 Y QUAD
% PARA FUNCIONES QUE NO ESTN EN LA LIBRERA DE MATLAB
%
% Q = QUAD8('nombre de la funcin',a,b)
%
% DONDE:
%
% Q = VALOR DE LA INTEGRAL ENTRE LOS LMITES DE INTEGRACIN
%
% 'nombre de la funcin' = DEBE SER CREADA CON LA INSTRUCCIN:
%
% function
%
% a = LMITE INFERIOR DE INTEGRACIN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
432
%
% b = LMITE SUPERIOR DE INTEGRACIN
%
%
%EJEMPLO: QUAD8 ES MEJOR QUE QUAD PARA EL MANEJO DE SINGULARIDADES
% PERO AMBOS MTODOS NO MANEJAN BIN LAS FUNCIONES SINGULARES
% EN ESTE EJEMPLO SE CREAR LA FUNCIN LLAMADA ====> itgfun2
%
% EVALUAR LA INTEGRAL DE LA SIGUIENTE FUNCIN :
%
% y = (x^2)/(k1 + k2*x)^2
%
% ENTRE LOS SIGUIENTES LMITES:
%
% LMITE INFERIOR a = 0
%
% LMITE SUPERIOR b = 4
%
clc
close all
clear all
clear function
disp(' ')
disp(' FUNCIN itgfun2 ')
disp('-----------------------------------------------------')
type itgfun2
disp('-----------------------------------------------------')
disp('
[enter]')
input(' ')
k1=10;
k2=2;
a=0;
b=100;
fplot('itgfun2',[a,b],('r*'))
q=quad('itgfun2',a,b); % RESPUESTA NUMRICA
q8=quad8('itgfun2',a,b); % RESPUESTA NUMRICA
% LA RESPUESTA ANLTICA A LA INTEGRAL DE LA FUNCIN ES :
%
% qa = (1/k2^3)(k1+k2*x-k1^2/(k1+k2*x)-2*k1*log(abs(k1+k2*x)))
%
% entre: a,b
%
% EVALUANDO LA RESPUESTA ANALTICA
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
433
qab=(1/(k2^3))*(k1+k2*b-(k1^2)/(k1+k2*b)-2*k1*log(abs(k1+k2*b)));
qaa=(1/(k2^3))*(k1+k2*a-(k1^2)/(k1+k2*a)-2*k1*log(abs(k1+k2*a)));
qa=(qab-qaa);
disp('-----------------------------------------------------')
fprintf(' LMITE INFERIOR a = %f \n LMITE SUPERIOR b = %f \n ',a,b);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD ) = %f \n RESPUESTA ANALTICA = %f \n ',q,qa);
disp('______________________________')
fprintf('\n RESPUESTA NUMRICA ( QUAD8 ) = %f \n RESPUESTA ANALTICA = %f \n ',q8,qa);
disp('______________________________')
FUNCIN itgfun2
-----------------------------------------------------
function [y] = itgfun2(x)
% funcion creada para correr intgra12
k1=10;
k2=2;
[y] = (x.^2)./(k1+k2*x).^2;
-----------------------------------------------------
[enter]
Warning: Recursion level limit reached in quad. Singularity
likely.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 102
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m (quadstp) at line 141
In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 72
In F:\MATLAB\PROGRAM\intgra12.m at line 60
Warning: Recursion level limit reached 6 times.
> In F:\MATLAB\toolbox\matlab\funfun\quad.m at line 80
In F:\MATLAB\PROGRAM\intgra12.m at line 60
-----------------------------------------------------
LMITE INFERIOR a = 0.000000
LMITE SUPERIOR b = 100.000000
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
434
______________________________
RESPUESTA NUMRICA ( QUAD ) = 18.578930
RESPUESTA ANALTICA = 18.579170
______________________________
RESPUESTA NUMRICA ( QUAD8 ) = 18.579171
RESPUESTA ANALTICA = 18.579170
______________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
435
PROGRAMA: intgra13.m
% intgra13
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE CALCULAR LA
% INTEGRAL A PATIR DE DATOS DE LA FUNCIN Y = F(X)
% Y DE DATOS DE (X) CORRESPONDIENTES.
%
% LA INSTRUCCION MATLAB PARA EL CLCULO DE LA INTEGRAL
% ES LA SIGUIENTE:
%
% Z = TRAPZ(X,Y)
%
% LA INSTRUCCIN trapz CALCULA LA INTEGRAL DE ( Y )
% CON RESPECTO A ( X ) UTILIZANDO EL MTODO TRAPEZOIDAL
% SEGN LOS SIGUIENTES CASOS:
%
% CASO (1):
%
% ( x ) Y ( y ) PUEDEN SER VECTORES DE LA MISMA LONGITUD
% EL RESULTADO ( Z ) ES UN ESCALAR
%
% CASO (2):
%
% ( x ) PUEDE SER UN VECTOR COLUMNA Y ( y ) UNA MATRIZ
% CON LAS MISMA CANTIDAD DE FILAS QUE TIENE ( x )
% MATLAB CALCULA LA INTEGRAL DE CADA COLUMNA DE LA MATRIZ
% ( y ) CON RESPECTO A (x).
%
% EL RESULTADO ( Z ) ES UN VECTOR FILA
clc
clear all
close all
close all hidden
i=0;
for n=5:20:200 % NMERO DE ELEMENTOS DE LOS DATOS
i=i+1;
x=linspace(0,pi,n); % RANGO DE LA VARIABLE (x), DESDE 0 HASTA
pi,
% CON (n) ELEMENTOS
y=sin(x); % SE GENERAN UNOS DATOS DE y = SENO( X )
z=trapz(x,y); % SE CALCULA LA INTEGRAL MEDIANTE LOS DATOS DE (y) VERSUS (x)
% PARA CADA CONJUNTO DE (n) ELEMENTOS DE DATOS
% Y NO MEDIANTE LA FUNCIN
e(i,1)=n;
e(i,2)=z;
end
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
436
disp(' ')
disp(' EL RANGO DE INTEGRACIN ES: DESDE 0 HASTA pi')
disp(' CON ( n ) NMERO DE ELEMENTOS')
disp(' -------------------------------------------')
disp(' NMERO DE ')
disp(' ELEMENTOS INTEGRAL ')
disp(' (n) (z) ')
disp(' -------------------------------------------')
disp(' -------------------------------')
disp(' n z ')
disp(' -------------------------------')
%disp(' __________________')
disp(e)
EL RANGO DE INTEGRACIN ES: DESDE 0 HASTA pi
CON ( n ) NMERO DE ELEMENTOS
-------------------------------------------
NMERO DE
ELEMENTOS INTEGRAL
(n) (z)
-----------------------
-----------------------
n z
-----------------------
5.0000 1.8961
25.0000 1.9971
45.0000 1.9992
65.0000 1.9996
85.0000 1.9998
105.0000 1.9998
125.0000 1.9999
145.0000 1.9999
165.0000 1.9999
185.0000 2.0000
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
437
PROGRAMA: intgra14.m
% intgra14
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE CALCULAR LA
% INTEGRAL A PATIR DE DATOS DE LA FUNCIN Y = F(X)
% Y DE DATOS DE (X) CORRESPONDIENTES.
%
% LA INSTRUCCION MATLAB PARA EL CLCULO DE LA INTEGRAL
% ES LA SIGUIENTE:
%
% Z = TRAPZ(X,Y)
%
% LA INSTRUCCIN trapz CALCULA LA INTEGRAL DE ( Y )
% CON RESPECTO A ( X ) UTILIZANDO EL MTODO TRAPEZOIDAL
% SEGN LOS SIGUIENTES CASOS:
%
% CASO (1):
%
% ( x ) Y ( y ) PUEDEN SER VECTORES DE LA MISMA LONGITUD
% EL RESULTADO ( Z ) ES UN ESCALAR
%
% CASO (2):
%
% ( x ) PUEDE SER UN VECTOR COLUMNA Y ( y ) UNA MATRIZ
% CON LAS MISMA CANTIDAD DE FILAS QUE TIENE ( x )
% MATLAB CALCULA LA INTEGRAL DE CADA COLUMNA DE LA MATRIZ
% ( y ) CON RESPECTO A (x).
%
% EL RESULTADO ( Z ) ES UN VECTOR FILA
%
% CUANDO EL ESPACIADO DE ( X ) NO SEA UNITARIO, EL RESULTADO
% DE trapz(y) DEBE SER MULTIPLICADO POR EL INCREMENTO
% DEL ESPACIADO
%
clc
clear all
close all
close all hidden
i=0;
for n=5:20:200 % NMERO DE ELEMENTOS DE LOS DATOS
i=i+1;
x=linspace(0,pi,n); % INCREMENTO DE ESPACIADO ES = pi/n
% RANGO DE LA VARIABLE (x), DESDE 0
% HASTA pi, CON (n) ELEMENTOS
y=sin(x); % SE GENERAN LOS DATOS DE (y) A PARTIR DE ( X )
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
438
z=trapz(y); % SE CALCULA LA INTEGRAL MEDIANTE LOS DATOS
% DE (y) VERSUS (x)
% PARA CADA CONJUNTO DE (n) ELEMENTOS DE DATOS
% Y NO MEDIANTE LA FUNCIN

% CORRECCIN POR EL INCREMENTO DEL ESPACIADO EN EL RANGO:
zV=(pi/n)*trapz(y);
e(i,1)=n;
e(i,2)=z;
e(i,3)=zV;
end
disp(' ')
disp(' EL RANGO DE INTEGRACIN ES: DESDE 0 HASTA pi')
disp(' CON ( n ) NMERO DE ELEMENTOS')
disp(' -------------------------------------------------')
disp(' NMERO DE INTEGRAL INTEGRAL ')
disp(' ELEMENTOS SIN CORRECCIN CON CORRECCIN ')
disp(' (n) (z) (zv)')
disp(' --------------------------------------------------------')
disp(' -------------------------------')
disp(' n z zv')
disp(' -------------------------------')
disp(e)
EL RANGO DE INTEGRACIN ES: DESDE 0 HASTA pi
CON ( n ) NMERO DE ELEMENTOS
------------------------------------------------------------
NMERO DE NTEGRAL INTEGRAL
ELEMENTOS SIN CORRECCIN CON CORRECCIN
(n) (z) (zv)
------------------------------------------------------------
-------------------------------
n z zv
-------------------------------
5.0000 2.4142 1.5169
25.0000 15.2571 1.9173
45.0000 27.9994 1.9547
65.0000 40.7355 1.9688
85.0000 53.4698 1.9762
105.0000 66.2034 1.9808
125.0000 78.9366 1.9839
145.0000 91.6696 1.9861
165.0000 104.4024 1.9878
185.0000 117.1352 1.9891
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
439
PROGRAMA: intgra15.m
%intgra15
% ESTE PROGRAMA ILUSTRA VARIAS TCNICAS PARA ESTIMAR LA INTEGRAL
% A PARTIR DE PARES DE DATOS DE (y) EN FUNCIN DE (x)
%
% EXISTEN TRES MTODOS PARA REALIZAR ESTE CLCULO:
%
% MTODO A)
%
% UTILIZANDO LA INSTRUCCIN: z = trapz(x,y)
%
% MTODO B)
%
% UTILIZANDO LA INSTRUCCIN z = (incremento)* trapz(y)
%
% EN ESTE CASO LA INSTRUCCION SUPONE QUE EL PARMETRO
% ( x ) SE INCREMENTA EN FORMA UNITARIA, POR LO TANTO
% AL VALOR DE trapz(y) SE LE DEBE MULTIPLICAR POR EL
% INCREMENTO REAL EN LA VARIACIN DE ( X )
%
% MTODO C)
%
% DETERMINANDO EL POLINMIO QUE MEJOR FIJA LOS DATOS
% DE LA FUNCIN ( y ) UTILIZANDO COMO PARMETRO ( X )
%
% EN ESTE MTODO SE APLICAN LAS SIGUIENTES INSTRUCCIONES:
%
% polyfit(x,y,n) PARA BUSCAR LOS COEFICIENTES DEL POLINOMIO
%
% polyval(p,x) PARA COMPARAR AL POLINOMIO Y LOS DATOS
%
% LUEGO SE INTEGRA EL POLINOMIO UTILIZANDO LA INSTRUCCIN:
% QUAD O QUAD8
close all
clear all
close all hidden
clc
% EN EL PRESENTE EJEMPLO SE TIENE UN CONJUNTO DE
% DE PARES DE DATOS EXPERIMENTALES
% VALORES DE ( y = f(x) )
% VALORES DE ( x )
x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.36,11.12];
disp(' ')
disp('_________________________________')
disp(' ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
440
disp(' RESPUESTA ')
disp('_________________________________')
disp(' ')
disp(' VISUALIZACIN DE LOS DATOS')
input(' [enter] ');
plot(x,y,'r*')
title('VALORES EXPERIMENTALES')
ylabel(' y = funcin( x ) ')
xlabel(' PARMETRO ( x )')
input(' [enter] ');
home
zxy=trapz(x,y);
disp(' ')
disp('_________________________________')
disp(' ')
disp(' RESPUESTA ')
disp('_________________________________')
disp(' ')
fprintf(' z = trapz(x,y) ==> MTODO A : INTEGRAL = %f\n',zxy)
input(' [enter] ');
clc
incremento=(max(x)-min(x))/(length(x)-1);
zy=incremento*trapz(y);
disp(' ')
disp('_________________________________')
disp(' ')
disp(' RESPUESTA ')
disp('_________________________________')
disp(' ')
fprintf(' z = trapz(x,y) ==========> MTODO A : INTEGRAL = %f\n',zxy)
fprintf('\n z = (incremento)* trapz(y) ==> MTODO B : INTEGRAL = %f\n',zy)
disp(' ')
disp('---------------------------------------- ')
input(' [enter] ');
n=length(x)-1;
p=polyfit(x,y,n);
pol=polyval(p,x);
clc
% APLICACION DEL MTODO C
% CON LOS COEFICIENTES DEL POLINOMIO SE DETERMINA
% LA FUNCIN, LA CUAL SER INTEGRADA CON LAS
% INSTRUCCIONES QUAD O QUAD8
%
% EL POLINOMIO ESTAR EN LA FUNCIN: itgfun3
%
% LA INTEGRAL SE CALCULA CON QUAD('itgfun3',a,b)
%
% DONDE:
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
441
% a = valor mnimo de ( x )
%
% b = valor mximo de ( x )
home
disp(' ')
disp(' FUNCIN itgfun3 ')
type itgfun3
disp(' ESTE LTIMO ES EL POLINOMIO ')
disp(' QUE FIJA LOS DATOS EXPERIMENTALES ')
input(' [enter] ');
xeval=linspace(min(x),max(x),100);
yeval=itgfun3(xeval);
clc
q=quad('itgfun3',min(x),max(x));
disp(' ')
disp('_________________________________')
disp(' ')
disp(' RESPUESTA ')
disp('_________________________________')
disp(' ')
fprintf(' z = trapz(x,y) ==========> MTODO A : INTEGRAL = %f\n',zxy)
fprintf('\n z = (incremento)* trapz(y) ==> MTODO B : INTEGRAL = %f\n',zy)
fprintf('\n POLINOMIO ==========> MTODO C : INTEGRAL = %f \n',q)
disp(' ')
disp('---------------------------------------- ')
disp('VISUALIZACIN SIMULTANEA DE LOS DATOS EXPERIMENTALES,')
disp('DE LOS PARMETROS DEL POLINOMIO Y DE LA EVALUACIN ')
disp('DEL POLINOMIO MEDIANTE LA FUNCIN itgfun3 ')
input(' [enter] ');
figure
plot(x,y,'g*',x,pol,'bo',xeval,yeval,'rO')
title('VALORES EXPERIMENTALES Y EVALUACIN DEL POLINOMIO')
ylabel(' VARIABLE (y) ')
xlabel(' PARAMETRO (x)')
legend('Datos Experimentales','Parmetros del Polinomio','Evaluacin del Polinomio',-1);
RESPUESTA
_________________________________
z = trapz(x,y) ==========> MTODO A : INTEGRAL = 6.723450
z = (incremento)* trapz(y) ==> MTODO B : INTEGRAL = 6.723450
POLINOMIO ==========> MTODO C : INTEGRAL = 6.694668
-----------------------------------------------------------------
VISUALIZACIN SIMULTANEA DE LOS DATOS EXPERIMENTALES,
DE LOS PARMETROS DEL POLINOMIO Y DE LA EVALUACIN
DEL POLINOMIO MEDIANTE LA FUNCIN itgfun3
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
442
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
443
PROGRAMA: intgra16.m
% intgra16
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA
% DOBLE INTEGRACIN, EN FORMA DEFINIDA,
% ENTRE LOS VALORES DE UN PAR DE VARIABLES DE UNA
% FUNCIN UTILIZANDO LA INSTRUCCIN: dblquad
%
% result = dblquad('fun',inmin,inmax,outmin,outmax,tol,method)
%
% DONDE:
%
% result = valor numrico del resultado de la integracin doble
% 'fun' = funcin a ser integrada, cuyo argumento es:
% fun = funcin(inner,outer), donde:
% inner = variable de la primera integracin (VECTOR)
% outer = variable de la segunda integracin (ESCALAR)
% la funcin puede ser introducida por dos mtodos:
% MTODO A: MEDIANTE LA INSTRUCCIN fuction
% MTODO B: MEDIANTE LA INSTRUCCIN inline
%
% inmin = valor mnimo de la variable inner
% inmax = valor mximo de la variable inner
% outmin = valor mnimo de la variable outer
% outmax = valor mximo de la variable outer
%
% tol = tolerancia, por defecto tol = 1.0e-3
%
% method = Mtodo de integracin: 'quad' o 'quad8'
% EN EL PRESENTE EJEMPLO SE ILUSTRA LA DIFERENCIA
% ENTRE LAS VARIABLES DE LA PRIMERA Y LA SEGUNDA INTEGRACIN
% LA PRIMERA VARIABLE (inner) ES UN VECTOR Y LOS OPERADORES
% MATEMTICOS ( * , / , ^ ) ASOCIADOS A ESTA VARIABLE
% DEBEN ESTAR PRECEDIDOS DEL PUNTO (.)
% LA SEGUNDA VARIABLE (OUTER) ES UN ESCALAR
%
% EN ESTE EJEMPLO SE EJECUTAN DOS INTEGRACIONES DOBLES
% DE UNA MISMA FUNCIN:
%
% fUN = 4*x^3 + 6*x*y^2
%
% LMITES DE INTEGRACIN:
%
% x_min = 1
% x_max = 3
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
444
% y_min = -2
% y_max = 1
%
% LA PRIMERA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (x) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (X) = inner (VECTOR)
% (y) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_XY
%
% LA SEGUNDA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (y) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (y) = inner (VECTOR)
% (x) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_YX
%
clc
clear all
close all
% f2i = FUNCION A SER INTEGRADA
x_min=1;
x_max=3;
y_min=-2;
y_max=1;
f2i = inline('4*x.^3+6*x*y^2', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max);
f2i = inline('4*x^3+6*x*y.^2', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max);
disp(' ')
disp(' RESULTADOS')
disp(' ------------------------------------------------ ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
disp(' PRIMERA VARIABLE DE INTEGRACIN (inner) = X ')
disp(' SEGUNDA VARIABLE DE INTEGRACIN (outer) = Y ')
disp(' ')
disp(' LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR x_min = %f \n LMITE SUPERIOR x_max = %f \n ',x_min,x_max);
disp(' ')
disp(' LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR y_min = %f \n LMITE SUPERIOR y_max = %f \n ',y_min,y_max);
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
445
disp(' ______________________________________________ ')
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
disp(' PRIMERA VARIABLE DE INTEGRACIN (inner) = Y ')
disp(' SEGUNDA VARIABLE DE INTEGRACIN (outer) = X ')
disp(' ')
disp(' LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR y_min = %f \n LMITE SUPERIOR y_max = %f \n ',y_min,y_max);
disp(' ')
disp(' LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR x_min = %f \n LMITE SUPERIOR x_max = %f \n ,x_min,x_max);
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
RESULTADOS
---------------------------------------------------
RESULTADO DE LA PRIMERA INTEGRACIN
______________________________________________
PRIMERA VARIABLE DE INTEGRACIN (inner) = X
SEGUNDA VARIABLE DE INTEGRACIN (outer) = Y
LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN
LMITE INFERIOR x_min = 1.000000
LMITE SUPERIOR x_max = 3.000000
LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN
LMITE INFERIOR y_min = -2.000000
LMITE SUPERIOR y_max = 1.000000
VALOR NMERICO DE LA INTEGRAL DOBLE = 312.000000
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN
______________________________________________
PRIMERA VARIABLE DE INTEGRACIN (inner) = Y
SEGUNDA VARIABLE DE INTEGRACIN (outer) = X
LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
446
LMITE INFERIOR y_min = -2.000000
LMITE SUPERIOR y_max = 1.000000
LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN
LMITE INFERIOR x_min = 1.000000
LMITE SUPERIOR x_max = 3.000000
VALOR NMERICO DE LA INTEGRAL DOBLE = 312.000000
PROGRAMA: intgra17.m
% intgra17
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA
% DOBLE INTEGRACIN, EN FORMA DEFINIDA,
% ENTRE LOS VALORES DE UN PAR DE VARIABLES DE UNA
% FUNCIN UTILIZANDO LA INSTRUCCIN: dblquad
%
% result = dblquad('fun',inmin,inmax,outmin,outmax,tol,method)
%
% DONDE:
%
% result = valor numrico del resultado de la integracin doble
% 'fun' = funcin a ser integrada, cuyo argumento es:
% fun = funcin(inner,outer), donde:
% inner = variable de la primera integracin (VECTOR)
% outer = variable de la segunda integracin (ESCALAR)
% la funcin puede ser introducida por dos mtodos:
% MTODO A: MEDIANTE LA INSTRUCCIN fuction
% MTODO B: MEDIANTE LA INSTRUCCIN inline
%
% inmin = valor mnimo de la variable inner
% inmax = valor mximo de la variable inner
% outmin = valor mnimo de la variable outer
% outmax = valor mximo de la variable outer
%
% tol = tolerancia, por defecto tol = 1.0e-3
%
% method = Mtodo de integracin: 'quad' o 'quad8'
% EN EL PRESENTE EJEMPLO SE ILUSTRA LA DIFERENCIA
% ENTRE LAS VARIABLES DE LA PRIMERA Y LA SEGUNDA INTEGRACIN
% LA PRIMERA VARIABLE (inner) ES UN VECTOR Y LOS OPERADORES
% MATEMTICOS ( * , / , ^ ) ASOCIADOS A ESTA VARIABLE
% DEBEN ESTAR PRECEDIDOS DEL PUNTO (.)
% LA SEGUNDA VARIABLE (OUTER) ES UN ESCALAR
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
447
% EN ESTE EJEMPLO SE EJECUTAN DOS INTEGRACIONES DOBLES
% DE UNA MISMA FUNCIN:
%
% fUN = y*sin(x)+x*cos(y)
%
% LMITES DE INTEGRACIN:
%
% x_min = pi
% x_max = 2*pi
%
% y_min = 0
% y_max = pi
%
% LA PRIMERA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (x) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (X) = inner (VECTOR)
% (y) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_XY
%
% LA SEGUNDA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (y) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (y) = inner (VECTOR)
% (x) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_YX
%
% EN ESTE EJEMPLO SE REALIZARN LAS INTEGRACIONES
% UTILIZANDO LOS MTODOS DE 'quad' Y 'quad8'
clc
clear all
close all
% f2i = FUNCION A SER INTEGRADA
x_min=pi;
x_max=2*pi;
y_min=0;
y_max=pi;
tol=1.0e-3;
%
% *************** PRIMERA PARTE ***********************
%
% MTODO DE INTEGRACIN = quad
%
f2i = inline('y*sin(x)+x*cos(y)', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max,tol,'quad');
f2i = inline('y*sin(x)+x*cos(y)', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max,tol,'quad');
disp(' ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
448
disp(' RESULTADOS')
disp(' ----------------------------------------------- ')
disp(' ')
disp('*************** PRIMERA PARTE ****************** ')
disp(' ')
disp(' MTODO DE INTEGRACIN = quad ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
disp(' PRIMERA VARIABLE DE INTEGRACIN (inner) = X ')
disp(' SEGUNDA VARIABLE DE INTEGRACIN (outer) = Y ')
disp(' ')
disp(' LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR x_min = %f \n LMITE SUPERIOR x_max = %f \n ',x_min,x_max);
disp(' ')
disp(' LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR y_min = %f \n LMITE SUPERIOR y_max = %f \n ',y_min,y_max);
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
disp(' ______________________________________________ ')
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
disp(' PRIMERA VARIABLE DE INTEGRACIN (inner) = Y ')
disp(' SEGUNDA VARIABLE DE INTEGRACIN (outer) = X ')
disp(' ')
disp(' LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR y_min = %f \n LMITE SUPERIOR y_max = %f \n ',y_min,y_max);
disp(' ')
disp(' LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR x_min = %f \n LMITE SUPERIOR x_max = %f \n ',x_min,x_max);
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
%
% *************** SEGUNDA PARTE ***********************
%
% MTODO DE INTEGRACIN = quad8
%
f2i = inline('y*sin(x)+x*cos(y)', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max,tol,'quad8');
f2i = inline('y*sin(x)+x*cos(y)', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max,tol,'quad8');
disp(' ')
disp(' ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
449
disp('*************** SEGUNDA PARTE **************** ')
disp(' ')
disp(' MTODO DE INTEGRACIN = quad8 ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
disp(' PRIMERA VARIABLE DE INTEGRACIN (inner) = X ')
disp(' SEGUNDA VARIABLE DE INTEGRACIN (outer) = Y ')
disp(' ')
disp(' LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR x_min = %f \n LMITE SUPERIOR x_max = %f \n ',x_min,x_max);
disp(' ')
disp(' LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR y_min = %f \n LMITE SUPERIOR y_max = %f \n ',y_min,y_max);
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
disp(' ______________________________________________ ')
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
disp(' PRIMERA VARIABLE DE INTEGRACIN (inner) = Y ')
disp(' SEGUNDA VARIABLE DE INTEGRACIN (outer) = X ')
disp(' ')
disp(' LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR y_min = %f \n LMITE SUPERIOR y_max = %f \n ',y_min,y_max);
disp(' ')
disp(' LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN')
disp(' ')
fprintf(' LMITE INFERIOR x_min = %f \n LMITE SUPERIOR x_max = %f \n ',x_min,x_max);
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
RESULTADOS
---------------------------------------------------
*************** PRIMERA PARTE *********************
MTODO DE INTEGRACIN = quad
RESULTADO DE LA PRIMERA INTEGRACIN
______________________________________________
PRIMERA VARIABLE DE INTEGRACIN (inner) = X
SEGUNDA VARIABLE DE INTEGRACIN (outer) = Y
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
450
LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN
LMITE INFERIOR x_min = 3.141593
LMITE SUPERIOR x_max = 6.283185
LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN
LMITE INFERIOR y_min = 0.000000
LMITE SUPERIOR y_max = 3.141593
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869772
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN
______________________________________________
PRIMERA VARIABLE DE INTEGRACIN (inner) = Y
SEGUNDA VARIABLE DE INTEGRACIN (outer) = X
LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN
LMITE INFERIOR y_min = 0.000000
LMITE SUPERIOR y_max = 3.141593
LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN
LMITE INFERIOR x_min = 3.141593
LMITE SUPERIOR x_max = 6.283185
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869703
*************** SEGUNDA PARTE *********************
MTODO DE INTEGRACIN = quad8
RESULTADO DE LA PRIMERA INTEGRACIN
______________________________________________
PRIMERA VARIABLE DE INTEGRACIN (inner) = X
SEGUNDA VARIABLE DE INTEGRACIN (outer) = Y
LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN
LMITE INFERIOR x_min = 3.141593
LMITE SUPERIOR x_max = 6.283185
LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN
LMITE INFERIOR y_min = 0.000000
LMITE SUPERIOR y_max = 3.141593
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
451
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869604
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN
______________________________________________
PRIMERA VARIABLE DE INTEGRACIN (inner) = Y
SEGUNDA VARIABLE DE INTEGRACIN (outer) = X
LMITES DE LA PRIMERA VARIABLE DE INTEGRACIN
LMITE INFERIOR y_min = 0.000000
LMITE SUPERIOR y_max = 3.141593
LMITES DE LA SEGUNDA VARIABLE DE INTEGRACIN
LMITE INFERIOR x_min = 3.141593
LMITE SUPERIOR x_max = 6.283185
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869604
PROGRAMA: intgra18.m
% intgra18
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA
% DOBLE INTEGRACIN, EN FORMA DEFINIDA,
% ENTRE LOS VALORES DE UN PAR DE VARIABLES DE UNA
% FUNCIN UTILIZANDO LA INSTRUCCIN: dblquad
%
% result = dblquad('fun',inmin,inmax,outmin,outmax,tol,method)
%
% DONDE:
%
% result = valor numrico del resultado de la integracin doble
% 'fun' = funcin a ser integrada, cuyo argumento es:
% fun = funcin(inner,outer), donde:
% inner = variable de la primera integracin (VECTOR)
% outer = variable de la segunda integracin (ESCALAR)
% la funcin puede ser introducida por dos mtodos:
% MTODO A: MEDIANTE LA INSTRUCCIN fuction
% MTODO B: MEDIANTE LA INSTRUCCIN inline
%
% inmin = valor mnimo de la variable inner
% inmax = valor mximo de la variable inner
% outmin = valor mnimo de la variable outer
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
452
% outmax = valor mximo de la variable outer
%
% tol = tolerancia, por defecto tol = 1.0e-3
%
% method = Mtodo de integracin: 'quad' o 'quad8'
% EN EL PRESENTE EJEMPLO SE ILUSTRA LA DIFERENCIA
% ENTRE LAS VARIABLES DE LA PRIMERA Y LA SEGUNDA INTEGRACIN
% LA PRIMERA VARIABLE (inner) ES UN VECTOR Y LOS OPERADORES
% MATEMTICOS ( * , / , ^ ) ASOCIADOS A ESTA VARIABLE
% DEBEN ESTAR PRECEDIDOS DEL PUNTO (.)
% LA SEGUNDA VARIABLE (OUTER) ES UN ESCALAR
%
% EN ESTE EJEMPLO SE EJECUTAN DOS INTEGRACIONES DOBLES
% DE UNA MISMA FUNCIN:
%
% fUN = y*sin(x)+x*cos(y)
%
% LMITES DE INTEGRACIN:
%
% x_min = pi
% x_max = 2*pi
%
% y_min = 0
% y_max = pi
%
% LA PRIMERA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (x) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (X) = inner (VECTOR)
% (y) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_XY
%
% LA SEGUNDA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (y) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (y) = inner (VECTOR)
% (x) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_YX
%
% EN ESTE EJEMPLO SE REALIZARN LAS INTEGRACIONES
% UTILIZANDO LOS MTODOS DE 'quad' Y 'quad8'
% CON UNA TOLERANCIA MAYOR QUE 1.0E-3
clc
clear all
close all
% f2i = FUNCION A SER INTEGRADA
x_min=pi;
x_max=2*pi;
y_min=0;
y_max=pi;
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
453
tol=1.0e-1;
%
% *************** PRIMERA PARTE ***********************
%
% MTODO DE INTEGRACIN = quad
%
f2i = inline('y*sin(x)+x*cos(y)', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max,tol,'quad');
f2i = inline('y*sin(x)+x*cos(y)', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max,tol,'quad');
disp(' ')
disp(' RESULTADOS')
disp(' --------------------------------------------------- ')
disp(' ')
disp('*************** PRIMERA PARTE **************** ')
disp(' ')
disp(' MTODO DE INTEGRACIN = quad ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN (X Y) ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
disp(' ______________________________________________ ')
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN (Y X) ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
%
% *************** SEGUNDA PARTE ***********************
%
% MTODO DE INTEGRACIN = quad8
%
f2i = inline('y*sin(x)+x*cos(y)', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max,tol,'quad8');
f2i = inline('y*sin(x)+x*cos(y)', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max,tol,'quad8');
disp(' ')
disp(' ')
disp('*************** SEGUNDA PARTE *************** ')
disp(' ')
disp(' MTODO DE INTEGRACIN = quad8 ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN (X Y) ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
454
disp(' ______________________________________________ ')
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN (Y X) ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
RESULTADOS
---------------------------------------------------
*************** PRIMERA PARTE *********************
MTODO DE INTEGRACIN = quad
RESULTADO DE LA PRIMERA INTEGRACIN (X Y)
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.870933
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN (Y X)
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.870933
*************** SEGUNDA PARTE *********************
MTODO DE INTEGRACIN = quad8
RESULTADO DE LA PRIMERA INTEGRACIN (X Y)
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869604
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN (Y X)
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869604
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
455
PROGRAMA: intgra19.m
% intgra19
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE REALIZAR UNA
% DOBLE INTEGRACIN, EN FORMA DEFINIDA,
% ENTRE LOS VALORES DE UN PAR DE VARIABLES DE UNA
% FUNCIN UTILIZANDO LA INSTRUCCIN: dblquad
%
% result = dblquad('fun',inmin,inmax,outmin,outmax,tol,method)
%
% DONDE:
%
% result = valor numrico del resultado de la integracin doble
% 'fun' = funcin a ser integrada, cuyo argumento es:
% fun = funcin(inner,outer), donde:
% inner = variable de la primera integracin (VECTOR)
% outer = variable de la segunda integracin (ESCALAR)
% la funcin puede ser introducida por dos mtodos:
% MTODO A: MEDIANTE LA INSTRUCCIN fuction
% MTODO B: MEDIANTE LA INSTRUCCIN inline
%
% inmin = valor mnimo de la variable inner
% inmax = valor mximo de la variable inner
% outmin = valor mnimo de la variable outer
% outmax = valor mximo de la variable outer
%
% tol = tolerancia, por defecto tol = 1.0e-3
%
% method = Mtodo de integracin: 'quad' o 'quad8'
% EN EL PRESENTE EJEMPLO SE ILUSTRA LA DIFERENCIA
% ENTRE LAS VARIABLES DE LA PRIMERA Y LA SEGUNDA INTEGRACIN
% LA PRIMERA VARIABLE (inner) ES UN VECTOR Y LOS OPERADORES
% MATEMTICOS ( * , / , ^ ) ASOCIADOS A ESTA VARIABLE
% DEBEN ESTAR PRECEDIDOS DEL PUNTO (.)
% LA SEGUNDA VARIABLE (OUTER) ES UN ESCALAR
%
% EN ESTE EJEMPLO SE EJECUTAN DOS INTEGRACIONES DOBLES
% DE UNA MISMA FUNCIN:
%
% fUN = y*sin(x)+x*cos(y)
%
% LMITES DE INTEGRACIN:
%
% x_min = pi
% x_max = 2*pi
%
% y_min = 0
% y_max = pi
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
456
% LA PRIMERA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (x) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (X) = inner (VECTOR)
% (y) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_XY
%
% LA SEGUNDA INTEGRACIN DOBLE SE EJECUTA INTEGRANDO
% PRIMERO CON RESPECTO A (y) Y LUEGO CON RESPECTO A (y)
% DONDE:
% (y) = inner (VECTOR)
% (x) = outer (ESCALAR)
%
% EL RESULTADO SE ALMACENA EN LA VARIABLE: result_YX
%
% EN ESTE EJEMPLO SE REALIZARN LAS INTEGRACIONES
% UTILIZANDO LOS MTODOS DE 'quad' Y 'quad8'
% CON UNA TOLERANCIA MENOR QUE 1.0E-3
clc
clear all
close all
% f2i = FUNCION A SER INTEGRADA
x_min=pi;
x_max=2*pi;
y_min=0;
y_max=pi;
tol=1.0e-5;
%
% *************** PRIMERA PARTE ***********************
%
% MTODO DE INTEGRACIN = quad
%
f2i = inline('y*sin(x)+x*cos(y)', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max,tol,'quad');
f2i = inline('y*sin(x)+x*cos(y)', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max,tol,'quad');
disp(' ')
disp(' RESULTADOS')
disp(' -------------------------------------------------- ')
disp(' ')
disp('*************** PRIMERA PARTE **************** ')
disp(' ')
disp(' MTODO DE INTEGRACIN = quad ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
disp(' ______________________________________________ ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
457
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
%
% *************** SEGUNDA PARTE ***********************
%
% MTODO DE INTEGRACIN = quad8
%
f2i = inline('y*sin(x)+x*cos(y)', 'x', 'y');
result_XY = dblquad(f2i, x_min, x_max, y_min, y_max,tol,'quad8');
f2i = inline('y*sin(x)+x*cos(y)', 'y', 'x');
result_YX = dblquad(f2i, y_min , y_max, x_min, x_max,tol,'quad8');
disp(' ')
disp(' ')
disp('*************** SEGUNDA PARTE **************** ')
disp(' ')
disp(' MTODO DE INTEGRACIN = quad8 ')
disp(' ')
disp(' RESULTADO DE LA PRIMERA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_XY);
disp(' ______________________________________________ ')
disp(' ')
disp(' RESULTADO DE LA SEGUNDA INTEGRACIN ')
disp(' ______________________________________________ ')
disp(' ')
fprintf(' VALOR NMERICO DE LA INTEGRAL DOBLE = %f \n ',result_YX);
RESULTADOS
---------------------------------------------
*************** PRIMERA PARTE *********************
MTODO DE INTEGRACIN = quad
RESULTADO DE LA PRIMERA INTEGRACIN
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869605
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN
______________________________________________
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
458
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869605
*************** SEGUNDA PARTE *********************
MTODO DE INTEGRACIN = quad8
RESULTADO DE LA PRIMERA INTEGRACIN
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869604
______________________________________________
RESULTADO DE LA SEGUNDA INTEGRACIN
______________________________________________
VALOR NMERICO DE LA INTEGRAL DOBLE = -9.869604
PROGRAMA: intgra20.m
%intgra20
% ESTE PROGRAMA ILUSTRA COMO SE REALIZA UNA
% DIFERENCIACIN NUMRICA
%
% UN MTODO CONSISTE EN UTILIZAR LA INSTRUCCIN
%
% diff(variable)
%
% diff(variable) CALCULA LA DIFERENCIA ENTRE LOS
% ELEMENTOS DE LA variable, LA DIFERENCIACIN SE
% PUEDE APROXIMAR EN MATLAB MEDIANTE:
%
% dy = diff(y)./diff(x)
%
% COMO [ dif(Y) ] CALCULA LA DIFERENCIA ENTRE LOS ELEMENTOS
% DE LA VARIABLE ( y ), LA SALIDA RESULTANTE [ DIFF(Y) ]
% CONTIENE UN ELEMENTO MENOS QUE LA VARIABLE ORIGINAL ( Y )
% ENTONCES, PARA REPRESENTAR LA DERIVADA, UN ELEMENTO DE LA
% VARIABLE ( X ) DEBE SER ELIMINADO, FORMANDO DE ESTA MANERA
% LA VARIABLE ( xd ) CON UN ELEMENTO MENOS.
%
% LA REPRESENTACIN DE LA DERIVADA SE OBTIENE GRAFICANDO:
% plot(xd,dy)
%
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
459
% EXISTEN TRES MTODOS PARA OBTENER LA DERIVACIN NUMRICA:
%
% MTODO A:
%
% DIFERENCIACIN HACIA ATRS
%
% SI LA VARIABLE ( xd ) CONTIENE LOS VALORES DE ( x )
% DESDE EL PRIMER ELEMENTO HASTA EL PENLTIMO, MATLAB
% EJECUTA LA DIFERENCIACIN HACIA ATRS
%
% MTODO B:
%
% DIFERENCIACIN HACIA ADELANTE
%
% SI LA VARIABLE ( xd ) CONTIENE LOS VALORES DE ( x )
% DESDE EL SEGUNDO ELEMENTO HASTA EL LTIMO, MATLAB
% EJECUTA LA DIFERENCIACIN HACIA ADELANTE
%
% MTODO C:
%
% DIFERENCIACIN CENTRAL
%
% SE DETERMINA LA DERIVADA MEDIANTE EL CALCULO
%
% dy = (numerador) ./ (denominador)
%
% DONDE:
%
% numerador = [ VALORES DE ( y ), DESDE EL SEGUNDO ELEMENTO HASTA
% EL LTIMO] MENOS [ VALORES DE ( y ), DESDE EL
PRIMER
% ELEMENTO HASTA EL PENLTIMO]
%
% denominador = [ VALORES DE ( x ), DESDE EL SEGUNDO ELEMENTO
HASTA
% EL ULTIMO] MENOS [ VALORES DE ( x ), DESDE EL
PRIMER
% ELEMENTO HASTA EL PENLTIMO]
%
% LA REPRESENTACIN DE LA DEERIVADA SE OBTIENE MEDIANTE LA
INSTRUCCIN:
%
% PLOT(xd,dy)
%
% DONDE:
%
% xd = VALORES DE LA VARIABLE ( x ) CON UN ELEMENTO
MENOS
%
% yd = VALORES DE LA DIFERENCIACIN CENTRAL
clear all
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
460
close all
clc
close all hidden
% EJEMPLO:
% EN EL SIGUIENTE EJEMPLO SE TIENEN VALORES EXPERIMENTALES
% DE ( y ) EN FUNCION DE ( x ) Y SE QUIERE GRAFICAR LA
% DERIVADA DE ( y ) VERSUS ( x )
x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.36,11.12];
%
% MTODO A
% DIFERENCIACIN HACIA ATRS
%
dy=diff(y)./diff(x);
xd1=x(1:length(x)-1);
plot(xd1,dy,'ro',xd1,dy,'b--')
title(' MTODO A ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE xd')
figure
%
% MTODO B
% DIFERENCIACIN HACIA ADELANTE
%
xd2=x(2:length(x));
plot(xd2,dy,'r*',xd2,dy,'r-')
title(' MTODO B ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE xd')
%
% MTODO C
% DIFERENCIACIN CENTRAL
% CON LA VARIABLE (xd) HACIA ADELANTE
num=y(2:length(y))-y(1:length(y)-1);
den=x(2:length(x))-x(1:length(x)-1);
dy1=num./den;
xd3=x(2:length(x));
figure
plot(xd3,dy1,'y+',xd3,dy1)
title(' MTODO C ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE (xd) HACIA ADELANTE')
%
% MTODO C
% DIFERENCIACIN CENTRAL
% CON LA VARIABLE (xd) HACIA ATRS
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
461
num=y(2:length(y))-y(1:length(y)-1);
den=x(2:length(x))-x(1:length(x)-1);
dy1=num./den;
xd3=x(1:length(x)-1);
figure
plot(xd3,dy1,'y+',xd3,dy1)
title(' MTODO C ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE (xd) HACIA ATRS')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
462
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
463
PROGRAMA: intgra21.m
%intgra21
% ESTE PROGRAMA ILUSTRA COMO SE REALIZA UNA
% DIFERENCIACIN NUMRICA
%
% UN MTODO CONSISTE EN UTILIZAR LA INSTRUCCIN
%
% diff(variable)
%
% diff(variable) CALCULA LA DIFERENCIA ENTRE LOS
% ELEMENTOS DE LA variable, LA DIFERENCIACIN SE
% PUEDE APROXIMAR EN MATLAB MEDIANTE:
%
% dy = diff(y)./diff(x)
%
% COMO [ dif(Y) ] CALCULA LA DIFERENCIA ENTRE LOS ELEMENTOS
% DE LA VARIABLE ( y ), LA SALIDA RESULTANTE [ DIFF(Y) ]
% CONTIENE UN ELEMENTO MENOS QUE LA VARIABLE ORIGINAL ( Y )
% ENTONCES, PARA REPRESENTAR LA DERIVADA, UN ELEMENTO DE LA
% VARIABLE ( X ) DEBE SER ELIMINADO, FORMANDO DE ESTA MANERA
% LA VARIABLE ( xd ) CON UN ELEMENTO MENOS.
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
464
%
% LA REPRESENTACIN DE LA DERIVADA SE OBTIENE GRAFICANDO:
% plot(xd,dy)
%
% EXISTEN TRES MTODOS PARA OBTENER LA DERIVACIN NUMRICA:
%
% MTODO A:
%
% DIFERENCIACIN HACIA ATRS
%
% SI LA VARIABLE ( xd ) CONTIENE LOS VALORES DE ( x )
% DESDE EL PRIMER ELEMENTO HASTA EL PENLTIMO, MATLAB
% EJECUTA LA DIFERENCIACIN HACIA ATRS
%
% MTODO B:
%
% DIFERENCIACIN HACIA ADELANTE
%
% SI LA VARIABLE ( xd ) CONTIENE LOS VALORES DE ( x )
% DESDE EL SEGUNDO ELEMENTO HASTA EL LTIMO, MATLAB
% EJECUTA LA DIFERENCIACIN HACIA ADELANTE
%
% MTODO C:
%
% DIFERENCIACIN CENTRAL
%
% SE DETERMINA LA DERIVADA MEDIANTE EL CALCULO
%
% dy = (numerador) ./ (denominador)
%
% DONDE:
%
% numerador = [ VALORES DE ( y ), DESDE EL SEGUNDO ELEMENTO HASTA
% EL LTIMO] MENOS [ VALORES DE ( y ), DESDE EL
PRIMER
% ELEMENTO HASTA EL PENLTIMO]
%
% denominador = [ VALORES DE ( x ), DESDE EL SEGUNDO ELEMENTO
HASTA
% EL ULTIMO] MENOS [ VALORES DE ( x ), DESDE EL
PRIMER
% ELEMENTO HASTA EL PENLTIMO]
%
% LA REPRESENTACIN DE LA DEERIVADA SE OBTIENE MEDIANTE LA
INSTRUCCIN:
%
% PLOT(xd,dy)
%
% DONDE:
%
% xd = VALORES DE LA VARIABLE ( x ) CON UN ELEMENTO
MENOS
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
465
%
% yd = VALORES DE LA DIFERENCIACIN CENTRAL
%
% EJEMPLO:
%
% EN EL SIGUIENTE EJEMPLO SE TIENEN VALORES EXPERIMENTALES
% DE ( y ) EN FUNCIN DE ( x ) Y SE QUIERE GRAFICAR LA
% DERIVADA DE ( y ) VERSUS ( x ) PERO OBTENIENDO PRIMERO
% EL POLINOMIO QUE MEJOR REPRESENTA A LOS DATOS EXPERIMENTALES
% Y DERIVANDO A ESTE POLINOMIO.
%
% EN ESTE EJEMPLO SE TIENE OTRO MTODO DE DIFERENCIACIN
% NUMRICA, CON LA INSTRUCCIN polyder
%
% MTODO D
%
% pd = polyder(p)
%
% DONDE:
%
% ( p ) = COEFICIENTES DEL POLINOMIO, OBTENIDO DE LOS DATOS
EXPERIMENTALES
%
% ( PD ) = COEFICIENTES DEL POLINOMIO, QUE REPRESENTA A LA
DERIVADA DE ( P )
clear all
close all
clc
close all hidden
% DATOS EXPERIMENTALES
x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
ye=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.36,11.12];
%
% MTODO A
% DIFERENCIACIN HACIA ATRS
%
dy=diff(ye)./diff(x);
xd1=x(1:length(x)-1);
plot(xd1,dy,'ro',xd1,dy,'r--')
title(' MTODO A ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE xd')
figure
%
% MTODO B
% DIFERENCIACIN HACIA ADELANTE
%
xd2=x(2:length(x));
plot(xd2,dy,'r*',xd2,dy,'r-')
title(' MTODO B ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE xd')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
466
figure
%
% MTODO C
% DIFERENCIACIN CENTRAL
%
num=ye(2:length(ye))-ye(1:length(ye)-1);
den=x(2:length(x))-x(1:length(x)-1);
dy1=num./den;
xd3=x(2:length(x));
plot(xd3,dy1,'r*',xd3,dy1)
title(' MTODO C ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE xd')
figure
% MTODO D
% DIFERENCIACIN POR POLINOMIO
% OBTENCIN DEL MEJOR POLINOMIO QUE REPRESENTE A LOS DATOS
n=length(x)-4;
p=polyfit(x,ye,n);
pol=polyval(p,x);
plot(x,pol,'ro',x,pol,x,ye,'b*',x,ye)
title(' COMPARACIN DE DATOS CON POLINOMIO ')
ylabel('POLINOMIO Y DATOS')
xlabel(' VARIABLE x')
legend('Evaluacin del Polinomio','Evaluacin del Polinomio',...
'Datos Experimentales','Datos Experimentales',-1);
a6=p(1,1);
a5=p(1,2);
a4=p(1,3);
a3=p(1,4);
a2=p(1,5);
a1=p(1,6);
a0=p(1,7);
y=a6*x.^6+a5*x.^5+a4*x.^4+a3*x.^3+a2*x.^2+a1*x+a0;
pd=polyder(p);
xd4=[0:0.1:max(x)];
dypol=polyval(pd,xd4);
figure
plot(xd4,dypol,'b*',xd4,dypol)
title(' MTODO D ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE x')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
467
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
468
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
469
PROGRAMA: intgra22.m
% intgra22
% ESTE PROGRAMA ILUSTRA UNAS APLICACIONES
% FUNDAMENTALES PARA LA DERIVACIN NUMRICA
%
% UNA VEZ QUE SE DETERMINA NUMERICAMENTE LA
% DERIVADA DE CIERTOS DATOS EXPERIMENTALES
% O LA DERIVADA DE UN POLINOMIO O UNA FUNCIN,
% GENERALMENTE SE QUIERE SABER DONDE LA DERIVADA
% TOMA EL VALOR CERO Y DONDE TIENE MXIMOS Y MNIMOS
%
% LAS INSTRUCCIONES NECESARIAS SON:
%
% fmin('funcin',a,b)
%
%
% fzero('funcin',a,b)
%
% DONDE:
%
% a,b = rango
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
470
% EN ESTE EJEMPLO UTILIZAREMOS LOS DATOS DEL
% PROBLEMA ANTERIOR
close all
clear all
clc
close all hidden
% DATOS EXPERIMENTALES
x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
ye=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.36,11.12];
n=length(x)-5;
p=polyfit(x,ye,n);
a6=p(1,1);
a5=p(1,2);
a4=p(1,3);
a3=p(1,4);
a2=p(1,5);
a1=p(1,6);
a0=p(1,7);
y=a6*x.^6+a5*x.^5+a4*x.^4+a3*x.^3+a2*x.^2+a1*x+a0;
pd=polyder(p);
xd4=linspace(0,1,100);
dypol=polyval(pd,xd4);
plot(xd4,dypol,'b*',xd4,dypol,'ro')
grid
title(' MTODO D ')
ylabel('DERIVADA dy')
xlabel(' VARIABLE x')
hold
fplot('itgfun4',[0,1])
home
disp(' ')
disp('RESPUESTA')
disp(' ')
a=min(x); % RANGO PARA LA BUSQUEDA DEL MNIMO
b=.5;
xmin=fmin('itgfun4',a,b);
fprintf('EL PRIMER MNIMO LOCAL ES EL SIGUIENTE = %1.4f\n',xmin)
disp(' ')
a=.6; % RANGO PARA LA BUSQUEDA DEL MNIMO
b=max(x);
xmin=fmin('itgfun4',a,b);
fprintf('EL SEGUNDO MNIMO LOCAL ES EL SIGUIENTE = %1.4f\n',xmin)
disp(' ')
disp('CON AYUDA DE LA GRFICA VERIFICAR ESTOS VALORES ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
471
RESPUESTA
EL PRIMER MNIMO LOCAL ES EL SIGUIENTE = 0.4381
EL SEGUNDO MNIMO LOCAL ES EL SIGUIENTE = 0.8445
CON AYUDA DE LA GRFICA VERIFICAR ESTOS VALORES
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
472
PROGRAMA: intgra23.m
% intgra23
% ESTE PROGRAMA ILUSTRA UNAS APLICACIONES
% FUNDAMENTALES PARA LA DERIVACIN NUMRICA
%
% UNA VEZ QUE SE DETERMINA NUMERICAMENTE LA
% DERIVADA DE CIERTOS DATOS EXPERIMENTALES
% O LA DERIVADA DE UN POLINOMIO O UNA FUNCIN,
% GENERALMENTE SE QUIERE SABER DONDE LA DERIVADA
% TOMA EL VALOR CERO Y DONDE TIENE MXIMOS Y MNIMOS
%
% LAS INSTRUCCIONES NECESARIAS SON:
%
% fmin('funcin',a,b)
%
%
% fzero('funcin',a,b)
%
% DONDE:
%
% a,b = rango
% EN ESTE EJEMPLO UTILIZAREMOS LOS DATOS DE
% LA FUNCIN humps.m DE LA LIBRERA DE MATLAB
close all
clear all
clc
close all hidden
zoom
fplot('humps',[0,2])
grid on
title('GRAFICA DE LA FUNCIN humps ')
xlabel(' VALORES DE x ')
ylabel(' VALORES DE LA FUNCIN humps ')
x=linspace(0,2,100);
y=humps(x);
dy=diff(y)./diff(x);
xd=x(1:length(x)-1);
hold
plot(xd,dy,'r-')
title('GRAFICA DE LA DERIVADA DE LA FUNCIN humps ')
xlabel(' VALORES DE x ')
ylabel(' VALORES DE LA DERIVADA DE LA FUNCIN humps ')
legend('FUNCIN humps','DERIVADA DE humps',-1);
grid on
disp(' ')
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
473
home
disp('RESPUESTA')
disp(' ')
xmin=fmin('humps',0,0.64);
fprintf('EL MNIMO LOCAL ES EL SIGUIENTE = %1.4f\n',xmin)
disp(' ')
disp(' EL RANGO DE VALORES DE(x), DONDE SE ENCONTR ')
disp(' EL CERO DE LA FUNCIN, ES EL SIGUIENTE: ')
xcero=fzero('humps',1.29);
disp(' ')
fprintf('EL VALOR DE (x), PARA LA FUNCIN IGUAL A CERO, ES = %1.4f\n',xcero)
disp(' ')
disp('CON AYUDA DE LA GRFICA VERIFICAR ESTOS VALORES ')
RESPUESTA
EL MNIMO LOCAL ES EL SIGUIENTE = 0.6370
EL RANGO DE VALORES DE(x), DONDE SE ENCONTR
EL CERO DE LA FUNCIN, ES EL SIGUIENTE:
Zero found in the interval: [1.2535, 1.3265].
EL VALOR DE (x), PARA LA FUNCIN IGUAL A CERO, ES = 1.2995
CON AYUDA DE LA GRFICA VERIFICAR ESTOS VALORES
Introduccin al MATLAB UNEXPO
Ing. Luis Rojas Malav
474
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
475
ECUACIONES DIFERENCIALES ORDINARIAS
La dinmica de los procesos es una de las reas ms importantes de la Ingeniera. Un
proceso o sistema mecnico est relacionado con desplazamientos, velocidades y
aceleraciones. Un sistema electrnico est relacionado con voltaje, corriente y sus
derivadas con respecto al tiempo. Las ecuaciones que describen el comportamiento
dinmico de estos sistemas se denominan ecuaciones diferenciales.
Una ecuacin, en la cual se expresan una o ms derivadas ordinarias, de una funcin, la
cual contiene a la incgnita que se desea determinar, se denomina Ecuacin Diferencial
Ordinaria, ODE (Ordinary Diferential Equation), cuyo orden est determinado por el orden
de la derivada ms alta; por ejemplo, si en una ecuacin diferencial, la derivada ms alta,
es de segundo orden, la ecuacin diferencial es una ODE de segundo orden.
Los problemas relacionados con las ecuaciones diferenciales se pueden clasificar en
Problemas de Valor Inicial, IVPs ( Initial Value Problems) y problemas de valores en las
fronteras. En este capitulo se estudiar la aplicacin de las instrucciones utilizadas en
MATLAB para resolver Ecuaciones Diferenciales Ordinarias, ODEs, que representan
Problemas de Valor Inicial, IVPs. En este caso las ecuaciones diferenciales ordinarias,
ODEs, pertenecen al dominio del tiempo, por lo tanto todas la condiciones, requeridas para
su resolucin, deben especificarse en el momento inicial, t = 0.
ODE DE PRIMER ORDEN
Una Ecuacin Diferencial Ordinaria de Primer Orden con Problema de Valor Inicial puede
representarse de la siguiente forma:
d/dt[y(t)] = f(y,t) con y(t) = yo cuando t = 0
Otra forma:
y' = f(y,t) con y(0) = yo
Caractersticas:
1. Derivada ms alta: primer orden
2. Un solo estado para describir el comportamiento dinmico: y
3. Una sola condicin inicial = y(0) = yo
4. El rango del dominio de la variable t, desde t=0 hasta t_ final
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
476
ODEs DE ORDEN SUPERIOR
Las Ecuaciones Diferenciales Ordinarias de Orden Superior, segundo, tercero, etc., con
Problemas de Valor Inicial pueden ser resueltas, transformndolas en varias Ecuaciones
Diferenciales Ordinarias de Primer Orden, como se muestra en el ejemplo a continuacin,
de un sistema de segundo orden:
A*d/dt[d/dt[y(t)]] + B*d/dt[y(t)] + C*y(t) = D*u(t)
Donde:
A,B,C,D son constantes
u(t) funcin conocida de entrada
Otra forma:
A*y'' + B*y' + C*y = D*u
Descomposicin:
y'' = (D/A)*u (B/A)*y' (C/A)*y
Numero de Estados:
Primer Estado = y
Segundo Estado = y'
Condiciones Iniciales:
Para el Primer Estado y(0) = yo
Para el Segundo Estado y'(0) = y'o
Cambios de Variables:
y1 = y
y2 = y'
ODEs de Primer Orden:
y'1 = y'
y'2 = y'' = (D/A)*u (B/A)*y' (C/A)*y
Quedando finalmente:
y'1 = y2
y'2 = (D/A)*u (B/A)*y2 (C/A)*y1
Dos ecuaciones diferenciales de primer orden, las cuales pueden ser resueltas
simultneamente.
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
477
METODOLOGA
Para resolver una ODE de primer orden o varias ODEs de primer orden, provenientes de la
descomposicin de una ODE de orden superior, se deben codificar dos programas o
archivos del tipo (.m), descritos a continuacin:
En el primer archivo tipo (m) escribiremos la funcin, la cual contiene la o las ODEs de
primer orden, a ser resueltas. Este archivo tipo (m) acepta dos argumentos de entrada, los
cuales son (t,y) y tiene como salida un vector columna con los valores de y'1, y'2, y'3 , ......
, y'n.
En el segundo archivo tipo (m) escribiremos el programa con los datos de las condiciones
iniciales de las variables de estado del problema, el rango del dominio del variable (t) y la
instruccin de MATLAB, para resolver la o las ecuaciones diferenciales.
A continuacin se ilustra la aplicacin de esta metodologa, mediante la solucin de la
siguiente ecuacin diferencial:
y''' 3y'' y'y = 0
Condiciones iniciales:
y(0) = 0
y'(0) = 1
y'' (0) = -1
Cambios de variables:
y1 = y
y2 = y'
y3 = y''
Descomposicin:
y''' = 3y'' + y'y
Las ODEs de primer orden son:
y'1 = y'
y'2 = y''
y'3 = y''' = 3y'' + y'y
Quedando finalmente:
y'1 = y2
y'2 = y3
y'3 = 3y3 + y2y1
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
478
Archivos tipo (m), para resolver las ODEs de primer orden:
1) Primer archivo: nombre_funcion . m
function y_prima = nombre_funcion(t,y)
y_prima = [y(2);y(3);3*y(3)+y(2)*y(1)];
2) Segundo archivo: nombre_programa . m
% nombre_programa
% COMENTARIOS
% DATOS
Y0 = [0;1;-1]; % CONDICIONES INICIALES
t_rango = [0 1];
% SOLUCION
[t,y] = solver('nombre_funcion',t_rango,Y0)
% VISUALIZACION DE LOS RESULTADOS
plot(t,y1,t,y2,t,y3)
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
479
TIPOS DE ODE solver
PROBLEMAS SENCILLOS (NONSTIFF)
q ode45 Basado en la frmula de RUNGE KUTTA de
cuarto y quinto orden. Se aplica para la mayora de los
problemas.
q ode23 Basado en la frmula de RUNGE KUTTA de
segundo y tercer orden. Se aplica mejor que el ode45 para
problemas de mediana dificultad.
q ode113 Basado en la frmula de orden variable de ADAMS
BASHFORTH MOULTON. Se aplica ms
eficientemente que ode45 en tolerancias restringidas y
cuando la funcin de la ODE es difcil de evaluar
PROBLEMAS COMPLEJOS (STIFF)
q ode15s Basado en las frmulas de diferenciacin numrica
hacia atrs, conocido como MTODO GEAR. Se aplica
cuando se sospecha que el problema es complejo (STIFF) o
cuando ode45 falla o es ineficiente.
q ode23s Basado en la frmula modificada de
ROSENBROCK de orden 2. Se aplica para problemas
complejos (STIFF), en los cuales ode15s no es efectivo.
q ode23t Basado en una implementacin del Mtodo
Trapezoidal. Se aplica para problemas moderadamente
complejos.
q ode23tb Basado en la frmula implcita de RUNGE
KUTTA, con una primera etapa que es la aplicacin del
Mtodo Trapezoidal y una segunda etapa que es la
aplicacin de la frmula de segundo orden de diferenciacin
hacia atrs. Se aplica para problemas complejos.
A continuacin se presentan una serie de programas que ilustran la
metodologa para resolver ODEs:
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
480
PROGRAMA: edo1.m
% edo1
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL UTILIZANDO LA INSTRUCCIN:
%
% [t,y] = ode45('funcin',[t_inicial,t_final],y_inicial,options)
%
% ode45 resuelve una ecuacin diferencial ordinaria utilizando
% el mtodo de Runge-Kutta de cuarto y quinto orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% t = variable de integracin (vector columna)
%
% y = resultado de integracin (vector columna)
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% options = para establecer parmetros como son:
% la tolerancia (error deseado para la iteracin),
% por defecto: tol = 1.e-3
% y el estatus de la integracin
%
%
%
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3x^2
%
% La ecuacin diferencial est definida en la funcin (odefun1.m),
% la cual se encuentra almacenada en la librera de MATLAB
clc
close all
clear all
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
481
% SOLUCIN MATLAB
%
[x,y]=ode45('odefun1',[2,4],0.5);
% NOTE QUE: y_inicial = 0.5 CUANDO t_inicial = 2.0
% SOLUCIN ANALTICA
%
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = x.^3 - 7.5
%
% Evaluacin de la solucin analtica
y_analitica = x.^3 - 7.5;
plot(x,y,'ro',x,y,'r-',x,y_analitica,'*')
% Grfica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun1
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun8"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS.
function Yprime=edfun8(t,Y)
Yprime(1,1)=Y(2)
Yprime(2,1)=t/(exp(t)+Y(1));
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
482
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
483
PROGRAMA: edo2.m
% edo2
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL UTILIZANDO UN RANGO
% DETERMINADO DE INTEGRACIN, DONDE t_inicial < t_final.
%
% La instruccin es la siguiente:
%
% [t,y] = ode45('funcin',[t_inicial,t_final],y_inicial,options)
%
% ode45 resuelve una ecuacin diferencial ordinaria utilizando
% el mtodo de Runge-Kutta de cuarto y quinto orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% t = variable de integracin (vector columna)
%
% y = resultado de integracin (vector columna)
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_rango = [t_inial:t_incremento:t_final]
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_incremento = valor del incremento de t
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% options = para establecer parmetros como son:
% la tolerancia (error deseado para la iteracin,
% por defecto: tol = 1.e-3) y el estatus de la integracin
%
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3x^2
%
% La ecuacin diferencial est definida en la funcin (odefun1.m),
% la cual se encuentra almacenada en la librera de MATLAB
clc
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
484
close all
clear all
% DATOS
x_rango=[2:0.05:4];
y_inicial = 0.5;% NOTE QUE: y_inicial = 0.5 CUANDO t_inicial = 2.0
% SOLUCIN MATLAB
[x,y]=ode45('odefun1',x_rango,y_inicial)
% SOLUCIN ANALTICA
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = x.^3 - 7.5
%
% Evaluacin de la solucin analtica
ya = x_rango.^3 - 7.5;
plot(x,y,'ro',x,y,'r-',x_rango,ya,'b*')
% Grafica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun1
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1"
LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER
INTEGRADA.
function dy= odefun1(x,y);
dy=3*x^2;
% LA ECUACIN DIFERENCIAL ES:
% dy/dx = 3*x^2
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
485
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
486
PROGRAMA: edo3.m
% edo3
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACION DIFERENCIAL UTILIZANDO UN RANGO
% DETERMINADO DE INTEGRACIN, DONDE t_inicial > t_final.
%
% La instruccin es la siguiente:
%
% [t,y] = ode45('funcin',[t_inicial,t_final],y_inicial,options)
%
% ode45 resuelve una ecuacin diferencial ordinaria utilizando
% el mtodo de Runge-Kutta de cuarto y quinto orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% t = variable de integracin (vector columna)
%
% y = resultado de integracin (vector columna)
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_rango = [t_inial:-t_decremento:t_final]
%
% NOTA: t_inicial > t_final
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_decremento = valor del decremento de t
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% options = para establecer parmetros como son:
% la tolerancia (error deseado para la
% iteracin, por defecto: tol = 1.e-3)
% y el estatus de la integracin
%
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3x^2
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
487
%
% La ecuacin diferencial est definida en la funcin (odefun1.m),
% la cual se encuentra almacenada en la librera de MATLAB
clc
close all
clear all
% DATOS
x_rango=[8:-0.1:0];
y_inicial=504.5;% NOTE QUE: y_inicial = 504.5
% CUANDO t_inicial = 8.0
% SOLUCIN MATLAB
[x,y]=ode45('odefun1',x_rango,y_inicial)
% SOLUCIN ANALTICA
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = x.^3 - 7.5
%
% Evaluacin de la solucin analtica
ya = x_rango.^3 - 7.5;
plot(x,y,'ro',x,y,'r-',x_rango,ya,'b*')
% grafica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun1
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1"
LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER
INTEGRADA.
function dy= odefun1(x,y);
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
488
dy=3*x^2;
% LA ECUACIN DIFERENCIAL ES:
% dy/dx = 3*x^2
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
489
PROGRAMA: edo4.m
% edo4
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACION DIFERENCIAL UTILIZANDO LA OPCIN DE
% REALIZAR LA INTEGRACIN CON UNA TOLERANCIA DETERMINADA
%
% LA INSTRUCCION ES LA SIGUIENTE:
%
% [t,y] = ode45('funcin',t_inicial,t_final,y_inicial,option)
%
% ode45 resuelve una ecuacin diferencial ordinaria utilizando
% el metodo de Runge-Kutta en cuarto y quinto orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% t = variable de integracin (vector columna)
%
% y = resultado de integracin (vector columna)
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% tolerancia = error deseado para la iteracin,
% por defecto, tol = 1.e-3
%
% La tolerancia debe ser establecida mediante la instruccin:
%
% option = odeset('RelTol',1e-4,'AbsTol',1e-2);
%
% DONDE:
% RelTol = Tolerancia Relativa
% Valor de RelTol, indicado por el usuario
% (en este ejemplo) 1e-4
% AbsTol = Tolerancia Absoluta
% Valor de AbsTol, indicado por el usuario
% (en este ejemplo) 1e-2
%
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
490
%
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3x^2
%
% La ecuacin diferencial est definida en la funcin (odefun1.m),
% la cual se encuentra almacenada en la librera de MATLAB
clc
clear all
close all
% DATOS
option = odeset('RelTol',1e-5,'AbsTol',1e-2);
% SOLUCIN MATLAB
[x,y]=ode45('odefun1',[2,4],0.5,option);
% SOLUCIN ANALTICA
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = x.^3 - 7.5
%
% Evaluacin de la solucin analtica
ya = x.^3 - 7.5;
plot(x,y,'ro',x,y,'r-',x,ya,'b*')
% grafica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun1
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
491
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun1"
LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER
INTEGRADA.
function dy= odefun1(x,y);
dy=3*x^2;
% LA ECUACIN DIFERENCIAL ES:
% dy/dx = 3*x^2
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
492
PROGRAMA: edo5.m
% edo5
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL UTILIZANDO LA INSTRUCCIN:
%
% [t,y] = ode23('funcin',[t_inicial,t_final],y_inicial,options)
%
% ode23 resuelve una ecuacin diferencial ordinaria utilizando
% el metodo de Runge-Kutta de segundo y tercer orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% t = variable de integracin (vector columna)
%
% y = resultado de integracin (vector columna)
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% options = para establecer parmetros como son:
% la tolerancia (error deseado para la iteracin,
% por defecto: tol = 1.e-3) y el estatus
% de la integracin
%
%
%
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3.4444e-05-0.0015*y;
%
% La ecuacin diferencial est definida en la funcin (odefun2.m),
% la cual se encuentra almacenada en la librera de MATLAB
clc
close all
clear all
%SOLUCIN MATLAB
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
493
[x,y]=ode23('odefun2',[0,120],0.0022);
%SOLUCIN ANALTICA
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = 0.022963-0.020763*exp(-0.0015*x)
%
% Evaluacin de la solucin analtica
ya = 0.022963-0.020763*exp(-0.0015*x);
plot(x,y,'ro',x,y,'r-',x,ya,'*')
% grafica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun2" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun2
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun2"
LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER
INTEGRADA.
function dy=edfun2(x,y)
dy=3.4444e-05-0.0015*y;
% LA ECUACIN DIFERENCIAL ES:
% dy/dx = 3.4444e-05-0.0015*y
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
494
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
495
PROGRAMA: edo6.m
% edo6
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACION DIFERENCIAL UTILIZANDO LA OPCIN DE
% REALIZAR LA INTEGRACIN CON UNA TOLERANCIA DETERMINADA
%
% LA INSTRUCCION ES LA SIGUIENTE:
%
% [t,y] = ode23('funcin',[t_inicial,t_final],y_inicial,options)
%
% ode23 resuelve una ecuacin diferencial ordinaria utilizando
% el metodo de Runge-Kutta de segundo y tercer orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% t = variable de integracin (vector columna)
%
% y = resultado de integracin (vector columna)
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% tolerancia = error deseado para la iteracin,
% por defecto, tol = 1.e-3
%
% La tolerancia debe ser establecida mediante la instruccin:
%
% option = odeset('RelTol',1e-4,'AbsTol',1e-2);
%
% DONDE:
% RelTol = Tolerancia Relativa
% Valor de RelTol, indicado por el usuario
% (en este ejemplo) 1e-4
% AbsTol = Tolerancia Absoluta
% Valor de AbsTol, indicado por el usuario
% (en este ejemplo) 1e-2
%
%
%
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
496
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3.4444e-05-0.0015*y
%
% La ecuacin diferencial est definida en la funcin (odefun2.m),
% la cual se encuentra almacenada en la librera de MATLAB
clc
close all
clear all
% DATOS
option = odeset('RelTol',1e-10,'AbsTol',1e-10);
% SOLUCIN MATLAB
[x,y]=ode23('odefun2',[0,120],0.0022,option);
% SOLUCIN ANALTICA
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = 0.022963-0.020763*exp(-0.0015*x)
%
% Evaluacin de la solucin analtica
ya = 0.022963-0.020763*exp(-0.0015*x);
plot(x,y,'ro',x,y,'r-',x,ya,'*')
% grafica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun2" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun2
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
497
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun2"
LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER
INTEGRADA.
function dy=edfun2(x,y)
dy=3.4444e-05-0.0015*y;
% LA ECUACIN DIFERENCIAL ES:
% dy/dx = 3.4444e-05-0.0015*y
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
498
PROGRAMA: edo7.m
% edo7
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL UTILIZANDO LA INSTRUCCIN:
%
% ode23('funcin',[t_inicial,t_final],y_inicial,options)
%
% NOTA: CUANDO EN LA INSTRUCCIN NO SE UTILIZA LA MATRIZ DE RETORNO
% DE LAS VARIABLES DE SALIDA,[t,y], MATLAB RESUELVE LA ECUACIN
% DIFERENCIAL, SEGN LA INSTRUCCIN, Y MUESTRA EN UNA FIGURA
% LAS GRFICAS DE TODOS LOS PASOS DE INTEGRACIN
%
% ode23 resuelve una ecuacin diferencial ordinaria utilizando
% el metodo de Runge-Kutta de segundo y tercer orden
%
% Donde:
%
% VARIABLES DE RETORNO:
%
% NO HAY VARIABLES DE RETORNMO
% MATLAB GRAFICA AUTOMTICAMENTE TODOS LOS PASOS DE INTEGRACIN
%
%
% VARIABLES DE ENTRADAS:
%
% funcin = nombre de la funcin almacenada en MATLAB
%
% t_inicial = valor de la variable (t) donde inicia la integracin
%
% t_final = valor de la variable (t) donde finaliza la integracin
%
% y_inicial = valor inicial de la funcin ( vector columna )
%
% options = para establecer parmetros como son:
% la tolerancia (error deseado para la iteracin,
% por defecto: tol = 1.e-3)
% y el estatus de la integracin
%
%
%
%
% En este ejemplo se resuelve la siguiente ecuacin diferencial:
%
% dy/dx = 3.4444e-05-0.0015*y
%
% La ecuacin diferencial est definida en la funcin (odefun2.m),
% la cual se encuentra almacenada en la librera de MATLAB
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
499
clc
close all
clear all
% DATOS
x_rango=[0:3:120];
option = odeset('RelTol',1e-16,'AbsTol',1e-16);
% SOLUCIN MATLAB
ode23('odefun2',x_rango,0.0022,option);
% DESARROLLO DE LA INTEGRACIN
[x,y]=ode23('odefun2',[0,120],0.0022);
% VALORES DE RETORNO
% SOLUCIN ANALTICA
% para comparar la solucin numrica con la solucin analtica
% tenemos la solucin analtica de la ecuacin diferencial
% la cual es la siguiente:
%
% ya = 0.022963-0.020763*exp(-0.0015*x)
%
% Evaluacin de la solucin analtica y la numrica:
ya = 0.022963-0.020763*exp(-0.0015*x_rango);
figure
plot(x,y,'ro',x,y,'r-',x_rango,ya,'*')
% grafica simultanea de la solucin
% MATLAB y la solucin analtica
legend('SOLUCIN MATLAB','SOLUCIN MATLAB','SOLUCIN ANLITICA');
xlabel('VARIABLE x')
ylabel('VARIABLES (y) y (y analitica)')
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun2" ')
disp('LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER INTEGRADA')
type odefun2
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun2"
LA CUAL CONTIENE A LA ECUACIN DIFERENCIAL A SER
INTEGRADA.
function dy=edfun2(x,y)
dy=3.4444e-05-0.0015*y;
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
500
% LA ECUACIN DIFERENCIAL ES:
% dy/dx = 3.4444e-05-0.0015*y
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
501
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
502
PROGRAMA: edo8.m
% edo8
%
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL ORDINARIA DE ORDEN
% SUPERIOR
%
% POR EJEMPLO SE TIENE LA SIGUIENTE ECUACIN:
%
% Y" = MU * (1-Y^2) * Y' - Y
%
% DESCOMPOSICIN EN ECUACIONES DIFERENCIALES
% DE PRIMER ORDEN
%
% Y1 = Y
%
% Y2 = Y'
%
% DOS DERIVADAS -----> DOS ESTADOS ( Y ) ( Y' )
%
% ENTONCES TENDREMOS:
%
% Y1' = Y2 = Y'
%
% Y2' = Y" = MU*(1-Y1^2)-Y1
%
% TENEMOS DOS ECUACIONES DIFERENCIALES DE PRIMER ORDEN
% EQUIVALENTES A LA ECUACIN DIFERENCIAL DE ORDEN SUPERIOR
clear function
clear all
close all
clc
% DATOS
y_inicio=[0.25;0];
t_rango=[0:0.01:20];
% SOLUCIN MATLAB
ode23('odefun3',t_rango,y_inicio)
% NOTA: SE UTILIZA ESTA INSTRUCCIN PARA
% OBSERVAR EL PROGRESO DE LA INTEGRACIN
[t,y]=ode23('odefun3',t_rango,y_inicio);
y1=y(:,1);
y2=y(:,2);
% VISUALIZACIN GRFICA
figure
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
503
plot(t,y1,t,y2)
Ylabel( 'VARIABLE (y) Y SU DERIVADA')
xlabel(' TIEMPO t')
legend('VARIABLE y','DERIVADA DE y');
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun3" ')
disp('LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER INTEGRADAS')
type odefun3
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun3"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS.
function yprime=edfun1(t,y)
% DATO
mu=2;
% ECUACIN DIFERENCIAL
yprime=[y(2);mu*(1-y(1)^2)*y(2)-y(1)];
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
504
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
505
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
506
PROGRAMA: edo9.m
% edo9
%
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL ORDINARIA DE ORDEN
% SUPERIOR
%
% POR EJEMPLO SE TIENE LA SIGUIENTE ECUACIN:
%
% Y" = -y'-y
%
% DESCOMPOSICIN EN ECUACIONES DIFERENCIALES
% DE PRIMER ORDEN
%
% Y1 = Y
%
% Y2 = Y'
%
% DOS DERIVADAS -----> DOS ESTADOS ( Y ) ( Y' )
%
% ENTONCES TENDREMOS:
%
% Y1' = Y2 = Y'
%
% Y2' = Y" = -y'-y = -y2-y1
%
% TENEMOS DOS ECUACIONES DIFERENCIALES DE PRIMER ORDEN
% EQUIVALENTES A LA ECUACION DIFERENCIAL DE ORDEN SUPERIOR
clear function
clear all
close all
clc
% DATOS
t_rango=[0:0.1:10];
% SOLUCIN MATLAB
[t,y]=ode23('odefun4',t_rango,[1;1]);
y1=y(:,1);
y2=y(:,2);
% VISUALIZACIN GRFICA
plot(t,y1,t,y2)
Ylabel( 'VARIABLE (y) Y SU DERIVADA')
xlabel(' TIEMPO t')
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
507
legend('VARIABLE y','DERIVADA DE y');
% LA SOLUCIN ANLITICA ES:
figure
c3=1.0;
c4=1.7;
ya=exp(-t/2).*(c3*cos((sqrt(3)/2)*t)+(c4*sin((sqrt(3)/2)*t)));
plot(t,y1,'r*',t,y1,'r-',t,ya,'b-')
Ylabel( 'VARIABLE (y) Y VARIABLE (ya)')
xlabel(' TIEMPO t')
legend('RESPUESTA POR INTEGRACIN','RESPUESTA POR...
INTEGRACIN','RESPUESTA ANALTICA');
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun4" ')
disp( 'LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER INTEGRADAS')
type odefun4
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun4"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS.
function yprime=odefun4(x,y)
yprime(1,1)=y(2);
yprime(2,1)=-y(2)-y(1)
% NOTA: TAMBIN PUEDE SER ESCRITO DE ESTA MANERA:
% yprime=[y(2);-y(2)-y(1)]
%
% DONDE: yprime = VECTOR COLUMNA
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
508
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
509
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
510
PROGRAMA: edo10.m
% edo10
%
% ESTE PROGRAMA ILUSTRA COMO SE PUEDE RESOLVER
% UNA ECUACIN DIFERENCIAL ORDINARIA DE ORDEN
% SUPERIOR
%
% POR EJEMPLO SE TIENE LA SIGUIENTE ECUACIN DIFERENCIAL DE UN BALANCE
% DE UNA ESPECIE (SUSTANCIA: A ), EN UN BIO-REACTOR
%
% CB"+(K1+K2)*CB'+K1*K2*CB = 0
%
% DONDE: CB = CONCENTRACIN DE LA ESPECIE (B) EN EL BIO-REACTOR
%
% K1 y K2 = CONSTANTES, FACTORES DE BALANCES
%
% DESCOMPOSICIN EN ECUACIONES DIFERENCIALES
% DE PRIMER ORDEN:
%
% CB" = -K1*K2*CB-(K1+K2)*CB'
%
% CB1 = CB
%
% CB2 = CB'
%
% DOS DERIVADAS -----> DOS ESTADOS ( CB ) ( CB' )
%
% ENTONCES TENDREMOS:
%
% CB1' = CB' = CB2
%
% CB2' = CB" = -K1*K2*CB-(K1+K2)*CB' = -K1*K2*CB1-(K1+K2)*CB2
%
% TENEMOS DOS ECUACIONES DIFERENCIALES DE PRIMER ORDEN
% EQUIVALENTES A LA ECUACIN DIFERENCIAL DE ORDEN SUPERIOR
clear function
clear all
close all
clc
% DATOS
K1=1; % FACTOR DE BALANCE
K2=5; % FACTOR DE BALANCE
CA0=0; % CONCENTRACIN INICIAL DE LA ESPECIE (A), EN EL REACTOR
VEL_CA=1.5;
% VELOCIDAD DE CAMBIO DE CONCENTRACIN DE LA ESPECIE (A)
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
511
% CONDICIONES INICIALES PARA LA ECUACIN DIFERENCIAL
CB_0=CA0;
CB_PRIMA_CERO= K1*VEL_CA;
COND_INICIAL=[CB_0;CB_PRIMA_CERO];
% SOLUCIN MATLAB
ode23('odefun5',[0:.002:6],COND_INICIAL);
% NOTA: SE MUESTRA EL PROGRESO DE LA INTEGRACIN
[t,CB]=ode23('odefun5',[0 6],COND_INICIAL);
CB1=CB(:,1);
CB2=CB(:,2);
figure
plot(t,CB1,t,CB2)
Ylabel( 'VARIABLE (y) Y SU DERIVADA')
xlabel(' TIEMPO t')
legend('VARIABLE y','DERIVADA DE y');
% LA SOLUCIN ANALTICA
figure
CB_ANALITICA = ((K1*VEL_CA)/(K2-K1))*(exp(-K1*t)-exp(-K2*t));
plot(t,CB1,'r*',t,CB1,'r-',t,CB_ANALITICA,'b-')
Ylabel( 'VARIABLE (y) Y VARIABLE (ya)')
xlabel(' TIEMPO t')
legend('RESPUESTA POR INTEGRACIN','RESPUESTA POR...
INTEGRACIN','RESPUESTA ANALTICA');
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun5" ')
disp('LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER INTEGRADAS')
type odefun5
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun5"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS.
function CBprime=odefun5(t,CB)
% DATOS
K1=1;
K2=5;
% ECUACIONES DIFERENCIALES
CBprime=[CB(2);-K1*K2*CB(1)-(K1+K2)*CB(2)];
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
512
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
513
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
514
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
515
PROGRAMA: edo11.m
% edo11
% EL PRESENTE PROGRAMA ILUSTRA LA SOLUCIN DE LA SIGUIENTE
% ECUACIN DIFERENCIAL:
%
% d/dt(dy/dt) + landa*y = 0
%
% DONDE:
%
% landa=(pi/l)^2
%
% l = 3.55
%
% LA SOLUCIN ANALTICA ES LA SIGUIENTE:
%
% y = c2*sin(landa*t)
%
% donde:
%
% c2 = (2*((-1)^2+1))/(pi*sinh(pi*w/l))
%
% w = 1.0
%
% SOLUCIN
%
% d/dt(dy/dt) + landa*y = 0
%
% d/dt(dy/dt) = -landa*y
%
% y'' = -landa*y
%
% DESCOMPOSICIN EN DOS ECUACIONES DE PRIMER ORDEN
%
% 1) ESTADOS:
%
% y1 = y
%
% y2 = y'
%
% 2) ECUACIONES:
%
% y1' = y' = y2
%
% y2' = y'' = -landa*y = -landa*y1
%
% FINALMENTE LAS ECUACIONES SON:
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
516
%
% y1' = y2
%
% y2' = -landa*y1
%
% CONDICIONES INICIALES DE LOS ESTADOS:
%
% y(0) = 0
%
% y'(0) = 1.0
%
% RANGO DE t:
%
% t_rango=[0:0.1:20];
clear function
clear all
close all
clc
% DATOS
y_inicio=[0,1];
t_rango=[0:0.1:20];
% SOLUCIN MATLAB
[t,y]=ode23('odefun6',t_rango,y_inicio);
y1=y(:,1);
% VISUALIZACION GRFICA
figure
plot(t,y1)
Ylabel( 'VARIABLE (y) ')
xlabel(' TIEMPO t')
legend('VARIABLE y');
% LA SOLUCIN ANLITICA ES:
figure
w=1.0;
l=3.55;
c2=(2*((-1)^2+1))/(pi*sinh(pi*w/l));
landa=(pi/l)^2;
y_analitica=c2*sin(landa*t_rango)
plot(t,y1,'r*',t,y1,'r-',t,y_analitica,'b-')
Ylabel( 'VARIABLE (y) Y VARIABLE (y analitica)')
xlabel(' TIEMPO t')
legend('RESPUESTA POR INTEGRACIN','RESPUESTA POR...
INTEGRACIN','RESPUESTA ANALTICA');
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun6" ')
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
517
disp( 'LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER INTEGRADAS')
type odefun6
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun6"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS.
function yprime=edfun6(t,y)
% DATOS:
l=4;
landa=(pi/l)^2;
% ECUACIONES DIFERENCIALES:
yprime(1,1)=y(2)
yprime(2,1)=-landa*y(1);
% LA ECUACIN DIFERENCIAL ES:
% d/dt(dy/dt) + landa*y = 0
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
518
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
519
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
520
PROGRAMA: edo12.m
% edo12
% EL PRESENTE PROGRAMA ILUSTRA LA SOLUCIN DE UN SISTEMA DINMICO
% QUE CONSISTE EN TRES MASAS UNIDAS A RESORTES Y AMORTIGUADORES,
% DONDE A DOS DE LAS MASAS SE LES APLICA FUERZAS DIFERENTES
% OBTENIENDOSE TRES DESPLAZAMIENTOS DE LAS MASAS.
%
% RESOLVER EL CONJUNTO DE ECUACIONES DIFERENCIALES Y GRFICAR
% LOS DESPLAZAMIENTOS DE LAS MASAS EN FUNCIN DEL TIEMPO
%
% DIAGRAMA:
% EL MODELO MATEMTICO ES:
%
% m1*y1'' + b1*y1' + k1*y1 - b1*y2' - k1*y2 = f1
%
%
% -b1*y1' - k1*y1 + m2*y2'' + b1*y2' + (k1 + k2)*y2 - k2*y3 = 0
%
%
% -k2*y2 + m3*y3'' + b3*y3' + (k2 + k3)*y3 = f3
%
%
%
M1 M3 M2
F1
K1
B1
F3
K2
K3
B3
y1 y2 y3
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
521
% DONDE:
% (y1), (y2) y (y3) = DESPLAZAMIENTO DE LAS MASAS (m1), (m2) y (m3)
%
% DATOS:
%
% k1 = k2 = k3 = 1.0 (N/m) CONSTANTES DE LOS RESORTES
%
% m1 = m2 = m3 = 1.0 (Kg) MASAS
%
% f1 = 0.01 (N) FUERZA APLICADA A LA MASA (m1)
%
% f3 = 0 (N) FUERZA APLICADA A LA MASA (m3)
%
% b1 = b3 = 0.1 (Ns/m) COEFICIENTES DE AMORTIGUACIN
%
% y1(0) = y2(0) = y3(0) = 0 (m) DESPLAZAMIENTOS INICIALES
%
% y1'(0) = y2'(0) = y3'(0) = 0 (m/s) VELOCIDADES INICIALES
%
% OBJETIVO: RESOLVER LAS ECUACIONES DIFERENCIALES ANTERIORES PARA
% UN RANGO DE TIEMPO ENTRE 0 Y 30 SEGUNDOS, CON ESPACIAMIENTO
% DE 0.1 SEGUNDOS.
%
% SOLUCIN: EL SISTEMA TIENE SEIS ESTADOS y1, y2, y3, y1', y2' Y y3'
%
% CAMBIOS DE VARIABLES:
%
% Y1 = y1
%
% Y2 = y2
%
% Y3 = y3
%
% Y4 = y1'
%
% Y5 = y2'
%
% y6 = y3'
%
% DESCOMPOSICIN EN SEIS ECUACIONES DIFERENCIALES DE PRIMER ORDEN:
%
% Y1' = y1' = Y4
%
% Y2' = y2' = Y5
%
% Y3' = y3' = Y6
%
% Y4' = y1'' = (-b1*y(4)-k1*y(1)+b1*y(5)+k2*y(2)+f1)/m1
%
% Y5' = y2'' = (b1*y(4)+k1*y(1)-b1*y(5)-(k1+k2)*y(2)+k2*y(3))/m2
%
% Y6' = y3'' = (k2*y(2)-b3*y(6)-(k2+k3)*y(3)+f3)/m3
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
522
%
% QUEDANDO FINALMENTE:
%
% Y1' = Y4
%
% Y2' = Y5
%
% Y3' = Y6
%
% Y4' = (-b1*Y4-k1*Y1+b1*Y5+k2*Y2+f1)/m1
%
% Y5' = (b1*Y4+k1*Y1-b1*Y5-(k1+k2)*Y2+k2*Y3)/m2
%
% Y6' = (k2*Y2-b3*Y6-(k2+k3)*Y3+f3)/m3
%
% DATOS INICIALES Y RANGO:
%
% y_inicio=[0,0,0,0,0,0]
%
% t_rango=[0:0.1:30]
%
clear function
clear all
close all
clc
% DATOS
y_inicio=[0,0,0,0,0,0];
t_rango=[0:0.1:30];
% SOLUCIN MATLAB
[t,Y]=ode23('odefun7',t_rango,y_inicio);
% VISUALIZACIN GRFICA
y1=Y(:,1);
y2=Y(:,2);
y3=Y(:,3)
figure
plot(t,y1,t,y2,t,y3)
Ylabel( 'DESPLAZAMIENTOS y1,y2 y y3')
xlabel(' TIEMPO t')
legend('VARIABLE y1','VARIABLE y2','VARIABLE y3');
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun7" ')
disp('LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER INTEGRADAS')
type odefun7
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
523
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun7"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS
function Yprime=edfun7(t,Y)
% DATOS:
k1=1;
k2=1;
k3=1;
m1=1;
m2=1;
m3=1;
f1=0.01;
f3=0;
b1=0.1;
b3=0.1;
% ECUACIONES DIFERENCIALES:
Yprime(1,1)=Y(4);
Yprime(2,1)=Y(5);
Yprime(3,1)=Y(6);
Yprime(4,1)=(-b1*Y(4)-k1*Y(1)+b1*Y(5)+k2*Y(2)+f1)/m1;
Yprime(5,1)=(b1*Y(4)+k1*Y(1)-b1*Y(5)-(k1+k2)*Y(2)+k2*Y(3))/m2;
Yprime(6,1)=(k2*Y(2)-b3*Y(6)-(k2+k3)*Y(3)+f3)/m3;
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
524
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
525
PROGRAMA: edo13.m
% edo13
% EL PRESENTE PROGRAMA ILUSTRA LA RESOLUCIN DE LA SIGUIENTE
% ECUACIN DIFERENCIAL:
%
% (exp(t) + y)*y'' = t
%
% CONDICIONES INICIALES:
%
% Y(0) = 1
%
% Y'(0) = 0
%
% RANGO:
%
% t_rango=[0:1:5]
%
% COMPARAR LOS RESULTADOS CON LAS SOLUCIONES EXACTAS, MOSTRADAS
% EN LA SIGUIENTE TABLA:
%
% ______________________
%
% t y
% ______________________
%
% 0 1.0000
% 1 1.0629
% 2 1.3656
% 3 1.8926
% 4 2.5589
% 5 3.2978
%
%
% SOLUCIN:
%
% LA ECUACIN TIENE DOS ESTADOS: (y) Y (y')
%
% CAMBIOS DE VARIABLES:
%
% Y1 = y
%
% Y2 = y'
%
% DESCOMPOSICIN EN DOS ECUACIONES DIFERENCIALES DE PRIMER ORDEN:
%
% Y1' = y' = Y2
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
526
%
% Y2' = y'' = t/(exp(t) + Y1)
%
% QUEDANDO FINALMENTE:
%
% Y1' = Y2
%
% Y2' = t/(exp(t) + Y1)
clear function
clear all
close all
clc
% DATOS
y_inicio=[1,0];
t_rango=[0:1:5];
% SOLUCIN MATLAB
[t,Y]=ode23('odefun8',t_rango,y_inicio);
Y1=Y(:,1);
% VISUALIZACIN GRFICA
figure
plot(t,Y1,'ro',t,Y1)
TITLE('SOLUCIN MATLAB')
Ylabel( 'VARIABLE (y) ')
xlabel(' TIEMPO t')
legend('VARIABLE y','VARIABLE y')
% LA SOLUCIN EXACTA ES:
y_analitica=[1.0 1.0629 1.3653 1.8926 2.5589 3.2978];
t_analitica=[0 1 2 3 4 5];
figure
plot(t,Y1,'r*',t,Y1,'r-',t_analitica,y_analitica,'b-')
Ylabel( 'VARIABLE (y) Y VARIABLE (ya)')
xlabel(' TIEMPO t')
legend('RESPUESTA POR INTEGRACIN','RESPUESTA POR...
INTEGRACIN','RESPUESTA ANALTICA');
clc
disp( ' ')
disp( 'A CONTINUACIN SE MUESTRA LA FUNCIN "odefun8" ')
disp('LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER INTEGRADAS')
type odefun8
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
527
A CONTINUACIN SE MUESTRA LA FUNCIN "odefun8"
LA CUAL CONTIENE A LAS ECUACIONES DIFERENCIALES A SER
INTEGRADAS.
function Yprime=edfun8(t,Y)
Yprime(1,1)=Y(2)
Yprime(2,1)=t/(exp(t)+Y(1));
Introduccin al MATLAB UNEXPO
I ng. Luis Rojas Malav
528

Vous aimerez peut-être aussi