guía 11 laboratorio programacion en matlab

21
INSTITUTO TECNOLÓGICO METROPOLITANO INSTITUCIÓN UNIVERSITARIA FACULTAD DE CIENCIAS GUÍA No 11 DE LABORATORIO DE MATEMATICAS POR: Juan Carlos Molina García. Fray Huber Campo S. Docentes TC ITM ELEMENTOS DE PROGRAMACIÓN CON MATLAB Una de las características más sobresalientes del Matlab, está relacionada con la capacidad que posee el programa como lenguaje de programación. El software tiene la gran ventaja de configurarse como un lenguaje de alto nivel que integra, en un único ambiente rutinas de cálculo, visualización y programación. El programa es de fácil uso ya que los problemas se pueden formular usando una notación matemática estándar. El programa dispone de sentencias o instrucciones útiles para realizar bifurcaciones y ciclos. Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una determinada condición. Por su parte, los ciclos permiten repetir las mismas instrucciones u operaciones sobre datos distintos. COMPETENCIA: Comprender y aplicar las principales estructuras de programación en Matlab para resolver problemas de aplicación en matemáticas y diseñar modelos que permitan dar solución a problemas cotidianos. INDICADORES DE LOGRO ASOCIADOS A LA COMPETENCIA Identifica los diferentes ciclos y estructuras de datos básicas que permiten realizar programas en Matlab.

Upload: johngomez

Post on 09-Jun-2015

4.623 views

Category:

Documents


7 download

TRANSCRIPT

INSTITUTO TECNOLÓGICO METROPOLITANOINSTITUCIÓN UNIVERSITARIA

FACULTAD DE CIENCIAS

GUÍA No 11 DE LABORATORIO DE MATEMATICAS

POR: Juan Carlos Molina García. Fray Huber Campo S.

Docentes TC ITM

ELEMENTOS DE PROGRAMACIÓN CON MATLAB

Una de las características más sobresalientes del Matlab, está relacionada con la capacidad que posee el programa como lenguaje de programación. El software tiene la gran ventaja de configurarse como un lenguaje de alto nivel que integra, en un único ambiente rutinas de cálculo, visualización y programación. El programa es de fácil uso ya que los problemas se pueden formular usando una notación matemática estándar.

El programa dispone de sentencias o instrucciones útiles para realizar bifurcaciones y ciclos. Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una determinada condición. Por su parte, los ciclos permiten repetir las mismas instrucciones u operaciones sobre datos distintos.

COMPETENCIA:

Comprender y aplicar las principales estructuras de programación en Matlab para resolver problemas de aplicación en matemáticas y diseñar modelos que permitan dar solución a problemas cotidianos.

INDICADORES DE LOGRO ASOCIADOS A LA COMPETENCIA

Identifica los diferentes ciclos y estructuras de datos básicas que permiten realizar programas en Matlab.

Utiliza herramientas de programación para diseñar modelos que dan solución a problemas en los que intervienen fórmulas matemáticas.

ESTRATEGIAS ORIENTADAS AL APRENDIZAJE Y A LA CONSECUCIÓN DEL LOGRO

Interpretación de secuencias de código y algoritmos. Utilización de herramientas de programación en Matlab

RUTA DIDÁCTICA

Se centra en el análisis de algoritmos y secuencias de códigos de programación en Matlab que describen de manera estructurada los pasos lógicos que permiten dar solución a problemas prácticos en los que aplican diversos términos y conceptos matemáticos. Los ejercicios desarrollados y propuestos buscan favorecer la activación de esquemas que le permiten al estudiante de una manera dinámica la comprensión de las distintas estructuras de datos y procedimientos para la utilización del computador como una herramienta de apoyo en la solución de problemas.

RED DE CONCEPTOS:

Funciones de entrada y salida de información, instrucciones de control de secuencias: instrucción if, instrucción switch-case. Instrucciones de control de ciclos iterativos: Instrucción while, instrucción for, instrucción break.

MATERIALES PARA REALIZAR EL LABORATORIO:

Guía de laboratorio: Ayudas en Aritmética y Algebra con Matlab, Texto de programación en Matlab.

