0% encontró este documento útil (0 votos)
136 vistas51 páginas

Matlab

Este documento presenta un curso básico de MATLAB. Explica la interfaz de MATLAB, incluyendo la ventana de comandos y el espacio de trabajo. Describe comandos y sintaxis básicos, como funciones matemáticas, M-files, variables, bucles y condiciones. También cubre temas como gráficos, métodos numéricos, matemática simbólica y Simulink. El propósito del curso es proporcionar las habilidades básicas necesarias para usar con éxito MATLAB en ciencia e ingeniería.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
136 vistas51 páginas

Matlab

Este documento presenta un curso básico de MATLAB. Explica la interfaz de MATLAB, incluyendo la ventana de comandos y el espacio de trabajo. Describe comandos y sintaxis básicos, como funciones matemáticas, M-files, variables, bucles y condiciones. También cubre temas como gráficos, métodos numéricos, matemática simbólica y Simulink. El propósito del curso es proporcionar las habilidades básicas necesarias para usar con éxito MATLAB en ciencia e ingeniería.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 51

CURSO BÁSICO

DE

MATLAB

Dr. Ing. Marcos A. de Armas Teyra


Centro de Estudios de Energía y Medioambiente
Universidad de Cienfuegos

1
Índice
1 Introducción. 5
1.1 La Ventana de MATLAB 6
1.2 Estructura de la Ayuda 7
1.3 Comandos y sintaxis básica 7
1.3.1 Comandos de información general 8
1.3.2 Comandos de administración del espacio de trabajo 8
1.3.3 Comandos y funciones de administración 9
1.3.4 Constantes y variables especiales 9
1.3.5 Funciones matemáticas 9
Hiperbólicas
Complejas
Estadísticas
Operadores aritméticos y caracteres especiales
Operadores lógicos y relacionales
1.3.6 M-Files 11
1.3.7 Temporización 12
1.3.8 Control de la ejecución y flujo de programas 12
1.4 Formato de Salida 12
1.5 Salvar una sesión de trabajo 13
2 Trabajo con arreglos, matrices y vectores 13
2.1 Definiciones 13
2.1.1 Generación de matrices 14
2.1.2 Formación de un vector fila 15
2.1.3 Formación de un vector columna 15
2.1.4 Matrices elementales definidas en MATLAB 16
2.2 Libretos o guiones (scripts M-Files) 18
2.3 Funciones M-Files 18
2.4 Sub funciones y funciones anidadas 19
2.5 Crear nuevas funciones 21
2.6 Funciones anónimas 21
2.7 Función función 22
2.8 ¿Que usar? ¿Libretos o Funciones? 23
2.9 Cadena de textos, entrada de datos y mensajes de errores 23
2.10 Creación de variables globales 24
2.11 Lazos for y while 25

2
2.11.1 for 25
2.11.2l while 25
2.12 Condiciones if y switch 26
2.12.1 if 26
2.12.2 swith 27
2.13 Depurar y perfilar 28
3 Gráficos 28
3.1 Gráficos en dos dimensiones 28
3.2 Gráficos tridimensionales 30
3.3 Más sobre el comando plot 31
3.4 Salvar una figura 32
3.5 Publicación de figuras 32
3.6 Subplot 33
3.7 Gráficos de argumentos complejos 34
4 Métodos numéricos en MATLAB 34
4.1 Polinomios 34
4.2 Más sobre ajustes de polinomios 36
4.3 Solución de ecuaciones 37
4.4 Sistemas de ecuaciones lineales 38
4.5 Ecuaciones de regresión múltiple 40
4.5.1 Ecuaciones de regresión lineal múltiple 40
4.5.2 Ecuaciones de regresión polinómicas 41
4. 6 Estadística en MATLAB 41
5 Matemática simbólica 42
5.1 Creación de variables simbólicas 42
5.2 Creación de funciones matemáticas simbólicas 44
6 Simulink 48
6.1 Creación de un modelo 48
6.2 Subsistemas 49
6.3 Enmascarar un sistema 50
6.4 Otros bloques de interés 53

3
4
Introducción:

El propósito de este curso es realizar una conquista útil, y en cierto grado especializada, de los fundamentos
esenciales del MATLAB con el objetivo de lograr las habilidades suficientes para incursar con éxito en este
campo imprescindible del momento. MATLAB es un compendio computacional interdisciplinario en las
ciencias, ingeniería y en las matemáticas aplicadas, con un poderoso lenguaje de programación, cálculo y
visualización que es común emplearlo como herramienta de afinación y validación antes de que muchos
algoritmos y modelos sean definitivamente depositados en un lenguaje comercial más propio para un
público general. Las aplicaciones típicas de MATLAB incluyen:

ƒ Matemáticas y cálculos
ƒ Desarrollo de algoritmos
ƒ Modelaje, simulación y establecimiento de prototipos
ƒ Análisis de datos, exploración y visualización
ƒ Gráficos científicos y de ingeniería
ƒ Desarrollo de aplicaciones, incluyendo la construcción de interfases gráficas

MATLAB aporta una gran capacidad para la investigación, el desarrollo y el análisis de sistemas. En cada
versión MATLAB proporciona nuevos recursos y un escenario más enriquecido. MATLAB posee una
familia de aplicaciones específicas conocidas como “toolboxes” desarrolladas para estudios especializados
que permiten resolver problemas diversos o muy particulares. Estas herramientas ocupan campos en redes
neuronales, lógica difusa, algoritmos genéticos, sistemas de control, álgebra financiera, procesamiento de
imágenes y señales, fijación de curvas, adquisición de datos, y muchos otros que incrementarán la
productividad para resolver problemas esenciales. Estas herramientas no son más que funciones de
MATLAB; M- Files que es posible enriquecer al crear funciones propias.

MATLAB, por tradición, responde a órdenes escritas en la línea de comandos o desde archivos. Sin
embargo, en las últimas ediciones, se ha incrementado su accesibilidad desde interfases gráficas con un
elevado nivel de interactividad especialmente útil para comenzar. Los comandos tienen la ventaja de facilitar
la reproducción y la repetición de los resultados. MATLAB es relativamente sencillo de aprender y la mejor
forma de lograrlo es pasar directamente a ejecutarlo.

La formación de variables en MATLAB se realiza con caracteres alfanuméricos y cada variable debe estar
definida antes de que pueda ser empleada. Cuando una expresión arroja un valor, éste se almacena en la
variable ans la cual puede ser utilizada como cualquier otra variable. El máximo error, o la máxima precisión
con que se trabaja en la aritmética de punto flotante, lo da la variable eps. Una vez que las variables hayan

5
sido definidas, existen en el espacio de trabajo; workspace. La existencia de una variable en el espacio de
trabajo permite ser empleada para múltiples objetivos.

1.1 La ventana de MATLAB

Cuando se inicia MATLAB, se presenta una ventana de varios paneles que es posible personalizar mostrada
en la Figura 1

Figura 1 Presentación de MATLAB

El panel fundamental, con un diseño de mayor área, es la ventana de comandos (Command Windows). En
ella se ordenan los comandos escritos a la derecha del prompt del sistema representado por el símbolo >>.
Una vez escrita una orden, MATLAB la ejecuta tan sólo al presionar la tecla de entrada; (enter).

En la parte superior izquierda se encuentra la ventana del Directorio Actual (Current Directory). MATLAB
sólo reconoce los archivos existentes en el directorio en uso. Los comandos para trabajar sobre el directorio y
la ruta (path), son cd, what, addpath y edithpath o escoger en el menú archivo, establecer la ruta;

6
(File/set path…). Mucho más fácilmente se realiza seleccionando el directorio deseado en la pestaña gráfica
del directorio actual. Es posible adicionar archivos a un directorio.

Aledaño al Directorio Actual, está la pestaña del espacio de trabajo (Workspace) donde se muestra qué
variables están definidas y cierta información sobre su contenido. En la ventana inferior se muestra el
Historial de Comandos (Command History) donde se registran las órdenes efectuadas en la ventana de
comandos. El registro histórico de comandos es persistente y se mantiene en distintas sesiones de trabajo de
modo que si es necesario, se puede copiar y archivar en un lugar apropiado.

Presionando el botón inicio de MATLAB; (Start), se encuentran las herramientas de aplicaciones, el acceso
a sus interfases gráficas, la simulación dinámica de sistemas, la conexión con la ayuda y otros temas que
facilitan el trabajo en el ambiente de MATLAB.

1.2 Estructura de la Ayuda

Una característica especial e importante de MATLAB es el acceso en todo momento a la ayuda con una
viabilidad extraordinaria. En ella se abordan todos los tópicos con ejemplos y demostraciones. Por esta razón,
para iniciar el trabajo, es útil conocer cómo está estructurada y qué posibilidades de ayuda brinda
MATLAB. Existen dos niveles de ayuda:

1. Si se necesita una ayuda rápida durante la sintaxis de un comando, se puede escribir sobre la ventana
de comandos la palabra help seguida del comando específico que se desea investigar; por ejemplo
help plot. Si sólo se escribe la palabra help recibirá como respuesta una lista de categorías de ayuda
que contiene en el listado de todos los comandos.

