Apéndice F - Introducción a MATLAB [Rao]

10
APÉNDICE F Introducción a MATLAB Thomas Young (1773-1829) Físico y médico británico. Introdujo el módulo de Young y el principio de interferencia luminosa. Estudió medicina y se tituló en 1796. Fue nombrado profesor de Filosofía Natural en la Royal Institution en 1801, pero renunció en 1803 ya que sus conferencias eran decepcionantes para el grueso del público. En 1811 se unió al hospital St. George en Londres como médico, donde continuó hasta su muerte. Young hizo muchas con- tribuciones a la mecánica. Fue el primero en utilizar los términos “energía” y “trabajo consumido” (es decir, trabajo realizado) para las cantidades mv 2 y Fx, respectivamen- te, donde m es la masa del cuerpo, v es la velocidad, F es una fuerza y x es la distancia recorrida por F y para expresar que los dos términos son proporcionales entre sí. De- finió el término módulo (el cual llegó a ser conocido como módulo de Young) como el peso que duplicaría la longitud de una barra de sección transversal unitaria. MATLAB, derivado de MATriz LABoratory es un paquete de “software” que se puede utilizar para solucionar varios problemas científicos y de ingeniería, incluyendo ecuaciones algebraicas lineales, ecuaciones no lineales, diferenciación e integración numéricas, ajuste de curvas, ecuaciones diferen- ciales ordinarias y parciales, optimización y trazo de gráficas. Utiliza notación matricial de forma extensa; de hecho, el único tipo de datos en MATLAB es una matriz de valores complejos. Por lo tanto, maneja escalares, vectores y matrices de valores reales y enteros como casos especiales de matrices complejas. El programa se puede utilizar para ejecutar una sola instrucción o una lista de instrucciones, llamada archivo de comandos. MATLAB ofrece excelentes capacidades de trazo de gráficas y programación. También se puede utilizar para resolver muchos tipos de problemas de forma simbólica. Se pueden realizar cálculos sencillos introduciendo una instrucción, semejante a lo que se hace con una calculadora en la ventana de comandos. Los símbolos que se deben utilizar para las operaciones aritméticas básicas de suma, resta, multiplicación, división y exponenciación son +, -, *, / y ^, respectivamente. En cualquier expresión, los cálculos se realizan de izquierda a derecha, con la exponenciación que tiene la más alta prioridad, seguida por la multiplicación y división (con igual prioridad) y luego la suma y la resta (con igual prioridad). Utiliza el símbolo log para indicar el logaritmo natural (ln). MATLAB utiliza una doble precisión durante los cálculos pero imprime los resultados en la pantalla en un formato más corto. Esta opción preestablecida se puede cambiar utilizando el comando format.

description

es una guia para la utilizacion de matlab.

Transcript of Apéndice F - Introducción a MATLAB [Rao]

Page 1: Apéndice F - Introducción a MATLAB [Rao]

APÉNDICE F

Introducción a MATLAB

Thomas Young(1773-1829)

Físico y médico británico. Introdujo el módulo de Young y el principio de interferencia

luminosa. Estudió medicina y se tituló en 1796. Fue nombrado profesor de Filosofía

Natural en la Royal Institution en 1801, pero renunció en 1803 ya que sus conferencias

eran decepcionantes para el grueso del público. En 1811 se unió al hospital St. George

en Londres como médico, donde continuó hasta su muerte. Young hizo muchas con-

tribuciones a la mecánica. Fue el primero en utilizar los términos “energía” y “trabajo

consumido” (es decir, trabajo realizado) para las cantidades mv2 y Fx, respectivamen-

te, donde m es la masa del cuerpo, v es la velocidad, F es una fuerza y x es la distancia

recorrida por F y para expresar que los dos términos son proporcionales entre sí. De-

finió el término módulo (el cual llegó a ser conocido como módulo de Young) como el

peso que duplicaría la longitud de una barra de sección transversal unitaria.

MATLAB, derivado de MATriz LABoratory es un paquete de “software” que se puede utilizar para

solucionar varios problemas científicos y de ingeniería, incluyendo ecuaciones algebraicas lineales,