DESCRIPCION DEL LABORATORIO.

De manera general, la guía proporciona a los estudiantes la oportunidad de aproximarse al lenguaje de programación Matlab mediante la utilización de los comandos básicos para el manejo de las principales estructuras de datos de que dispone el lenguaje de programación.

PROGRAMANDO EN MATLAB

Un programa en Matlab consiste en una serie de instrucciones o sentencias que se ejecutan de manera secuencial, por tanto, una de las principales tareas al iniciar con la programación se relaciona con la identificación de las formas correctas de escritura (sintaxis) de las instrucciones. La elaboración de un programa en Matlab es un procedimiento sencillo, basta abrir un documento de texto por lo general se utiliza el mismo editor de texto incorporado en el programa. Las instrucciones se escriben tal y como se pondrían en la ventana de comandos, para luego guardar el documento o script con la extensión (.m) por ejemplo: primerprograma.m. Matlab reconoce automáticamente los archivos que tienen extensión (.m), de esta manera, si en la ventana de comandos se escribe >>primerprograma, las instrucciones almacenadas en el archivo se ejecutarán secuencialmente, una tras otra. Esta ejecución de las instrucciones o código se conoce con el nombre de flujo, y los comandos de un programa se denominan sentencias.

ACTIVIDAD Nº1:

DISEÑO DE UN SCRIPT

Se desea desarrollar un programa que obtenga gráfica y analíticamente la solución del sistema conformado por las ecuaciones y=−2x+4, y=x−5. Para esto, se procede a crear un nuevo archivo de extensión (.m) en el cual se almacenarán el conjunto de instrucciones que dan solución al ejercicio. Para esto, se oprimir File en el menú de ventanas de Matlab, luego se selecciona la opción New y M-file con lo cual se entra al editor del programa.

El paso siguiente consiste en escribir las instrucciones como se muestra en el gráfico. Finalmente se guarda el archivo con el nombre primerprograma.

Se debe tener en cuenta que el código o mensaje que aparece luego del símbolo % se toman como comentarios en Matlab y no tienen ningún efecto al correr el programa, sin embargo, estos mensajes son muy importantes a la hora de documentar la aplicación para guiar a cualquier lector sobre su funcionamiento.

Para ejecutar la aplicación, se escribe en la ventana de comandos >>primerprograma, con lo cual las instrucciones almacenadas en el archivo se ejecutarán secuencialmente, una tras otra, mostrando los siguientes resultados en la ventana de comandos.

x = 3y = -2

Simultáneamente, se abre una ventana con la gráfica de las ecuaciones así

ACTIVIDAD Nº2:

Modifica las instrucciones del script anterior, de tal manera que permita obtener, gráfica y

analíticamente la solución del sistema conformado por las ecuaciones ; .

OPERADORES LÓGICOS Y RELACIONALES

Dentro de la implementación del control de flujo, son muy útiles ciertas expresiones que permiten comparar dos variables entre sí, o una variable con un valor fijo. Tales expresiones o condiciones, denominadas expresiones lógicas, corresponden a preguntas básicas a las cuales se les puede responder afirmativa o negativamente, esto es, se cumplen o no se cumplen. Las condiciones y el manejo de las variables lógicas se da a través de los llamados operadores relacionales y lógicos. En la siguiente tabla aparecen los operadores más utilizados en la programación con Matlab.

OPERADOR DESCRIPCIÓN¿ Menor que¿ Mayor que¿ Menor o igual¿ Mayor o igual

¿=¿ Igual=¿ Diferente

Operadores relacionales en Matlab

¿ ‘y’ lógico¿ ‘o’ lógico

xor ‘o’ exclusivanegación

Operadores lógicos en Matlab

Los operadores relacionales en Matlab corresponden a: menor que (¿), menor o igual que (¿), mayor que (¿), mayor o igual que (¿), igual que (¿=¿), diferente que ( =¿). Los operadores lógicos por su

