Вы находитесь на странице: 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

Í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 Hiperbólicas Complejas Estadísticas Operadores aritméticos y caracteres especiales Operadores lógicos y relacionales

9

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

for

25

2.11.2

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 Estadística en MATLAB

41

4. 6

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

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

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

paneles que es posible personalizar mostrada en la Figura 1 Figura 1 Presentación de MATLAB El

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;

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

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

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
−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

e

x

log(x)

Logaritmo Natural

ln( x )

 

log10(x)

Logaritmo base 10

log

10

(

x

)

sqrt(x)

Raíz cuadrada

x
x
 

nthroot(x)

Raíz n-sima de un número real

 
n x
n x
 
 

Trigonométricas

acos(x)

Coseno inverso

cos

1

(

x

)

asin(x)

Seno inverso

1

sen

(

x

)

atan(x)

Tangente inversa

tan

1

(

x

)

cos(x)

Coseno

cos( x )

 

sin(x)

Seno

sen ( x )

 

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

/

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

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

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.

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

4

7

2

5

8

3

6

9

La dimensión de A es:

>> ndims(A)

ans =

2

El tamaño de A es:

>> size(A)

ans =

3 3

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)

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.

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

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

ejecutarlo >> trigonometrica 2.3 Funciones M-files Las funciones son M-files que extienden las capacidades de

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)

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)

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

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

>> 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, x 0 ) 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)

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 textoLas cadenas de texto se muestran con el comando disp. Por ejemplo:

>> disp(s)

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

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

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

y

=

6

=

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

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 2 n +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:

x > 6

if

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:

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

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

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];

conectar

y=cos(x) - 2*sin(2*x-pi/3); plot(x,y); xlabel('coordx'); ylabel('coordy'); title('función trigonométrica');

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.

navegador de ploteo. Con esta acción se despliega la ventana para adicionar datos a los ejes;

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:

sobre los mismos ejes se procede de la forma siguiente: 1.- Se hace click otra vez

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.

a todas las propiedades de la figura se visita el inspector. 3.2 Gráficos tridimensionales El primer

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.

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

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:

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

ubicarlo. Por

para

especial'); subplot(2,2,2):mesh(Y) ubicarlo. Por para xlabel('X'); ylabel('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.

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

2

x + 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

>> b= polyfit(x,y,2); >> plot(x,y,'r+') hold on

8.9 19

30.6 49.3];

x = [ 1 2 3 4 5]; y = [ 3.5 >> b= polyfit(x,y,2); >>

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

polinomios.

Más

sobre

el

ajuste

con

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.

0.8000 1.1000 1.6000 2.3000] polytool (x,y) ajusta el polinomio a los pares (x,y) y despliega un

y

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 . x 2 5 x 6
1
y(x)
2
.
x 2
5 x
6

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

10

5

0

-5

-10

-15

Fun1(x)

la función, denominado fun1 . 10 5 0 -5 -10 -15 Fun1(x) 0 0.5 1 1.5
la función, denominado fun1 . 10 5 0 -5 -10 -15 Fun1(x) 0 0.5 1 1.5

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

 

x

Para graficar este tipo de funciones se puede usar la función fplot. A la izquierda se muestra el resultado de plotear fun1 en el intervalo de 0 a 5. Donde se nota que la función se indefine en dos puntos y tiene dos ceros en 1.62 y 3.37. Los ceros se obtienen llamando a la función de la forma siguiente:

cero1=fzero('fun1',0)

cero1 =1.6340

cero2=fzero('fun1',3.2)

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

sistema de ecuaciones

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:

A x = 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)

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

x= A \ b =

1

2

-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

x

= U \ (L \ b) =

1

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 = K o wh + K 1 wh*MP + K 2 wh*P + K 3 wh*B

El problema se resuelve al determinar los coeficientes K i wh para lo cual se emplea la sintaxis:

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

K i wh=X\MWh;

Quedando definida la función al conocer cada uno de los coeficientes K o wh…K i wh.

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 a 0 , a 1 , y a 2 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

1

t + a

2

t

2

y

y

y

y

y

y

⎥ ⎦

1

2

3

4

5

6

= ⎢

1

1

1

1

1

1

t

t

t

t

t

t

1

2

3

4

5

6

t

t

t

t

t

t

1

2

3

4

5

6

2

2

2

2

2

2

*

a ⎤ ⎥ ⎥

⎢ ⎣ a

⎥ ⎦

0

a

1

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

o

variables simbólicas éstas deben primeramente ser declaradas. Para ello se utilizan

syms.

los comandos

sym

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.

» y = sin(a*x+b)

y =

sin(a*x+b)

» dydx=diff(y)

dydx =

cos(a*x+b)*a

Calcula la derivada respecto a x

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

subs(dydx,{a b},{2 pi/2})

ans =

-2*sin(2*x)

Indicándose la sustitución de los parámetros a y b por los valores 2 y pi/2.

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

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

subs(f,2)

Que arroja el resultado f(2): ans =

3

Se entra el comando

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)