2. Escribiendo doc seguido del nombre de un comando, recibirá una ayuda más general en una ventana
adicional mucho más elaborada e informativa que con la alternativa help. En el panel izquierdo se
verá desplegado jerárquicamente toda la documentación disponible. Si sólo se escribe doc, o se
selecciona help del menú, acudirá la ventana raíz de la ayuda.

Existen otros comandos de auxilio entre los que pueden mencionarse helpdesk que reporta una
documentación para la solución de problemas en forma de un hipertexto comprensivo, lookfor para la
búsqueda de M-files por palabras claves; info y support para información de MATLAB y MathWorks, etc
que deben ser explorados en trabajo individual recurriendo al listado de categorías de comandos.

7
1.3 Comandos y sintaxis básicas

Una vez escrita una expresión válida en la ventana de comandos y presionar la tecla de aceptación; Intro,
MATLAB la ejecuta de inmediato mostrando el resultado tal y como lo hace una calculadora. De hecho, en
lo más elemental, MATLAB puede ser utilizado como un calculador ordinario. Sin embargo, MATLAB es
muy superior cuando se aborda como un compendio de operaciones sobre arreglos, matrices y vectores. Por
esta razón, exige el conocimiento previo de los fundamentos básicos del álgebra lineal y por su origen del
idioma inglés.

Las órdenes y sentencias en MATLAB se ejecutan mediante comandos de información, administración,


aritméticos, de control, etc. A continuación se muestra un grupo de comandos considerados básicos. Para
una revisión mucho más amplia y general de los comandos, se debe solicitar ayuda en help general.

1.3.1 Comandos de información General

Comandos Acciones
demo Muestra todas las demostraciones que acompañan a la versión del MATLAB
ver Da información sobre la versión de MATLAB, Simulink y las herramientas del sistema
version Muestra información sobre la versión en ejecución de MATLAB

1.3.2 Comandos de administración del espacio de trabajo.

Comandos Acciones
clc Limpia la ventana de comandos
clear Elimina las variables en memoria
pack Compacta la memoria del espacio de trabajo
exist Chequea la existencia de una variable o archivo
global Declara globales a las variables
help Búsqueda de auxilio en una materia determinada
lookfor Búsqueda por palabras claves
quit Detiene el MATLAB
who Lista las variables
whos Lista las variables con mayor información
load Carga las variables del espacio de trabajo desde un archivo
save Salva las variables del espacio de trabajo
recycle Brinda la opción de mover los archivos borrados a una carpeta de reciclaje
exit Salir del MATLAB

8
1.3.3 Funciones y comandos de administración

Acciones
what Realiza un listado de los archivos específicos en el directorio de MATLAB
type Lista los M-file
open Abre los archivos por extensión
which Localiza funciones y archivos
inmem Lista las funciones en memoria

1.3.4 Constantes y variables especiales

Variables Interpretación
ans Respuesta más reciente
eps Precisión de la notación con punto flotante
i,j Unidad imaginaria −1
inf Infinito
NaN No es un número
pi Número π
why Respuesta breve

1.3.5 Funciones Matemáticas

Exponenciales y Logarítmicas
exp(x) Exponencial ex
log(x) Logaritmo Natural ln(x)
log10(x) Logaritmo base 10 log10 ( x)
sqrt(x) Raíz cuadrada x
nthroot(x) Raíz n-sima de un número real n
x
Trigonométricas
acos(x) Coseno inverso cos −1 ( x)
asin(x) Seno inverso sen −1 ( x)
atan(x) Tangente inversa tan −1 ( x)
cos(x) Coseno cos(x)
sin(x) Seno sen(x)

9
tan(x) Tangente tan(x)
sec(x) Secante sec(x )
csc(x) Cosecante csc(x)

Hiperbólicas
acosh(x) Coseno hiperbólico inverso cosh −1 ( x)
asinh(x) Seno hiperbólico inverso senh −1 ( x)
atanh(x) Tangente hiperbólica inversa tanh −1 ( x )
cosh(x) Coseno hiperbólico cosh(x )
senh(x) Seno hiperbólico senh(x)
tanh(x) Tangente hiperbólica tanh(x )
sech(x) Secante hiperbólica sec h( x)
csch(x) Cosecante hiperbólica csc h( x )

Complejas
abs(z) Valor absoluto Z
angle(z) Ángulo de un número complejo
conj(z) Complejo conjugado de Z
img(z) Valor imaginario de Z
real(z) Valor real de Z

Estadísticas
erf(x) Calcula el error de la función (x)
mean(x) Calcula el promedio
median(x) Calcula la mediana
std(x) Calcula la desviación estándar

Operadores aritméticos y caracteres especiales


+ Operador de adición
- Operador de resta
* Operador de multiplicación escalar y matricial
.* Operador de multiplicación de arreglos elemento a elemento
^ Operador de potenciación escalar y matricial
.^ Operador de potenciación de arreglos elemento a elemento

10
/ Operador de división derecha
\ Operador de división izquierda
./ Operador de división derecha de arreglos elemento a elemento
.\ Operador de división izquierda de arreglos elemento a elemento
. Punto decimal
: Genera elementos espaciados regularmente y representa filas o columnas completas
; Separador de columnas y evita desplegar, mostrar
, Separa elementos y argumentos en una fila
… Operador de continuación de línea
( ), { } Encierra argumentos de funciones e índices de arreglos: supedita precedencia
[] Encierra elementos de arreglos
[,] Concatenación Horizontal
[;] Concatenación vertical
% Establece un comentario
.' Transpuesta
' Complejo conjugado transpuesta
= Asignación

Operadores lógicos y relacionales


== Igual a
~= Desigual
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
& Operador lógico AND
P Operador lógico NOT
| Operador de elementos lógico OR
xor Operador lógico EXCLUSIVE OR

1.3.6 M-Files

eval Interpreta las cadenas que contienen expresiones de MATLAB


feval Evalúa la función
function Crea un M-File definido para una función creada por el usuario
global Define variables globales

11
nargin Número de argumentos de entrada a una función
nargout Número de argumentos de salida de una función
script Guión, Argumento M-File

1.3.7 Temporización
cputime Tiempo en segundos de CPU
clock Fecha y tiempo corriente como vector de datos
tic, toc Comenzar o detener un temporizador

1.3.8 Control de la ejecución y flujo de programas


break Termina la ejecución de un lazo
case Brinda ejecución en trayectorias alternas dentro de la estructura de switch
else Delinea bloques alternos de argumentos
elseif Ejecuta condicionalmente los argumentos
end Concluye los argumentos for, while e if
error Muestra mensajes de error
for Repite los argumentos un número específico de veces
if Ejecuta los argumentos condicionalmente
otherwise Establece partes de los argumentos de switch
return Regresa a la función invocada
switch Dirige la ejecución del programa comparando con expresiones de caso
warning Muestra mensajes de alerta
while Repite los argumentos un número indefinido de veces

1.4 Formatos de salida


Todos los cálculos en MATLAB se realizan con doble precisión. El comando format puede utilizarse para
hacer cambios en la forma de visualización de los resultados. Entre ellos se encuentran:
Acciones
format Por defecto. Igual al short
format short Formato de punto fijo a escala con 5 dígitos
format long Formato de punto fijo a escala con 15 dígitos
format short e Formato de punto flotante con 5 dígitos
format long e Formato de punto flotante con 15 dígitos
Format bank Formato fijo para dólares y céntimos
Format rat Aproximación por relaciones de números

>> pi

12
ans =
3.1416
>> format short; pi
ans =
3.1416
>> format long; pi
ans =
3.14159265358979
>> format short e;pi
ans =
3.1416e+000
>> format long e; pi
ans =
3.141592653589793e+000
>> format rat;pi
ans =
355/113

1.5 Salvar una sesión de trabajo.

Cuando se abandona MATLAB, todas las variables que existen en el espacio de trabajo se pierden. Si se
utiliza el comando save, las variables se almacenan en un archivo llamado matlab.mat. Una vez de nuevo
dentro de MATLAB, el comando load reestablece el espacio de trabajo al estado anterior.

2 TRABAJO CON ARREGLOS, MATRICES Y VECTORES

2.1 Definiciones

Un arreglo es una colección ordenada de elementos identificados por subíndices para los que MATLAB
emplea números integrales comenzando por el 1. La dimensión de un arreglo es el número de subíndices
necesarios para especificar un elemento. El tamaño (size) de un arreglo es un listado del número de índices
máximo por dimensión.

Una matriz es un arreglo bidimensional con reglas especiales para la adición, multiplicación, división,
potenciación y otras operaciones. Representa una transformación matemática lineal. Las dos dimensiones son
denominadas filas y columnas. Un vector es una matriz para la cual una dimensión tiene solamente el índice
1. Un vector fila tiene sólo un fila y un vector columna sólo una columna.

13
Aunque un arreglo es mucho más general y menos matemático que una matriz, los términos se usan a veces
de forma intercambiable. Algo más: en MATLAB no existe realmente una distinción formal entre un escalar
y una matriz de 1×1. Note que no existe un arreglo unidimensional en MATLAB. Aún los vectores son
arreglos bidimensionales con una dimensión trivial.

2.1.1 Generación de Matrices

Es posible introducir o generar matrices de diferente forma:

ƒ Introducir una lista de elementos


ƒ Cargarla desde datos externos
ƒ Generarla a partir de funciones de construcción
ƒ Crearla a partir de funciones propias en M-Files