ecuaciones no lineales, diferenciación e integración numéricas, ajuste de curvas, ecuaciones diferen-

ciales ordinarias y parciales, optimización y trazo de gráficas. Utiliza notación matricial de forma

extensa; de hecho, el único tipo de datos en MATLAB es una matriz de valores complejos. Por lo

tanto, maneja escalares, vectores y matrices de valores reales y enteros como casos especiales de

matrices complejas. El programa se puede utilizar para ejecutar una sola instrucción o una lista

de instrucciones, llamada archivo de comandos. MATLAB ofrece excelentes capacidades de trazo de

gráficas y programación. También se puede utilizar para resolver muchos tipos de problemas

de forma simbólica. Se pueden realizar cálculos sencillos introduciendo una instrucción, semejante

a lo que se hace con una calculadora en la ventana de comandos. Los símbolos que se deben utilizar

para las operaciones aritméticas básicas de suma, resta, multiplicación, división y exponenciación

son , !, *, / y ^, respectivamente. En cualquier expresión, los cálculos se realizan de izquierda

a derecha, con la exponenciación que tiene la más alta prioridad, seguida por la multiplicación y

división (con igual prioridad) y luego la suma y la resta (con igual prioridad). Utiliza el símbolo

log para indicar el logaritmo natural (ln). MATLAB utiliza una doble precisión durante los cálculos

pero imprime los resultados en la pantalla en un formato más corto. Esta opción preestablecida se

puede cambiar utilizando el comando format.

Page 2: Apéndice F - Introducción a MATLAB [Rao]

Los nombres de variables en MATLAB deben comenzar con una letra y pueden tener una longi-

tud de hasta 31 caracteres con cualquier combinación de letras, dígitos y guiones bajos. Las letras

mayúsculas y minúsculas se tratan por separado. Como ya antes se enunció, MATLAB trata todas

las variables como matrices, aunque las cantidades escalares no se tienen que dar como arreglos.

El nombre de una matriz se debe iniciar con una letra y le puede seguir cualquier combinación

de letras y dígitos. Las letras pueden ser mayúsculas o minúsculas. Antes de realizar operaciones

aritméticas como suma, resta, multiplicación y división en matrices, habrá que crear las matrices

aplicando instrucciones como las siguientes:

Vector # la

W A = [1 2 3];

Un vector fila se trata como una matriz 1 por n; sus elementos se encierran entre paréntesis rec-

tangulares y se separan por espacios o comas. Observe que el indicador de línea de comandos en

la versión profesional de MATLAB es W en tanto que en la edición estudiantil de MATLAB es

EDU W. Si al final de un renglón no se escribe un punto y coma, MATLAB muestra en pantalla

los resultados del renglón.

Vector columna

W A =

[1

2

3]

o A = [1; 2 ; 3] o A = [1 2 3]¿;

Un vector columna se trata como una matriz n por 1. Sus elementos pueden ser ingresados en

renglones diferentes o en un solo renglón utilizando un punto y coma para separarlos, o en un solo

renglón utilizando un vector fila con una prima en el paréntesis del lado derecho (para indicar la

transpuesta).

Matriz Para definir la matriz

[A] = C 1 2 3

4 5 6

7 8 6

Sse puede utilizar la siguiente especificación:

W A =

[1 2 3

4 5 6

7 6 9]

o A = [1 2 3; 4 5 6; 7 8 9];

F.1 Variables

F.2 Arreglos y matrices

A-25 Apéndice F Introducción a MATLAB

Page 3: Apéndice F - Introducción a MATLAB [Rao]

En algunos casos se utiliza la estructura especial de un arreglo para especificarlo en una forma más

simple. Por ejemplo, A " 1:10 indica un vector fila

A " [1 2 3 4 5 6 7 8 9 10]

y A " 2:0.5:4 representa el vector C la

A " [2.5 3.0 3.5 4.0]

F.3 Arreglos con estructura especial

F.4 Matrices especiales

F.5 Operaciones con matrices

Algunas de las matrices especiales se identifican como sigue:

W A " eye (3); implica una matriz identidad de orden 3.

A = C 1 0 0

0 1 0

