Sunteți pe pagina 1din 79

MANUAL DE PROGRAMACIÓN

MATLAB

APLICACIÓN A LOS MÉTODOS


NUMÉRICOS EN LA INGENIERÍA
CIVIL  

Ing. G. Milagros Tipe Anaya


mtipe.phi@gmail.com

 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

III REPRESENTACIÓN GRÁFICA 15


3.1 Gráficos bidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Gráficos tridimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Gráficos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4 Gráficos de propósito especial . . . . . . . . . . . . . . . . . . . . . . . . 27
3.5 Problema propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

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

X SISTEMA DE ECUACIONES LINEALES 64


10.1 Método de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

XI SISTEMA DE ECUACIONES NO LINEALES 65


11.1 Método de Newton Raphson . . . . . . . . . . . . . . . . . . . . . . . . . 65

A ANEXOS. 66
1.1 Resumen de funciones de Matlab . . . . . . . . . . . . . . . . . . . . . . 66

iv
ÍNDICE DE CUADROS

1.1 Las ventanas de Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


1.2 Formato de visualización de números. . . . . . . . . . . . . . . . . . . . . 4
1.3 Funciones matemáticas elementales. . . . . . . . . . . . . . . . . . . . . . 5
1.4 Funciones trigonométricas. . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Funciones de redondeo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1 Operadores aritméticos de arreglo de datos. . . . . . . . . . . . . . . . . . 12

3.1 Funciones gráficas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15


3.2 Funciones axis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Tipo de trazo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.1 Funciones matemáticas para expresiones simbólicas. . . . . . . . . . . . . 37

v
ÍNDICE DE FIGURAS

1.1 Entorno gráfico de Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . 2


1.2 Ventana del Editor para la edición de código Matlab. . . . . . . . . . . . . 2
1.3 Ventana de Ayuda abierta. . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Ventana de Gráficos representando un gráfico Matlab. . . . . . . . . . . . 3
1.5 Ejemplo de una ventana de comandos. . . . . . . . . . . . . . . . . . . . 4
1.6 Funciones trigonométricas seno y coseno. . . . . . . . . . . . . . . . . . . 6
1.7 Representación gráfica de un complejo en un diagrama polar. . . . . . . . 7

