Métodos Numéricos – FIE – UMSNH Ing. Ireri Rojas – Semestre 2011‐2012 1 Métodos Numéricos 1. Introducción a la programación en Matlab Introducción Matlab es un programa de cómputo que permite realizar de una manera fácil operaciones numéricas básicas, así como una gran cantidad de funciones, cálculos simbólicos y además cuenta con herramientas de visualización. Interface de Matlab En la figura se muestran las distintas ventanas que componen la ventana principal de Matlab. Ventana de Comandos (Command Window). En esta ventana es posible introducir cálculos de una manera sencilla. Las ordenes se introducen una por una enseguida del prompt (>>) que aparece en esta ventana, el resultado de las operaciones se guarda en la variable ans. Para ejecutar cada comando hay que presionar la tecla Enter. Por ejemplo, para sumar dos números: >>5+3 dará por resultado ans = 8 Es posible guardar el resultado de los cálculos en variables definidas por el usuario. >>x=3^2 x= 9 De esta forma se puede acceder a las mismas, siempre y cuando no se borren las variables o el espacio de trabajo. Con la tecla de flecha hacia arriba y hacia abajo, se tiene acceso a los
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 1
Métodos Numéricos
1. Introducción a la programación en Matlab
Introducción
Matlab es un programa de cómputo que permite realizar de una manera fácil operaciones numéricas básicas, así como una gran cantidad de funciones, cálculos simbólicos y además cuenta con herramientas de visualización.
Interface de Matlab
En la figura se muestran las distintas ventanas que componen la ventana principal de Matlab.
Ventana de Comandos (Command Window). En esta ventana es posible introducir cálculos de una manera sencilla. Las ordenes se introducen una por una enseguida del prompt (>>) que aparece en esta ventana, el resultado de las operaciones se guarda en la variable ans. Para ejecutar cada comando hay que presionar la tecla Enter.
Por ejemplo, para sumar dos números: >>5+3 dará por resultado ans = 8
Es posible guardar el resultado de los cálculos en variables definidas por el usuario. >>x=3^2 x= 9
De esta forma se puede acceder a las mismas, siempre y cuando no se borren las variables o el espacio de trabajo. Con la tecla de flecha hacia arriba y hacia abajo, se tiene acceso a los
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 2
comandos previamente utilizados, con lo cual se pueden ejecutar nuevamente o modificarlos para obtener nuevos resultados.
Cuando no se desea que aparezca el resultado de un cálculo en la ventana, ya sea porque no se requiere o porque el resultado es muy extenso, basta con colocar un punto y coma al final de la instrucción.
Ventana del Historial de Comandos (Command History Window). En esta ventana se despliegan los comandos que se han introducido previamente en la Ventana de Comandos. Si se quiere utilizar alguno de los comandos pertenecientes a esta ventana, se debe dar doble clic sobre el comando para ejecutarlo. Para eliminar alguno de los comandos de esta lista, se debe seleccionar, dar clic con el botón derecho del mouse y seleccionar la instrucción Delete.
Ventana de Documentos (Current Directory). Se visualizan los archivos que son compatibles así como los generados en Matlab, contenidos en el directorio de trabajo. En la parte inferior de la ventana se muestran algunos detalles del archivo.
Ventana de Área de Trabajo (Workspace). Permite visualizar las variables que se están utilizando en la sesión, es posible acceder a ellas para visualizarlas o modificarlas haciendo doble clic sobre la misma. Despliega un resumen de información sobre las variables.
Ventana de figuras. Se utiliza cuando se genera una representación grafica (figura) con los datos obtenidos de alguna operación o bien con datos que se introducen con la finalidad de graficarlos.
Navegador de Ayuda. En la barra de herramientas se puede acceder a la ayuda de Matlab, solo basta con hacer clic en el botón con el símbolo “?”. Es posible acceder desde la ventana de comandos tecleando el comando helpdesk o helpwin, el primero es la ayuda que nos ofrece el propio programa, mientras que el segundo nos ofrece ayuda interactiva, conectándose a internet si es posible.
Variables Se utilizan para asignarles un cierto valor proporcionado por el usuario o bien el resultado de algún calculo. Estos valores pueden ser escalares o matriciales. No es necesario declarar las variables previamente, estas se crean conforme se van utilizando. Existen formatos que nos permiten visualizar los resultados de distintas maneras. Por defecto si el resultado es un número entero; se muestra como tal. Si no es entero lo muestra con 4 cifras decimales (redondeando a la cuarta cifra). Si el resultado es muy grande, lo expresa en notación científica. Para cambiar el formato en que se desea se presenten los resultados, basta con escribir el comando correspondiente a la columna Formato de la siguiente tabla:
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 3
Descripción Valor desplegado Formato 5 dígitos (formato por defecto) 3.1416 format short
15 dígitos 3.14159265358979 format long
Punto flotante con 5 dígitos 3.1416 e+000 format short e
Punto flotante con 15 dígitos 3.14159265358979 e+000 format long e
Formato hexadecimal 400921fb54442d18 format hex
2 decimales (monetario) 0.00 format bank
Elemento Positivo o negativo +,‐ format +
Aproximación racional 355/113 format rat
La representación del numero siempre es la misma, independientemente del formato que se este utilizando, lo único que cambia es la forma de visualizarlo en pantalla. Además de la información disponible en la ventana del historial de comandos, se puede saber con qué variables se está trabajando escribiendo >>who, comando que indica las variables en uso. El comando >>whos, indica lo mismo y además informa el tamaño y el tipo de variable. El comando >>clear nombre_variable, borrara la variable indicada, el comando >>clear borra todas las variable que están en uso. El nombre de la variable puede contener hasta 63 caracteres, si se pasa de 63 caracteres, estos son ignorados. El nombre debe comenzar con una letra, seguida por más letras, dígitos o guiones de subrayado. Es importante tomar en cuenta que Matlab es sensible a mayúsculas y minúsculas por lo que se debe tener cuidado al nombrar las variables. Existen algunas variables especiales definidas por defecto las cuales se describen en la tabla.
Variable Descripción ans Se utiliza en los resultados no asignados a una variable. Se
modifica en cuanto hay un nuevo resultado pi Numero π= 3.141592… i,j variable imaginaria = eps Numero más pequeño que utiliza la computadora, si se le suma
1, crea un numero en coma flotante mayor que uno NaN Mensaje de error (Not a Number) Inf Infinito
realmin,realmax Menor y mayor de los números reales utilizables
Operadores Matemáticos Es posible utilizar en Matlab los operadores aritméticos básicos, su notación es la siguiente
Operación Notación en Matlab
Precedencia
Suma + 3 Resta - 3
Multiplicación * 2 División a la derecha / 2 División a la izquierda \ 2
Potenciación ^ 1 Agrupación ()
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 4
Funciones Elementales en Matlab Existen también algunas de las funciones más comunes utilizadas en Matemáticas.
Función Comando de Matlab
Trigonométricas Seno sin(x)
Coseno cos(x)
Tangente tan(x)
Cotangente cot(x)
Secante sec(x)
Cosecante csc(x)
Trigonométricas Inversas Arcoseno asin(x)
Arcocoseno acos(x)
Arcotangente atan(x)
Arcocotangente acot(x)
Arcosecante asec(x)
Arcocosecante acsc(x)
Hiperbólicas Seno hiperbólico sinh(x)
Coseno hiperbólico cosh(x)
Exponenciales y Logarítmicas Exponencial exp(x)
Logaritmo Natural log(x)
Logaritmo base 10 log10(x)
Números Complejos Valor absoluto abs(x+yi)
Angulo de fase angle(x+yi)
Conjugado conj(x+yi)
Parte imaginaria imag(x+yi)
Parte real imag(x+yi) Otros
Absoluto abs(x)
Raíz Cuadrada sqrt(x)
Nota: El argumento de las funciones trigonométricas se pide en radianes.
En la ayuda de Matlab se puede obtener un listado completo con todas las funciones y comandos disponibles en Matlab, así como la manera de utilizarlas.
Si se requiere conocer cómo funciona o para que sirve algún comando especifico, se debe escribir:
>>help comando
También se puede utilizar el comando lookfor, por medio del cual podemos obtener una lista de los comandos relacionados con algún comando en cuestión, por ejemplo
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 5
>>lookfor sin muestra una lista con los comandos relacionados con la función seno
Graficas
Para graficar funciones de una variable, primeramente se debe crear una matriz renglón con el rango de valores de la variable independiente. Con estos valores se obtiene una segunda matriz con los valores de la variable dependiente, utilizando la función que relaciona a las variables y finalmente se dibuja la función.
Si se quiere graficar la función y=sen(x):
Se crea una matriz con el rango de valores para x: >>x=0:pi/100:2*pi;
este comando crea un vector x con 200 valores entre 0 y 2*π.
Se calculan los valores de y utilizando: >>y=sin(x)
Y para graficar la función se utiliza el comando >>plot(x,y)
Matlab desplegara la ventana de figuras mostrando la grafica deseada:
Se pueden adicionar algunos elementos a la gráfica con los siguientes comandos:
title: se utiliza para asignar un nombre a la gráfica
xlabel: asigna la etiqueta al eje de las abcisas
ylabel: asigna la etiqueta al eje de las ordenadas
grid: muestra la cuadrícula en la gráfica
Graficas de dos o más funciones en un plano
Es posible graficar dos o más funciones en el mismo plano, para esto se crea la matriz con el rango de valores de la variable independiente, después se obtienen las matrices para las funciones que se desean graficar. Y se utiliza el comando >>plot(x, y1,x, y2,x,y3)
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 6
Múltiples graficas en una misma ventana
Si se desean mostrar múltiples graficas, se utiliza el comando subplot.
Al igual que se hizo anteriormente se definen las matrices x, y1 y y2, o las que sean necesarias.
Se escribe el comando subplot(número_filas,número_columnas,número_gráfica) antes de escribir el comando plot(x,y1). El número de filas y columnas debe ser el mismo y determina cuantas graficas se desplegaran en la ventana, por ejemplo si se definen 3 filas y 3 columnas, se tendrán 9 graficas.
Gráficas en un mismo plano con diferentes escalas
Para graficar en un mismo plano el comportamiento de funciones con escalas diferentes, se utiliza el comando plotxy.
1.1 Instrucciones Secuenciales
Se dice que la estructura del programa es secuencial cuando debe ejecutarse instrucción por instrucción. Una instrucción no se debe ejecutar hasta que finalice la ejecución de la anterior.
1.2 Instrucciones Condicionales
Este tipo de instrucciones son vitales en todo lenguaje de programación, ya que nos permiten cambiar la secuencia de un programa siempre y cuando se cumplan o satisfagan ciertas condiciones.
Comandos if‐end, if‐else‐end y elseif.
Se utiliza cuando en el flujo de un programa o una función se debe evaluar una condición que puede ser falsa o verdadera
>>if Condición
instrucciones
>>end
La instrucción if puede contener expresiones lógicas en su condición, las cuales hacen uso de los operadores lógicos y de relación (ver las siguientes tablas). Si la condición se cumple se ejecutan las instrucciones hasta llegar a end. Si la condición no se cumple el programa se dirige hasta end directamente.
>>x=10;
if x==10
fprintf(‘Si es igual.’)
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 7
>>end
Otro ejemplo de if‐end;
>>x=10;
if x>10
fprintf(‘ x Es mayor.’)
end
if x==10
fprintf(‘ x Es igual.’)
>>end
Operadores de Relación Operación de Relación Definición
< Menor que <= Menor o igual que > Mayor que >= Mayor o igual que == Igual a ~= No igual a, distinto de
& AND lógico Si se cumplen las 2 condiciones el resultado es verdadero, y si se cumple solo una o ninguna, el
resultado es falso. (a<b)&(x<5)
| OR lógico Si se cumple cualquiera de las 2 condiciones o ambas el resultado es verdadero, y si ninguna se cumple el
resultado es falso. (a<b)|(x<5)
~ NOT Si se cumple la condición el resultado es falso, y si no se cumple el resultado es verdadero. ~(a<b)
XOR OR exclusivo Si se cumplen o no las 2 condiciones
simultáneamente el resultado es falso, y si sólo se cumple una, el resultado es verdadero.
xor(a<b,x<5)
La siguiente instrucción if‐else‐end, es una modificación de la if‐end, solo que a esta le incluimos la sentencia else, esta nueva sentencia le permite utilizar un solo if en muchos casos para ejecutar 2 conjuntos de declaraciones.
>>if condición
Instrucciones A
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 8
else
Instrucciones B
>>end
Con el siguiente ejemplo demostramos el uso de if‐else‐end.
>>x=10;
if x>10
fprintf(‘ x Es mayor.’)
else
fprintf(‘ x Es igual o menor.’)
>>end
Con la siguiente modificación de if, se pueden evaluar un mayor número de condiciones, esta estructura condicional tiene como palabra clave elseif y su sintaxis es:
>>if condición
Instrucciones A
elseif condicion1
Instrucciones B
elseif condición2
Instrucciones C
…
elseif condiciónn
Instrucciones n
>>end
Veamos un ejemplo, para ver cómo trabaja:
>>x=10;
if x>10
fprintf(‘ x Es mayor.’)
elseif x==10
fprintf(‘ x Es igual.’)
elseif x<10
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 9
fprintf(‘x Es menor.’)
>>end
Comando switch‐case Si nos interesa evaluar una expresión que es igual a un valor determinado, la cual no es una condición como (a<5) o (b≥3), entonces podemos utilizar esta estructura de condición. El switch‐case tiene diferentes aplicaciones, su sintaxis es la siguiente:
>>switch expresion
case valor1
Instrucciones A
case valor2
Instrucciones B
… …
Otherwise
Instrucciones An
>>end
Cada valor puede ser un valor numérico o una cadena de caracteres o un solo carácter. Además case puede tener varios valores.
case {valor 1, valor2, valor3}
Instrucciones A
>>calif = input(‘Dame un valor: \n’)
switch calif
case{7,8,9,10}
fprintf(‘Aprobado.’)
case{1,2,3,4,5}
fprintf(‘Reprobado’)
otherwise
fprintf(‘Probablemente estas reprobado.’)
>>end
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 10
1.3 Instrucciones de repetición
Las instrucciones de repetición son las que nos sirven para crear ciclos o lazos de instrucciones que se deben repetir un número determinado de veces hasta que cierta condición se satisfaga.
Comando for
Tal vez sea la instrucción de repetición más utilizada, veamos su sintaxis:
>>for variable=expresión
Declaración 1 Declaración 2 … Declaración N
>>end
En esta instrucción si se cumple “variable=expresión”, se ejecutaran las declaraciones una a una. Cabe recordar que es posible que las declaraciones no se ejecuten ninguna vez.
>>for i=1:10
x(i)=i;
>>end
Comando while
>>while condición
Declaración 1 Declaración 2 … Declaración N
>>end
La instrucción while nos sirve para repetir un número indeterminado de veces un conjunto de declaraciones. Los ciclos while funcionan de la siguiente manera, si la condición no se cumple se ejecuta directamente la siguiente instrucción después del end, pero si la condición se cumple se ejecutan todas las declaraciones desde la 1 hasta la N; en este punto se vuelve a evaluar si la condición se cumple y de ser así se vuelven a repetir una a una las declaraciones desde la 1 hasta la N. Este proceso se sigue repitiendo hasta que la condición ya no se cumpla. Veamos el siguiente ejemplo:
>>i=1;
while i<=10
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 11
x(i)=i;
i=i+1;
>>end
Comando break Esta instrucción termina la ejecución de un ciclo for o while, y transfiere el control a la instrucción que se encuentra a continuación , de la instrucción end, que termina el ciclo. Comando return Esta instrucción termina la ejecución de una secuencia de comandos y regresa el control a la función o programa que llamo a dicha función en donde se encontró el return.
1.4 Manejo de matrices y vectores Vectores. Un vector fila se define, introduciendo sus coordenadas separadas por espacios o comas, entre corchetes. >> x=[3 4 5] x =
1 2 3
Para definir un vector columna, se separan las filas por ;, o bien se calcula el transpuesto de un vector fila utilizando >>x’ >> s=[3;2;8] s = 3 2 8
Otra forma de crear vectores, es utilizar >> x=1:0.5:3 x = 1.0000 1.5000 2.0000 2.5000 3.0000
De tal manera que se genera un vector que contiene valores desde un mínimo (1) hasta un máximo (3) con un paso de cierto valor (0.5). Operaciones con Vectores Producto Escalar. Si se tienen los dos vectores siguientes: >>a=[2 1 3];b=[1 -2 6];
Y los multiplicamos de la forma
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 12
>>c=a.*b c = 2 -2 18
Se obtiene el producto de los elementos del primero y del segundo vector elemento a elemento. Para obtener el valor del producto escalar: >>sum(c) ans = 18
Matrices Para definir una matriz, se separa cada fila con un punto y coma. >>A=[2 5 6;5 2 9;2 4 9] A= 2 5 6 5 2 9 2 4 9
Para obtener el valor de cierto elemento de la matriz se escribe el nombre de la matriz, seguida del número de fila (i) y numero de columna deseada (j): A(i,j), encerrada entre paréntesis. Por ejemplo >>A(2,3) ans = 9
Si se desea obtener solamente los valores de una columna, se escribe el nombre de la matriz, seguida de :, y el numero de columna deseada >> A(:,1) ans = 2 5 2 De igual manera para tener los valores de una fila especifica de la matriz, se escribe su nombre seguida de el numero de fila deseada: >> A(2,:) ans = 5 2 9 Si se desean obtener varios elementos de una matriz, por ejemplo, obtener una matriz C la cual contiene las filas 2 a 3 y las columnas 2 a 3 de la matriz A. >> B = A(2:3,2:3) B = 2 9 4 9
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 13
O bien, obtener una matriz D que contenga el renglón 1 de la matriz A, de las columnas 2 a 3: >> D = A(1:1,2:3) D = 5 6 Operaciones elementales con matrices Se definen dos matrices de 3x3 A=[1 4 2; 3 4 6; 2 9 0];B=[‐1 1 0; 2 3 0;‐3 5 4]; Suma >> C=A+B
Matrices predefinidas. Existen algunos comandos que sirven para definir matrices de tipos particulares, las cuales se muestran en la tabla
Comando Tipo de matriz eye(n) Matriz unidad de tamaño (nxn)
zeros(m,n) Matriz de ceros de tamaño (mxn) zeros(n) Matriz de ceros de tamaño (nxn) ones(n) Matriz de unos de tamaño (nxn)
ones(m,n) Matriz de unos de tamaño (mxn) linspace(x1,x2,n) Genera un vector con n valores igualmente
espaciados entre x1 y x2 logspace(d1,d2,n) Genera un vector con n valores espaciados
logarítmicamente entre 10d1 y 10d2 rand(n) Matriz de números aleatorios entre 0 y 1,
distribuidos uniformemente, de tamaño (nxn) rand(mxn) Matriz de aleatorios entre 0 y 1, distribuidos
uniformemente, de tamaño (mxn) magic(n) Matriz en forma de cuadrado mágico de tamaño
(nxn) 1.5 Estructura de programas y funciones Es posible escribir y ejecutar uno a uno cualquier número de comandos. También se pueden escribir uno a continuación de otro en una misma línea, separándolos con una coma. En caso de
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 14
que el comando o la cantidad de comando sea muy grande para aparecer en un solo renglón, se puede separar la cadena en uno o más renglones, escribiendo tres puntos suspensivos al final de cada uno de ellos. Es posible generar archivos con extensión (*.m) donde se pueden almacenar variables, datos y comandos. Estos archivos se pueden generar en cualquier editor de texto o en Matlab. Estos archivos se denominan M‐File, y en estos se pueden efectuar cambios y ejecutar el programa una y otra vez para observar los resultados que se van obteniendo. Existen dos clases de archivos M, de instrucciones y de funciones. Los archivos de instrucciones no aceptan argumentos de entrada ni de salida, no operan con datos del espacio de trabajo, y se utilizan para automatizar una serie de instrucciones que se realizan de manera común. En los archivos de funciones si se aceptan argumentos de entrada y salida, y las variables internas son locales. Crear un archivo de instrucciones Para crear un archivo .m, en el menú File se selecciona el comando New Blank M‐File, se desplegar la ventana de edición, donde es posible escribir una lista de comandos. Una vez que se escribe el programa se guarda como m‐file y se cierra la ventana del editor en el menú File Close Editor. Para ejecutar un programa, se debe escribir en la ventana de comandos el nombre del archivo junto con la extensión .m y se teclea la tecla Enter para ejecutarlo. Es importante cerciorarse de que el archivo que se desea ejecutar se encuentre almacenado en el directorio que indica el path de Matlab. Si no es asi es necesario colocar la dirección donde se encuentra el archivo en el path. Un ejemplo de un archivo de instrucciones, el cual nos grafica la función coseno, es:
% serie de instrucciones utilizadas para graficar la función coseno en un % intervalo de tiempo de 0 a 2pi t = 0:0.01:2*pi; y = cos(t); plot(t,y);
para ejecutarlo basta con escribir el nombre del archivo con su extensión
>>coseno.m
Archivo de Funciones
Se crea de la misma manera que el archivo de instrucciones, pero seleccionando la opción Function M‐File en el menú File.
Un ejemplo de un archivo de funciones es:
%Función que acepta como argumentos de entrada dos valores a y b, y regresa su suma function c = suma( a,b ) c=a+b; end
Métodos Numéricos – FIE – UMSNH
Ing. Ireri Rojas – Semestre 2011‐2012 15
Para ejecutarlo basta teclear el nombre de la función con los argumentos necesarios de entrada >> suma(3,6) La estructura de un archivo de funciones se forma de la siguiente manera: Primeramente se define la función function y = suma(a,b) function es una palabra reservada de Matlab e indica que se está escribiendo una función y es el argumento de salida de la función, si la función consta de varios valores de salida, se deben especificar entre corchetes cuadrados, separados por comas. suma corresponde al nombre de la función a, b son los argumentos de entrada