0 0 1

SW A " ones (3); implica una matriz cuadrada de orden 3 con todos los elementos iguales a uno,

A = C 1 1 1

1 1 1

1 1 1

SW A " zeros(2, 3); implica una matriz 2 3 3 con todos los elementos iguales cero,

A = c0 0 0

0 0 0d

Para sumar las matrices [A] y [B] para obtener [C], utilizamos la instrucción

W C = A + B;

Para resolver un sistema de ecuaciones lineales [A] X!= B

!, definimos la matriz A y el vector B y

utilizamos la siguiente instrucción:

W X = A OB

F.5 Operaciones con matrices A-26

Page 4: Apéndice F - Introducción a MATLAB [Rao]

MATLAB contiene muchas funciones integradas, como las siguientes:

Raíz cuadrada de x: sqrt(x)

Seno de x: sen(x)

Logaritmo de x base 10: log10(x)

Función gama de x: gamma(x)

Para generar un nuevo vector de 11 valores dado por la función y " e!2x cos x con x " 0.0, 0.1, ...,

1.0, escribimos lo siguiente:

W x " [0: 0.1: 1];

W y " exp(!2*x).*cos(x).;

MATLAB considera automáticamente el álgebra de números complejos. Se puede utilizar el símbolo

i o j para representar la parte imaginaria sin necesidad de un asterisco entre i o j y un número. Por

ejemplo, a " 1 ! 3i es un número complejo con partes real e imaginaria iguales a 1 y !3, respecti-

vamente. La magnitud y ángulo de un número complejo se determinan por medio de las instrucciones

>> a = 1 – 3i;>> abs (a)ans =

...>> angle (a)ans =

... (en radianes)

MATLAB se puede utilizar de un modo interactivo escribiendo cada comando desde el teclado. En

este modo, MATLAB realiza las operaciones como una calculadora. Sin embargo, hay situaciones

en las que este modo de operación es deficiente. Por ejemplo, si los mismos conjuntos de comandos

se tienen que repetir varias veces con diferentes valores de los parámetros de entrada, desarrollar

un programa MATLAB será más rápido y más eficiente.

Un programa MATLAB se compone de una secuencia de instrucciones MATLAB escritas

fuera de MATLAB y luego ejecutadas en MATLAB como un solo bloque de comandos. Dicho

programa se conoce como archivo de comandos (scrip file) o archivo M. Es necesario nombrar

el archivo de comandos. El nombre debe terminar con .m (un punto (.) seguido por la letra m). A

continuación se presenta un archivo M típico (llamado fibo.m):

file "fibo.m"% archivo-m para calcular números Fibonaccif=[1 1];i=1;while f(i)+f(i+1)<1000

f(i+2)=f(i)+f(i+1);i=i+1;

end

F.6 Funciones en MATLAB

F.7 Números complejos

F.8 Archivos M

A-27 Apéndice F Introducción a MATLAB

Page 5: Apéndice F - Introducción a MATLAB [Rao]

Para trazar una gráfica en MATLAB, definimos un vector de valores de la variable independiente

x (matriz x) y un vector de valores de la variable dependiente correspondiente a los valores de x

(matriz y). Entonces, la gráfica se puede trazar utilizando el comando

plot (x,y)

Como un ejemplo, se pueden utilizar los siguientes comandos para trazar la función y " x2 1 en

el rango 0 # x # 3:

x = 0 : 0.2 : 3;y = x2 + 1;plot (x,y);hold onx1 = [0 3];y1 = [0 0];plot (x1,y1);grid onhold off

También se puede utilizar un archivo M para escribir subrutinas de función. Por ejemplo, la solu-

ción de una ecuación cuadrática

Ax2 Bx C " 0

se puede determinar utilizando el siguiente programa:

% roots_quadra.m (Nota: El renglón que comienza con % indica un renglónde comentario)function [x1, x2] = roots_quadra(A, B, C)% det = determinantdet = ^2 – 4 * A * C;if (det < 0.0);

x1 = (–B + j * sqrt(–det))/(2 * A);x2 = (–B – j * sqrt(–det))/(2 * A);disp(‘Las raíces son conjugados complejos’);