2.1 La matriz en Matlab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1 Función plot(x,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16


3.2 Función semilogx(x,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Función loglog(x,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 Función stem(x,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5 Función stairs(x,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.6 Función axis([xmin xmax ymin ymax]). . . . . . . . . . . . . . . . . . . . 18
3.7 Función axis off. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.8 Función grid on. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.9 Función subplot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.10 Ventana de Gráficos representando un gráfico Matlab. . . . . . . . . . . . 21
3.11 Ejemplo de generación de gráfico tridimensional. . . . . . . . . . . . . . . 22
3.12 Función plot3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.13 Función mesh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.14 Función surf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.15 Función meshc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.16 Función pie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.17 Función bar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.18 Función histogram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.19 Funciones convexhull, delauney, voronoi. . . . . . . . . . . . . . . . . . . 27
3.20 Gráfico de un toro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.1 Creación de fichero script. . . . . . . . . . . . . . . . . . . . . . . . . . . 29


4.2 Ejecución de fichero script. . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Hoja de cálculo ’base.xlsx’ . . . . . . . . . . . . . . . . . . . . . . . . . . 32

vi
Índice de Figuras

4.4 Hoja de cálculo resultante ’exportacion.xlsx’ . . . . . . . . . . . . . . . . 34


4.5 Hoja de cálculo resultante ’base.xlsx’ . . . . . . . . . . . . . . . . . . . . 34

5.1 Creación de fichero function. . . . . . . . . . . . . . . . . . . . . . . . . 35


5.2 Vector posición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.1 Estructura condicional simple. . . . . . . . . . . . . . . . . . . . . . . . . 41


6.2 Estructura condicional doble. . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3 Diagrama de flujo de la función Cuadrante(x,y). . . . . . . . . . . . . . . 43
6.4 Estructura condicional con más casos. . . . . . . . . . . . . . . . . . . . . 44
6.5 Estructura condicional while. . . . . . . . . . . . . . . . . . . . . . . . . 46
6.6 Diagrama de flujo de la función SumNat(n). . . . . . . . . . . . . . . . . 47
6.7 Estructura condicional for. . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.8 Estructura ruptura de bucle break. . . . . . . . . . . . . . . . . . . . . . 49
6.9 Estructura ruptura de bucle continue. . . . . . . . . . . . . . . . . . . . . 49
6.10 Volumen del tanque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

vii
I

CAPÍTULO
INTRODUCCIÓN A MATLAB

1.1 ¿Qué es Matlab?


MATLAB es el nombre abreviado de "MATrix LABoratory". Es un programa para realizar
cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar
con números escalares, tanto reales como complejos, con cadenas de caracteres y con otras
estructuras de información más complejas. Una de las capacidades más atractivas es la de
realizar una amplia variedad de gráficos en dos y tres dimensiones.

1.2 Entorno de trabajo


Cuadro No 1.1 :
Las ventanas de Matlab.
Nombre Significado Propósito
Es la ventana principal, se utiliza para introducir
Command Window Ventana de Comandos
variables y ejecutar programas.
Figure Window Ventana de Gráficos Se utiliza para visualizar gráficos.
Se usa para crear y depurar ficheros de script y
Editor Window Ventana del Editor
funciones MATLAB.
Help Window Ventana de Ayuda Proporciona ayuda e información sobre MATLAB.
Command History Ventana del Histórico de Almacena y visualiza los comandos que se intro-
Window Comandos ducen en la Ventana de Comandos.
Ventana del Espacio de Proporciona información sobre las variables uti-
Workspace Window
Trabajo lizadas.
Current Directory Ventana del Directorio de Muestra los ficheros que hay en el directorio de
Window Trabajo Actual trabajo actual.

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.

1.3 Utilización de la ventana de comandos


Sintaxis:

» Comando o instrucción a evaluar < enter >

• Los cálculos que no se asignan a una variable en concreto se asignan a la variable de


respuesta por defecto que es ans. Sin embargo, si el cálculo se asigna a una variable,
el resultado queda guardado en ella.
• Cuando se teclea un comando en la Ventana de Comandos y se pulsa la tecla Enter,
el comando es ejecutado y se visualiza inmediatamente. Si se teclea un punto y coma
(;) al final del comando, la salida se ejecuta pero no se visualiza.
• Matlab distingue entre mayúsculas y minúsculas.
• Los comentarios deben ir precedidos por % o, (MATLAB ignora todo lo que vaya
precedido por el símbolo %).

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.

1.4 Formato de visualización de números


Cuadro No 1.2 :
Formato de visualización de números.
Comando Descripción Ejemplo
format short Punto fijo con 4 dígitos »290/7
ans= 41.4286
format long Punto fijo con 15 dígitos »290/7
ans= 41.428571428571431
format short e Notación científica con 4 dígitos »290/7
decimales ans= 4.1429e+001
format long e Notación científica con 15 dígitos »290/7
decimales ans= 4.142857142857143e+001
format short g 5 primeros dígitos fijos »290/7
ans= 41.429
format long g 15 primeros dígitos fijos »290/7
ans= 41.4285714285714
format bank 2 dígitos decimales »290/7
ans= 41.43

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).

1.5 Funciones básicas


Se pueden utilizar las funciones matemáticas habituales, así como una vasta colección
de funciones predefinidas en Matlab A.
Sintaxis:

» 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.7 Números complejos


Matlab utiliza ciertos nombres de variables para fines especiales, como i o j, que se
designan ambas a la unidad imaginaria. El número π se obtiene con pi. Se puede escribir
directamente un número complejo como:

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.

1.8 Problemas propuestos


Resuelva los siguientes problemas utilizando la Ventana de Comandos de Matlab.
√ 2
37 log(76) ( 4 250+23)
1. 73 +546
+ 43 ∗ 3
(45−3 )
 2  e tan( π ln 8)
5π 2 7π
2. cos 6 sen 8 + 7∗6 5
2

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]

• La coma "," para separar elementos [1,2,3,4] ó [1 2 3 4].


• El punto y coma ";" para separar filas en las matrices [1 2;3 4].
• El operador "’" es el de transposición (en el caso de números complejos realiza la
transposición y la conjugación simultáneas).
• Los dos puntos":" indican números consecutivos entre dos valores, [2:5] es equivalente
a [2 3 4 5].
• Si queremos declarar un vector de coordenadas equiespaciadas entre dos dadas, por
ejemplo, que la primera valga 0, la última 12 y la distancia entre coordenadas sea 2,
escribiremos:

1 >> v =[0:2:12]
2 v =
3 0 2 4 6 8 10 12

• Equivalentemente, linspace(a,b,n) crea un vector de n componentes equiespaciadas,


desde a hasta b. En el caso de que h=(b-a)/(n-1), se obtiene el mismo resultado con

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:

1 >> v = linspace (0 ,12 ,7)


2 v =
3 0 2 4 6 8 10 12

• 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

• v(:) se refiere a todos los elementos del vector v.

2.2 Matrices
Las matrices se escriben como los vectores, pero separando las filas mediante un punto
y coma.

• A(:,n) se refiere a los elementos de la columna n de la matriz A.


• A(n,:) se refiere a los elementos de la fila n de la matriz A.
• A(:,m:n) se refiere a los elementos entre las columnas m y n de la matriz A.
• A(m:n,:) se refiere a los elementos entre las filas m y n de la matriz A.
• A(m:n,p:q) se refiere a los elementos de la fila m a la n, y a los de la columna p a
la q de la matriz A.
• Un elemento, o un rango de elementos, de una variable existente pueden ser elimina-
dos simplemente reasignando el conjunto vacío [] a dichos elementos.

1 >> A =[1 2 3 4 5 6 7]; A (3:5) =[];


2 >> A
3 A =
4 1 2 6 7

9
2.2 Matrices | Capitulo II

Figura No 2.1:
La matriz en Matlab.

2.2.1 Tamaño de un vector o matriz


• length(v), devuelve el número de componentes del vector v.
• size(M), devuelve el número de filas y columnas de la matriz M.

1 >> M =[1 2 3;4 5 6;7 8 9]


2 M =
3 1 2 3
4 4 5 6
5 7 8 9
6 >> v =[1 2 3]
7 v =
8 1 2 3
9 >> size ( M )
10 ans =
11 3 3
12 >> size ( v )
13 ans =
14 1 3
15 >> length ( v )
16 ans =
17 3

10
2.2 Matrices | Capitulo II

2.2.2 Vectores y matrices usuales


• eye(n), es la matriz identidad I de orden n.
• zeros(m,n), es una matriz de ceros de tamaño mxn.
• ones(m,n), es una matriz de unos de tamaño mxn.
• rand(m,n), es una matriz de mxn elementos uniformemente distribuidos en [0,1].
• diag(v), cuando v es un vector, este comando crea una matriz cuadrada con los
elementos de v en la diagonal.
• diag (M), cuando M es una matriz, este comando crea un vector a partir de los
elementos de la diagonal de M.

1 >> eye (3)


2 ans =
3 1 0 0
4 0 1 0
5 0 0 1
6 >> zeros (3 ,2)
7 ans =
8 0 0
9 0 0
10 0 0
11 >> ones (2 ,3)
12 ans =
13 1 1 1
14 1 1 1
15 >> rand (3 ,2)
16 ans =
17 0.9058 0.6324
18 0.1270 0.0975
19 0.9134 0.2785
20 >> diag ( v )
21 ans =
22 1 0 0
23 0 2 0
24 0 0 3
25 >> diag ( M )
26 ans =
27 1
28 5
29 9

11
2.3 Variables lógicas | Capitulo II

2.2.3 Rango, inversa y determinante de una matriz


• rank(M), es el rango de M, o sea, el número de filas o columnas linealmente
independientes.
• det(M), determinante de la matriz cuadrada M.
• eig(M), valores propios de la matriz cuadrada M.
• inv(M), la inversa de la matriz M es la matriz A que multiplicada por M da la matriz
identidad.
• A \ B, multiplica b por la inversa de A. Se utiliza para resolver el sistema de ecuaciones
lineales Ax=b.

2.2.4 Operaciones sobre un vector o matriz


También pueden efectuarse operaciones elemento a elemento:

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 vectores fila o columna:

• sum(v), halla la suma de los elementos del vector v.


• prod(v), halla el producto de los elementos del vector v.
• max(v), halla el máximo de los elementos del vector v.
• min(v), halla el mínimo de los elementos del vector v.

Para matrices:

• sum(A), halla la suma de los elementos de cada columna de la matriz A.


• prod(A), halla el producto de los elementos de cada columna de la matriz A.
• max(A), halla el máximo de los elementos de cada columna de la matriz A.
• min(A), halla el mínimo de los elementos de cada columna de la matriz A.

2.3 Variables lógicas


También existen variables lógicas que toman los valores 0 (falso) ó 1 (verdadero). Los
caracteres más empleados en la condiciones lógicas son:

• > mayor que...


• < menor que...

12
2.4 Polinomios | Capitulo II

• == igual a ...
• >= mayor o igual que ...
• <= menor o igual que ...
• = negación...
• && conjunción "y"
• || disyunción "o"

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


2 >> logica = v1 == v2
3 logica =
4 0 1 0

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):

• conv(p,q), representa el polinomio producto p(x)q(x).


• [c,r]=deconv(p,q), son el cociente y el resto de la división de p(x) entre q(x).
• roots(p), halla las raíces (reales o complejas) del polinomio p(x).
• polyval(p,a), evalúa l polinomio p en x=a.
• p=poly(r), reconstruye el polinomio p(x) a partir de sus raíces.

1 >> p =[1 0 2 0 3]; q =[2 1 0]; % p = x ^4+2* x ^2+3 y q = x ^2+ x


2 >> polyval (p , -1) % Evaluacion del polinomio p en x = -1
3 ans =
4 6
5 >> pro = conv (p , q ) % Producto de los polinomios p y q
6 pro =
7 2 1 4 2 6 3 0
8 >> [c , r ]= deconv ( pro , p ) % Cociente entre pro y p
9 c =
10 2 1 0
11 r =
12 0 0 0 0 0 0 0

13
2.5 Problemas propuestos | Capitulo II

13 >> roots ( pro ) % Raices del polinomio pro


14 ans =
15 0.0000 + 0.0000 i
16 0.6050 + 1.1688 i
17 0.6050 - 1.1688 i
18 -0.6050 + 1.1688 i
19 -0.6050 - 1.1688 i
20 -0.5000 + 0.0000 i
21 >> poly ([ i -i 0.5 pi ]) % Polinomio monico que tiene por ←-
raices a los numeros i , -i , 0.5 y pi
22 ans =
23 1.0000 -3.6416 2.5708 -3.6416 1.5708

2.5 Problemas propuestos


Divide el polinomio x3 − 2x − 5 por x − 2

• Manualmente, utilizando el algoritmo de división.


• Utilizando la función deconv
• Evalúa el mismo polinomio en x=2

14
III
CAPÍTULO
REPRESENTACIÓN GRÁFICA

Matlab tiene un gran potencial de herramientas gráficas.

3.1 Gráficos bidimensionales


Los pasos generales para la representación de curvas en dos dimensiones son los sigu-
ientes:

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).

1 x = linspace ( -2* pi ,2* pi ) ;


2 y1 = sin ( x ) ;
3 y2 = cos ( x ) ;
4 p = plot (x , y1 ,x , y2 ) ;

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).

