Documente Academic
Documente Profesional
Documente Cultură
MATLAB
2019
i
ÍNDICE GENERAL
Índice General ii
Índice de Cuadros v
Índice de Figuras vi
I INTRODUCCIÓN A MATLAB 1
1.1 ¿Qué es Matlab? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Entorno de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Utilización de la ventana de comandos . . . . . . . . . . . . . . . . . . . 3
1.4 Formato de visualización de números . . . . . . . . . . . . . . . . . . . . 4
1.5 Funciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.7 Números complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.8 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II ARRAYS 8
2.1 Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Tamaño de un vector o matriz . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Vectores y matrices usuales . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Rango, inversa y determinante de una matriz . . . . . . . . . . . . 12
2.2.4 Operaciones sobre un vector o matriz . . . . . . . . . . . . . . . . 12
2.3 Variables lógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
ii
Índice General
IV FICHEROS SCRIPT 29
4.1 Ejecución de un fichero Script . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2 Lectura y escritura de variables interactivas . . . . . . . . . . . . . . . . . 30
4.3 Importación y exportación de datos . . . . . . . . . . . . . . . . . . . . . 31
4.3.1 Importación de datos . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.2 Exportación de datos . . . . . . . . . . . . . . . . . . . . . . . . 33
V FICHEROS FUNCTION 35
5.1 Creación de un fichero de función . . . . . . . . . . . . . . . . . . . . . . 35
5.2 Estructura de un fichero de función . . . . . . . . . . . . . . . . . . . . . 36
5.3 Ejemplos de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4 Funciones simbólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.4.1 Construcción de funciones simbólicas . . . . . . . . . . . . . . . . 37
5.4.2 Conversión de formato simbólico a inline . . . . . . . . . . . . . . 38
5.5 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
VI PROGRAMACIÓN EN MATLAB 41
6.1 Estructuras condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.1.1 if-else-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.1.2 if-elseif-else-end . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.1.3 switch-case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.2 Estructuras de repetición o bucles . . . . . . . . . . . . . . . . . . . . . . 46
6.2.1 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6.2.2 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.3 Ruptura de bucles de repetición . . . . . . . . . . . . . . . . . . . . . . . 48
6.3.1 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.3.2 continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.4 Gestión de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.5 Problemas propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.5.1 Volumen de agua . . . . . . . . . . . . . . . . . . . . . . . . . . 50
VIIRESOLUCIÓN DE ECUACIONES 52
7.1 Método de bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.2 Método del Punto Fijo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.3 Método de Newton Raphson . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.4 Método de Halley o Newton Raphson modificado . . . . . . . . . . . . . . 56
7.5 Método de la Secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.6 Método de la Falsa Posición . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.7 Método de Müller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
iii
Índice General
VIIIINTERPOLACIÓN POLINÓMICA 62
8.1 Interpolación polinómica . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
IX INTEGRACIÓN NUMÉRICA 63
9.1 Cuadratura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
A ANEXOS. 66
1.1 Resumen de funciones de Matlab . . . . . . . . . . . . . . . . . . . . . . 66
iv
ÍNDICE DE CUADROS
v
ÍNDICE DE FIGURAS
vi
Índice de Figuras
vii
I
CAPÍTULO
INTRODUCCIÓN A MATLAB
1
1.2 Entorno de trabajo | Capitulo I
Figura No 1.1:
Entorno gráfico de Matlab.
Figura No 1.2:
Ventana del Editor para la edición de código Matlab.
2
1.3 Utilización de la ventana de comandos | Capitulo I
Figura No 1.3:
Ventana de Ayuda abierta.
Figura No 1.4:
Ventana de Gráficos representando un gráfico Matlab.
3
1.4 Formato de visualización de números | Capitulo I
• El comando clc (teclear clc y pulsar Enter ) borra la Ventana de Comandos. Este
comando limpia la ventana de los comandos ejecutados pero no borra las variables
previamente definidas.
• El comando clear (teclear clear y pulsar Enter ) borra las variables del Workspace.
Figura No 1.5:
Ejemplo de una ventana de comandos.
4
1.5 Funciones básicas | Capitulo I
El usuario puede controlar el número de decimales con que aparece en pantalla el valor
de las variables (en el menú FILE >PREFERENCES > COMMAND WINDOW).
» Nombre de la función(argumento)
Cuadro No 1.3 :
Funciones matemáticas elementales.
Función Descripción
sqrt(x) Raíz cuadrada
exp(x) Exponencial
abs(x) Valor absoluto
log(x) Logaritmo natural de base e (ln)
log10(x) Logaritmo en base 10
factorial(x) Función factorial x!
Cuadro No 1.4 :
Funciones trigonométricas.
Función Función Función Descripción
Seno, Arcoseno, Seno Hiperbólico del ángulo x
sin(x) asin(x) sinh(x)
(x en radianes)
Coseno, Arcocoseno, Coseno Hiperbólico del
cos(x) acos(x) cosh(x)
ángulo x (x en radianes)
Tangente, Arcotangente, Tangente Hiperbólico
tan(x) atan(x) tanh(x)
del ángulo x (x en radianes)
Cotangente, Arcocotangente, Cotangente
cot(x) acot(x) coth(x)
Hiperbólico del ángulo x (x en radianes)
Cuadro No 1.5 :
Funciones de redondeo.
Función Descripción
round(x) Redondea al entero más próximo
fix(x) Redondea hacia cero
ceil(x) Redondea hacia infinito
floor(x) Redondea hacia menos infinito
sign(x) Función de signo. Devuelve 1 si x>0,-1 si x<0, y 0 si x=0
5
1.6 Variables | Capitulo I
Figura No 1.6:
Funciones trigonométricas seno y coseno.
1.6 Variables
Una variable es un nombre compuesto por una letra al cual se le asigna un valor numérico,
que puede ser utilizado en expresiones matemáticas, funciones y cualquier otro tipo de
comando. Una variable es el nombre de una posición de memoria a la cual se le asigna un
valor que puede ser reemplazado y por tanto el antiguo es eliminado.
• Numéricos: Por defecto se trabaja con números reales del tipo llamado double
(abreviatura de doble precisión).
• Caracteres: Formados por cualquiera de los caracteres del código ASCII. Cada
carácter ocupa un elemento de la matriz de la variable asociada del tipo char array.
La forma de definir un carácter es encerrarlo entre comillas simples ’a’.
• Lógicos: Son los formados por los valores verdadero y falso, y sus valores se asocian
a los valores numéricos 1 (verdadero) y 0 (falso).
1 >> z =3+4* i
2 z =
3 3.0000 + 4.0000 i
4 >> % Parte real de un complejo :
6
1.8 Problemas propuestos | Capitulo I
5 >> real ( z )
6 ans =
7 3
8 >> % Parte imaginaria de un complejo :
9 >> imag ( z )
10 ans =
11 4
12 >> % Conjugado de un complejo :
13 >> conj ( z )
14 ans =
15 3.0000 - 4.0000 i
16 >> % M d u l o de un complejo :
17 >> abs ( z )
18 ans =
19 5
20 >> % R e p r e s e n t a c i n g r f i c a de un complejo en un ←-
diagrama polar :
21 >> compass ( z )
Figura No 1.7:
Representación gráfica de un complejo en un diagrama polar.
7
II
CAPÍTULO
ARRAYS
Todas las variables en Matlab son arrays. Un escalar es simplemente un array de un solo
elemento. Un vector es un array con una sola fila o columna de elementos. Una matriz es
un array con elementos distribuidos en filas y columnas.
2.1 Vectores
nombre de la variable=[elementos del vector]
1 >> v =[0:2:12]
2 v =
3 0 2 4 6 8 10 12
8
2.2 Matrices | Capitulo II
a:h:b. Entonces, si lo que conocemos del vector es que la primera coordenada vale
0, la última 12 y que tiene 7 elementos, escribiremos:
• Para acceder a los elementos de un vector se escribe el nombre del vector y entre
paréntesis su indice:
1 >> v (3)
2 ans =
3 4
• v(m:n) se refiere a todos los elementos comprendidos entre las posiciones m y n del
vector v.
1 >> v (2:5)
2 ans =
3 2 4 6 8
2.2 Matrices
Las matrices se escriben como los vectores, pero separando las filas mediante un punto
y coma.
9
2.2 Matrices | Capitulo II
Figura No 2.1:
La matriz en Matlab.
10
2.2 Matrices | Capitulo II
11
2.3 Variables lógicas | Capitulo II
Cuadro No 2.1 :
Operadores aritméticos de arreglo de datos.
A.*B, es la multiplicación elemento por elemento de los arreglos A y B, los cuales deben
.*
tener el mismo tamaño.
A./B, es la matriz con elementos A(i,j)/B(i,j), A y B deben tener el mismo tamaño, al menos
./
que uno sea un escalar.
A. \ B, es la matriz con elementos B(i,j)/A(i,j), A y B deben tener el mismo tamaño, al
. \
menos que uno sea un escalar.
A. B̂, es la matriz con elementos A(i,j) elevados a la potencia B(i,j), A y B deben tener el
.ˆ
mismo tamaño, al menos que uno sea un escalar.
Para matrices:
12
2.4 Polinomios | Capitulo II
• == igual a ...
• >= mayor o igual que ...
• <= menor o igual que ...
• = negación...
• && conjunción "y"
• || disyunción "o"
2.4 Polinomios
Los polinomios constituyen una clase de función de gran importancia, debido a que son
fáciles de evaluar y, por ello, muy utilizadas para aproximar funciones. Matlab representa
el polinomio de grado n: p(x) = a1 xn + a2 xn−1 + ... + an x + an+1 mediante el vector:
p = [a1 , a2 , ..., an , an+1 ], cuyos elementos (coeficientes) están ordenados de mayor a menor
grado, incluyendo los coeficientes nulos. Sean p y q los vectores que representan los
polinomios p(x) y q(x):
13
2.5 Problemas propuestos | Capitulo II
14
III
CAPÍTULO
REPRESENTACIÓN GRÁFICA
1. Creación de abscisas y ordenadas: Crear un vector con los valores del eje de
abscisas (x) y otro con el de ordenadas (y). Las dimensiones de los vectores x e y
deben ser iguales; de hecho, y se calcula a partir de x.
2. Representación: ejecutar una instrucción gráfica.
Cuadro No 3.1 :
Funciones gráficas.
Función Descripción
plot (x,y) eje x e y lineal.
semilogx(x,y) eje x en logarítmico y eje y en lineal.
semilogy(x,y) eje y en logarítmico y eje x en lineal.
loglog(x,y) eje x e y en logarítmico.
stem(x,y) el trazo de las coordenadas (x,y) parte del eje de abscisas.
stairs(x,y) el trazo de las coordenadas (x,y) es de forma escalonada.
15
3.1 Gráficos bidimensionales | Capitulo III
Figura No 3.1:
Función plot(x,y).
Figura No 3.2:
Función semilogx(x,y).
1 x = 0:1000;
2 y = log ( x ) ;
3 semilogx (x , y )
16
3.1 Gráficos bidimensionales | Capitulo III
Figura No 3.3:
Función loglog(x,y).
1 x = logspace ( -1 ,2) ;
2 y = exp ( x ) ;
3 loglog (x ,y , ’ -s ’)
4 grid on
Figura No 3.4:
Función stem(x,y).
17
3.1 Gráficos bidimensionales | Capitulo III
Figura No 3.5:
Función stairs(x,y).
3. Ejes de representación: Se pueden cambiar los valores inicial y final de los ejes de
la representación mediante la función: axis([xmin xmax ymin ymax]).
Cuadro No 3.2 :
Funciones axis.
Función Descripción
axis([xmin xmax ymin ymax]) Define los límites de los ejes.
axis off Visualiza un gráfico sin fondo de ejes.
axis square Utiliza líneas de ejes con longitudes iguales.
Figura No 3.6:
Función axis([xmin xmax ymin ymax]).
18
3.1 Gráficos bidimensionales | Capitulo III
1 x = linspace (0 ,2* pi ) ;
2 y = sin ( x ) ;
3 plot (x ,y , ’ -o ’)
4 axis ([0 2* pi -1.5 1.5])
Figura No 3.7:
Función axis off.
1 surf ( peaks )
2 axis off
1 x = linspace (0 ,10) ;
2 y = sin ( x ) ;
3 plot (x , y )
4 grid on
5 grid minor
19
3.1 Gráficos bidimensionales | Capitulo III
Figura No 3.9:
Función subplot.
1 subplot (2 ,2 ,1) ;
2 x = linspace ( -3.8 ,3.8) ;
3 y_cos = cos ( x ) ;
4 plot (x , y_cos ) ;
5 title ( ’ Subplot 1: Cosine ’)
6
7 subplot (2 ,2 ,2) ;
20
3.1 Gráficos bidimensionales | Capitulo III
Figura No 3.10:
Ventana de Gráficos representando un gráfico Matlab.
1 >> x = pi *( -1:0.01:1) ;
2 >> y = x .* sin ( x ) ;
3 >> plot (x , y )
4 >> hold on % Mantiene en la misma ventana ←-
grafica los dibujos anteriores
5 >> grid on
6 >> plot (x , cos ( x ) , ’ro - ’ ,x ,y , ’ bp : ’)
7 >> xlabel ( ’ Tiempo ’)
8 >> ylabel ( ’ Valor ’)
9 >> legend ( ’ cos ( x ) ’ , ’y ’)
10 >> title ( ’ Grafico de ejemplo ’)
11 >> gtext ( ’ curva ’)
21
3.2 Gráficos tridimensionales | Capitulo III
1 x = -1:0.1:1; % 1. G e n e r a c i n de la malla
2 y = -1:0.1:1;
3 [X , Y ]= meshgrid (x , y ) ;
4 Z = X .^2+ Y .^2; % 2. E v a l u a c i n de la f u n c i n .
5 surf (X ,Y , Z ) % 3. R e p r e s e n t a c i n de la superficie .
Figura No 3.11:
Ejemplo de generación de gráfico tridimensional.
1. plot3(x,y,z):
1 t = 0: pi /50:10* pi ;
2 st = sin ( t ) ;
3 ct = cos ( t ) ;
4 plot3 ( st , ct , t )
22
3.2 Gráficos tridimensionales | Capitulo III
Figura No 3.12:
Función plot3.
2. mesh(x,y,z): dibuja una malla de alambres con el color determinado por Z, por lo
que el color es proporcional a la altura de la superficie.
Figura No 3.13:
Función mesh.
1 [X , Y ] = meshgrid ( -8:.5:8) ;
2 R = sqrt ( X .^2 + Y .^2) + eps ;
3 Z = sin ( R ) ./ R ;
4 mesh (X ,Y , Z )
23
3.3 Gráficos específicos | Capitulo III
Figura No 3.14:
Función surf.
Figura No 3.15:
Función meshc.
1 figure
2 [X , Y ] = meshgrid ( -3:.125:3) ;
3 Z = peaks (X , Y ) ;
4 meshc ( Z )
24
3.3 Gráficos específicos | Capitulo III
Figura No 3.16:
Función pie.
25
3.3 Gráficos específicos | Capitulo III
1 y = [1 2 3; 4 5 6];
2 ax1 = subplot (1 ,2 ,1) ;
3 bar ( ax1 , y )
4
Figura No 3.17:
Función bar.
26
3.4 Gráficos de propósito especial | Capitulo III
Figura No 3.18:
Función histogram.
Figura No 3.19:
Funciones convexhull, delauney, voronoi.
27
3.5 Problema propuesto | Capitulo III
expresan en función del ángulo t como: r=a+bcost, z=bsent, con t ∈ [0,2π ]. Al girar
entorno a Z, el punto (r,0,z) recorre las posiciones (x,y,z), siendo: x=rcoss, y=rsens, siendo
s ∈ [0,2π] el ángulo de giro. Esta parametrización representa la superficie tórica mediante
el siguiente código:
1 a =2;
2 b =1;
3 s =0: pi /10:2* pi ;
4 t =0: pi /10:2* pi ;
5 [T , S ]= meshgrid (t , s ) ;
6 R = a + b * cos ( T ) ;
7 Z = b * sin ( T ) ;
8 X = R .* cos ( S ) ;
9 Y = R .* sin ( S ) ;
10 mesh (X ,Y , Z )
11 axis equal
12 pause
13 surf (X ,Y , Z )
14 axis equal
Figura No 3.20:
Gráfico de un toro.
28
IV
CAPÍTULO
FICHEROS SCRIPT
Para escribir un programa o fichero de comandos habrá que crear un fichero que tenga
extensión .m, los pasos a seguir son:
Figura No 4.1:
Creación de fichero script.
29
4.1 Ejecución de un fichero Script | Capitulo IV
30
4.3 Importación y exportación de datos | Capitulo IV
5 El programa ha terminado :
6 A =
7 0.27862 0.9266
8 0.57438 0.34119
9 0.27862 0.9266
10 0.57438 0.34119
3. Salidad con formato fprintf: Además de exhibir tanto texto como valores de
matrices, podemos especificar el formato que se usará al exhibir los valores, y también
saltos de línea. La sintaxis es la siguiente: fprintf (formato, matrices)
El formato contiene el texto y las especificaciones de formato para las salidas, y va
seguido de los nombres de las matrices por exhibir. Dentro de los formatos se usan
los especificadores y es necesario que utilice un operador de precisión para especificar
el número de dígitos después del punto decimal:
• %e: valores se exhiben en notación exponencial.
• %f: valores se exhiben en notación decimal.
• %d: valores se exhiben en entero con signo.
• %g: valores usarán %e o %f el que sea más corto.
• n: la cadena se exhibirá hasta donde aparezca y el resto de la información se
exhibirá en la siguiente línea.
5 A1 =
6 5.5 8.8 7.7 9.9
7 5500 8800 7700 9900
8 X is 5.50 meters or 5500.000 mm
9 X is 8.80 meters or 8800.000 mm
10 X is 7.70 meters or 7700.000 mm
11 X is 9.90 meters or 9900.000 mm
%4.2f especifica que la salida es un número con un ancho de campo de cuatro dígitos,
incluidos dos dígitos después del punto decimal.
31
4.3 Importación y exportación de datos | Capitulo IV
otras aplicaciones. Microsoft Excel utiliza datos altamente compatibles con bastantes tipos
de aplicaciones y para transferir datos desde/hacia hojas de cálculo Excel se utilizan los
siguientes comandos:
• La ubicación del archivo debe ser el directorio de trabajo actual o bien estar en la
ruta de búsqueda.
• Si el archivo Excel importado tiene más de una hoja de cálculo sólo se importan los
datos de la primera de las hojas.
Figura No 4.3:
Hoja de cálculo ’base.xlsx’
32
4.3 Importación y exportación de datos | Capitulo IV
• Si se desean los datos numéricos, los datos de texto y los datos combinados del
archivo de Excel sin procesar.
33
4.3 Importación y exportación de datos | Capitulo IV
Figura No 4.4:
Hoja de cálculo resultante ’exportacion.xlsx’
Figura No 4.5:
Hoja de cálculo resultante ’base.xlsx’
34
V
CAPÍTULO
FICHEROS FUNCTION
35
5.2 Estructura de un fichero de función | Capitulo V
Una de las diferencias de los archivos de tipo function respecto a los ficheros script es la
posibilidad de utilizar argumentos, tanto de entrada ("datos") como de salida ("resultados").
Su funcionamiento es análogo a otras funciones de Matlab.
Es conveniente que los nombres de la función y del fichero coincidan. Para ejecutar la
function se realiza como en las órdenes normales, es decir, en la ventana de comandos o
en otro fichero script. Los argumentos tanto de entrada como de salida pueden ser varios,
separados por comas. Las variables definidas en la función son locales, es decir, los nombres
de las variables pueden ser los mismos que en otros programas o funciones.
1 function [ x1 , x2 ]= raices (a ,b , c )
2 % Funcion que calcula en x1 y x2 las raices de un ←-
polinomio de segundo grado ax ^2+ bx + c =0
3 x1 =( - b + sqrt ( b *b -4* a * c ) ) /(2* a ) ;
4 x2 =( -b - sqrt ( b *b -4* a * c ) ) /(2* a ) ;
5 end
36
5.4 Funciones simbólicas | Capitulo V
1 syms x
2 f =(2* x ^2 -1) /( x ^3 -2* x ^2+2* x -1)
1 >> syms x
2 f =(2* x ^2 -1) /( x ^3 -2* x ^2+2* x -1)
3 f =
4 (2* x ^2 - 1) /( x ^3 - 2* x ^2 + 2* x - 1)
5 >> subs (f ,x ,0) % f (0) , sustituye x por 0 en f :
6 ans =
7 1
8 >> solve ( f ) % Resuelve la ecuacion f ( x ) =0
9 ans =
10 -2^(1/2) /2
11 2^(1/2) /2
12 >> diff ( f ) % Calcula la derivada de f
13 ans =
14 (4* x ) /( x ^3 - 2* x ^2 + 2* x - 1) - ((2* x ^2 - ←-
1) *(3* x ^2 - 4* x + 2) ) /( x ^3 - 2* x ^2 + 2* x - 1) ^2
37
5.5 Problemas propuestos | Capitulo V
Si lo que queremos es que las operaciones sean elemento a elemento, se realiza con la
combinación de la orden inline y vectorize.
38
5.5 Problemas propuestos | Capitulo V
Figura No 5.2:
Vector posición.
39
5.5 Problemas propuestos | Capitulo V
1 function [ C ] = centro ( r )
2 syms t
3 % r =[ t ^3/3 t ^3/3 t ^2];
4 r=r
5 v = diff (r , t ) ;
6 Mv = sqrt ( sum ( r .^2) ) ;
7 a = diff (v , t ) ;
8 at = diff ( Mv , t ) *( v / Mv ) ;
9 an =a - at ;
10 Man = sqrt ( sum ( an .^2) ) ;
11 RO = Mv ^2/ Man ;
12 R = r + RO ;
13 C = subs (R ,1) ;
14 end
40
VI
CAPÍTULO
PROGRAMACIÓN EN MATLAB
41
6.1 Estructuras condicionales | Capitulo VI
1 instruccion anterior
2 if expresion
3 bloque de instrucciones
4 end
5 instruccion siguiente
1 instruccion anterior
2 if expresion
3 bloque de instrucciones 1
4 else
5 bloque de instrucciones 2
6 end
7 instruccion siguiente
42
6.1 Estructuras condicionales | Capitulo VI
1 function [ fx ] = mifun ( x )
2 fx = x +1;
3 if x > -1
4 fx =1 - x ^2;
5 end
6 end
Escribir una función que, dados dos números, devuelva el número del cuadrante del plano
OXY en el que se encuentra el punto (x,y). Si el punto (x,y) está sobre uno de los ejes de
coordenadas se le asignará el número 0.
Figura No 6.3:
Diagrama de flujo de la función Cuadrante(x,y).
1 function [ n ] = Cuadrante (x , y )
2
3 if x * y ==0
4 n =0;
5 return
6 end
7
8 if (x >0)
43
6.1 Estructuras condicionales | Capitulo VI
9 if (y >0)
10 n =1;
11 else
12 n =4;
13 end
14 else
15 if (y >0)
16 n =2;
17 else
18 n =3;
19 end
20 end
6.1.2 if-elseif-else-end
Construye estructuras condicionales con más casos.
Figura No 6.4:
Estructura condicional con más casos.
1 instruccion anterior
2 if expresion 1
3 bloque de instrucciones 1
4 elseif expresion 2
5 bloque de instrucciones 2
6 else
7 bloque de instrucciones 3
8 end
44
6.1 Estructuras condicionales | Capitulo VI
9 instruccion siguiente
6.1.3 switch-case
1 instruccion anterior
2 switch expresion
3 case expresion 1
4 bloque de instrucciones 1
5 case expresion 2
6 bloque de instrucciones 2
7 case expresion 3
8 bloque de instrucciones 3
9 otherwise
10 bloque de instrucciones por defecto
11 end
12 instruccion siguiente
1 A = input ( ’A = ’)
2 B = input ( ’B = ’)
3 switch A + B
4 case 3
5 disp ( ’ El resultado es 3 ’)
6 case 5
7 disp ( ’ El resultado es 5 ’)
8 otherwise
9 disp ( ’ El resultado no es ni 3 ni 5 ’)
10 end
45
6.2 Estructuras de repetición o bucles | Capitulo VI
1 instruccion anterior
2 while expresion
3 bloque de instrucciones
4 end
5 instruccion siguiente
Escribir una función que, dado un número natural n, calcule y devuelva la suma de todos
los números naturales entre 1 y n.
46
6.2 Estructuras de repetición o bucles | Capitulo VI
Figura No 6.6:
Diagrama de flujo de la función SumNat(n).
6.2.2 for
Siempre que en un bucle sea posible determinar el número de veces que se va repetir el
bloque de instrucciones, se usa la instrucción for.
Figura No 6.7:
Estructura condicional for.
47
6.3 Ruptura de bucles de repetición | Capitulo VI
1 instruccion anterior
2 for k =1: n
3 bloque de instrucciones
4 end
5 instruccion siguiente
Escribir una función que, dado un vector, calcule el valor máximo entre todos sus compo-
nentes.
1 function [ y ]= traza ( A )
2 [n , m ]= size ( A ) ;
3 if n == m
4 y =0;
5 for k =1: n
6 y = y + A (k , k ) ;
7 end
8 else
9 end
10 end
48
6.3 Ruptura de bucles de repetición | Capitulo VI
6.3.1 break
Interrumpe inmediatamente el ciclo de repetición y el programa continúa ejecutando la
instrucción siguiente a la cláusula end.
Figura No 6.8:
Estructura ruptura de bucle break.
6.3.2 continue
Interrumpe la iteración en curso e inicia la siguiente iteración.
Figura No 6.9:
Estructura ruptura de bucle continue.
49
6.4 Gestión de errores | Capitulo VI
Figura No 6.10:
Volumen del tanque.
50
6.5 Problemas propuestos | Capitulo VI
16 % GRAFICO :
17 A =[12.5 ,12.5 ,23 , -23 , -12.5 , -12.5 ,12.5];
18 B =[0 ,19 ,33 ,33 ,19 ,0 ,0];
19 a =[ - rh , rh ];
20 b =[ h , h ];
21
22 plot (A ,B ,a , b ) ,% grid on
51
VII
CAPÍTULO
RESOLUCIÓN DE ECUACIONES
3 % Datos de ingreso :
4 syms x
5 f = input ( ’ Ingrese ecuacion : f ( x ) = ’) ; % f = x * sin ( x ) -1;
6 fun = inline ( char ( f ) )
7 a = input ( ’ Ingrese a = ’) ; % a =1;
8 b = input ( ’ Ingrese b = ’) ; % b =2;
9
10 % Grafico de la funcion :
11 xx =[ a :0.01: b ];
12 funcion = inline ( vectorize ( f ) ) ;
13 yy = funcion ( xx ) ;
14 plot ( xx , yy )
15 hold on
16 plot ([ a , b ] ,[0 ,0] , ’k - ’)
17
52
7.2 Método del Punto Fijo | Capitulo VII
20 disp ( ’ k a b ’) % Encabezado ←-
de la tabla de iteraciones
21
22 % Algoritmo :
23 fa = fun ( a ) ;
24 fb = fun ( b ) ;
25 if fa * fb >=0
26 error ( ’ El intervalo (a , b ) no contiene la solucion ’)
27 end
28 while abs (a - b ) /2 > tol
29 k = k +1;
30 c =( a + b ) /2;
31 fc = fun ( c ) ;
32 if fc ==0
33 break
34 end
35 if fc * fa <0
36 b=c;
37 fb = fc ;
38 else
39 a=c;
40 fa = fc ;
41 end
42 fprintf ( ’ %3.0 f %17.15 f %17.15 f \ n ’ ,k ,a , b )
43 end
44
45 % Raiz :
46 sol =( a + b ) /2
47
48 % Grafico de la solucion :
49 hold on
50 plot ( sol ,0 , ’ ro ’)
51 grid on
52 grid minor
53 xlabel ( ’x ’)
54 ylabel ( ’f ( x ) ’)
55 title ( ’ Metodo de la Biseccion ’)
53
7.3 Método de Newton Raphson | Capitulo VII
4 % Datos de ingreso :
5 syms x
6 fun = input ( ’ Ingrese ecuacion : g ( x ) = ’) ;
7 g = inline ( vectorize ( fun ) ) ;
8 x0 = input ( ’ Ingrese x0 = ’) ; % Punto de partida
9 k = input ( ’ Ingrese nro . max . de iteraciones = ’) ; % Numero ←-
maximo de iteraciones
10 tol = sqrt ( eps ) ; % Tolerancia epsilon de la maquina
11 disp ( ’ k x ’) % Encabezado de la tabla de ←-
iteraciones
12
13 % Algoritmo :
14 x (1) = x0 ;
15 for i =1: k
16 x ( i +1) = g ( x ( i ) ) ;
17 fprintf ( ’ %3.0 f %17.15 f \ n ’ ,i , x ( i ) )
18 if abs ( x ( i +1) -x ( i ) ) < tol
19 break
20 end
21 end
22 xc = x ( i +1) ;
23 sol = double ( xc )
24
25 % Grafico :
26 xx =[0:0.02:2* sol ];
27 plot ( xx , xx , ’k - ’ ,xx , g ( xx ) )
28 hold on
29 plot ( sol , sol , ’ ro ’)
30 grid on
31 grid minor
32 xlabel ( ’x ’)
33 ylabel ( ’g ( x ) ’)
34 title ( ’ Metodo del Punto Fijo ’)
54
7.3 Método de Newton Raphson | Capitulo VII
3 % Datos de ingreso :
4 syms x
5 fun = input ( ’ Ingrese ecuacion : f ( x ) = ’) ; % funcion f ( x ) =0
6 f = inline ( vectorize ( fun ) ) ;
7 deriv = diff ( fun ) ; % derivada de f ( x )
8 df = inline ( vectorize ( deriv ) ) ;
9 x1 = input ( ’ Ingrese x0 = ’) ; % Punto de partida
10 k = input ( ’ Ingrese nro . max . de iteraciones = ’) ; % Numero ←-
maximo de iteraciones
11 tol = sqrt ( eps ) ; % Tolerancia epsilon de la maquina
12
15 % Algoritmo :
16 for i =1: k
17 x0 = x1 ;
18 ff = f ( x0 ) ;
19 dff = df ( x0 ) ;
20 x1 = x0 - ff / dff ;
21 fprintf ( ’ %3.0 f %17.15 f \ n ’ ,i , x1 )
22 if abs ( x1 - x0 ) < tol
23 break
24 end
25 end
26 sol = double ( x1 )
27
28 % Grafico :
29 xx =[0:0.02:2* sol ];
30 plot ( xx , f ( xx ) )
31 hold on
32 plot ( sol ,0 , ’ ro ’ ,[0 ,2* sol ] ,[0 ,0] , ’k - ’)
33 grid on
34 grid minor
35 xlabel ( ’x ’)
36 ylabel ( ’f ( x ) ’)
37 title ( ’ Metodo de Newton Raphson ’)
55
7.4 Método de Halley o Newton Raphson modificado | Capitulo VII
4 % Datos de ingreso :
5 x0 = input ( ’ Ingrese x0 = ’) ; % Punto de partida
6 k = input ( ’ Ingrese nro . max . de iteraciones = ’) ; % Numero ←-
maximo de iteraciones
7 tol = sqrt ( eps ) ; % Tolerancia epsilon de la maquina
8
9 syms x
10 fun = input ( ’ Ingrese ecuacion : f ( x ) = ’) ; % funcion f ( x ) =0
11 f = inline ( vectorize ( fun ) ) ;
12 deriv1 = diff ( fun ) ; % primera derivada f ’( x )
13 df1 = inline ( vectorize ( deriv1 ) ) ;
14 deriv2 = diff ( deriv1 ) ; % segunda derivada f ’ ’( x )
15 df2 = inline ( vectorize ( deriv2 ) ) ;
16
19 % Algoritmo :
20 for i =1: k
21 % R e l a c i n de recurrencia :
22 x1 = x0 -( f ( x0 ) / df1 ( x0 ) ) *(1 -( f ( x0 ) * df2 ( x0 ) /2* df1 ( x0 ) ^2) ) ^( -1) ;
23 fprintf ( ’ %3.0 f %17.15 f \ n ’ ,i , x1 )
24 if abs ( x1 - x0 ) < tol
25 break
26 end
27 x0 = x1 ;
28 end
29 sol = double ( x1 )
30
31 % Grafico :
32 xx =[0:0.02:2* sol ];
33 plot ( xx , f ( xx ) )
34 hold on
35 plot ( sol ,0 , ’ ro ’ ,[0 ,2* sol ] ,[0 ,0] , ’k - ’)
56
7.5 Método de la Secante | Capitulo VII
36 grid on
37 grid minor
38 xlabel ( ’x ’)
39 ylabel ( ’f ( x ) ’)
40 title ( ’ Metodo de Halley ’)
3 % Datos de ingreso :
4 x0 = input ( ’ Ingrese x0 = ’) ; % Punto de partida
5 k = input ( ’ Ingrese nro . max . de iteraciones = ’) ; % Numero ←-
maximo de iteraciones
6 tol = sqrt ( eps ) ; % Tolerancia epsilon de la maquina
7
8 syms x
9 fun = input ( ’ Ingrese ecuacion : f ( x ) = ’) ; % funcion f ( x ) =0
10 f = inline ( vectorize ( fun ) ) ;
11 disp ( ’ k x ’) % Encabezado de la tabla de ←-
iteraciones
12
13 % Algoritmo :
14 x1 = x0 ;
15 x2 = x0 -0.1;
16
17 for i =1: k
18 % R e l a c i n de recurrencia :
19 x0 = x1 ;
20 x1 = x2 ;
21 fx = f ( x1 ) ;
22 dfx =( f ( x1 ) -f ( x0 ) ) /( x1 - x0 ) ;
23 x2 = x1 - fx / dfx ;
24 fprintf ( ’ %3.0 f %17.15 f \ n ’ ,i , x2 )
25 if abs ( x2 - x1 ) < tol
26 break
27 end
28 end
29 sol = double ( x2 )
57
7.6 Método de la Falsa Posición | Capitulo VII
30
31 % Grafico :
32 xx =[0:0.02:2* sol ];
33 plot ( xx , f ( xx ) )
34 hold on
35 plot ( sol ,0 , ’ ro ’ ,[0 ,2* sol ] ,[0 ,0] , ’k - ’)
36 grid on
37 grid minor
38 xlabel ( ’x ’)
39 ylabel ( ’f ( x ) ’)
40 title ( ’ Metodo de la Secante ’)
3 % Datos de ingreso :
4 x0 = input ( ’ Ingrese x0 = ’) ; % Punto de partida
5 x1 = input ( ’ Ingrese x1 = ’) ; % Punto de partida
6 k = input ( ’ Ingrese nro . max . de iteraciones = ’) ; % Numero ←-
maximo de iteraciones
7 tol = sqrt ( eps ) ; % Tolerancia epsilon de la maquina
8
9 syms x
10 fun = input ( ’ Ingrese ecuacion : f ( x ) = ’) ; % funcion f ( x ) =0
11 f = inline ( vectorize ( fun ) ) ;
12 disp ( ’ k x ’) % Encabezado de la tabla de ←-
iteraciones
13
14 % Algoritmo :
15 fx0 = f ( x0 ) ;
16 fx1 = f ( x1 ) ;
17
18 for i =1: k
19 h = fx0 *( x0 - x1 ) /( fx1 - fx0 ) ; % paso
20 x2 = x0 + h ;
21 fx2 = f ( x2 ) ;
22 if fx2 * fx1 <0
23 x0 = x1 ;
58
7.7 Método de Müller | Capitulo VII
24 fx0 = fx1 ;
25 else
26 fx0 = fx0 /2;
27 end
28 x1 = x2 ;
29 fx1 = fx2 ;
30 fprintf ( ’ %3.0 f %17.15 f \ n ’ ,i , x1 )
31 if abs ( x1 - x0 ) < tol
32 break
33 end
34 end
35 sol = double ( x1 )
36
37 % Grafico :
38 xx =[0:0.02:2* sol ];
39 plot ( xx , f ( xx ) )
40 hold on
41 plot ( sol ,0 , ’ ro ’ ,[0 ,2* sol ] ,[0 ,0] , ’k - ’)
42 grid on
43 grid minor
44 xlabel ( ’x ’)
45 ylabel ( ’f ( x ) ’)
46 title ( ’ M t o d o de la Falsa P o s i c i n ’)
3 % Datos de ingreso :
4 x0 = input ( ’ Ingrese x0 = ’) ; % Punto de partida
5 x1 = input ( ’ Ingrese x1 = ’) ; % Punto de partida
6 x2 = input ( ’ Ingrese x2 = ’) ; % Punto de partida
7 k = input ( ’ Ingrese nro . max . de iteraciones = ’) ; % Numero ←-
maximo de iteraciones
8 tol = sqrt ( eps ) ; % Tolerancia epsilon de la mquina
9
10 syms x
11 fun = input ( ’ Ingrese ecuacion : f ( x ) = ’) ; % funcion f ( x ) =0
12 f = inline ( vectorize ( fun ) ) ;
59
7.7 Método de Müller | Capitulo VII
15 % Algoritmo :
16 fx0 = f ( x0 ) ; fx1 = f ( x1 ) ; fx2 = f ( x2 ) ;
17
18 for i =1: k
19 c = fx2 ;
20 d0 = x0 - x2 ;
21 d1 = x1 - x2 ;
22 det = d0 * d1 *( x0 - x1 ) ;
23 b =( d0 * d0 *( fx1 - fx2 ) - d1 * d1 *( fx0 - fx2 ) ) / det ;
24 a =( d1 *( fx0 - fx2 ) - d0 *( fx1 - fx2 ) ) / det ;
25 di = sqrt ( b *b -4* a * c ) ;
26 if b <0
27 isig = -1;
28 else
29 isig =1;
30 end
31 z =( -2) * c /( b + isig * di ) ;
32 x3 = x2 + z ;
33 if abs ( x3 - x1 ) < abs ( x3 - x0 )
34 u = x1 ; x1 = x0 ; x0 = u ; u = fx1 ; fx1 = fx0 ; fx0 = u ;
35 end
36 if abs ( x3 - x2 ) < abs ( x3 - x1 )
37 u = x2 ; x1 = u ; u = fx2 ; fx1 = u ;
38 end
39 x2 = x3 ; fx2 = f ( x2 ) ;
40 if isreal ( x2 )
41 fprintf ( ’ %4.0 f %17.14 f + %17.14 f i %23.15 f \ n ’ ,i , ←-
real ( x2 ) , imag ( x2 ) , fx2 ) ;
42 else
43 fprintf ( ’ %4.0 f %17.15 f %23.15 e \ n ’ ,i , x2 , fx2 ) ;
44 end
45 if abs ( fx2 ) < tol
46 break
47 end
48 end
49 sol = double ( x2 )
60
7.7 Método de Müller | Capitulo VII
50
51 % Grafico :
52 xx =[0:0.02:2* sol ];
53 plot ( xx , f ( xx ) )
54 hold on
55 plot ( sol ,0 , ’ ro ’ ,[0 ,2* sol ] ,[0 ,0] , ’k - ’)
56 grid on
57 grid minor
58 xlabel ( ’x ’)
59 ylabel ( ’f ( x ) ’)
60 title ( ’ Metodo de Muller ’)
61
VIII
CAPÍTULO
INTERPOLACIÓN POLINÓMICA
62
IX
CAPÍTULO
INTEGRACIÓN NUMÉRICA
9.1 Cuadratura
63
X
CAPÍTULO
SISTEMA DE ECUACIONES LINEALES
64
XI
CAPÍTULO
SISTEMA DE ECUACIONES NO LINEALES
65
A
CAPÍTULO
ANEXOS.
66
Anexos
67
Anexos
68
Anexos
69
Anexos
70
Anexos
71
Anexos
72