Para introducir una matriz como una lista de elementos, se deben seguir las convenciones básicas siguientes:

ƒ Encerrar entre corchetes; [ ] la lista de los elementos


ƒ Separar los elementos de una fila con espacios en blanco o comas
ƒ Usar el semicolon ; para indicar el fin de cada fila

Por ejemplo; Formación de una Matriz cuadrada de 3×3

>> A = [1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
La dimensión de A es:
>> ndims(A)
ans =
2
El tamaño de A es:
>> size(A)
ans =
3 3

14
2.1.2 Formación de un vector fila:

>> B = [0 2 2]
B=
0 2 2

2.1.3 Formación de un vector columna:

>> C = [0;2;2]
C=
0
2
2
Los arreglos y matrices pueden construirse de otros arreglos y matrices con la sola condición de que sean
compatibles:

>> D = [A C]
D=
1 2 3 0
4 5 6 2
7 8 9 2

>> E = [A B]
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.

>> E = [A D]
E=
1 2 3 1 2 3 0
4 5 6 4 5 6 2
7 8 9 7 8 9 2

En ocasiones es necesario acceder a uno o más elementos de un arreglo o matriz. Para ello se utilizan los
índices dimensionales que identifican a cada elemento encerrado entre paréntesis. El resultado es la
extracción del elemento o bloque indicado. Ejemplos: Extracción del elemento perteneciente a la fila 1
columna 2
>> E(1,2)

15
ans =
2
Extracción de un bloque que comprende los elementos de la fila 1 y 2 que ocupan las columnas 2 y 3
>> E(1:2,2:3)
ans =
2 3
5 6

El operador colon (dos puntos); : , es muy importante en MATLAB. Con él se indica un intervalo de
variación entre dos valores:

>> x = [1:10]
x=1 2 3 4 5 6 7 8 9 10

En este caso se asume por defecto un intervalo de 1 entre los puntos. Para especificar un paso de 0.5 se tiene:
» x = [1:0.5:5]
x=
Columns 1 through 9

1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000

En una matriz o vector el operador : permite seleccionar una parte del mismo. Así en el vector y se obtienen
los elementos entre el 2 y el 5to. Lugar con la expresión:
>> y = x(2:5)
y = 1.5000 2.0000 2.5000 3.0000

2.1.4 Existen un grupo de matrices elementales definidas en MATLAB. Estas son:

zeros(x,y) Arreglo de ceros


ones(x,y) Arreglo de unos
eye(x,y) Matriz identidad
repmat(x,y) Reproduce una matriz.
rand(x,y) Matriz de números reproducidos de forma aleatoria
randn (x,y) Matriz de números aleatorios distribuidos normalmente
linspace (x,y) Vector linealmente espaciado
logspace(x,y) vector con espaciamiento logarítmico
meshgrid(x,y) Arreglos de x y y para gráficos en 3D.

16
Información básica sobre los arreglos matrices y vectores.
size(A) Tamaño del arreglo
length(A) Longitud o número de elementos de un vector.
ndims(A) Número de dimensiones
numel(A) Número de elementos
disp(A) Mostrar la matriz o el texto
isempty(A) Cierto si el arreglo está vacío
isequal(A) Cierto si el arreglo es numéricamente igual

Comandos básicos de arreglos matrices y vectores


max(A) Arroja el elemento máximo
min(A) Arroja el elemento mínimo
sum(A) Suma cada columna
prod(A) Producto de cada columna
cat Concatena arreglos
find Encuentra los índices de los elementos no nulos
end Último índice
diag Matriz diagonal y diagonal de una matriz
triu Extraer la triangulación superior
tril Extraer la triangulación inferior
: Vector espaciado regularmente e índice dentro de una matriz

Aritmética Matricial
dot Calcula el producto escalar
cross Calcula el producto vectorial

Comandos matriciales para resolver ecuaciones lineales


det Calcula el determinante de un arreglo
inv Determina el inverso de una matriz
rank Determina el rango de una matriz

MATLAB posee, además, un grupo de matrices especializadas para el trabajo en diferentes campos de la
ciencia que pueden ser consultadas en la ayuda. Entre ellas la matriz de Hilbert, Pascal, Mágica, Wilkinson,
Companion, Vandermonde, etc

17
2.2 Libretos o guiones (Script M-files)

Un libreto (script M-file) es un archivo externo a la línea de comandos que contienen una secuencia de
sentencias u órdenes ejecutables de MATLAB. Escribiendo el título del archivo en la ventana de comandos
se tiene acceso a la ejecución y salidas correspondientes a este archivo. Por asignación poseen la extensión
.m debido a ello se llaman M-files. Estos ficheros no necesitan ser compilados y para ser ejecutados, se debe
escribir su nombre en la línea de comandos con la única condición de que se encuentre en la ruta; path,
donde MATLAB busca y reconoce sus archivos. Su utilidad fundamental es automatizar los bloques de
comandos en cálculos que deben realizarse repetidamente y cuando se desea reproducir o interpretar el
trabajo realizado en un momento posterior.

Los libretos operan con las variables existentes en el espacio de trabajo o pueden crear nuevas que
permanezcan y se empleen en futuros cálculos. Los libretos pueden producir salidas gráficas usando
comandos como plot. Cualquier texto precedido del signo % en el inicio de un libreto se entiende como un
comentario lo cual es útil si se desea obtener información del archivo al escribir help seguido del nombre del
archivo en cuestión en la línea de comandos.
Por ejemplo se ha creado el libreto trigonometrica.m con los comentarios y argumentos siguientes

%Este archivo determina y grafica el %valor


de la función
% y = cos(x)+tan(x)/sin(x)
x = (0:0.2:pi);
y = cos(x)+tan(x)/sin(x);
plot(x,y)

En el prompt del MATLAB se escribe:


>> help trigonometrica
Este libreto determina y grafica el valor de la
función y=cos(x)+tan(x)/sin(x)
Para ejecutarlo
>> trigonometrica

2.3 Funciones M-files

Las funciones son M-files que extienden las capacidades de MATLAB. Comparadas con los libretos son
mucho mejores para compartimentar las tareas. Cada función comienza con una línea del tipo:

Function [out1,out2, out3] = nombrefunción(ini1,ini2,ini3)

18
Las variables ini1,ini2,ini3, son las variables de entrada y las out1,out2,out3, son las variables de salida . Se
pueden tener tantas funciones como se desee y llamarlas cuando se desee. La condición para que sea
reconocida una función es que sea guardada en un archivo con el mismo nombre declarado en la sintaxis; es
decir: en un archivo nombrefunción.m . Para ejecutarla sólo es necesario escribir en la línea de comandos su
nombre al igual que en los libretos.

Unas de las principales características de una función es el carácter local de sus variables. Cualquier
argumento o variable creada durante la ejecución de la función, son variables sólo de esa función y poseen un
espacio privado de trabajo. Por su parte las variables existentes en la línea de comandos o workspace, no son
reconocidas por la función.

Como ejemplo se ha creado un archivo con una función llamada stat cuyo objetivo es determinar la media y
la desviación estándar de un vector x.

function [mean,stdev] = stat(x)


x = [1:100]
n = length(x);
mean = sum(x) / n;
stdev = sqrt(sum((x - mean).^2)/n);

Si durante la ejecución de una función, se llaman otras funciones, cada una de éstas establece su propio
espacio de trabajo lo que permite crear programas complejos sin preocuparse por antagonismos en las
variables mientras se conservan las pertenecientes al espacio de trabajo.

2.4 Subfunciones y funciones anidadas.

Un M-file puede tener definida más de una función. La función principal al inicio del encabezamiento de la
línea define la función primaria. En el mismo archivo pueden existir subfunciones y funciones anidadas.

Por ejemplo: Ahora se ha creado dentro del archivo stat.m una nueva expresión identificada con la palabra
clave avg que es una subfunción de la función stat(x)

function [mean,stdev] = stat(x)


x = [1:100];
n = length(x);
mean = avg(x,n);
stdev = sqrt(sum((x-avg(x,n)).^2)/n)
end %stat (x)

19
function mean = avg(x,n)
mean = sum(x)/n;
end %avg (x,n)

Las subfunciones no son visibles fuera del archivo donde han sido creadas por lo tanto no pueden ser
llamadas desde la línea de comandos. Cuando MATLAB no reconoce una función por su nombre, busca por
un archivo con el mismo nombre. Si lo encuentra, lo compila en la memoria para uso subsiguiente. Cuando
es llamada una función desde la línea de comando o desde cualquier otro M-File, MATLAB analiza la
función y la almacena en memoria. La función almacenada permanece en memoria hasta que sea limpiada
con el comando clear o se abandone MATLAB.

El argumento end es opcional si se tiene una sola función, pero es una buena idea cuando están involucradas
subfunciones y obligatorio cuando se usan funciones anidadas. Las funciones anidadas actúan algo
diferente. Ellas son definidas dentro del alcance de otra función y comparten el espacio de trabajo de la
función receptora. Para escribir una función anidada, simplemente define la función dentro del cuerpo de
otra función en un M-File. Se debe terminar la función anidada con un argumento final end. Por ejemplo:

function x = A(p1, p2)


...
function y = B(p3)
...
end
...
end

Ejemplo de más de una función anidada dentro de A.

function x = A(p1, p2)


...
function y = B(p3)
...
end
function z = C(p4)
...
end
...
end

20
2.5 Crear nuevas funciones.

En MATLAB se pueden crear nuevas funciones si es conveniente. Por ejemplo: se desea definir una nueva
función con nombre sincos(x) de forma tal que al invocarla en la línea de comandos devuelva el resultado de
la expresión correspondiente. Para ello se crea un archivo con extensión .m que contenga la definición de la
función y con un nombre que coincida con el nombre de la función. Para el caso sincos.m:

function[y]=sincos(x)
y=cos(x)-2*sin(2*x-pi/3);

Se salva en el subdirectorio de trabajo con el nombre sincos y la extensión .m. Esta es la forma en la cual
están escritas las funciones en MATLAB. Note cómo no hay declaración de variables, ni comandos de inicio
o fin de programa.

2.6 Funciones anónimas

En ocasiones se necesita definir una función temporalmente y evitar la edición de un M-File. Para ello se
utiliza la función anónima que se puede construir desde la línea de comandos o en una función M-File. Su
sintaxis es:

fhandle = @(arglist) expr

El término expr representa el cuerpo; esto es: el código que identifica la tarea principal que se debe ejecutar.
A la izquierda está arglist, que es una lista de variables o argumentos de entrada separados por coma que
deben pasar a la función. Estos dos componentes son similares a lo conocido en las funciones ya tratadas. El
signo @ es un operador en MATLAB que construye un manejador de funciones. Crear un manejador de
funciones proporciona un medio de invocar a la función anónima. El signo @ es una parte requerida de una
función anónima.

Ejemplo: La función anónima sqrt calcula el cuadrado de un número. Cuando se llama a esta función,
MATLAB le asigna el valor que posee a la variable x y lo usa para calcular el valor de la ecuación x.^2:

>>sqrt = @(x) x.^2;


>> sqrt(4)
ans =
16
También puede almacenarse la respuesta en una variable adicional

21
>> a=sqrt(4)
a=
16

Ejemplo con dos entradas

La función anónima siguiente emplea dos argumentos de entrada x, y.

sumAxBy = @(x, y) (A*x + B*y);

En la línea de comandos se escribe:


A=2;
B=4;
>> sumAxBy = @(x, y) (A*x + B*y);
sumAxBy(2,2)
ans =
12

2.7 Función función

Muchos problemas en el campo de la ciencia emplean o exigen operar con funciones; encontrar raíces,
resolver ecuaciones diferenciales, optimizar o efectuar la integración numérica, son sólo algunos ejemplos
citados. En determinados casos un problema complejo puede tratarse con una función que opere sobre
determinada función. Este tipo de procedimiento MATLAB lo realiza con una función de funciones;
function functions, que utiliza una o más funciones como argumentos de entrada a una función, que va a ser
evaluada para obtener los resultados deseados. La sintaxis, el objetivo y el contenido de estas funciones
pueden verse al solicitar help funfun en la línea de comandos.
Una forma de realizar este procedimiento es mediante una función anónima. Por ejemplo:
La función fzero, encuentra la raíz de una función escalar de una variable en la proximidad del punto
declarado; Primeramente encuentra un intervalo conteniendo a x donde la función cambia de signo y a
continuación busca en ese intervalo el cero de la función. Su sintaxis es:
x = fzero (fun, x0) La función fun acepta como parámetro de entrada valores de x reales escalares y
retorna valores reales escalares de la función fun evaluada en el punto x. El valor que retorna fzero está en la
proximidad donde fun cambia de signo si es continua o NaN si el proceso de búsqueda falla. Ejemplo:

>> f=@(x) sin(x);


>> fzero(f,2)

22
ans =

3.1416

Otro ejemplo:

La función x = fminbnd (fun, x1, x2) trata de encontrar un mínimo local de la función fun en el intervalo
x1 <= x <= x2.

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


>> y = fminbnd (f, 2, 6)
y=
2
>> y = fminbnd (f, -15, 6)
y=
-0.8333

2.8 ¿Que utilizar? ¿Libretos o funciones?

Los scripts o libretos son siempre interpretados y ejecutados línea a línea no importa el número de veces que
sean llamados y, por supuesto, MATLAB emplea tiempo en ello. En contraste, las funciones son compiladas
en memoria cuando se llaman por primera vez y si son necesaria llamarlas de nuevo, se esquiva ese paso. Por
esta razón se recomienda realizar la programación en términos de funciones M-Files. Como regla práctica,
los libretos se deben de llamar sólo desde la línea de comandos y no se deben llamar desde otro libreto.

2.9 Cadenas de textos, entrada de datos y mensajes de errores

Las cadenas de textos pueden introducirse en MATLAB al encerrar el grupo de palabras en simple comilla.
Por ejemplo para asignarle a la variable s una cadena de texto se escribe:

s = ‘Esto es una demostración para establecer una cadena de texto’


Las cadenas de texto se muestran con el comando disp. Por ejemplo:

>> disp(s)

Esto es una demostración para establecer una cadena de texto

23
Los mensajes de error se muestran más adecuadamente con el comando error ya que cuando se sitúa en un
M-File, se aborta la ejecución del mismo.

En un M-File, se puede actuar interactivamente para la entrada de datos con la función input. Por ejemplo:

>> Pn = input ('Potencia nominal en kW, Pn= ');

Potencia nominal en kW, Pn =

En este caso se despliega un mensaje en el prompt y se realiza una pausa en la ejecución del programa hasta
que se introduzca el dato solicitado. Presionando la tecla de aceptación, el dato se asigna a la variable
solicitada y se continúa la ejecución del programa.

Finalmente es necesario saber que en las funciones de MATLAB se pueden encontrar órdenes que son
imposibles de ejecutar. En este caso se emite una señal de error desplegando un mensaje en la ventana de
comandos, se detiene la ejecución del programa y se ignoran los argumentos de salida de la función. Similar
a un error es la señal de alerta (warning) la cual despliega un mensaje pero permite que la ejecución
continúe. Es posible crear estas señales de alerta e incluso tener la capacidad de esquivar un error en una
subrutina y continuar con un plan de contingencia usando los comandos try y catch. Con este objetivo se
debe consultar la ayuda

2.10 Declaración de variables globales

Cada función en MATLAB definida en un M-File posee sus propias variables locales las cuales son
independientes de las variables de otra función y de las que se encuentran en el espacio de trabajo
(workspace). Desde luego, si varias funciones y el espacio de trabajo declaran una variable en particular
global, todos compartirán esa variable. Cualquier asignación a esa variable, en cualquier función, está
disponible a todas las otras funciones que la declaran global. Si la variable declarada global no existe en el
momento que se ha declarado global, tomará por asignación el valor de una matriz vacía. Si una variable con
el mismo nombre que la variable global existe en el espacio de trabajo, MATLAB emite una alerta y
cambia el valor de esa variable para que concuerde con la declarada global. Ejemplo:

global Vab Vbc Vca Ia Ib Ic Pt St FDVC ; declara globales esas 9 variables

24
2.11 Lazos for y while

Las condicionales en MATLAB operan de forma similar a como lo hacen en la mayoría de los programas de
computación. Ellas son especialmente útiles cuando se desea repetir o desviar una sección de cálculos en
dependencia de las condiciones en la rutina.

2.11.1 for

La instrucción for se utiliza para repetir un argumento un número específico de veces. La sintaxis general es:

for variable = expresión


argumento
...
argumento
end

Los valores de la expresión son almacenados uno a la vez en la variable mientras el siguiente argumento,
hasta el último, es ejecutado. En la práctica la expresión es casi siempre de la forma escalar : escalar. El
alcance del argumento for se concluye con la orden end.

>> for x =1:4


y = 2*x
end
y=
2
y=
4
y=
6
y=
8

2.11.2 While

while repite los argumentos un número indefinido de veces mientras se mantenga una condición. Su sintaxis
es:
while expresión
argumentos

25
end

Los argumentos son ejecutados mientras la expresión sea cierta. Por ejemplo, dado un número positivo x, se
calcula y se muestra el menor número no negativo que cumple la relación 2n +2n ≥ x
>> x = 16;
n = 0;
while 2^n +2*n < x
n = n+1;
end
>> n
n=
4

2.12 Condicionales if y switch

Cuando se necesita modificar la ejecución de los argumentos en dependencia de las condiciones en la rutina,
se utilizan comandos condicionales similares a los utilizados en otros lenguajes.

2.12.1 if

La forma más simple de un argumento condicional if es:

if relación
argumento
end

En este caso el argumento será ejecutado sólo si la relación es cierta. También es posible utilizar múltiples
ramas como se muestra a continuación:
if x > 6
y = x^2 +3
elseif -1< x<6
y = 2*x^2+3*x-1
else
y = 0.98
end

El condicionante if puede emplear operadores relacionales o funciones que retornen valores lógicos así como
condicionantes lógicos combinados evaluados de izquierda a derecha. Por ejemplo:

26
if (length (x) > 4) & (x(3) = =2)
argumento
end

La sintaxis if / elseif se emplea cuando son dos o tres las opciones que presenta una condicional. Cuando
existe un número mayor de opciones, se emplea switch

2.12.2 switch

El comando switch cambia o permuta entre varios casos de acuerdo a la expresión. La forma general de
sintaxis es:
switch switch_expr
case case_expr,
argumento…
case {case_expr1, case_expr2, case_expr3,...}
argumento ...
otherwise
argumento
end

Los argumentos que siguen al primer caso son ejecutados si coinciden con la expresión de cambio declarada.
Cuando la expresión de cambio se encuentra en un arreglo como en el segundo caso, el cambio se ejecuta si
sólo uno de los elementos del arreglo coincide con la expresión de cambio. Si ninguno coincide, se pasa a la
opción otherwise. Sólo se ejecuta un caso y la ejecución concluye con el argumento final end. Por ejemplo:

>> x = 6;
switch x
case x > 2
disp ('bien')
case x <2
disp ('mal')
otherwise
x = 0.1
end
x=
0.1000

27
2.13 Depurar y perfilar

Para depurar un programa que no corre, se pueden establecer puntos de rupturas breakpoints en una o más
funciones (Ver el menú debut en el editor de M-Files). Cuando MATLAB alcanza un breakpoint, se detiene
y permite inspeccionar y modificar las variables. La ejecución se puede reiniciar normalmente o paso a paso.
Para más detalles solicitar help debug.

Cuando un programa emplea más tiempo que el necesario para ejecutarse, se puede optimizar su ejecución.
Es posible localizar las líneas retardadas con profiling que mantiene el control del tiempo empleado en cada
línea de cada función. Perfilar es también una vía de determinar la dependencia de las funciones. Para
introducirse se debe escribir en la línea de comandos profile viewer.

3. Gráficos

Una de las fortalezas de MATLAB es el tratamiento gráfico. MATLAB posee control sobre todos los
aspectos de un gráfico adjudicándole poder, elegancia y disfrute en la ejecución.

3.1 Gráficos en dos dimensiones; x, y

Para desarrollar gráficos en dos


dimensiones MATLAB dispone de
un comando fundamental
denominado plot. Normalmente se
utilizan segmentos de línea para
conectar los puntos
correspondientes a los vectores de
coordenadas x, y. Existen
diversos recursos para resaltar o
distinguir los pares ordenados de
un gráfico. Un ejemplo que se
recomienda desarrollar en la
ventana de comandos:
x=[-pi:0.1:pi];
y=cos(x) - 2*sin(2*x-pi/3);
plot(x,y);
xlabel('coordx');
ylabel('coordy');
title('función trigonométrica');

28
grid on;

En la primera línea se define el intervalo de variación de las x, en la segunda se calcula la expresión de y a


partir de las función trigonométrica definida. En la tercera línea el comando plot calcula y muestra la
gráfica de los pares (x, y). Los comandos xlabel , ylabel y title tienen como objetivo imprimir en el gráfico
el nombre que se le dará a los ejes x ,y y su título. La función grid on activa una rejilla en el intervalo en
que ha sido evaluada la función. La ayuda de MATLAB brinda más posibilidades para cambiar el color de
las líneas, marcar con puntos, cruces, círculos, etc los pares (x,y). Consulte la ayuda del MATLAB para más
posibilidades. Los comandos zoom y ginput permiten aproximar y precisar puntos sobre la gráfica.
Si se desean obtener varios gráficos superpuestos (deben ser compatibles), se emplea el comando hold on
Con la interfase gráfica y los botones de la
barra de menú principal se pueden realizar
diversas transformaciones y obtener una
figura como la mostrada a la derecha.

En el ejemplo a continuación se muestra el


trabajo con la herramienta de ploteo de
MATLAB para graficar una variable
existente en el espacio de trabajo;
(workspace), vs una expresión escrita en el
diálogo Add Data de Plot tools. Los pasos
son:

1.- Se crea una variable en el espacio de


trabajo denominada x = -2*pi:pi/25:2*pi;

2.-Haciendo clic en el botón inicio en la


ventana de MATLAB ir a MATLAB y
hacer clik en la herramienta Plot tools.

3.- Hacer Click en 2D Axes en el panel de la


Figure Palette.

Una vez que aparezcan los ejes, se activa el


botón de adicionar datos; Add Data, en el
navegador de ploteo. Con esta acción se
despliega la ventana para adicionar datos a
los ejes; Add Data to Axes.

29
4.- Cuando el dialogo se despliega, se procede de la forma siguiente:
a) Se selecciona el tipo de gráfico que se desea en Plot Type; lineal, logarítmico, semilogarítmico, polar,
etc.