elseif (abs(det) < 1e–8); % det = 0.0x1 = –B / (2 * A);x2 = –B / (2 * A);disp(‘Las raíces son idénticas’);

else (det > 0);x1 = (–B + sqrt(det))/(2 * A);x2 = (–B – sqrt(det))/(2 * A);disp(‘Las raíces son reales y distintas’);

end

El programa roots_quadra.m se puede utilizar para determinar las raíces de una ecuación cua-

drática con A " 2, B " 2, C " 1, por ejemplo, como sigue:

>> [x1,x2] roots_quadra(2, 2, 1)Las raíces son conjugados complejos

x1 =–0.5000 + 0.5000i

x2 =–0.5000 – 0.5000i

F.9 Trazo de gráficas

F.9 Trazo de gráficas A-28

Page 6: Apéndice F - Introducción a MATLAB [Rao]

Observe que los dos primeros renglones se utilizan para generar las matrices x y y (con incrementos

de 0.2 para x); el tercer renglón traza la gráfica (utilizando líneas rectas entre los puntos indicados);

los seis renglones siguientes permiten trazar los ejes x y y junto con el trazo de la cuadrícula (usando

el comando grid on).

Para hallar las raíces de ecuaciones no lineales, se puede utilizar la función MATLAB

fzero(y,x1). Aquí y define la función no lineal y x1 indica el cálculo inicial (valor de inicio)

de la raíz. Las raíces de polinomios se pueden determinar aplicando la función roots(p) donde

p es un vector fila de coeficientes del polinomio en orden descendente de la potencia de la variable.

>> f='tan (x)–tanh (x)'

f =

tan (x)–tanh (x)

>> root=fzero(f,1.0)

root =

1.5708

>> roots([1 0 0 0 0 0 –2])

ans =

–1.1225–0.5612 +0.9721i–0.5612 –0.9721i0.5612 +0.9721i0.5612 –0.9721i1.1225

>>

Un sistema de ecuaciones algebraicas lineales simultáneas [A] x!= b

! se puede resolver utilizando

MATLAB de dos maneras diferentes: determinando x! como [A]-1b

! o hallar x

! directamente como

se indica por los siguientes ejemplos:

>> A=[4 –3 2; 2 3 1; 5 4 7]A =

4 –3 22 3 15 4 7

>> b=[16; –1; 18]

b =

16–118

>> C=inv(A)

F.10 Raíces de ecuaciones no lineales

F.11 Solución de ecuaciones algebraicas lineales

A-29 Apéndice F Introducción a MATLAB

Page 7: Apéndice F - Introducción a MATLAB [Rao]

C =

0.2099 0.3580 –0.1111–0.1111 0.2222 0.0000–0.0864 –0.3827 0.2222

>> x=C*b

x =

1.0000–2.00003.0000

>> x=A\b

x =

1.0000–2.00003.0000

>>

Un problema algebraico de valor eigen se define como [A]X!= lX

!, donde [A] es una matriz

cuadrada de tamaño n 3 n, X! es un vector columna de tamaño n y l es un escalar. Para cualquier

matriz dada [A], la solución se puede hallar utilizando dos tipos de comandos. El uso del comando

b = eig(A) proporciona los valores eigen de la matriz [A] como elementos del vector d. El uso

del comando [V,D] = eig(A) produce los valores eigen como elementos diagonales de la ma-

triz [D] y los vectores eigen como columnas correspondientes de la matriz [V]. El siguiente ejemplo

ilustra el procedimiento:

>> A=[2 1 3 4; 1 –3 1 5; 3 1 6 –2; 4 5 –2 –1]

A =

2 1 3 41 –3 1 53 1 6 –24 5 –2 –1

>> b=eig(A)

b=

7.93295.6689–1.5732–8.0286

>> [V, d] = eig(A)

V =

0.5601 0.3787 0.6880 0.26350.2116 0.3624 –0.6241 0.65900.7767 –0.5379 –0.2598 –0.19960.1954 0.6602 –0.2638 –0.6756

F.12 Solución del problema de valor eigen

F.12 Solución del problema de valor eigen A-30