1 X = linspace (0 ,2* pi ,50) ’;


2 Y = cos ( X ) ;
3 stem (X , Y )

17
3.1 Gráficos bidimensionales | Capitulo III

Figura No 3.5:
Función stairs(x,y).

1 X = linspace (0 ,4* pi ,40) ;


2 Y = sin ( X ) ;
3 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

4. Líneas de cuadrícula: La instrucción para mostrar líneas de cuadrícula es grid on


y grid off para ocultarla; y para mostrar u ocultar las líneas superior y derecha del
gráfico son box on y box off respectivamente.
Figura No 3.8:
Función grid on.

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

5. Tipo de trazo: Se pueden usar trazos continuos, discontinuos, diversos colores y


símbolos.
Cuadro No 3.3 :
Tipo de trazo.
Color Tipo de línea Marcador
’r’ rojo ’-’ línea continua ’+’ signo más
’k’ negro ’–’ línea discontinua ’-’ signo menos
’w’ blanco ’:’ línea a puntos ’o’ círculo
’b’ azul ’-.’ línea a puntos y rayas ’s’ cuadrado
’y’ amarillo ’d’ diamante
’g’ verde ’p’ estrela de 5 puntas
’m’ magenta ’h’ estrella de 6 puntas
’c’ azul celeste ’*’ asterisco