b) Se establece como fuente de datos el


vector x declarado o existente en el
espacio de trabajo.
c) Se escribe en y la función que se
desee. (Para el caso sin(x).^2. ) y se
hace clic en aceptar; ok

MATLAB dibuja el gráfico de


sin(x).^2 vs. x.

Para agregar otro gráfico sobre los


mismos ejes se procede de la forma
siguiente:

1.- Se hace click otra vez en Add Data y se especifican los datos a plotear:
2.- Se establece como fuente de datos el vector x existente en el espacio de trabajo.
3.- Se escribe en y la nueva función que se desee. (Para el caso sin(x). ^8. ) y se hace clic en aceptar; ok
4.- MATLAB dibuja el gráfico de sin(x). ^8 vs x.
5.-Seleccione el último gráfico y establezca en el Plot Type del Property Editor el tipo de gráfico que
desea para esta segunda función

Para acceder a todas las propiedades de la figura se visita el inspector.

3.2 Gráficos tridimensionales

El primer paso para crear un gráfico


tridimensional es conformar una malla
de puntos en el plano (x,y). Esos serán
los puntos donde la función f será
evaluada para obtener las respuestas en
la dimensión z. Un ejemplo:
x = pi*(0:0.02:1);
y = 2*x;
[x,y] = meshgrid(x,y);
surf(x,y,sin(x.^2+y))