parte, se definen y simbolizan como: ‘y lógica’ ( ), ‘o lógica’ ( ), ‘negación lógica’ ( ). Los valores booleanos o lógicos de las expresiones lógicas se establecen como: (0) para falso y, (1) para verdadero. De esta manera, con las expresiones relacionales o lógicas se pueden realizar preguntas de respuesta unívoca (verdadero o falso). Una condición, como se ha indicado, sólo admite dos respuestas: verdadera o falsa. Así por ejemplo, a la pregunta ¿es x mayor o igual que y?, que en el lenguaje de Matlab se expresa x>=y, sólo caben dos respuestas posibles.

CONOCIENDO LAS PRINCIPALES ESTRUCTURAS DE PROGRAMACION…

FUNCIONES DE ENTRADA Y SALIDA DE INFORMACIÓN

Para mostrar en pantalla mensajes al usuario o valores de variables se utiliza la función disp. El siguiente ejemplo muestra su estructura básica. Para mayor información sobre la instrucción se puede digitar >>help disp en la ventana de comandos.

>>disp('MENSAJE DE SALIDA') % escribe En pantalla el texto: % MENSAJE DE SALIDA

>>disp(t) % muestra el contenido de la variable t

OBSERVACION

Para mostrar los contenidos de más de una variable, se extiende el comando a la instrucción disp([val1,val2,…])

EJEMPLO

>>x=2^7; z=sqrt(pi); disp([x,z]) 128.0000 1.7725

Para capturar valores de variables desde el teclado, se utiliza la función input. Para la siguiente instrucción por ejemplo, el sistema muestra en pantalla el mensaje y queda a la espera de que el usuario digite un valor para ser capturado en la variable r.

>>r=input('MENSAJE DIGITE UN VALOR PARA LA VARIABLE r ')

Para capturar una cadena de texto se añade a la instrucción el parámetro 's' así:

>> nombre = input('¿Cuál es tu nomnbre?','s')

Si se quiere mostrar un texto y además el valor de una o varias variable con formato, se puede utilizar la función fprintf, bajo la estructura fprintf('mensaje %formato',variable).

En el formato se puede especificar la cantidad de columnas que separan los resultados y las cifras decimales a tener en cuenta.

EJEMPLO

Con la siguiente secuencia se muestra el número contenido en el campo sup, con 4 cifras decimales, y una separación de 12 columnas. La instrucción \n, indica que, una vez ejecutada la instrucción, el cursor se posiciona en el renglón siguiente

>> sup=7654/453>> fprintf('SUPERFICIE = %12.4f\n',sup)SUPERFICIE = 16.8962

ACTIVIDAD Nº3:

Digitar las siguientes instrucciones y describir las formas de operación de los comandos y sus resultados:

>>x=(2^7)/100;>>z=sqrt(pi);

>>fprintf('%2.3f %8.4f\n',x,z)1.280 1.7725

>>v1=54321;>>fprintf('el resultado es %3i\n',v1)el resultado es 54321

>>v3='Salida Matlab';>>fprintf('el resultado es %s',v3)el resultado es Salida Matlab>>

>>v4='X';>>fprintf('\n el resultado es %c\n',v4)el resultado es X

>>x = 3;>>fprintf('LA RAÍZ CUADRADA DE %g ES %8.6f\n',x,sqrt(x))LA RAÍZ CUADRADA DE 3 ES 1.732051

>>x = 1:4;>>y = sqrt(x);>>fprintf('%9.4f\n',y) 1.0000 1.4142 1.7321 2.0000

ACTIVIDAD Nº4:

1. Desarrolle una secuencia de instrucciones que pida una temperatura en grados Celsius y la convierta a grados Fahrenheit mostrando en pantalla un mensaje del tipoxxx.xx grados Celsius son yyy.yy grados Fahrenheit

2. Escribir un programa que lea el valor de un ángulo en radianes y muestre su valor en grados, minutos y segundos

INSTRUCCIONES DE CONTROL DE SECUENCIAS

INSTRUCCIÓN if:

Se utiliza para chequear una determinada condición, simple o compuesta, permitiendo la ejecución de cierto bloque de instrucciones de a cuerdo a la validez de la condición.

SINTAXIS INSTRUCCIÓN IF, FORMA SIMPLE