6. Superposición: Para superponer gráficas se usa la función hold on y hold off.


7. División de una ventana gráfica: Para subdividir la pantalla se utiliza sub-
plot(a,b,c) donde a corresponde al número de filas, b al número de columnas y
c a la subgráfica actual.

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

8 y_poly = 1 - x .^2./2 + x .^4./24;


9 plot (x , y_poly , ’g ’) ;
10 title ( ’ Subplot 2: Polynomial ’)
11

12 subplot (2 ,2 ,[3 ,4]) ;


13 plot (x , y_cos , ’b ’ ,x , y_poly , ’g ’) ;
14 title ( ’ Subplot 3 and 4: Both ’)

8. Etiquetado: Para etiquetar la representación se pueden utilizar las funciones: xlabel,


ylabel, title, text, gtext, legend.

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

3.2 Gráficos tridimensionales


Los gráficos para la representación de curvas en tres dimensiones son los mismos que
en el caso de curvas en 2D. Asimismo, los ejes se pueden modificar con axis ([xmin xmax
ymin ymax zmin zmax]).
Para obtenerla en Matlab se deben seguir 3 pasos:

1. Generar una malla rectangular de puntos del plano XY.


2. Evaluar la función f sobre los puntos de esta malla.
3. Aplicar la orden de Matlan adecuada para el tipo de representación de que se trate.

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.

Las instrucciones de representación en 3D son:

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 )

3. surf(x,y,z): crea un gráfico de superficie tridimensional. La función traza los valores


de la matriz Z como alturas superiores a una cuadrícula en el plano x-y definido por
X e Y. La función también utiliza Z para los datos de color, por lo que el color es
proporcional a la altura.

23
3.3 Gráficos específicos | Capitulo III

Figura No 3.14:
Función surf.

1 [X , Y ] = meshgrid (1:0.5:10 ,1:20) ;


2 Z = sin ( X ) + cos ( Y ) ;
3 surf (X ,Y , Z )

4. meshc(z): crea un gráfico con la combinación de malla (mesh) y contorno (contour).

Figura No 3.15:
Función meshc.

1 figure
2 [X , Y ] = meshgrid ( -3:.125:3) ;
3 Z = peaks (X , Y ) ;
4 meshc ( Z )

3.3 Gráficos específicos


1. Diagrama circular: Funciones pie (en 2D) y pie3(en 3D).

24
3.3 Gráficos específicos | Capitulo III

Figura No 3.16:
Función pie.

1 X = [1 3 0.5 2.5 2];


2 ax1 = subplot (2 ,2 ,1) ;
3 pie ( X )
4 title ( ax1 , ’ Diagrama circular ’) ;
5