Una vez que el gráfico se ha creado, se


utiliza el botón de rotación de la figura para darle la vista que se desea ver en la pantalla.

30
Para adicionar el título de la figura, de los ejes y las propiedades de éstos, se utilizan las opciones de edición
grafica que proporciona la barra de menú de la figura. La rotación, el rotulado de ejes y el título de la figura
se han adicionado por este procedimiento y se muestra a la derecha.

3.3 Más sobre el comando plot

En un gráfico se pueden obtener diversos tipos de líneas, símbolos y colores con el comando plot(x,y,s)
siendo s una cadena de caracteres compuestos por elementos de las columnas siguientes:

Estilos Símbolo Color


- sólida . puntos b azul
: con puntos o círculos g verde
-. punto y raya x cruces r rojo
(none) sin línea + más c cianurado
-- guionada * estrellas m magenta
s cuadrados y amarillo
d diamantes k negro
v triángulos (hacia abajo)
^ triángulos (hacia arriba)
< triángulos (a la izquierda)
> triángulos (a la derecha)
p pentagrama
h hexagrama

Por ejemplo plot(x,y,’g+:’) grafica con una línea de cruces color verde en cada punto donde se han
evaluado los datos. plot(x,y,’bd’) dibuja un diamante azul en cada punto pero sin línea.

El comando plot, si no especifica el color, toma por asignación el azul para gráficos de una línea y en el caso
de un gráfico de múltiples líneas utiliza el ciclo de colores listado en la tabla. Si no se especifica el tipo de
línea, se usa una línea sólida. Si no se especifica el símbolo, no se emplea ninguno. Para más información
consultar help plot.

3.4 Salvando las figuras.


En ocasiones sucede que una figura necesita ser modificada después de su creación. Aunque existen otros
procedimientos para salvarla, en la barra de menú de la figura; botón archivo; en save as, se salva como un

31
archivo del tipo *. fig con el nombre que se desee. Luego, con el comando; openfig myfig puede llamarse
para efectuar las transformaciones o recrearla como se desee.

3.5 Publicación de figuras

Existen tres cuestiones importantes que deben considerarse cuando se desea incluir algún gráfico de
MATLAB en un documento para su publicación. El formato del archivo, el tamaño y posición y el color.
Ayuda a comprender la importancia el hecho de que lo que desee ve en la pantalla no es exactamente lo que
se obtiene en el papel porque MATLAB distorsiona los gráficos dependiendo del dispositivo de salida.

La gran diferencia en los formatos de los gráficos está entre la selección de vector (representando las líneas
en una imagen) y bitmap (una fotografía literal píxel a píxel). Bitmaps incluyendo GIF, JPEG, PNG, y TIFF,
son apropiados para fotografías pero no para otras aplicaciones científicas. Esos formatos fijan la resolución
de su imagen por siempre, mientras la resolución de su pantalla, impresora y la impresora de la revista
pueden ser todas muy diferentes. Los formatos vectoriales son usualmente una mejor opción. Entre estos se
encuentran EPS y WMF. La selección depende algo de su plataforma y procesador de palabras.

Un problema común con la publicación de gráficos en MATLAB es el tamaño. Por asignación, los gráficos
en MATLAB son hechos en 8×6 pulgadas sobre el papel. Esto es excesivo para muchas revistas y para uso
privado. En estos casos se reescala la imagen. Desde luego, el proceso de reescalar reduce todo incluyendo el
ancho de las líneas y el tamaño del texto y el resultado puede ser difícil de leer. Para este procedimiento se
sugiere reescalar el gráfico antes de exportarlo. Para reescalar antes de exportar se puede utilizar la opción
de edición gráfica que proporciona la barra de menú de la figura; Archivo / Page Setup.

