You are on page 1of 14

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(DECANA DE AMERICA)

FACULTAD DE INGENIERIA GEOLÓGICA, MINERA, METALÚRGICA Y


GEOGRÁFICA

ESCUELA ACADEMICO PROFESIONAL DE INGENIERIA DE MINAS

INTRODUCCIÓN A LA PROGRAMACIÓN AL MATLAB


CURSO : MÉTODOS NUMÉRICOS

PROFESOR : Dr. OSWALDO ORTIZ

ALUMNO : MARCOS ABAL YACSAYAURI

CODIGO : 15160216

LIMA – PERU

2018
INDICE

Introduccion a la programacion al MATLAB


1. Archivos de commando pag 2
2. Funciones pag 4
3. Comentarios pag 7
4. Valores operadores y expresiones booleanas pag 9
5. Estructuras de control
5.1 Bifurcaciones pag 10
5.2 Multifurcacion pag 11
5.3 Estructura For pag 12
5.4 Estructura while pag 13
Introducción a la Programación en MATLAB

La programación en MATLAB se realiza básicamente sobre archivos M, o


M-Files. Se los denomina de esta forma debido a su extensión “.m”.
Estos archivos son simple archivos ASCII o scripts, y Como tales, pueden
ser creados y modificados desde cualquier editor de texto común; por
ejemplo, el Bloc de Notas. El MatLab incluye un editor de archivos M,
orientado a la programación sobre este software. Si se opta por otro
editor, se debe vigilar siempre que los archivos escritos se guarden con
esta extensión.
De acuerdo a Como se definan, estos archivos pueden separarse en dos
tipos:
1. Archivos de comandos.
2. Funciones.

1. Archivos de Comandos

Los archivos de comandos son simplemente archivos M que contienen


instrucciones del MATLAB. Una vez editados, se los guarda con un
nombre en algún directorio que se encuentre dentro del path de búsqueda
del MATLAB.
Por defecto, la carpeta de trabajo es el directorio work, que se encuentra
dentro de la carpeta de instalación del MATLAB. Para cambiar este
directorio o carpeta de trabajo, así como agregar nuevas carpetas de
biblioteca, se debe usar el Path Browser, o el Set Path. El primero se
encuentra en el editor de archivos M que trae el MATLAB incluido. Para
convocar los archivos M escritos, solo se debe escribir el nombre del
archivo guardado en la ventana de comandos, y las instrucciones que
hayan sido escritas serán ejecutadas.
Aquí se debe notar algo importante; todas las variables que se hayan
definido o creado dentro de este archivo, luego de su ejecución, pasarán a
formar parte de nuestro Espacio de Trabajo, o Workspace. Se debe tratar
de que las variables del workspace no coincidan con las que aparecen en
los archivos M que se han de ejecutar.

Ejemplo: Se utilizará el ya clásico “Hola Mundo”. Primeramente, abrimos


un documento de texto, ya sea desde el editor de archivos M que incluye
el MATLAB, o desde cualquier otro que nos permita editar ASCII. En él,
escribimos la siguiente línea, tal como lo muestra la figura 1.
disp(‘Hola Mundo’)

La función disp muestra en la ventana de comandos el string que se le


envía como parámetro.
Guardamos ahora el documento como Saludar.m, o el nombre que se
desee, con su extensión .m.

Figura 1. Primer programa.


Ahora, ingrese el nombre del archivo guardado en la ventana de
comandos, sin la extensión .m esta vez. Para el ejemplo de arriba:

>>Saludar
Hola
Mundo

Este es un ejemplo bastante simple y claro de que es lo que hace un


archivo de comandos cuando es llamado. Ahora vamos a ver que sucede
cuando se definen variables dentro de éstos.

Ejemplo: Suponemos ahora que tenemos los valores 5 y 3, los dos


almacenados en las variables a y b respectivamente. Definimos ahora un
archivo de comandos que intercambie los valores de esas variables.
Escribimos sobre un archivo nuevo lo que se leen en la figura 2, y lo
guardamos con el nombre de Intercambiar.m.

Figura 2. Ejemplo de archivo de comandos con creación de variables.


Al llamarlo en la ventana de comandos obtendremos:

Figura 3. Ejecución del archivo M.


Puede verse ahora que las variables que se habían definido durante esta
ejecución, a y b, forman ahora parte de nuestro workspace; es decir,
forman parte de nuestro conjunto de variables que tenemos definidas en la
ventana de comandos. Esto puede verse al escribir a o b:

Figura 4. Variables definidas dentro de la ventana de comandos.

2. Funciones

Una función es un archivo M similar al archivo M de comandos, con una


diferencia en su definición. La primera línea de una función posee la
siguiente estructura:

function[argumentos_salida] = nombre(argumentos_entrada)
 Nombre corresponde al nombre de la función.
 Argumentos_salida representa una lista de elementos o variables de