6 X = [1 3 0.5 2.5 2];


7 ax2 = subplot (2 ,2 ,2) ;
8 explode = [0 1 0 1 0];
9 pie (X , explode )
10 title ( ax2 , ’ Diagrama circular explotado ’) ;
11

12 X = [0.19 0.22 0.41];


13 ax3 = subplot (2 ,2 ,3) ;
14 pie ( X )
15 title ( ax3 , ’ Diagrama sin una tajada ’) ;
16

17 x = [1 ,3 ,0.5 ,2.5 ,2];


18 explode = [0 ,1 ,0 ,0 ,0];
19 ax4 = subplot (2 ,2 ,4) ;
20 pie3 (x , explode )
21 title ( ax4 , ’ Diagrama circular 3 D ’) ;

25
3.3 Gráficos específicos | Capitulo III

2. Diagrama de barras: Función bar

1 y = [1 2 3; 4 5 6];
2 ax1 = subplot (1 ,2 ,1) ;
3 bar ( ax1 , y )
4

5 ax2 = subplot (1 ,2 ,2) ;


6 bar ( ax2 ,y , ’ stacked ’)

Figura No 3.17:
Función bar.

3. Histogramas: Función histogram.

1 x = 2* randn (5000 ,1) + 5;


2 histogram (x , ’ Normalization ’ , ’ pdf ’)
3 hold on
4 y = -5:0.1:15;
5 mu = 5;
6 sigma = 2;
7 f = ←-
exp ( -(y - mu ) .^2./(2* sigma ^2) ) ./( sigma * sqrt (2* pi ) ) ;
8 plot (y ,f , ’ LineWidth ’ ,1.5)

26
3.4 Gráficos de propósito especial | Capitulo III

Figura No 3.18:
Función histogram.

3.4 Gráficos de propósito especial


1. convexhull: Dibuja la envolvente convexa (menor polígono que encierra un conjunto
de puntos en un plano).
2. delauney: Crea un conjunto de triángulos tal que ningún punto se encuentra en
un círculo circunscrito de un triángulo. La salida de delauney se grafica con triplot
(función para dibujar triángulo en un plano).
3. voronoi: Dibuja un polígono convexo alrededor de cada punto P tal que cada
segmento de línea del polígono es el bisector perpendicular entre P y sus vecinos.

Figura No 3.19:
Funciones convexhull, delauney, voronoi.

3.5 Problema propuesto


1. Representa la superficie engendrada por una circunferencia de radio 1, cuyo centro
es (2,0,0), al girar en torno a un eje situado en su mismo plano.
Resolución: Sea C una circunferencia situada en el plano XZ con centro en (a,0,0)
y radio b, que gira en torno al eje Z. Las coordenadas de un punto (r,z) de la misma se

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

4.1 Ejecución de un fichero Script


Se puede ejecutar el código escrito con el botón RUN o pulsando la tecla F5, o bien
escribiendo en el Command Windows el nombre de la función.
Figura No 4.2:
Ejecución de fichero script.

4.2 Lectura y escritura de variables interactivas


1. Input: La función input permite imprimir un mensaje en la línea de comandos de
MATLAB y recuperar como valor de retorno un valor numérico o el resultado de una
expresión tecleada por el usuario.

1 n = input ( ’ Ingrese el dato : ’)

2. Disp: La función disp permite imprimir en pantalla un mensaje de texto o el valor


de una matriz, pero sin imprimir su nombre.

1 disp ( ’ El programa ha terminado : ’)


2 A = rand (2 ,2)
3 disp ( A )
4

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.

1 A1 = [5.5 ,8.8 ,7.7 ,9.9;5500 ,8800 ,7700 ,9900]


2 formatSpec = ’X is %4.2 f meters or %8.3 f mm \ n ’;
3 fprintf ( formatSpec , A1 )
4

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.

4.3 Importación y exportación de datos


Matlab es un software comúnmente utilizado para el análisis de datos experimentales
que pueden provenir de distintas fuentes, incluidos otros programas. La forma de procesar
estos datos externos (números o texto) es importarlos, y de forma análoga exportarlos a

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:

4.3.1 Importación de datos


Se utiliza el comando xlsread para importar los datos de una hoja de cálculo Excel a
una variable de tipo array.

nombre variable=xlsread(’nombre archivo’)

• 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’

• Si se desea importar datos de una hoja en específico:

nombre variable=xlsread(’nombre archivo’,’nombre hoja’)

1 >> num = xlsread ( ’ base . xlsx ’)


2 num =
3 1 2 3
4 4 5 6
5 7 8 9

• Si se desea importar sólo una región de una hoja de cálculo:

nombre variable=xlsread(’nombre archivo’,’nombre hoja’,’rango’)

32
4.3 Importación y exportación de datos | Capitulo IV

1 >> val = xlsread ( ’ base . xlsx ’ ,2 , ’ A1 : B3 ’)