Muchas revistas no aceptan figuras a color. Las líneas coloreadas son convertidas automáticamente a negro
cuando se salvan en un formato sin color. De esta forma se deben distinguir las líneas por otras características
tales como símbolos o estilo de línea. La opción Archivo/Export setup de la barra de menú de la figura,
brinda un procedimiento para introducir cambios en la apariencia incluyendo el tamaño y color en diferentes
contextos (imprimir, presentación, etc.).

Finalmente es una buena idea salvar la figura en formato *.fig para ser recreada y en formato EPS en el
mismo directorio.

3.6 Subplot

El comando subplot permite desplegar varias figuras en la misma ventana o imprimirlas en la misma hoja de
papel. La sintaxis:

32
subplot(m,n,p)

Tiene la función de crear una matriz de (m filas×n columnas) de gráficos numerados por filas comenzando
por la primera fila y a continuación la segunda fila, etc. Subplot selecciona el orden p para ubicarlo. Por
ejemplo para plotear datos en cuatro regiones diferentes de una ventana de figuras:
t=[-pi:0.1:pi];
[X,Y,Z]=cylinder(4*cos(t) - 2*sin(2*t-pi/3));
subplot(2,2,1)
mesh(X)
xlabel('X');
ylabel('Y');
zlabel('Z')
title('Función muy especial');
subplot(2,2,2):mesh(Y)
xlabel('X');
ylabel('Y');
zlabel('Z')
subplot(2,2,3):mesh(Z)
xlabel('X');
ylabel('Y');
zlabel('Z')
subplot(2,2,4):mesh(X,Y,Z)
xlabel('X');
ylabel('Y');
zlabel('Z')

La posición es:
⎡subplot(2,2,1) subplot(2,2,2)⎤
⎢subplot(2,2,3) subplot(2,2,4)⎥
⎣ ⎦

Con las opciones el menú en la barra de la figura se puede modificar cada uno de los gráficos obtenidos.

3.7 Gráficos de argumentos complejos

Cuando los argumentos a graficar son complejos, la parte imaginaria es ignorada excepto cuando el ploteo se
realiza sobre un argumento complejo simple z. Para este caso especial se grafica la parte real contra la
imaginaria.

33
4 Métodos numéricos en MATLAB

4.1 Polinomios

La representación de polinomios en MATLAB se realiza mediante la escritura del vector de sus coeficientes
en potencias decrecientes. Así el polinomio p ( x) = 2 x 2 + 3 x + 4 está dado por:

x = [2,3,4];

Las raíces del polinomio se obtienen con la función roots


roots(x)
ans =

-0.7500 + 1.1990i
-0.7500 - 1.1990i
Para el trabajo con polinomios existen un grupo de comandos con funciones específicas. Estos son:

poly

El comando poly(x), cuando x es el vector de las raíces del polinomio, arroja como respuesta un vector cuyos
elementos son los coeficientes del polinomio original con las raíces x. Si roots encuentra las raíces, poly
encuentra el polinomio que posee determinadas raíces. roots y poly son funciones inversas para vectores.

Para evaluar un polinomio en varios puntos se emplea la función polyval.

x = [0:.1:2];
a = [3,4,5];
y = polyval(a,x);
plot(polyval(a,x),'r')

Una cuestión que puede resultar


importante en el trabajo con polinomios
es el ajuste de un conjunto de datos
experimentales (x, y) a un polinomio de
cierto grado según el criterio de los
mínimos cuadrados.

Esto se realiza con polyfit. Ejemplo:

Dado un conjunto de datos:

x = [ 1 2 3 4 5];
y = [ 3.5 8.9 19 30.6 49.3];
>> b= polyfit(x,y,2);
>> plot(x,y,'r+')
hold on

34
plot(polyval(b,x))

El polinomio de grado 2 que se ajusta por mínimos cuadrados es:

b= polyfit(x,y,2)
b =[2.0071 -0.7129 2.3200]

Las últimas órdenes se han dado para graficar los puntos experimentales y el resultado de la ecuación de
ajuste con la intención de comprobar visualmente la aproximación

La interpolación es el proceso matemático mediante el cual a partir de un conjunto de puntos discretos de una
función es posible estimar sus valores en el intervalo. Existen diversas funciones en MATLAB que permiten
realizar estos cálculos. Una de ellas es interp1 que realiza una interpolación lineal por el método de los
mínimos cuadrados. Como ejemplo se toma el conjunto de pares ordenados de resistencia y temperatura de
un termopar con los valores siguientes:

R= [77.8 79.75 80.8 82.35 83.9 85.1]

T= [25.1 30.1 36.0 40.1 45.2 50.5]

Para determinar la temperatura en un punto intermedio de la tabla, por ejemplo 27.5 se procede:

Rt = interp1(T,R,26.5)

Rt = 78.3460

El resultado corresponde a la interpolación lineal entre los dos primeros pares de los vectores T y R.
Existen otros métodos de interpolación que deben ser revisados consultando las posibilidades de ayuda de
MATLAB. Los polinomios pueden ser derivados e integrados con los comandos polyder y polyint.

4.2 Más sobre el ajuste con


polinomios.

Un ejemplo de interfase gráfica es


polytool. Considérese el conjunto de
datos siguiente:
y = [.5 .82 1.14 1.25 1.35 1.40]
x= [0 0.3000 0.8000 1.1000 1.6000
2.3000]

polytool (x,y) ajusta el polinomio a los


pares (x,y) y despliega un gráfico
interactivo.

35
polytool(x,y,n,alpha) predice una gráfica que responde a un polinomio de orden n en los puntos (x,y) y
adicionalmente indica el intervalo de confidencial 100(1-alpha) en forma de dos líneas de color rojo. El
valor por asignación de n es 1 y el de alpha es 0.05. Para más información consulte la ayuda help polytool

4.3 Solución de Ecuaciones.

Una de las formas en que MATLAB resuelve ecuaciones es con el empleo de las funciones: fzero, fplot,
quad y quad8 que permiten hallar los ceros, graficar y realizar la integración numérica de funciones no
lineales. Considere el cálculo de los ceros empleando la función fzero de la función:

1
y ( x) 2
5.x 6
2
x

Primero se edita un archivo M-file que denote la función, denominado fun1.

Para graficar este tipo de funciones se


Fun1(x)
10 puede usar la función fplot. A la izquierda
se muestra el resultado de plotear fun1 en el
5 intervalo de 0 a 5.
Donde se nota que la función se indefine en
0 dos puntos y tiene dos ceros en 1.62 y 3.37.
Los ceros se obtienen llamando a la función
y

-5 de la forma siguiente:

-10
cero1=fzero('fun1',0)
cero1 =1.6340
-15
cero2=fzero('fun1',3.2)
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
x cero2 = 3.3660

Es posible calcular la integral numérica de la función fun1 entre dos puntos, con la función quad. Para ello
se escogen valores donde no se indefine la función:

area=quad('fun1',2.1,2.9)
area = -5.9945

4.4 Sistemas de ecuaciones lineales.

Para la solución de sistemas de ecuaciones lineales se emplea el álgebra lineal. El sistema de ecuaciones
lineales:

36
x1 + x2 + 2 x3 = -1

2x1 - x2 + 2x3 = -4

4x1 + x2 + 4x3 = -3

Es posible representarlo por la matriz A de los coeficientes de las incógnitas y el vector columna b de los
términos independientes:
Ax=b

A = [1 1 2; 2 -1 2; 4 1 4]

A=
1 1 2
2 -1 2
4 1 4

» b = [-1 -4 -3]'
b=
-1
-4
-3

Para que el sistema tenga solución, el determinante debe ser no singular. Esto se comprueba con la función
det.
» det(A)
ans = 6
Una solución del sistema se obtiene al emplear el método de Kramer, donde x1 se obtiene al sustituir en
la matriz original la columna 1 por el vector columna del término independiente y efectuar la división
entre los determinantes correspondientes:

A1 =
-1 1 2
-4 -1 2
-2 1 4

» x1=det(A1)/det(A)

37
x1 =
1

Y así sucesivamente para cada variable. Sin embargo esto es posible hacerlo en forma directa con el
operador \ . Obteniendo directamente el vector x de las incógnitas:
» x= A \ b

x=

-2

También puede implementarse el método de eliminación de Gauss o factorización LU, que expresa que
cualquier matriz cuadrada se puede descomponer en el producto de dos matrices L y U triangulares, una L
triangular inferior permutada y otra U triangular superior. Esto se calcula con la función lu.

[L, U] = lu(A)
L=
0.2500 -0.5000 1.0000
0.5000 1.0000 0
1.0000 0 0

U=
4.0000 1.0000 4.0000
0 -1.5000 0
0 0 1.0000

»L*U

ans =
1 1 2
2 -1 2
4 1 4

Permitiendo calcular x más eficientemente mediante:

x = U \ (L \ b)
x=
1

38
2
-2

4.5 Regresión Lineal Múltiple

El propósito de una ecuación de regresión lineal múltiple es establecer una relación cuantitativa entre un
grupo de variables de predicción insertadas por columna X y la respuesta Y. Esta relación es útil para:

1.- Conocer que variables poseen el mayor efecto sobre la respuesta Y