if (condición) instrucciones end

EJEMPLO

Las siguientes instrucciones permiten el cálculo de una raíz cuadrada siempre que el valor sea positivo.

If x>0 r=sqrt(x); end

La instrucción if permite también ramificaciones, es decir, dependiendo de la validez de una condición el programa decide su curso

SINTAXIS GENERAL DE LA INSTRUCCIÓN IF

if (condición 1) instrucciones 1 elseif(condición 2) instrucciones 2 elseif (condición 3)

instrucciones 3else %opción por defecto para cuando no se cumplan las

%condiciones 1,2,3. Si se omite el programa sigue %su ejecución sin presentar problemas

instruccionesend

EJEMPLO

La siguiente secuencia de código permite comparar respecto al número 7, cualquier número digitado por un suario.

i=input('Escribe un numero cualquiera ');

if i>7

disp('El número digitado es mayor que 7') elseif i==7 disp('El número es igual a 7') else disp('El número es menor que 7') end

INSTRUCCIÓN switch - case:

Se utiliza para chequear si una expresion es igual a algún valor predeterminado. Se aplica para ejecutar una determinada secuencia de instrucciones dependiendo del valor de la expresión. Cada valor puede ser numérico o una cadena de texto. De igual forma, cada case puede tener uno o, mas valores.

SINTAXIS DE LA INSTRUCCION SWITCH - CASEswitch (expresion) case {valor 1} instrucciones 1 case {valor 2} instrucciones 2 case {valor 3} instrucciones 3

.

.

.otherwise

instruccionesend

EJEMPLO

La siguiente secuencia de código permite comparar respecto al número 7, cualquier número entre 1 y 10 digitado por un usuario.

num=input('Escribe un numero cualquiera entre 1 y 10');

switch num case {1,2,3,4,5,6} disp('El número es menor que 7') case {7} disp('El número es igual a 7')

case {8,9,10} disp('El número es mayor que 7')otherwise disp('El número está por fuera del rango specificado')end

ACTIVIDAD Nº5

1. Crear un programa que calcule la caída de potencial producida por una resistencia según la ley de Ohm V=IR a partir de la resistencia y la intensidad de corriente. El programa no debe aceptar resistencias negativas, dado que no tienen sentido físico, ni resistencias mayores que 100Ω por requerimiento adicional del problema. En ambos casos el programa debe escribir un mensaje de error en pantalla diciendo que el valor de la resistencia está fuera de límites aceptables indicando la causa por la que dicho valor para la resistencia ha sido rechazado.

2. Leer desde el teclado las coordenadas (x,y) de un punto. Mediante un menú, el usuario debe tener la opción de elegir una de las siguientes opciones:

Comprobar si el punto pertenece a una circunferencia de radio 8 y centro en (0,0). Averiguar el cuadrante en el que se encuentra el punto. Cambiar el punto (x, y) de coordenadas cartesianas a polares.

INSTRUCCIONES DE CONTROL DE CICLOS ITERATIVOS

Estas instrucciones se utilizan para especificar que una acción o conjunto de acciones van a ser ejecutadas en forma repetitiva. Para ver las ayudas que ofrece Matlab para el manejo de estructuras de programación, se procede a digitar >>help lang

INSTRUCCIÓN while

La instrucción consta de un bloque o conjunto de instrucciones y de una condición de terminación de ejecución del bloque de instrucciones. De esta manera, el bloque de instrucciones se ejecuta mientras la condición sea verdadera.

SINTAXIS DE LA INSTRUCCION WHILE

while (condición) instrucciones end

EJEMPLO

Las siguientes instrucciones calculan el volumen de una esfera de radio entero, de r=1 hasta r=4

r=0;while r<4 r=r+1; vol=(4/3)*pi*r^3; fprintf('El radio es %g y el volumen es %g.\n',r,vol)end

Al ejecutar la secuencia de comandos se obtiene el siguiente resultado

El radio es 1 y el volumen es 4.18879.El radio es 2 y el volumen es 33.5103.El radio es 3 y el volumen es 113.097.El radio es 4 y el volumen es 268.083.

EJEMPLO