2 val =
3 1 3
4 3 5
5 >> val = xlsread ( ’ base . xlsx ’ ,2)
6 val =
7 1 3 2
8 3 5 6
9 5 7 10

• Si se desean los datos numéricos, los datos de texto y los datos combinados del
archivo de Excel sin procesar.

1 >> [ num , txt , raw ]= xlsread ( ’ base . xlsx ’ ,2)


2 num =
3 1 3 2
4 3 5 6
5 5 7 10
6 txt =
7 ’ datos ’ ’a ’ ’b ’
8 raw =
9 ’ datos ’ ’a ’ ’b ’
10 [ 1] [3] [ 2]
11 [ 3] [5] [ 6]
12 [ 5] [7] [10]

4.3.2 Exportación de datos


Se utiliza el comando xlswrite para la exportación de datos Matlab a una hoja Excel.

xlswrite(’nombre archivo’,nombre variable)

1 valores ={1 ,2 ,3;4 ,5 , ’x ’ ;7 ,8 ,9};


2 encabezados ={ ’ Primero ’ , ’ Segundo ’ , ’ Tercero ’ };
3 xlswrite ( ’ exportacion . xlsx ’ ,[ encabezados ; valores ])

33
4.3 Importación y exportación de datos | Capitulo IV

Figura No 4.4:
Hoja de cálculo resultante ’exportacion.xlsx’

• El archivo debe estar en el directorio actual, o si no existe, se crea uno automática-


mente con el nombre especificado.
• Si se desea exportar los datos a una hoja concreta, dentro de un rango específico:

xlswrite(’nombre archivo’,’nombre hoja’,’rango’)

1 valores ={1 ,2 ,3;4 ,5 , ’x ’ ;7 ,8 ,9};


2 encabezados ={ ’ Primero ’ , ’ Segundo ’ , ’ Tercero ’ };
3 xlswrite ( ’ base . xlsx ’ ,[ encabezados ; valores ] , ’ Datos ’)

Figura No 4.5:
Hoja de cálculo resultante ’base.xlsx’

34
V
CAPÍTULO
FICHEROS FUNCTION

5.1 Creación de un fichero de función


La implementación de tareas que pueden servir para diferentes programas se realiza en
Matlab a través de los archivos de funciones (function). La extensión de estos archivos
también es .m
Figura No 5.1:
Creación de fichero 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.

5.2 Estructura de un fichero de función


En la primera línea de un archivo de función se especifican los argumentos de entrada
y de salida y el nombre de la función. Debe seguir el formato siguiente:

function[Arg. de Salida]=nombrefuncion(Arg. de Entrada)

1 function [ output_args ] = Untitled ( input_args )


2 % Lineas de comentarios
3 % Ordenes que hacen los calculos
4 end

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.

5.3 Ejemplos de aplicación


Construya una función raices.m que calcule las raíces de un polinomio de segundo
grado ax2 + bx + c. Verifique su funcionamiento con x2 − 3x + 2.
Solución:

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

y se guarda en el fichero raices.m (mismo nombre que la función). Para su aplicación


a la ecuación pedida se ejecuta la siguiente instrucción:

1 > >[x , y ]= raices (1 , -3 ,2)


2 x =2
3 y =1

36
5.4 Funciones simbólicas | Capitulo V

5.4 Funciones simbólicas


El concepto de variable simbólica se puede asimilar al concepto de variable independiente
en matemáticas.

5.4.1 Construcción de funciones simbólicas


Para su construcción se requiere:

1. Declarar las variables simbólicas: Se utiliza la orden syms y a continuación se


construye la expresión de la función:

1 syms x
2 f =(2* x ^2 -1) /( x ^3 -2* x ^2+2* x -1)

La variable f es ahora una expresión simbólica (symbolic object). Se puede utilizar


cualquier nombre, o declarar varias variables, u operar con estas expresiones.
2. Realizar cálculos matemáticos entre ellos:
Cuadro No 5.1 :
Funciones matemáticas para expresiones simbólicas.
Funciones Descripción
subs sustituye el valor de una variable
limit calcula el límite
diff calcula la derivada
int calcula la integral
solve resuelve ecuaciones

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

15 >> int ( f ) % Calcula la integral de f


16 ans =
17 log ( x - (3^(1/2) *1 i ) /2 - 1/2) /2 + log ( x + ←-
(3^(1/2) *1 i ) /2 - 1/2) /2 + log ( x - 1) - ←-
(3^(1/2) * log ( x - (3^(1/2) *1 i ) /2 - 1/2) *5 i ) /6 + ←-
(3^(1/2) * log ( x + (3^(1/2) *1 i ) /2 - 1/2) *5 i ) /6

5.4.2 Conversión de formato simbólico a inline


Para pasar una expresión simbólica al formato numérico (inline), se puede utilizar la
orden inline con la particularidad de que hay que convertir primeramente la expresión
simbólica en cadena de caracteres a través de la orden char.

1 >> fn = inline ( char ( f ) )