retorno de la función. El valor de cada uno de los elementos de salida
varía a medida que se ejecuta el algoritmo. Los valores devueltos por
la función convocada serán los valores que se encuentren en
argumentos_salida en el momento en que termina la ejecución de la
función. La definición de esta salida es opcional; de no aparecer, la
función se convertiría en un procedimiento, puesto que no devuelve
nada; sólo acepta parámetros y ejecuta el algoritmo dado.
 Argumentos_entrada son los parámetros que recibe la función para
poder realizar su procesamiento. Estos argumentos, durante de la
ejecución, son parámetros recibidos por valor (By value); es decir, se
hacen duplicados de los parámetros, y es en éstos sobre los cuales
se realizan todas las modificaciones.
Contrario a los archivos M de comandos, todas las variables que se
definan dentro del cuerpo o definición de la función, si la función es
convocada desde la ventana de comandos, no pasarán a formar parte de
nuestro workspace.

IMPORTANTE
El nombre de la función debe coincidir con el nombre de archivo M con el cual se la
guarda. De no hacer esto, podrían existir errores de directorio y/o de ejecución.

Dentro del cuerpo de la función, uno puede “salir” de la función mediante


el comando return. Este comando detiene la ejecución del programa, y
devuelve el valor actual de las variables de salida a la función,
procedimiento o rutina que lo convocó.

Ejemplo: Vamos a crear una función que obtenga el conjunto solución


para un sistema de ecuaciones lineales compatible determinado,
haciendo uso de una matriz A de coeficientes, y un vector dado B de
términos independientes; es decir, obtendremos un X0 tal que AX0 = B.
Dicho vector X0 será devuelto por la función que se escribe en un archivo
M.
Para esto, se hará uso de la función predefinida rref, la cuál obtiene una
matriz de escalones reducida.
Nuestra función ha de recibir dos parámetros, A y B. por lo tanto éstos se
convertirán en los argumentos de la función, quedando como se ve en la
figura 5.
Figura 5.
Ejemplo de
definición de
una función.
Como puede verse, esta función siempre devuelve una “solución”, la cuál
puede no ser correcta si estamos ante un sistema incompatible.
Tampoco se consideran casos de indeterminabilidad.
Además, y este es tal vez el error más grande, no se toma en cuenta el
hecho de que la matriz A puede no ser ampliable con el vector de
términos independientes B.
Con estas consideraciones, se puede concluir que este programa no es
útil, o no está completo.

Consigna:
 Ejecutar el algoritmo con otras matrices y vectores de términos
independientes.
 Investigar sobre el funcionamiento de la instrucción size.
 Realizar algunos casos de prueba con sistemas de ecuaciones
incompatibles e indeterminados.

3. Comentarios

Una de las herramientas más útiles para los programadores son los
comentarios. Mediante éstos, se puede hacer más legible el código
fuente, estructurado y mantenible. Los comentarios se introducen con el
símbolo “%”; cuando este símbolo aparece, todo lo que sigue a partir de
él hasta el final de la línea se considera como un comentario. Todo lo
que sea un comentario dentro de un programa, es simplemente ignorado
por el intérprete.
Además de las utilidades antes mencionadas, los comentarios en MatLab
se usan para crear el archivo Help de una función.
El archivo Help de una función es una especie de “Léeme” que indica el
funcionamiento básico de la función, así como su definición y los
argumentos que puede recibir.
Para definir un archivo Help, o simplemente Help, de una función o un
archivo de comandos, se escribe como comentario todo lo que se quiere
que este Help contenga, justo después de la definición de la función, para
el caso de los archivos de función; o al inicio del archivo, en los archivos
de comandos. El final del Help de un archivo se marca con una
separación mediante una línea en blanco.

Ejemplo: Vamos a modificar el programa antes escrito, e introduciremos


un Help que indique que es lo que el programa hace, y cuál es la forma
correcta de ser convocado.
En la figura 6 puede verse como en la línea 7 se encuentra la separación
antes mencionada (línea en blanco), la cuál establece el final del archivo
Help de Solución.m.

Figura 6. Uso de los comentarios para crear el Help para un archivo M.

Consigna:
 Convocar al archivo Help de la función modificada y extraer
conclusiones sobre su funcionamiento.
4. Valores, Operadores y Expresiones Booleanas

Las valores booleanos, en general, sólo pueden tomar dos valores:


Verdadero o Falso (True y False en los lenguajes de programación).
MatLab no maneja los valores True y False para este tipo de expresiones,
sino que representa a True con un 1, y a False con un 0.
Los operadores de comparación son operadores que devuelven un valor
booleano. Estos operadores se listan a continuación:
 <: Menor que
 >: Mayor que
 <=: Menor o igual que
 >=: Mayor o igual que
 ~=: Distinto que
==: Igual que

Existen también los operadores que trabajan directamente sobre los


valores booleanos, para devolver otro valor booleano. Estos se conocen
como operadores booleanos, y aparecen a continuación:
 &: ‘y’ lógico (And)
 |: ‘ó’ lógico (Or)
 ~: ‘no’ lógico (Not)