La siguiente secuencia de instrucciones permiten calcular el área de una circunferencia de acuerdo a un valor del radio digitado por el usuario. La ejecución del bloque termina cuando se digita un valor para el radio de cero o negativo:

r=input('Digite el radio o cero para terminar ');while r > 0 sup=pi*r^2; fprintf('Area del círculo = %.2f\n',sup) r=input('Digite un nuevo radio o cero para terminar ');end

EJEMPLO

La siguiente secuencia de comandos permite hallar el menor número natural cuyo factorial está por encima del valor dado por el usuario:

clcn=input('Digite un valor n entero positivo \n')k=1;while factorial(k)<nk=k+1;endfprintf('Primer natural con factorial superior a %g es %.0f\n',n,k)

EJEMPLO

Considere la serie armónica ∑n=1

∞1n

. La suma de los n primeros términos de esta serie se pueden

obtener del siguiente conjunto de instrucciones:

n=input(' cantidad de términos ');s=0;while n>0 s=s+1/n; n=n-1;enddisp(s);

INSTRUCCIÓN for

La instrucción consta de dos partes, un bloque de instrucciones que se ejecutan iterativamente y de una condición de terminación de la ejecución de dicho bloque. De esta manera, la instrucción repite un número predeterminado de veces el conjunto de instrucciones

SINTAXIS DE LA INSTRUCCION FOR

for variable=valor_inicial:incremento:valor_final instruccionesend

O también,

for i=vectorValores instruccionesend

EJEMPLO

El siguiente código genera las seis primeras potencias pares de 3, iniciando con 30

for k = 0 : 2 : 10 disp(3^k)end

EJEMPLO

El ejemplo anterior se puede ampliar a más valores de 3i , permitiendo que el usuario ingrese la mayor potencia i a calcular

clcp=input('Ingrese un valor entero positivo y par \n '); for i = 0:2:p fprintf('potencia para i = %.0f',i); disp(3^i);end

Al ejecutar las instrucciones para un valor entero igual a cuatro, se obtiene el siguiente resultado

potencia para i = 0 1potencia para i = 2 9potencia para i = 4 81

EJEMPLO

Con la siguiente secuencia se obtiene la suma de los n primeros términos de la serie armónica ∑n=1

∞1n

. Esto se realizará utilizando el ciclo for.

clcn=input('cantidad de términos n= ');s=0;for i=1:n s=s+1/i; enddisp(s);

INSTRUCCIÓN break:

Este comando termina la ejecución de un bloque de instrucciones

EJEMPLO:

La siguiente secuencia de comandos permite obtener el área de la circunferencia de radio r especificado por el usuario. La ejecución del bloque de instrucciones termina cuando se ingresa un valor del radio cero o negativo

while 1 r=input('Ingrese valor del radio [o cero para terminar] '); if r <= 0; break; end; sup=pi*r^2; fprintf('Area Circunferencia = %.2f\n',sup)end

EJEMPLO

Calcular y mostrar la raíz cuadrada de una serie de n valores ingresados por el usuario. Si se digita un valor negativo, muestra un mensaje de error y termina la ejecución de la secuencia.

clcn=input('cantidad de cálculos n= ');for i=1:nx=input('ingresar número para calcular su raíz ');

if x<0disp('Error');break;

elser=sqrt(x);disp([x,r])

end

end

Para detener la ejecución de un programa en algún momento de su estructura, se utiliza el comando pause(n), donde n es el número de segundos de la pausa. Si se digita el comando pause únicamente, el programa se detiene hasta que el usuario oprima cualquier tecla. Así mismo, con la instrucción error se detiene la ejecución del programa. Por ejemplo al incluir la instrucción error(‘Tenga cuidado’), en una secuencia, el sistema muestra el mensaje ??? Tenga cuidado y se detiene la ejecución del programa.

ACTIVIDAD Nº6

Explica los resultados de las siguientes secuencias:

A.for n=1:10x(n)=sin(n*pi/10);disp(n)disp(x)pause end

B.clcfor x = 0:pi/15:pifprintf('%8.2f %8.5f\n',x,sin(x));end