2 fn =
3 Inline function :
4 fn ( x ) = (2* x ^2 - 1) /(2* x - 2* x ^2 + x ^3 - 1)
5 >> fn (0)
6 ans =
7 1

Si lo que queremos es que las operaciones sean elemento a elemento, se realiza con la
combinación de la orden inline y vectorize.

1 >> fn = inline ( vectorize ( f ) )


2 fn =
3 Inline function :
4 fn ( x ) =(2.* x .^2 -1) ./( x .^3 -2.* x .^2+2.* x -1)

5.5 Problemas propuestos


Cinemática de una partícula: Dado el vector posición de un punto:
Hallar las coordenadas del centro de curvatura "C".

38
5.5 Problemas propuestos | Capitulo V

Figura No 5.2:
Vector posición.

Solución en el fichero script:

1 % Se declara la variable t como simbolico


2 syms t
3 % Guardamos el vector posicion en la variable r =[ t ^3/3 ←-
t ^3/3 t ^2]
4 r = input ( ’ Ingresa el vector posicion r = ’)
5 % Hallamos la velocidad derivando r en funcion de t
6 v = diff (r , t )
7 % Hallamos el modulo de la velocidad
8 Mv = sqrt ( sum ( r .^2) )
9 % Hallamos la aceleracion con la derivada de la ←-
velocidad con respecto al tiempo
10 a = diff (v , t )
11 % Hallamos la aceleracion tangencial
12 at = diff ( Mv , t ) *( v / Mv )
13 % Hallamos la aceleracion normal
14 an =a - at
15 % Hallamos el modulo de la aceleracion normal
16 Man = sqrt ( sum ( an .^2) )
17 % hallamos el radio de curvatura
18 RO = Mv ^2/ Man
19 disp ( ’ El vector posicion del centro C es : ’)
20 R = r + RO
21 % hallamos C = R numericamente sustituyendo t =1 en R
22 C = subs (R ,1)

39
5.5 Problemas propuestos | Capitulo V

Solución en el fichero function:

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

Los condicionales y los bucles son la base de la programación estructurada.


Los condicionales permiten que se ejecuten conjuntos distintos de instrucciones, en
función de que se verifique o no determinada condición.
Los bucles permiten que se ejecute repetidamente un conjunto de instrucciones, ya sea
un número pre-determinado de veces, o bien mientras que se verifique una determinada
condición.

6.1 Estructuras condicionales


6.1.1 if-else-end
Permite hacer una tarea si se verifica una determinada condición y otra distinta si no
se verifica.
Figura No 6.1:
Estructura condicional simple.

41
6.1 Estructuras condicionales | Capitulo VI

1 instruccion anterior
2 if expresion
3 bloque de instrucciones
4 end
5 instruccion siguiente

Su funcionamiento es el siguiente: Se evalúa expresion. Si el resultado es verdadero,


se ejecuta el bloque de instrucciones y, cuando se termina, se continúa por instruccion
siguiente. Si el resultado no es verdadero, se va directamente a instruccion siguiente.
Figura No 6.2:
Estructura condicional doble.

1 instruccion anterior
2 if expresion
3 bloque de instrucciones 1
4 else
5 bloque de instrucciones 2
6 end
7 instruccion siguiente

Su funcionamiento es el siguiente: Se evalúa expresion. Si el resultado es verdadero,


se ejecuta el bloque de instrucciones 1 y, cuando se termina, se continúa por instruccion
siguiente. Si el resultado no es verdadero, se ejecuta el bloque de instrucciones 2 y
cuando se termina se va a la instruccion siguiente.

Ejemplo: Uso de condicional simple

Escribir una función que, dado x ∈ , devuelva el valor en x de la función definida:



 x + 1 si x < −1
f (x) = (6.1)
 1 − x2 si x ≥ −1

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

Ejemplo: Uso de condicionales anidadas

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

Su funcionamiento es el siguiente: Se evalúa expresion 1. Si el resultado es verdadero,


se ejecuta el bloque de instrucciones 1 y, cuando se termina, se continúa por instruccion
siguiente. Si el resultado de expresion 1 no es verdadero, se evalúa expresion 2. Si el
resultado es verdadero, se ejecuta el bloque de instrucciones 2 y cuando se termina se
va a la instruccion siguiente. Si el resultado de expresion 2 no es verdadero, se ejecuta
el bloque de instrucciones 3 y cuando se termina se va a la instruccion siguiente. En
cualquier caso se ejecutará sólo uno de los bloques de instrucción y la cláusula else puede
no existir y por ende, no se ejecutará ninguno de los bloques de instrucciones.

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

Ejemplo: Uso de switch

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

6.2 Estructuras de repetición o bucles


6.2.1 while
Permite repetir un grupo de instrucciones mientras que se verifique una cierta condi-
ción.
Figura No 6.5:
Estructura condicional while.

1 instruccion anterior
2 while expresion
3 bloque de instrucciones
4 end
5 instruccion siguiente