2.- Conocer la dirección de ese efecto.
3.- Usar el modelo para predecir valores futuros cuando sólo se conocen o planifican los valores predictores

4.5.1 Ecuaciones de regresión lineal múltiple

Si Y es una función de varias variables independientes X, es posible encontrar los coeficientes que afectan
cada variable para determinar la ecuación general que caracteriza al sistema. Por ejemplo: Sean MP, P y B
los vectores columnas de las variables independientes que determinan el consumo de energía eléctrica; MWh,
de una empresa. En este caso la ecuación de regresión lineal estaría dada por:
Electrica = Kowh + K1wh*MP + K2wh*P + K3wh*B

El problema se resuelve al determinar los coeficientes Kiwh para lo cual se emplea la sintaxis:

X = [ones(size(MP)) MP P B];
Kiwh=X\MWh;

Quedando definida la función al conocer cada uno de los coeficientes Kowh…Kiwh.

4.5.2 Ecuación de regresión polinómica

Basado en la experiencia o en la observación gráfica, es posible que los datos sean modelados por una
función polinómica. Los coeficientes desconocidos a0, a1, y a2 pueden determinarse mediante mínimos
cuadrados lo cual minimiza la suma de los cuadrados de las desviaciones experimentales de los obtenidos
por el modelo.
y = a 0
+ a 1t + a 2 t 2

39
⎡ y1 ⎤ ⎡1 t1 t1 ⎤
2

⎢ y ⎥ ⎢1 t t 2 ⎥
⎢ 2 ⎥ ⎢ 2 2 2 ⎥ ⎡a0 ⎤
⎢ y3 ⎥ ⎢1 t 3 t 3 ⎥ ⎢ ⎥
⎢ ⎥ = ⎢1 t t 2 ⎥ * ⎢ a1 ⎥
⎢ y 4 ⎥ ⎢ 4 4 2 ⎥ ⎢a 2 ⎥
⎢ y5 ⎥ ⎢1 t 5 t 5 ⎥ ⎣ ⎦
⎢y ⎥ ⎢ ⎥
⎣ 6 ⎦ ⎢⎣1 t 6 t 6 2 ⎥⎦

X = [ones(size(t)) t t.^2]

a = X\y

4.6 Estadística en MATLAB.

Existe un paquete de funciones de estadística muy fuerte que pueden observarse al consultar la
documentación estadística de MATLAB. Las funciones de uso más frecuente mean [promedio], median
[mediana], range [rango], std [desviación estandard] y var [varianza] se implementan fácilmente.
Finalmente la interfase gráfica disttool posibilita trabajar con las funciones de distribución más importantes.

5 MATEMATICA SIMBOLICA.

5.1 Creación de variables y expresiones simbólicas

En matemática simbólica los resultados obtenidos no son numéricos sino símbolos que siguen las mismas
convenciones que diaria y normalmente son empleadas en el algebra. Para que MATLAB reconozca las
variables simbólicas éstas deben primeramente ser declaradas. Para ello se utilizan los comandos sym o
syms.
syms x a b c
» (a+b)^2
ans =
(a+b)^2
» expand(ans)
ans =
a^2+2*a*b+b^2

Después de declaradas las variables simbólicas a y b, se puede obtener el binomio cuadrado perfecto
resolviendo la factorización con expand. El comando factor efectúa el proceso inverso. En matemática
simbólica es posible definir funciones y calcular sus derivadas.

40
» y = sin(a*x+b)
y=
sin(a*x+b)
» dydx=diff(y) Calcula la derivada respecto a x
dydx =
cos(a*x+b)*a

Si se desea darles valores a los coeficientes, se emplea la función subs.

subs(dydx,{a b},{2 pi/2}) Indicándose la sustitución de los parámetros


a y b por los valores 2 y pi/2.
ans =
-2*sin(2*x)

El comando sym permite construir variables y expresiones simbólicas con el objetivo de efectuar operaciones
con ella. Por ejemplo el comando m = sym(‘sqrt(cosfi^2 + 2*senfi)’) declara a m una variable simbólica que
representa a una expresión. Ahora es posible efectuar operaciones con esa variable que representa la
expresión.

f = 2*m^2 – 3*m +1

En general se puede usar sym o syms para crear variables simbólicas. Es preferible usar syms ya que
requiere menos escritura. Debe notarse que para declarar una constante como variable simbólica, es necesario
utilizar el comando sym. Si se utiliza una variable para representar una expresión simbólica, y se vuelve a
aplicar el comando syms a esta variable, MATLAB actualiza y desconoce las variables previamente
declaradas. Por ejemplo:
syms a b
f=a+b
f=
a+b
Si de Nuevo se declara syms f
MATLAB arroja
f=
f
Esto muestra la utilidad de emplear el comando syms para limpiar variables o definiciones previamente
asignadas en una sesión de MATLAB. El comando findsym determina las variables simbólicas en una
expresión. Por ejemplo dadas las expresiones simbólicas f y g definidas por
syms a b n t x z

41
f = x^n; g = sin(a*t + b);
es posible encontrar las variables simbólicas en f entrando:
findsym(f)
ans =
n, x
Similarmente se encuentran las de g:
findsym(g)
ans =
a, b, t

Con el comando subs se le dan valores numéricos a una variable simbólica. Por ejemplo para sustituir el
valor de x =2 en la expresión simbólica
f = 2*x^2 - 3*x + 1 Se entra el comando
subs(f,2)
Que arroja el resultado
f(2): ans =
3
Para sustituir una matriz A en la expresión simbólica f, se usa el comando polyvalm(sym2poly(f), A), que
reemplaza x por A y el término constante f por la matriz identidad correspondiente. Cuando las expresiones
contienen más de una variable, se puede especificar que variable es la que se desea sustituir. Por ejemplo:
Para sustituir el valor x = 3 en la expresión simbólica syms x y
f = x^2*y + 5*x*sqrt(y)
se introduce el comando subs(f, x, 3)
lo que arroja
ans =
9*y+15*y^(1/2)
De otra parte, para sustituir y = 3, se introduce subs(f, y, 3)
ans =
3*x^2+5*x*3^(1/2)

5.2 Creación de funciones matemáticas simbólicas

Existen dos vías para crear funciones: Usar expresiones simbólicas o crear un M-File usando expresiones
simbólicas. La secuencia de comandos para generar las expresiones simbólicas r, t y f. son:
syms x y z
r = sqrt(x^2 + y^2 + z^2)
t = atan(y/x)
f = sin(x*y)/(x*y)

42
Utilizando los comandos diff, int, subs, y otras funciones existentes en la caja de herramientas de
Matemática Simbólica (Symbolic Math Toolbox ) , se pueden manipular tales expresiones. Creando un M-
File es posible un uso más general. Por ejemplo: se desea crear la función sinc; sin(x)/x.
Para hacer esto se crea un M-file en el directorio @sym:
function z = sinc(x)
%sinc la función simbólica sinc
% sin(x)/x. esta función acepta sym como el argumento de entrada
if isequal(x,sym(0))
z = 1;
else
z = sin(x)/x;
end

Es posible extender estos ejemplos a funciones de varias variables. Para ello se recomienda solicitar la
ayuda, ver los aspectos de “Programming and Data Types” en la documentación en línea de MATLAB o
para una discusión más detallada, revisar la programación orientada por objeto.

Para resolver ecuaciones algebraicas, se utiliza la función simbólica solve. Por ejemplo para resolver la
ecuación de segundo grado:

syms x a b c % Se declaran las variables


y=a*x^2+b*x+c %Definición de la función
y=
a*x^2+b*x+c
solve(y) % Búsqueda de la solución simbólica
ans = % Resultado
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

Si se desea resolver una ecuación trascendente como:


e x = x + 1.5
Se utiliza la sintaxis:
sol = solve( 'x+1.5=exp(x)' );]
double(sol)
ans =
-1.1983
0.8577

43
Es posible comprobar el resultado gráficamente pero también en el ambiente simbólico, empleando el
comando ezplot. Intente obtener el siguiente gráfico con dicho comando, consulte la ayuda correspondiente.
Para resolver sistemas de ecuaciones se emplea
exp(x)
6 también solve. Supóngase que se necesita calcular:
5 3 x1 + 2 x 2 = 1
4 x1 − 0.3 x 2 = −1
3
La solución se obtiene en una sintaxis de dos
2
cadenas; una para cada ecuación:
1

0 [x1,x2] = solve ('3*x1+2*x2=1','x1-0.3*x2=-1')


-1 x1 =
-2
-.5862068965
-3
x2 =
-4
-1 -0.5 0 0.5 1 1.5 1.3793103448
x
Para resolver ecuaciones diferenciales ordinarias, se
emplea el comando dsolve. La sintaxis es muy similar a solve, donde se emplean los símbolos Dy ,
D2y etc, para representar las derivadas de primer orden y segundo orden dy/dx, dy2 / dx2
respectivamente. En este ejemplo:
d ( y)
= 1+ y2 y(0) = 1 condición inicial.
dx
La solución se calcula como:
y= dsolve('Dy=1+y^2','y(0)=1')
y=
tan(t+1/4*pi) Note que la solución es una función .
tan(t+1/4*pi)

6 Se puede calcular el área bajo la curva de dicha