Consigna:
 En la Command Window del MatLab escribir las siguientes líneas y
sacar conclusiones:
1. 23==23
2. 51~=51
3. 0&1
4. ~0

Las expresiones booleanas son expresiones cuyo resultado es un valor


booleano. De esto puede deducirse que en una expresión booleana
intervienen operadores booleanos y de comparación.

Consigna:
 En la ventana de comandos escribir las siguientes sentencias y
extraer conclusiones:
1. (23>25)|(23<25)
2. (23>22)&(23<25)
3. (29==71)|1
4. (29<71)|((31==30)&(25==26))
5. ((29<71)|(31==30))&(25==26)
 Explicar la diferencia entre el punto 4 y el punto 5.
 Investigar o desarrollar otra forma realizar las operaciones booleanas,
definiendo mediante el anillo de las clases residuales módulo 2.
5. Estructuras de control

5.1 Bifuracciones

La estructura básica para la bifurcación es el if…then…else…end. En MatLab,


se escribe

if <condición>
<acciones a realizar por respuesta afirmativa>
else
<acciones a realizar por respuesta negativa>
end

En donde <condición> es un valor, expresión, o función booleana.

Una forma de ampliar esta estructura es haciendo uso del elseif. Esta
palabra permite hacer varias evaluaciones, y, por lo tanto, obtener más
de dos posibles alternativas.
Abajo se muestra la sintaxis para el uso del elseif.

if <condición 1>
<acciones a realizar para condición 1>
elseif <condición 2>
<acciones a realizar para condición 2>
else
<acciones a realizar si ninguna condición se cumple>
end

Ejemplo:
Vamos a continuar mejorando la función “solución” planteada haciendo
uso de los comandos if... then…else…end.
Puede verse claramente que en la función nunca se controla el hecho de
que la matriz A tenga la misma cantidad de filas que el vector de términos
independientes B; por lo tanto agregamos un pequeño control que
monitoree que se cumpla esta condición.
Además, tenemos que vigilar que el sistema sea compatible determinado para
obtener la solución correcta.
Luego, pediremos que el rango de la matriz A coincida con el rango de la
ampliada, así como con el número de incógnitas.
Estas modificaciones sobre la función pueden apreciarse en la figura 5.

Consigna:
 Ejecutar la función con la nueva modificación desde la ventana de
comandos para valores válidos e inválidos de matrices A y B. Extraer
conclusiones:
1. ¿Qué devuelve el programa al ingresar dos matrices con el mismo
número de filas?
2. ¿Qué devuelve el programa el ingresar dos matrices con distinto
número de filas?
3. ¿Qué devuelve el programa al ingresar una matriz de coeficientes
correspondiente a un sistema de ecuaciones incompatible?
4. ¿Qué respuesta se obtiene ante un sistema que admite infinitas
soluciones?
5. ¿Cómo funciona el comando size dentro del programa?
6. ¿Cómo funciona el comando error dentro del programa?

Figura 7. Función “Solución” con el control implementado

5.2 Multifurcación (Switch)

La sentencia switch se usa para crear una estructura Case de control


como la que se muestra en la figura 6.
Esta estructura puede entenderse como varios elseif anidados, con la
diferencia de que en la estructura case no se controlan expresiones
booleanas, sino valores de una determinada expresión.
Para llevar este esquema a MatLab, se utiliza la siguiente sintaxis:

switch <Expresión a
evaluar> case <Valor 1>
<Sentencias 1>
case <Valor 2>
<Sentencias 2>
case <…>
<…>
case <Valor N>
<Sentencias N>
otherwise
<Sentencias en otro caso>
end

5.3 Estructura For

En MatLab, la forma universal de la estructura for es:

for <Variable> = <Arreglo de elementos>


<Sentencias>
end

La variable tomará el valor de cada columna y ejecutará las sentencias


definidas, hasta llegar al final del arreglo.
En los casos particulares para los cuales será usada esta instrucción, el
arreglo de elementos no es más que un vector de una fila y N columnas;
por lo tanto, la variable sólo tomará valores escalares, como en el
ejemplo de código que sigue:

for i=1:N
<Sentencias>
end
Aquí, el arreglo, o vector, está dado por 1:N, es decir, una matriz de la forma
[1, 2, 3,…, N].

Ejemplo:
A continuación se presenta un pequeño ejemplo del uso de esta
instrucción. El algoritmo busca un elemento dentro de un vector que
recibe como parámetro.
Para este sencillo algoritmo no se consideraron todos los posibles casos,
sino que se lo presenta más bien a modo de ilustración del
funcionamiento del comando For.
En la figura 9 aparece el programa, con su correspondiente Help, y
algunos comentarios que explican algunas variables.

Figura 9. Función “Buscar”.

5.4 Estructura While

Para definir una estructura While…Do…se usa la siguiente sintaxis:

while <Condición>
<Sentencias
>
end

You might also like