Page 8: Apéndice F - Introducción a MATLAB [Rao]

d =

7.9329 0 0 00 5.6689 0 00 0 –1.5732 00 0 0 –8.0286

>>

MATLAB contiene varias funciones o resolvedores, basados en el uso de métodos Runge-Kutta,

que se pueden utilizar para la solución de un sistema de ecuaciones diferenciales ordinarias de pri-

mer orden. Observe que una ecuación diferencial ordinaria de orden enésimo se tiene que convertir

en un sistema de n ecuaciones diferenciales ordinarias de primer orden antes de utilizar funciones

MATLAB. La función MATLAB ode23 ejecuta una combinación de métodos de Runge-Kutta de

segundo y tercer orden, en tanto que la función ode45 está basada en una combinación de métodos

de Runge-Kutta de cuarto y quinto orden. Para resolver un sistema de ecuaciones diferenciales de

primer orden y#= f1t, y2 por medio de la función MATLAB ode23, se puede utilizar el siguiente

comando:

>>[t,y] = ode('dfunc',tspan,y0)

donde ‘dfunc’ es el nombre de la función m-file cuyos datos de entrada deben ser t y y, y

cuyo resultado debe ser un vector columna que indique dy/dt, es decir, f(t,y). La cantidad de

filas en el vector columna debe ser igual a la de ecuaciones de primer orden. El vector tspan debe

contener los valores iniciales y finales de la variable independiente t y, opcionalmente, cualesquie-

ra valores intermedios de t a los cuales se desea la solución. El vector y0 debe contener los valores

iniciales de y(t). Observe que la función m-file debe tener dos argumentos de entrada t y y

incluso si la función f(t,y) no implicara t. Se puede seguir un procedimiento semejante con la

función ode45 de MATLAB.

Como un ejemplo, considere la solución de la ecuación diferencial con c " 0.1 y k " 10.0:

d2y

dt2+ c

dy

dt+ ky = 0; y102 = 0,

dy

dt 102 = 0

Esta ecuación se puede escribir como un conjunto de dos ecuaciones diferenciales de primer orden

introduciendo

y1 " y

y

y2 =dy

dt=

dy1

dt

ya que

dy!

dt= f

!= ef11t, y!2

f21t, y!2 f = e y2

-cy2 - ky1f

F.13 Solución de ecuaciones diferenciales

A-31 Apéndice F Introducción a MATLAB

Page 9: Apéndice F - Introducción a MATLAB [Rao]

con

y!102 = e 1

0f

El siguiente programa MATLAB encuentra la solución de las ecuaciones diferenciales anteriores:

% ProbappendixF.mtspan = [0: 0.05: 3];y0 = [1; 0];[t,y] = ode23 (‘dfunc’, tspan, y0);[t y]plot (t, y(:,1));xlabel (‘t’);ylabel (‘y(1) and y(2)’)gtext (‘y(1)’);hold onplot (t,y (:,2));gtext (‘y(2)’);

%dfunc.mfunction f = dfunc(t,y)f = zeros (2,1);

f(1) = y(2);f(2) = –0.1 * y(2) – 10.0 * y(1);

>> ProbappendixFans =

0 1.0000 00.0500 0.9875 –0.49670.1000 0.9505 –0.97850.1500 0.8901 –1.43350.2000 0.8077 –1.85050.2500 0.7056 –2.21910.3000 0.5866 –2.53080.3500 0.4534 –2.77750.4000 0.3098 –2.95400.4500 0.1592 –3.05610.5000 0.0054 –3.08180.5500 –0.1477 –3.0308. . . 2.7500 –0.6380 –1.82792.8000 –0.7207 –1.47882.8500 –0.7851 –1.09492.9000 –0.8296 –0.68582.9500 –0.8533 –0.26173.0000 –0.8556 0.1667

F.13 Solución de ecuaciones diferenciales A-32

Page 10: Apéndice F - Introducción a MATLAB [Rao]

!3

!4

!2

!1

0

y(1

) y y

(2)

y(2)

y(1)1

2

3

0.5 1 1.5

t

2 2.5 30

A-33 Apéndice F Introducción a MATLAB