4
función; por ejemplo en el intervalo entre
[-2 , 0 ] con la función simbólica:
2
» int(y,-2,0)
0 ans =
-1/2*log(1+tan(2)^2)+log(-1-tan(2))
-2
» double(ans)
-4
ans =
-6 -0.7069
-6 -4 -2 0 2 4 6
t

44
Otros comandos importantes en Matemática Simbólica son collect, horner, simplify y simple. Analice
los ejemplos mostrados y consulte la ayuda para más información. Para polinomios, collect, reagrupa
todos los coeficientes con la misma potencia de x:

» y=(x-1)*(x-1/2)*(x+5);
» collect(y)
ans = x^3+7/2*x^2-7*x+5/2
» horner(ans) Resuelve según el esquema de Horner
ans = 5/2+(-7+(7/2+x)*x)*x

Simplify y simple son potentes herramientas algebraicas.


» simplify(log(x*y))

ans = log(x*y)

simplify( cos(x)^2+ sin(x)^2);


ans= 1
En Matemática simbólica se puede trabajar con las transformadas de laplace, fourier con las
funciones simbólicas correspondientes:
f =exp(-x^2)
» fourier(f)
ans = pi^(1/2)*exp(-1/4*w^2)
Compruebe finalmente el empleo la función funtool en variable simbólica como un calculador de
funciones. Consulte la ayuda.

6.- SIMULINK

Simulink es un software especializado para modelar, simular y analizar sistemas dinámicos lineales o no
lineales. En su ambiente es posible construir modelos propios o simular y modificar modelos existentes
mediante la adición de nuevos elementos. Las simulaciones son interactivas de modo que permite cambiar
los parámetros y observar que sucede a la vez que brinda acceso a todas las herramientas de análisis de
MATLAB, para visualizar y analizar los resultados.

Un objetivo de Simulink es dar sentido funcional a la simulación de modo que, realizando ésta, es posible
ver que sucede antes de que un modelo sea llevado a la realidad. Simulink permite sobrepasar los límites de
la linealización y explorar otros modelos más reales. En resumen, la meta principal es convertir su PC en un
laboratorio para desarrollar ideas que amplíen todo tipo de posibilidad.

45
6.1 Creación de un modelo.

Para crear un modelo simplemente se busca el bloque de interés en cualesquiera de las bibliotecas básicas del
ambiente Simulink ( Sources, Sinks, Linear, Nonlinear, Discrete, Connections y Blocksets & Toolboxes.
Como indicaciones generales la biblioteca Source define los tipos de estímulo o señales, Sink brinda los
bloques de visualización y Connections, los elementos o bloques en las conexiones. Consulte la ayuda para
una descripción más detallada de las mismas

Para tomar un bloque de una biblioteca en particular, solo es necesario indicarlo con el botón izquierdo del
mouse y arrastrarlo hacia la ventana del Simulink y liberarlo. Así se procede con todos los bloques
necesarios. Otras operaciones con los bloques son:

• Conectar bloques entre si: posesionar el cursor sobre el terminal de salida del bloque origen, hacer
click y enlazar con el terminal de entrada correspondiente del bloque destino.
• Dibujar una rama: posesionar en la línea y presionar CTRL.
• Mover línea: marcarla y arrastrarla.
• Crear un vértice en línea: marcarla y presionar SHIFT.
• Ancho de línea con format.
• Etiquetas en líneas: doble click sobre la línea.
• Etiqueta en la ventana: doble click en el lugar de interés.
• Seleccionar bloques: click. Si son múltiples, adicionar SHIFT.
• Copiar un bloque (duplicarlo). Marcarlo, apretar CTRL y arrastrar.
• Cambiar orientación del bloque: con format ( flip-block y rotate).
• Cambiar tamaño de bloque: marcar y ampliar esquinas.
• Cambiar nombre del bloque: marcar en el nombre y escribir.
• Especificar parámetros del bloque: como corresponda según la ventana del bloque.

46
Como ejercicio dibuje el sistema de la figura: Practique las principales operaciones sobre el sistema descritas
anteriormente. Establezca una señal de amplitud 1 y frecuencia angular 1, continua. Salve el modelo con un
nombre en el directorio de trabajo y ajuste los parámetros de la simulación en el menú <Simulation\
Parameters> en particular el tiempo de simulación e inicie la simulación con <Simulation \ Start>. Para ver
los resultados de la simulación, doble click en el osciloscopio.

6.2 Subsistemas.

El concepto de subsistemas es equivalente al de una subrutina o función en lenguajes de programación. Así


cuando se tiene un sistema complejo con muchos componentes es más conveniente agruparlos en
subsistemas, los cuales simplifican el número de bloques en el diagrama de trabajo y se establece así una
jerarquía de niveles pues se pueden crear subsistemas dentro de otros subsistemas. Es posible poner a punto
el programa total ajustando cada uno de sus partes independientemente.

Hay dos formas básicas de crear subsistemas:

• Agrupando los bloques de interés dentro del diagrama de trabajo y crear un subsistema con estos.
• Definiendo a priori un subsistema y creando sus componentes dentro del mismo.

El bloque para crear un subsistema se encuentra en la biblioteca < connections>, además deben de usarse los
bloques <in > <out > dentro de esa misma biblioteca que definen las entradas y salida al bloque del
subsistema.

En el ejemplo anterior, se creará un subsistema con los bloques que actúan sobre la señal. Para proceder a
crear el subsistema a partir de bloques ya construidos, basta con agruparlos, marcarlos e ir al menú EDIT/
create subsystems el cual es activado al marcar. Abra el subsistema creado y note cómo automáticamente se

47
han añadido los puertos <in > <out > que definen la entradas y salidas del subsistema. Para crear el
subsistema a partir de cero, copie el bloque <subsysms> , abra el mismo, copie los componentes necesarios
incluyendo los puertos de entrada y salida.

6.3 Enmascarar un subsistema.

Puede ser conveniente que un determinado subsistema, definido por un conjunto de parámetros, permita
modificarlos sin tener que acceder al interior del mismo. Mediante una máscara el subsistema se representa
por un icono gráfico, y al acceder a éste aparece un cuadro de diálogo donde se especifican los parámetros
particulares en la aplicación. La mayoría de los bloques del Simulink en las distintas bibliotecas están
construidos de esta forma.

En este ejemplo se quiere construir un nuevo bloque que modele a una termo resistencia, de acuerdo a los
parámetros de la ecuación fundamental de la misma:

r (t ) = r0 × (1 − α * t )

48
Donde ro es la resistencia a la temperatura de referencia, usualmente cero grados y alfa es el coeficiente de
sensibilidad de la termoresistencia, que expresa cuantos Ohms se varían por grado de temperatura.

Si se hace doble click en el bloque en cuestión, no aparece el contenido del bloque sino el cuadro de diálogo
siguiente. En este diálogo aparecen los dos parámetros que definen a la termoresistencia los cuales deben ser
especificados convenientemente. Adicionalmente aparece
una información sobre el objetivo del bloque.

A este procedimiento, que sustituye el modelo de un


subsistema, por un bloque con parámetros a variar, se le
denomina enmascarar el bloque.

Para ver como se ha constituido el bloque, marcar en el menú


de comandos de <EDIT/ look_under mask> y aparece el
bloque original que ha dado origen a la máscara.

Nótese que hay dos bloques que definen los parámetros en


cuestión, los dos bloques de ganancia denominados ALFA y
RO.
Los pasos para enmascarar un bloque son los siguientes:
• Dibujar el bloque
• Marcar bloque , activar el editor de máscaras con < EDIT/
edit mask>
• Completar el cuadro inicialización.
• Completar el cuadro documentación.
• Completar el cuadro icono.

49
Estos cuadros definen los parámetros del sistema, la ayuda del mismo y la forma del icono gráfico que va a
representar el sistema.
En este cuadro se escribe la información que va a efectuar la descripción del bloque en la máscara y la que
brindará una ayuda de como operar el bloque.
En este menú se indican los nombres que van a tener las variables asignadas en el texto de la máscara, en este
caso SENSE y ALFA, las cuales se corresponden con las variables
ALFA y R0 del modelo. Defina como tipo de máscara a Simple
Masked Block, adicione o borre las variables con ADD y DELETE
según se escriban en el mismo. Finalmente con el cuadro de icono,
se procede a dibujar un gráfico que represente al bloque, empleando
el comando plot, como se indica en el siguiente cuadro de diálogo.

6.4 Otros bloques de interés

• Los bloques de la biblioteca Sources, definen un conjunto de señales de entrada de formas distintas. Note
cómo las señales pueden partir del ambiente MATLAB mediante un file name.mat que archive las
variables de interés o directamente del workspace.

• Los bloques de la biblioteca Sink, definen como se van a mostrar las salidas de las señales. Además del
osciloscopio y el graficador, las señales se pueden enviar hacia un file.mat o hacia el área de trabajo.

50
• En los bloques de las bibliotecas Block Sets y Toolboxes aparecen un conjunto de aplicaciones
específicas de Simulink tales como comunicaciones, lógica difusa, procesamiento digital de señales etc.
Cada nueva versión del MATLAB incorpora nuevas aplicaciones en estos campos.
• Consulte la ayuda, la documentación gráfica y los demos del MATLAB y Simulink para más
información.

51

También podría gustarte