C.for n=1:5 for m=5:-1:1 a(n,m)=n+m; endenddisp(a)

D.suma=0;n=1;while (suma)<=100suma=suma+n;n=n+1;disp(suma)end

ACTIVIDAD Nº7

1. Escribir un programa que pida una cantidad en dólares y la convierta en pesos, solicitando primero cuántos pesos equivalen a un dólar.

2. Escribir un programa que pida una hora en segundos y la saque por pantalla en el formato horas, minutos y segundos así: “hh:mm:ss”.

3. Escribir un programa para calcular el promedio de una lista de números positivos; la secuencia de ingreso de los números termina cuando el usuario digite un número negativo. Anexe las instrucciones necesarias para conocer cuántos de los números digitados están por debajo de 50 y cuántos son mayores o iguales que 50.

4. Escribir un programa que lea una lista de números y determine cuantos son positivos, y cuántos son negativos.

5. Escribir un programa que tome un número entero al azar entre el 0 y el 9, y le pregunte un número al usuario hasta que acierte.

6. Eescribir un programa que lea diez números, los guarde en un vector y a continuación los imprima en orden inverso al de su entrada

7. Escribir un programa que permita jugar a doble o nada: El jugador apuesta una cantidad y tira una moneda. Si sale cara obtiene el doble de la cantidad apostada. Si sale cruz la pierde todo. (Modificar el programa del juego de doble o nada para que permita ir jugando hasta que el jugador decida abandonar el juego. El programa debe sacar por pantalla el número de jugadas y el total ganado por el jugador (si ha perdido debe ser una cantidad negativa).

8. Desarrolle una secuencia de instrucciones en Matlab que simule la caída de un objeto desde la parte más alta de un edificio de H metros de altura (donde H se pide por teclado). El programa debe mostrar cada 0.1 segundos la altura de la pelota y su velocidad, esto es, mostrar para cada instante de tiempo (cada 0.1 segundos) una línea de salida de información así:

t=xx.x seg --distancia al suelo = xx.xx mts -- velocidad = xx.xx m/s

9. Escribir un programa que realice la descomposición en factores primos de un número n introducido por teclado. El programa debe escribir la tabla de los factores primos a medida que los va calculando, tal como muestra el ejemplo siguiente para n=126:

Nº | Factores primos-- | ---------------126| 263 | 321 | 37 | 71 |

10.Realice un programa en Matlab que calcule la siguiente sumatoria:

∑n=1

N (−1 )n−1

n2π2 cos (nπx )

Donde N es un número entero positivo introducido por teclado.

CONCLUSIONES GENERALES DEL DESARROLLO DE LA GUIA.________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

BIBLIOGRAFIA.

ALVAREZ R. Yolanda y DIAZ L. Gloria M. Funciones reales con MatLab. Serie Textos Académicos Instituto Tecnológico Metropolitano. 2007.

ARBOLEDA Q. Dairon. ALVAREZ J. Rafael. MatLab Aplicaciones a las matemáticas básicas. Sello Editorial Universidad de Medellín. 2006.

BAEZ L..David. Matlab con aplicaciones a la ingeniería, física y finanzas. Alfaomega. 2006

MATLAB. Edición del estudiante, Guía de Usuario. The Math-Works, inc., Prentice Hall

MATLAB Desktop tools and development environment, Version 7, The mathworks, Inc, 2004

MATLAB. Edición del estudiante, Guía de Usuario. The Math-Works, inc., Prentice Hall

MOLINA G. Juan y NASPIRAN H Luis E. Iintroducción al cálculo de varias variables con elementos de programación en Matlab. Serie Textos Académicos Instituto Tecnológico Metropolitano. (Texto en edición 2009).

PEREZ L. Cesar. Matlab y sus aplicaciones en las ciencias y la ingeniería. Prentice Hall

PRATAP Rudra. Getting Started With MatLab 7. New York- Oxford University Press. 2006.

ELABORADO POR:

Juan Carlos Molina García Docente Auxiliar TC. [email protected]: 440 52 90

Fray Huber Campo S Docente Ocasional TC. [email protected]: 440 52 91