Este mecanismo precisa que, dentro del bloque de instrucciones se modifique, en


alguna de las repeticiones, el resultado de evaluar expresion. En caso contrario, el programa
entraría en un bucle infinito. Se puede detener el proceso pulsando CTRL+C.

Ejemplo: Uso de un while

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.

1 function [ suma ]= SumaNat ( n )


2 suma =0;
3 k =1;
4 while k <= n
5 suma = suma + k ;
6 k = k +1;
7 end
8 end

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

Ejemplo: Uso de for

Escribir una función que, dado un vector, calcule el valor máximo entre todos sus compo-
nentes.

1 function [ vmax ]= maximo ( v )


2 vmax = v (1) ;
3 for k =2: length ( v )
4 if v ( k ) > vmax
5 vmax = v ( k )
6 end
7 end
8 end

Escriba una función que calcule la traza de una matriz.

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

6.3 Ruptura de bucles de repetición


Se puede interrumpir la ejecución de un bucle de repetición en algún punti interno del
bloque de instrucciones que se repite, y esto dependerá de que se verifique o no alguna
condición.

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

6.4 Gestión de errores


• warning(’mensaje’): Alerta al usuario de alguna circunstancia no esperada durante
la ejecución de un programa, pero no lo detiene.
• error(’mensaje’): Muestra un mensaje en la pantalla y detiene en ese punto la
ejecución del programa.

6.5 Problemas propuestos


6.5.1 Volumen de agua
Un tanque de almacenamiento tiene la geometría mostrada. Escribir un programa en
Matlab que calcule el volumen del agua dentro de un depósito a partir de la altura "h".
Entrada "h"(m) y salida de volumen "V" (m3).

Figura No 6.10:
Volumen del tanque.

1 disp ( ’ UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA ’)


2 disp ( ’ FACULTAD DE INGENIERIA DE MINAS , GEOLOGIA Y CIVIL ’)
3 disp ( ’ ESCUELA DE FORMACION PROFESIONAL DE INGENIERIA ←-
CIVIL ’)
4 disp ( ’ $$$$ PROGRAMA PARA CALCULAR EL NIVEL DE AGUA EN ←-
EL DEPOSITO $$$$ ’)
5 h = input ( ’ Introduzca la altura h = ’) ;
6

7 if 0 <= h & h <=19


8 V = pi * h *(12.5) ^2;
9 rh =12.5;
10 else
11 rh =12.5+10.5*( h -19) /14;

50
6.5 Problemas propuestos | Capitulo VI

12 V = pi *19*12.5^2+ pi *( h -19) *(12.5^2+12.5* rh + rh ^2) /3;


13 end
14 fprintf ( ’ El volumen de agua en el deposito es : %12.7 f ←-
\ n ’ ,V )
15

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

7.1 Método de bisección

1 % Metodo de la Biseccion para resolver f ( x ) =0


2

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

18 tol = sqrt ( eps ) ; % Tolerancia epsilon de la maquina


19 k =0; % Numero de iteraciones

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 ’)

7.2 Método del Punto Fijo

53
7.3 Método de Newton Raphson | Capitulo VII

1 % Metodo de Punto Fijo para resolver f ( x ) =0


2 % si la funcion se puede expresar como g ( x ) = x
3

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 ’)

7.3 Método de Newton Raphson

54
7.3 Método de Newton Raphson | Capitulo VII

1 % Mtodo de Newton Raphson para resolver f ( x ) =0


2

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

13 disp ( ’ k x ’) % Encabezado de la tabla de ←-


iteraciones
14

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

7.4 Método de Halley o Newton Raphson modificado

1 % Metodo de Halley para resolver f ( x ) =0


2 % o metodo de Newton - Raphson modificado
3

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

17 disp ( ’ k x ’) % Encabezado de la tabla de ←-


iteraciones
18

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 ’)

7.5 Método de la Secante

1 % Metodo de la Secante para resolver f ( x ) =0


2

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 ’)

7.6 Método de la Falsa Posición

1 % Metodo de Regula Falsi e Illinois para resolver f ( x ) =0


2

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 ’)

7.7 Método de Müller

1 % Metodo de Muller para resolver f ( x ) =0


2

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

13 disp ( ’ k x ( real ) x ( imaginario ) ←-


f ( x ) ’) % Encabezado de la tabla de ←-
iteraciones
14

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

8.1 Interpolación polinómica

62
IX
CAPÍTULO
INTEGRACIÓN NUMÉRICA

9.1 Cuadratura

63
X
CAPÍTULO
SISTEMA DE ECUACIONES LINEALES

10.1 Método de Gauss-Jordan

64
XI
CAPÍTULO
SISTEMA DE ECUACIONES NO LINEALES

11.1 Método de Newton Raphson

65
A
CAPÍTULO
ANEXOS.

1.1 Resumen de funciones de Matlab

66
Anexos

67
Anexos

68
Anexos

69
Anexos

70
Anexos

71
Anexos

72

S-ar putea să vă placă și