lenguaje programacion matlab

99
UNIVERSIDAD NACIONAL DEL CENTRO DEL PERÚ F F A A C C U U L L T T A A D D D D E E I I N N G G E E N N I I E E R R Í Í A A Q Q U U Í Í M M I I C C A A TEXTO UNIVERSITARIO LENGUAJE DE PROGRAMACION ING. HELMER LOPEZ GUTIERREZ HUANCAYO PERU

Upload: john-e-cutipa-l

Post on 11-Aug-2015

104 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: lenguaje programacion matlab

UNIVERSIDAD NACIONAL DEL CENTRO DEL PERÚ

FFFAAACCCUUULLLTTTAAADDD DDDEEE IIINNNGGGEEENNNIIIEEERRRÍÍÍAAA QQQUUUÍÍÍMMMIIICCCAAA

TTEEXXTTOO UUNNIIVVEERRSSIITTAARRIIOO

LLEENNGGUUAAJJEE DDEE PPRROOGGRRAAMMAACCIIOONN

IINNGG.. HHEELLMMEERR LLOOPPEEZZ GGUUTTIIEERRRREEZZ

HHUUAANNCCAAYYOO –– PPEERRUU

Page 2: lenguaje programacion matlab

2

DEDICATORIA

El presente texto lo dedicamos a nuestros estudiantes, quienes son el motivo de nuestra existencia en la UNCP.

Page 3: lenguaje programacion matlab

3

PRESENTACION

En los momentos actuales en que la información es muy importante para la toma de

decisiones, el uso de las las herramientas de la informática se hace imperativamente

necesaria, concientes de esa realidad en la Universidad nos mantenemos vigilantes de las

nuevas tendencias de la informática.

El presente manual pretende ser una pequeña guía para iniciarse dentro del fabuloso

mundo de la programación como herramienta para los diferentes trabajos de investigación

y aplicación para la búsqueda de soluciones.

Este texto proporciona información para que el estudiante una base introductoria a la

informática, algoritmos y diagramas de flujo, el programa MATLAB, como una poderosa

herramienta de cálculo, simulación y modelado matemático, muy utilizada por estudiantes,

ingenieros y científicos, en universidades, institutos de investigación e industrias, en todo el

mundo, y muy fácil de usar.

MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado

orientado para llevar a cabo proyectos en donde se encuentren implicados elevados

cálculos matemáticos y la visualización gráfica de los mismos.

El lenguaje flexible e interactivo de MATLAB permite a ingenieros y científicos expresar sus

ideas técnicas con simplicidad. Los poderosos y amplios métodos de cómputo numérico y

graficación permiten la prueba y exploración de ideas alternativas con facilidad, mientras

que el ambiente de desarrollo integrado facilita producir resultados prácticos fácilmente.

Page 4: lenguaje programacion matlab

4

INDICE

Presentación

Indice

Introducción

pág.

CAPITULO I

Introducción a la Computación 5

CAPITULO II

Algoritmos y Diagramas de Flujo 21

CAPITULO III

Operaciones Matemática con MATLAB 34

CAPITULO IV

Gráficas con MATLAB 55

CAPITULO V

Programación en Matlab 65

If … end 69

For … end 70

While … end 72

Bibliografía 98

Page 5: lenguaje programacion matlab

5

CAPITULO I

INTRODUCCION A LA COMPUTACIÓN

OBJETIVOS: Dar a conocer al estudiate la configuración de parte física y lógica de un

sistema de computo y el entorno en el cual se va trabajar

CONTENIDOS: hardware y Software de un sistema de cómputo.

CCOOMMPPUUTTAADDOORRAA UU OORRDDEENNAADDOORR

Existen numerosas definiciones de una computadora, entre ellas las siguientes:

1) Una computadora es un dispositivo capaz de realizar cálculos y tomar decisiones lógicas

a velocidades hasta miles de millones de veces más rápidas que las alcanzables por los

seres humanos.

2) Un ordenador es una máquina capaz de aceptar datos a través de un medio de entrada,

procesarlos automáticamente bajo el control de un programa previamente almacenado,

y proporcionar la información resultante a través de un medio de salida.

3) Una computadora es cualquier dispositivo en el que la información se representa en

forma numérica y que, mediante el recuento, comparación y manipulación de estos

números (de acuerdo con un conjunto de instrucciones almacenadas en su memoria),

puede realizar una multitud de tareas: Realizar complejos cálculos matemáticos,

reproducir una melodía, etc.

4) Una computadora es un dispositivo electrónico capaz de recibir un conjunto de

instrucciones y ejecutarlas realizando cálculos sobre los datos numéricos.

CCOOMMPPOONNEENNTTEESS DDEE UUNNAA CCOOMMPPUUTTAADDOORRAA

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El

Hardware y el Software.

Hardware

Llamamos Hardware a la parte física de la computadora; corresponde a las partes que

podamos percibir con el sentido del tacto. En español la traducción más cercana es la de

Page 6: lenguaje programacion matlab

6

“soporte físico”. El hardware que compone a una computadora es muy complejo, pues una

pequeña pieza puede contener millones de transistores.

Software

Para que el ordenador trabaje se necesita que le suministren una serie de instrucciones

que le indiquen qué es lo que queremos que haga. Estas órdenes se le suministran por

medio de programas. El software está compuesto por todos aquellos programas necesarios

para que el ordenador funcione apropiadamente. El software dirige de forma adecuada a

los elementos físicos o hardware.

LLAASS PPAARRTTEESS DDEELL HHAARRDDWWAARREE

El Hardware esta compuesto por cinco unidades o secciones básicas: Entrada, Salida,

CPU, Memoria y Almacenamiento Secundario. Estas unidades se describen a

continuación:

UUnniiddaaddeess ddee EEnnttrraaddaa yy SSaalliiddaa

Es la parte del ordenador que le sirve para comunicarse con el exterior; es decir, para

recibir y emitir información. A las unidades de entrada y salida se le conoce también como

periféricos:

El monitor nos muestra la información.

El Teclado y el Mouse sirven para introducir los datos a la computadora. El lector de CD-ROM sirve para leer la información almacenada

en un CD.

Mediante la impresora se obtiene una versión en

papel de la información procesada por la

computadora.

Page 7: lenguaje programacion matlab

7

Los parlantes sirven para escuchar los sonidos que emite la computadora a través de una

tarjeta de sonido.

UUnniiddaadd CCeennttrraall ddee PPrroocceessaammiieennttoo ((CCPPUU))

La unidad central de proceso o CPU es la parte más importante de un ordenador. Esta

unidad se encarga de realizar las tareas fundamentales y es por ello el elemento principal

de un sistema computarizado. Si hacemos un símil entre un ordenador y el cuerpo humano,

la CPU haría el papel del cerebro: atender las solicitudes, mandar y hacer controlar la

ejecución.

Un microprocesador es un circuito integrado o chip que contiene

a la CPU. Su tamaño es algo menor que el de una caja de

cerillos.

La unidad central de procesamiento se divide en dos partes: una

parte en la en la que se realizan las operaciones aritméticas y

lógicas (unidad aritmético-lógica) y otra parte que controla todo

los proceso de ejecución (unidad de control) en la computadora.

La unidad de control dirige todas las actividades del ordenador. Actúa como el corazón

del sistema, enviando impulsos eléctricos (señales de control) para secuenciar (poner en

orden) y sincronizar (establecer tiempos sucesivos de ejecución) el funcionamiento de los

componentes restantes.

UUnniiddaadd ddee MMeemmoorriiaa La Memoria Principal o Memoria Central es el dispositivo que sirve para almacenar los

programas (instrucciones) que se quieran ejecutar (cuando haya que cargar el programa) y

para almacenar los datos, los cálculos intermedios y los resultados (cuando el programa ya

se esté ejecutando). Sólo los datos almacenados en la memoria son procesables por la

CPU. Los datos que estén contenidos en algún dispositivo de almacenamiento externo

deben ser previamente introducidos a la memoria, por medio de una unidad periférica.

Dentro de la memoria principal, existen dos divisiones en función de las posibilidades de

lectura/escritura o solamente lectura: RAM y ROM.

Memoria RAM (Random Access Memory) Es la memoria destinada a contener los programas

cambiantes del usuario y los datos que se vayan

Page 8: lenguaje programacion matlab

8

necesitando durante la ejecución de dichos programas. Es la memoria flexible y reutilizable.

La memoria RAM se llama también memoria de usuario, por ser la memoria con la que

trabaja el sistema para ejecutar los programas. Cuando se hace referencia a la capacidad

de memoria de un ordenador se está hablando de la memoria RAM del sistema.

Memoria ROM (Read Only Memory)

Memoria de solo lectura, llamada también memoria

residente o permanente. Son memorias que sólo permiten la

lectura y no pueden ser re-escritas. Su contenido viene

grabado por el fabricante de la computadora y no puede ser

cambiado. Debido a estas características es que esta

memoria se usa para almacenar información vital para el funcionamiento del sistema. La

gestión del proceso de arranque, la verificación inicial del sistema, la carga del sistema

operativo y diversas rutinas de control de dispositivos de entrada/salida suelen ser las

tareas encargadas a los programas grabados en ROM. Los programas que constituyen la

información vital de una computadora forman la llamada BIOS (Basic Input Output System).

UUnniiddaadd ddee AAllmmaacceennaammiieennttoo SSeeccuunnddaarriioo

Esta es el almacén de largo plazo y de alta capacidad de la

computadora. Los programas y datos que no están siendo utilizados por

las otras unidades normalmente se colocan en dispositivos de

almacenamiento secundario hasta que necesiten, posiblemente horas,

días, meses o incluso años después. Ejemplo: Disco duro.

EELL SSOOFFTTWWAARREE

El ordenador, por sí mismo, no puede realizar ninguna función; es necesario que algo le

dirija y organice. Este "algo" son las instrucciones que el programador escribe. Estas

instrucciones, agrupadas en forma de programas que son depositados en la memoria del

ordenador, forman lo que se denomina "software". El software es el nexo de unión entre el

hardware y el hombre.

Page 9: lenguaje programacion matlab

9

Tal y como hemos definido el software, éste es un conjunto de programas. La pregunta

ahora es: ¿Qué es un programa? Un programa es una secuencia de instrucciones que

pueden ser interpretadas por un ordenador, obteniendo como fruto de esa interpretación un

determinado resultado.

Podemos clasificar en software en dos grandes grupos: software de sistema (Sistema

Operativo) y software de aplicación.

SSooffttwwaarree ddeell SSiisstteemmaa oo SSiisstteemmaa OOppeerraattiivvoo

El sistema operativo es aquel conjunto de programas cuyo objeto es facilitar el uso

eficiente de la computadora. Este conjunto de programas administra los recursos del

sistema (hardware).

El sistema operativo se puede dividir en programas de control y programas de servicio.

Los programas de control son los que van orientados a facilitar, automatizar y mejorar el

rendimiento de los procesos en el ordenador (simultaneidad de operación de periféricos,

tratamiento de errores, etc.); como ejemplo se tiene al administrador de tareas de windows.

Los programas de servicio o de proceso son los que van orientados a proporcionar

facilidades de comunicación con el usuario (Ejemplo: aplicaciones como el explorador de

windows)

SSooffttwwaarree ddee AApplliiccaacciióónn

El software de aplicación está constituido por aquello programas que hacen que el

ordenador coopere con el usuario en la realización de tareas típicamente humanas, tales

como gestionar una contabilidad, escribir un texto, hacer gráficos y diagramas, realizar

cálculos repetitivos, etc. Algunos ejemplos de software de aplicación son: procesadores de

texto (Word), hojas de cálculo (Excel), sistemas de bases de datos (Access), etc.

La diferencia principal entre los programas de aplicación y el sistema operativo estriba en

que los del sistema operativo suponen una ayuda al usuario para relacionarse con el

ordenador y hacer un uso más cómodo del mismo, mientras que los de aplicación son

Page 10: lenguaje programacion matlab

10

programas que cooperan con el usuario para la realización de tareas que anteriormente

habían de ser llevadas a cabo únicamente por el hombre (sin ayuda de ordenador). Es en

estos programas de aplicación donde se aprecia de forma más clara la ayuda que puede

suponer un ordenador en las actividades humanas, ya que la máquina se convierte en un

auxiliar del hombre, liberándole de las tareas repetitivas.

LENGUAJES

Lenguaje es el empleo de notaciones, señales y vocales (voz, palabras) para expresar

ideas, comunicarse, y establecer relaciones entre los seres humanos. Un lenguaje no sólo

consta de “palabras”, sino también de su pronunciación y los métodos para combinar las

palabras en frases y oraciones; los lenguajes se forman mediante combinaciones de

palabras definidas en un diccionario terminológico previamente establecido. Las

combinaciones posibles deben respetar un conjunto de reglas sintácticas establecidas, a

ello se le conoce con el nombre de Sintaxis. Además, las palabras deben tener

determinado sentido, deben ser comprendidas por un grupo humano en un contexto dado,

a ello se le denomina Semántica.

TIPOS DE LENGUAJES Aunque existen muchas clasificaciones, en general se puede distinguir entre dos clases de

lenguajes: los lenguajes naturales (ingles, alemán, español, etc.) y los lenguajes

artificiales o formales (matemático, lógico, computacional, etc.). Tanto el lenguaje natural

como el lenguaje artificial son humanos. El primero es natural porque se aprende (o

adquiere) inconsciente e involuntariamente. Ningún bebé decide aprender o no la lengua

que hablan sus padres, y ningún padre sienta a su hijo y le enseña las reglas sintácticas de

su lengua. Las personas hablan y se entienden, pero generalmente no se cuestionan las

reglas que utilizan al hablar. Por otra parte, los lenguajes artificiales sí se aprenden de

manera voluntaria y conscientemente. Un ejemplo de lenguaje artificial son los lenguajes

de programación utilizados para desarrollar programas informáticos.

TIPOS DE LENGUAJES

Un Lenguaje de Programación es un conjunto de reglas, notaciones, símbolos y/o

caracteres que permiten a un programador poder expresar el procesamiento de datos y sus

estructuras en la computadora. Cada lenguaje posee sus propias sintaxis. También se

puede decir que un programa es un conjunto de órdenes o instrucciones que resuelven un

problema específico basado en un Lenguaje de Programación.

Page 11: lenguaje programacion matlab

11

Existen varias clasificaciones para los lenguajes de programación.

Clasificación de los Lenguajes de Programación

Los programadores escriben instrucciones en diversos lenguajes de programación. La

computadora puede entender directamente algunos de ellos, pero otros requieren pasos de

traducción intermedios. Hoy día se utilizan cientos de lenguajes de computadora.

Los Lenguajes de Programación pueden clasificarse de acuerdo con su uso en:

1. Lenguajes desarrollados para el cálculo numérico. Tales como FORTRAN,

Mathematica y Matlab.

2. Lenguajes para sistemas. Como C, C++ y ensamblador.

3. Lenguajes para aplicaciones de Inteligencia Artificial. Tales como Prolog, y Lisp.

También se pueden clasificar de acuerdo con el tipo de instrucciones de que constan.

En esta clasificación se tiene al lenguaje máquina, al lenguaje ensamblador y al

lenguaje de alto nivel. Se presenta a continuación una descripción de cada uno de ellos.

Lenguaje máquina (Binario)

Una computadora sólo puede entender el lenguaje máquina. El lenguaje de máquina

ordena a la computadora realizar sus operaciones fundamentales una por una. Dicho

lenguaje es difícil de usar para lar persona porque trabajar con números no es muy cómodo

además de que estos números están en formato binario.

Lenguajes de bajo nivel (ensamblador)

Para facilitar y agilizar su labor a los programadores, se buscaron nuevos lenguajes.

Cuando abstraemos los opcodes y los sustituimos por una palabra que sea una clave de su

significado, se tiene el concepto de Lenguaje Ensamblador. Así, el lenguaje ensamblador

representa las acciones del ordenador mediante pequeñas abreviaturas de palabras en

inglés. Podemos entonces definir al Lenguaje Ensamblador de la siguiente forma:

Lenguaje Ensamblador consiste en asociar a los opcodes palabras clave que faciliten su

uso por parte del programador

No obstante, el lenguaje ensamblador requiere de muchas instrucciones para realizar

simples operaciones.

Lenguajes de alto nivel

Para acelerar aun más el proceso de programación se desarrollaron los lenguajes de alto

nivel, en los que se puede escribir un sólo enunciado para realizar tareas sustanciales. Los

Page 12: lenguaje programacion matlab

12

lenguajes de alto nivel permiten a los programadores escribir instrucciones que asemejan

al inglés cotidiano y contiene notaciones matemáticas de uso común. El concepto de

lenguaje de alto nivel nació con el lenguaje FORTRAN (FORmula TRANslation) que, como

su nombre indica, surgió como un intento de traducir fórmulas matemáticas al lenguaje

ensamblador y por consiguiente al lenguaje de máquina. A partir de FORTRAN, se han

desarrollado innumerables lenguajes que siguen el mismo concepto: buscar la mayor

abstracción posible y facilitar la vida al programador, aumentando la productividad.

EJEMPLOS DE TIPOS DE LENGUAJES

Lenguaje Máquina

100001010101010

100100101010100

100011100101110 Lenguaje de Nivel Bajo (Ensamblador)

LOAD R1, (B)

LOAD R2, (C)

ADD R1, R2

STORE (A), R1 Lenguaje de Alto Nivel

A = B + C;

HISTORIA DE LOS LENGUAJES DE PROGRAMACION

Se presentan a continuación datos relevantes de algunos de los lenguajes de

programación de mayor importancia histórica.

FORTRAN

FORTRAN es el más viejo de los lenguajes de alto nivel. Fue diseñado por IBM en 1950. El

idioma se hizo tan popular en los 60´s que otros desarrolladores empezaron a producir sus

propias versiones y esto llevó a una gran cantidad de dialectos (en 1963 había 40

compiladores de FORTRAN diferentes). En 1972 se creó FORTRAN66, como una forma de

estandarizar la estructura del lenguaje. Luego, en 1980, se estableció una norma oficial

para el lenguaje avalada por la Organización de Normas Internacionales (ISO). Tal versión

es normalmente conocida como FORTRAN 77 (dado que el proyecto final se completó en

1977). En 1991 surge FORTRAN90, un desarrollo mayor del idioma pero que incluye todos

Page 13: lenguaje programacion matlab

13

los elementos de FORTRAN77 para facilitar la compatibilidad. Finalmente, en 1997, surge

FORTRAN95 o High Performance Fortran (HPF).

BASIC

BASIC es la abreviación de Beginners All-purpose Symbolic Instruction Code. Basic fue

desarrollado en la Universidad de Dartmouth en 1964 bajo la dirección de J. Kemeny y T.

Kurtz. Surgió como un idioma simple de aprender y fácil de traducir. En los 70´s, cuando

se creó la computadora personal Altair, Bill Gates y Paul Allen implementaron su propia

versión de Basic en dicha computadora. Con ello comenzó el futuro de BASIC y de la PC.

En ese tiempo, Gates era estudiante de Harvard y Allen era un empleado de Honeywell. La

versión BASIC de Gates ocupaba un total de 4KB de memoria incluyendo el código y los

datos que se usaron para el código fuente. Luego Gates implementó BASIC en otras

plataformas (Apple, Comodor y Atari) y fue a partir de entonces que la corporación de

Microsoft empezó su reinado en el mundo de las PC. Más tarde en los 70‟s, surgió el

sistema operativo MS-DOS de Bill Gates que incluía un intérprete de BASIC. La versión

distribuida con MS-DOS era GW-BASIC y podía ser ejecutada en cualquier máquina que

pudiera ejecutar DOS.

C

El lenguaje C reúne características de programación tanto de los lenguajes ensambladores

como de los lenguajes de alto nivel; este lenguaje posee gran poderío basado en sus

operaciones a nivel de bits (propias de ensambladores) y la mayoría de los elementos de

la programación estructurada de los lenguajes de alto nivel. Por ello es que C ha sido el

lenguaje preferido para el desarrollo de software de sistemas y aplicaciones profesionales

de la programación de computadoras.

En 1970 Ken Thompson de los laboratorios Bell creó la primera versión del lenguaje, la

cual podía ejecutarse en el sistema operativo UNIX; a este lenguaje se le llamó lenguaje B

y tenía la desventaja de ser lento. En 1971 Dennis Ritchie, con base en el lenguaje B,

desarrolló NB que luego cambió su nombre por C. Su diseño incluyó una sintaxis

simplificada, la aritmética de direcciones de memoria (permite al programador manipular

bits, bytes y direcciones de memoria) y el concepto de apuntador. Además, al ser diseñado

para mejorar software de sistemas, se buscó que generase códigos eficientes y uno

portabilidad total, es decir el que pudiese correr en cualquier máquina. Logrados los

objetivos anteriores, C se convirtió en el lenguaje preferido de los programadores

profesionales.

C++

En 1980 Bjarne Stroustrup, también de los laboratorios Bell, adicionó al lenguaje C las

características de la programación orientada a objetos (incluyendo la ventaja de una

Page 14: lenguaje programacion matlab

14

biblioteca de funciones orientada a objetos) y lo denominó C con clases. Para 1983 dicha

denominación cambió a la de C++.

MATLAB

Cleve Moler escribió el MATLAB original en FORTRAN, durante varios años. Los

algoritmos matriciales subyacentes fueron proporcionados por los muchos integrantes de

los proyectos LINPACK y EISPACK. El MATLAB actual fue escrito en C por The

Mathworks. La primera versión fue escrita por:

Steve Bangert, que escribió el intérprete parser

Steve Kleiman que implementó los gráficos

John Little y Cleve Moler que escribieron las rutinas de análisis, la guía de usuario y

la mayoría de los ficheros .m.

MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software

matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de

programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y

Apple Mac OS X.

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de

datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario

(GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos

hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus

prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de

interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con

las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques

(blocksets).

Es un software muy usado en universidades y centros de investigación y desarrollo. En los

últimos años ha aumentado el número de prestaciones, como la de programar

directamente procesadores digitales de señal o crear código VHDL.

CODIGO ASCII

Existe una equivalencia en informática entre los números naturales entre 0 y 255 (posibles

valores de un byte) y los caracteres, de forma que a cada número le corresponde una letra,

símbolo o código. La equivalencia más utilizada es la tabla ASCII (American Standard

Code for Information Interchange). Cada caracter (por ejemplo la letra A) tiene asignado un

número por el ordenador de forma que podemos referenciarlo mediante dicho número. Por

Page 15: lenguaje programacion matlab

15

ejemplo, la letra A tiene por código de identificación el número 65, la B el 66, el 2 el 50, etc.

Se proporciona aquí una copia de esta tabla para su referencia.

Para obtener un carácter a través del teclado, presione la tecla Alt y, simultáneamente (sin

soltar la tecla), presione el número de código correspondiente.

32 77 M 122 z 167 º 212 ⌵

33 ! 78 N 123 { 168 ¿ 213 ⌯

34 “ 79 O 124 | 169 ¬ 214 ⌰

35 # 80 P 125 } 170 ¬ 215 ⍈

36 $ 81 Q 126 ~ 171 ½ 216 ⍇

37 % 82 R 127 - 172 ¼ 217 ⌧

38 & 83 S 128 Ç 173 ¡ 218 ⌤

39 ' 84 T 129 ü 174 « 219 █

40 ( 85 U 130 é 175 » 220 ▄

41 ) 86 V 131 â 176 ░ 221 ▌

42 * 87 W 132 ä 177 ▒ 222 ▐

43 + 88 X 133 à 178 ▓ 223 ▄

44 , 89 Y 134 å 179 ⌣ 224 α

45 - 90 Z 135 ç 180 ⟨ 225 ß

46 . 91 [ 136 ê 181 ⌾ 226 Γ

47 / 92 \ 137 ë 182 ⌿ 227 π

48 0 93 ] 138 è 183 ⌳ 228 Σ

49 1 94 ^ 139 ï 184 ⌲ 229 σ

50 2 95 _ 140 î 185 ⍀ 230 μ

51 3 96 ` 141 ì 186 ⌮ 231 τ

52 4 97 a 142 Ä 187 ⌴ 232 Φ

53 5 98 b 143 Å 188 ⌺ 233 θ

54 6 99 c 144 É 189 ⌹ 234 Ω

55 7 100 d 145 æ 190 ⌸ 235 δ

56 8 101 e 146 Æ 191 ⌥ 236 ∞

57 9 102 f 147 ô 192 ⌦ 237 Ǿ

58 : 103 g 148 ö 193 ⌫ 238 ε

59 ; 104 h 149 ò 194 ⟩ 239 ∩

60 < 105 i 150 û 195 ⌨ 240 ≡

61 = 106 j 151 ù 196 ⌢ 241 ±

62 > 107 k 152 ÿ 197 ⌬ 242 ≥

63 ? 108 l 153 Ö 198 ⌻ 243 ≤

64 @ 109 m 154 Ü 199 ⌼ 244 ⌠

65 A 110 n 155 ¢ 200 ⌷ 245 ⌡

66 B 111 o 156 £ 201 ⌱ 246 ÷

67 C 112 p 157 ¥ 202 ⍆ 247 ≈

68 D 113 q 158 Pt 203 ⍃ 248 °

69 E 114 r 159 ƒ 204 ⌽ 249 ·

70 F 115 s 160 á 205 ⌭ 250 ·

Page 16: lenguaje programacion matlab

16

71 G 116 t 161 í 206 ⍉ 251 √

72 H 117 u 162 ó 207 ⍄ 252 N

73 I 118 v 163 ú 208 ⍅ 253 ²

74 J 119 w 164 ñ 209 ⍁ 254 ▔

75 K 120 x 165 Ñ 210 ⍂

76 L 121 y 166 ª 211 ⌶

Note que los códigos entre 0 y 31 son caracteres de control y se suelen llamar "no

imprimibles", pues su equivalencia no es un caracter sino una determinada acción. Por

ejemplo, el código 13 es equivalente a la pulsación de ENTER. Brevemente, los más

interesantes son:

código equivale código equivale

07 beep (pitido del altavoz del PC) 27 ESC (tecla escape)

08 Backspace 28 cursor a la derecha

09 Tab (tabulación) 29 cursor a la izquierda

10 line feed (avance de línea) 30 cursor arriba

13 CR (retorno de carro) 31 cursor abajo

NOTA: Los códigos ASCII a partir del 127 son definibles y dependen de cada máquina. Los

representados aquí corresponden con los que son imprimibles desde HTML. En una IBM

PC en MS-DOS, por ejemplo, estos códigos pueden ser distintos a los aquí representados.

Page 17: lenguaje programacion matlab

17

EJERCICIOS PROPUESTOS

1. Destapar una computadora usada y describir sus partes principales.

2. Hacer un diagrama de árbol y describir los tipos de programas (software) que

actualmente se vienen usando en el centro de computo de la F.I.Q.

3. Hacer una decripción de los periféricos de un equipo de computo.

4. Describa el Sistema Operativo instalado en las PC del centro de cómputo de

la FIQ?

5. ¿Que es Software libre?

6. ¿El Hardware puede funcionar sin el Software?

7. Describa la utilidad de un Sistema Operatvo

8. ¿En una PC puede instalarse 2 sistemas operativos?

9. Si en mi teclado no encuentro un símbolo, ¿como puedo obtenerlo?

10. Decriba 2 unidades de almacenamiento secundario.

Page 18: lenguaje programacion matlab

18

EVALUACIÓN

1. Cuales son las partes principales de una computadora?

2. Describa los principales lenguajes de programación

3. Hacer una decripción de los periféricos de un equipo de computo.

4. Describa el Sistema Operativo LINUX.

5. ¿Describa el sistema operativo que tienen las computadoras del centro de

computo dela FIQ.

6. ¿En que tipo de memoria se almacenan cuando se realiza un trabnajo en lña

com putadora? Describa.

7. Describa la utilidad de los antivirus

8. ¿Que diferencia existe entre un Sistema Operativo, un procesador de textos

y un lenguaje de programación?

9. ¿Cuál es la utilidad que tienen los códigos ACCI?

10. ¿Cuál es la unidad de almacenamiento que utiliza?

Page 19: lenguaje programacion matlab

19

Bibliografía Referencial

1. CHAPRA, STEVEN Métodos Numéricos para Ingenieros. Editorial Mc. Graw Hill.

México. 2004.

2. NAKAMURA, SHOICHIRO Analisis Numérico y Visualización con Matlab. Editorial

Prentice may. México. 1997.

3. MORALES MARCHENA, HERÓN. Métodos numéricos y Visualización Gráfica

Editorial Megabit. Peru. 2005.

4. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniería Editores

Prentice. España. 2002 .

5. VASQUEZ PARAGULLA, JULIO “Diseño de Programación “ Edit. San Marcos –

PERU . 2000.

6. KERLINGER, F. N. Y LEE, H. B. Investigación del Comportamiento: Métodos de

Investigación en ciencias sociales. Mc Graw Hill Interamericana Editores. México.

2002.

Page 20: lenguaje programacion matlab

20

CAPITULO II

ALGORITMOS Y DIAGRAMAS DE FLUJO

OBJETIVOS: Explicar los algoritmos y diagramas de flujo como parte de un proceso de

programación para cualquier lenguaje de programación.

CONTENIDOS: Pasos para resolver un problema, algoritmos, digramas de flujos.

PASOS PARA LA SOLUCION DE PROBLEMAS

El proceso de resolución de un problema con una computadora conduce a la escritura de

un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es

esencialmente un proceso creativo, se pueden considerar también como una serie de fases

o pasos comunes que generalmente deben seguir todos los programadores.

Las siguientes son las etapas que se deben cumplir para resolver con éxito un problema de

programación:

1. Definición del problema

2. Análisis del problema

3. Selección de la mejor alternativa

4. Crear Diagrama de Flujo

5. Codificación

6. Compilación

7. Pruebas

8. Documentación externa

Definición del Problema

Está dada por el enunciado del problema, el cual debe ser claro y completo. Es importante

que conozcamos exactamente que se desea de la computadora; mientras que esto no se

comprenda no tiene caso pasar a la siguiente etapa.

Análisis del Problema

Entendido el problema (que se desea obtener de la computadora), para resolverlo es

preciso analizar:

Los datos o resultados que se esperan.

Los datos de entrada que se deben suministrar.

El proceso al que se requiere someter dichos datos a fin de obtener los resultados

esperados.

Fórmulas, ecuaciones y otros recursos necesarios.

Page 21: lenguaje programacion matlab

21

Una recomendación muy práctica es el que nos pongamos en el lugar de la computadora, y

analizar que es necesario que me ordenen y en que secuencia para poder producir los

resultados esperados.

Selección de la Mejor Alternativa

Analizado el problema posiblemente tengamos varias formas de resolverlo; lo importante

es determinar cual es la mejor alternativa. Esto es, la que produce los resultados

esperados en el menor tiempo y al menor costo.

Crear Diagrama de Flujo

Una vez que sabemos como resolver el problema, pasamos a dibujar gráficamente la

lógica de la alternativa seleccionada. Eso es precisamente un Diagrama de Flujo: la

representación gráfica de una secuencia lógica de pasos a cumplir por la computadora

para producir un resultado esperado.

La experiencia nos ha demostrado que resulta muy útil trasladar esos pasos lógicos

planteados en el diagrama a frases que indiquen lo mismo; es decir, hacer una codificación

del programa pero utilizando instrucciones en Español, como si le estuviéramos hablando a

la computadora. Esto es lo que se denomina Pseudocódigo. Cuando logremos habilidad

para desarrollar programas, es posible que no sea necesario elaborar ni el diagrama de

flujo ni el pseudocódigo del programa.

Codificación

Una vez que hayamos elaborado el diagrama, codificamos el programa en el lenguaje de

programación seleccionado. Esto es, colocamos cada paso del diagrama en una

instrucción o sentencia utilizando un lenguaje que la computadora reconoce. Este

programa es el que se conoce como Código Fuente (Source Code).

Todos los lenguajes de programación proveen facilidades para incluir líneas de

comentarios en los programas. Estos comentarios aclaran lo que se ordena a la

computadora y facilitan la compresión del programa. Puesto que estos comentarios no se

toman cuenta como instrucciones y aparecen en los listados del programa, resulta muy

conveniente agregar abundantes comentarios a todo programa que codifiquemos. Esto es

lo que se denomina Documentación Interna.

Compilación

Utilizamos ahora un programa Compilador, el cual analiza todo el programa fuente y

detecta errores de sintaxis ocasionados por fallas en la codificación. Las fallas de lógica

Page 22: lenguaje programacion matlab

22

que pueda tener nuestro programa fuente no son detectadas por el compilador. Cuando no

hay errores graves en la compilación, el compilador traduce cada instrucción del código

fuente a instrucciones propias de la máquina (Lenguaje de Maquina), creando el Programa

Objeto. Cuando hay errores, éstos se deben corregir sobre el mismo programa fuente. El

paso de compilación se repite hasta eliminar todos los errores y obtener el programa

ejecutable.

Pruebas

Cuando tenemos el programa ejecutable (en lenguaje de maquina) ordenamos al

computador que lo ejecute, para lo cual suministramos datos de prueba. Los resultados

obtenidos se analizan para identificar cualquiera de las siguientes situaciones:

La lógica del programa esta bien, pero hay errores sencillos, los cuales se corrigen

modificando algunas instrucciones o incluyendo unas nuevas; el proceso debemos

repetirlo desde el paso 5.

Hay errores muy graves ocasionados por fallas en la lógica, y lo más aconsejable es

que regresemos al paso 2 para analizar nuevamente el problema y repetir todo el

proceso.

No hay errores y los resultados son los esperados. En este caso, el programa lo

podemos guardar permanentemente para usarlo cuando necesitemos ejecutarlo

nuevamente.

Documentación Externa

Cuando el programa ya se tiene listo para ejecutar, es conveniente que hagamos su

documentación externa. Una buena documentación externa incluiría, por ejemplo:

Enunciado del problema

Narrativo con la descripción de la solución

Descripción de las variables utilizadas en el programa, cada una con su respectiva

función

Resultados de la ejecución del programa

ALGORITMOS Y DIAGRAMAS DE FLUJO Algoritmo Un algoritmo es un conjunto de acciones que determinan la secuencia de los pasos a

seguir para resolver un problema específico. Sus pasos deben estar definidos con precisión

de forma que no existan ambigüedades que den origen a elegir una opción equivocada.

Los algoritmos son finitos; es decir, su ejecución termina en un número determinado de

Page 23: lenguaje programacion matlab

23

pasos. La mayoría de los algoritmos de utilidad al programador poseen 3 partes

principales:

Los algoritmos pueden representarse a través de un conjunto de palabras por medio de las

cuales se puede representar la lógica de un programa. Este conjunto de palabras

constituyen lo que se conoce como pseudocódigo. Además, los algoritmos se pueden

representar gráficamente a través de un diagrama de flujo. Ambas herramientas se

describen a continuación.

Diagramas de flujo Un diagrama de flujo es una representación gráfica de un algoritmo o de una parte del

mismo. La ventaja de utilizar un diagrama de flujo es que se le puede construir

independientemente del lenguaje de programación, pues al momento de llevarlo a código

se puede hacer en cualquier lenguaje. Dichos diagramas se construyen utilizando ciertos

símbolos de uso especial como son rectángulos, óvalos, pequeños círculos, etc.; estos

símbolos están conectados entre sí por flechas conocidas como líneas de flujo. A

continuación se presentan estos símbolos y su significado.

Símbolos y su Significado

Terminal. Representa el inicio y fin de un programa.

Proceso. Son acciones que el programa tiene que realizar

Decisión. Indica operaciones lógicas o de comparación.

Entrada. Nos permite ingresar datos.

Salida. Es usado para indicar salida de resultados

Algoritmo

Entrada de Datos

Procesamiento de Datos

Salida de Resultados

Page 24: lenguaje programacion matlab

24

Selector múltiple. Representa una decisión con múltiples alternativas.

Conector. Enlaza dos partes cualesquiera de un programa

Línea de flujo. Indica dirección de flujo del diagrama. Las flechas de flujo no deben cruzarse. Los diagramas se leen de arriba hacia abajo y de izquierda a derecha.

Conector fuera de página. Representa conexión entre partes del algoritmo representadas en páginas diferentes.

Pseudocódigo

A continuación se muestran algunos ejemplos de palabras utilizadas para construir algoritmos en pseudocódigo.

PALABRA UTILIZACIÓN

ABRE Abre un archivo

CASO Selección entre múltiples alternativas

CIERRA Cierra un archivo

ENTONCE

S Complemento de la selección SI - ENTONCES

ESCRIBE Visualiza un dato en pantalla

FIN Finaliza un bloque de instrucciones

HASTA Cierra la iteración HAZ – HASTA

HAZ Inicia la iteración HAZ – HASTA

INICIO Inicia un bloque de instrucciones

LEER Leer un dato del teclado

MIENTRA

S Inicia la iteración mientras

NO Niega la condición que le sigue

O Disyunción lógica

O - BIEN Complemento opcional de la selección SI - ENTONCES

PARA Inicia un número fijo de iteraciones

SI Inicia la selección SI-ENTONCES

USUAL Opcional en la instrucción CASO

Y Conjunción lógica

{ Inicio de comentario

} Fin de comentario

<= Asignación

Page 25: lenguaje programacion matlab

25

PROGRAMACION ESTRUCTURADA La programación estructurada es un estilo con el cual el se busca que el programador

elabore programas sencillos y fáciles de entender. Para ello, la programación estructurada

hace uso de tres estructuras básicas de control. Éstas son:

Estructura Secuencial

Estructura Selectiva

Estructura Repetitiva (ó Iterativa)

La programación estructurada se basa un teorema fundamental, el cual afirma que

cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado

utilizando únicamente las tres estructuras básicas (secuencia, selección, iteración).

DEFINICION DE LAS TRES ESTRUCTURAS BASICAS Estructura Secuencial Indica que las instrucciones de un programa se ejecutan una después de la otra, en el

mismo orden en el cual aparecen en el programa. Se representa gráficamente como una

caja después de otra, ambas con una sola entrada y una única salida.

Las cajas A y B pueden ser definidas para ejecutar desde una simple instrucción hasta un

módulo o programa completo, siempre y cuando éstos también sean programas

apropiados.

Estructura Selectiva

También conocida como la estructura SI-VERDADERO-FALSO, plantea la selección entre

dos alternativas con base en el resultado de la evaluación de una condición; equivale a la

instrucción IF de todos los lenguajes de programación y se representa gráficamente de la

siguiente manera:

Page 26: lenguaje programacion matlab

26

En el diagrama de flujo anterior, C es una condición que se evalúa; A es la acción que se

ejecuta cuando la evaluación de esta condición resulta verdadera y B es la acción

ejecutada cuando el resultado de la evaluación indica falso. La estructura también tiene

una sola entrada y una sola salida; y las funciones A y B también pueden ser cualquier

estructura básica o conjunto de estructuras.

Estructura Repetitiva (Iterativa)

También llamada la estructura HACER-MIENTRAS-QUE, corresponde a la ejecución

repetida de una instrucción mientras que se cumple una determinada condición. El

diagrama de flujo para esta estructura es el siguiente:

Aquí el bloque A se ejecuta repetidamente mientras que la condición C se cumpla o sea

cierta. También tiene una sola entrada y una sola salida; igualmente A puede ser cualquier

estructura básica o conjunto de estructuras.

Ventajas de la Programación Estructurada

Con la programación estructurada, elaborar programas de computadora sigue siendo una

labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este

nuevo estilo podemos obtener las siguientes ventajas:

1. Los programas son más fáciles de entender. Un programa estructurado puede ser leído

en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro

en la lógica, lo cual es típico de otros estilos de programación.

Page 27: lenguaje programacion matlab

27

2. Se logra una reducción del esfuerzo en las pruebas. El seguimiento de las fallas o

depuración (debugging) se facilita debido a la lógica más visible, de tal forma que los

errores se pueden detectar y corregir más fácilmente.

3. Se crean programas más sencillos y más rápidos.

Page 28: lenguaje programacion matlab

28

EJEMPLOS ILUSTRATIVOS

Estructura Secuencial

Calcular el área de un rectángulo a partir de su altura y su base

Inicio

Base

Area = Base x Altura

Altura

Área

Fin

Page 29: lenguaje programacion matlab

29

Estructura Selectiva

Convertir calificaciones numéricas (0 al 10) a calificaciones de “Aprobado” ó “Reprobado”,

siendo 7.0 la calificación mínima aprobatoria.

Falso Verdadero

Inicio

Calificación

Resultado=”Aprobado”

Resultado

Fin

Calificación > 7.0

Resultado=”Reprobado”

Page 30: lenguaje programacion matlab

30

Estructura Repetitiva (Iterativa)

Calcular el factorial de un número entero positivo

Falso Verdadero

Inicio

Número

Factorial

Fin

Contador > Número

Contador=Contador + 1

Factorial = 1

Contador = 1

Factorial=Factorial * Contador

Page 31: lenguaje programacion matlab

31

Realizar un diagrama de flujo para calcular las raíces de una ecuación de segundo grado.

Page 32: lenguaje programacion matlab

32

EJERCICIOS PROPUESTOS

1. Realizar un diagrama de flujo que te permita convertir una cantidad dada en metros

a pies y pulgadas.

2. Realizar un diagrama de flujo que te permita ingresar tres números y

ordenarlos ascendentemente

3. Realizar un diagrama de flujo que te permita multiplicar entre sí todos los números

enteros entre n (el menor) y m (incluyéndolos) si tales números están dados.

4. Ingresar por teclado el Ph (entre 0 y 14) y determinar de que tipo de Ph se trata

(ácido, básico o neutro).

5. Realizar un diagrama de flujo para determinar si un número es primo o nó.

6. Realizar un diagrama de flujo para determinar si número es perfecto.

Page 33: lenguaje programacion matlab

33

EVALUACIÓN

Dado la ecuación de un movil X=5t3 + 10t2 – 10t, hacer el diagrama de flujo para obtener

el espacio recorrido, la velocidad y la aceleración para los 10 primeros segundos de su

recorrido.

Realizar un diagrama de flujo para calcular el promedio aritmético de cuatro notas, si el

promedio es menor que 10.5 imprimir el promedio y “desaprobado” , caso contrario

imprimir el promedio y “aprobado”.

Realizar un digrama de flujo para determinar cuantos números múltiplos de M hay en los N

primeros números naturales , talque M sea menor o igual que N. Ejemplo. Cuantos

múltiplos de 3 hay en los primeros 20 números naturales.

Bibliografía

1. CHAPRA, STEVEN Métodos Numéricos para Ingenieros. Editorial Mc. Graw Hill. México. 2004.

2. MORALES MARCHENA, HERÓN. Métodos numéricos y Visualización Gráfica Editorial Megabit. Peru. 2005.

3. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniería Editores Prentice. España. 2002 .

4. KERLINGER, F. N. Y LEE, H. B. Investigación del Comportamiento: Métodos de Investigación en ciencias sociales. Mc Graw Hill Interamericana Editores. México. 2002.

Page 34: lenguaje programacion matlab

34

CAPITULO III

OPERACIONES MATEMÁTICAS CON MATLAB

OBJETIVOS: El participante manejará el Matlab para la obtención de soluciones puntuales

de problemas matemáticos.

CONTENIDOS: Operaciones algebraicas, formatos de visualización, funciones

matemáticas, números complejos, matrices y arreglos

Operaciones Algebraicas De la misma forma que una calculadora Matlab realiza matemáticas simples. Considere el

siguiente ejemplo sencillo:

>> 4*5+6*22+2*99 Ans= 430 Como otra posible alternativa el calculo, se puede resolver almacenando informaciones en

variables de matlab

>> A= 4; >> B=2; >>SUMA=A + B SUMA = 6 El punto y coma al final de la línea, le dice a matlab que evalué la línea pero que no nos

diga la respuesta.

>> N1=12; >> N2=14; >>promedio=(N1+N2)/2 promedio = 13 >>3^2-5-6/3*2 >>3^2-5-6/(3*2) OPERADORES ARITMETICOS Y LOGICOS

OPERADOR FUNCION QUE CUMPLE

+ Suma de escalares, vectores o matrices

- Resta de escalares, vectores o matrices

* Producto de escalares o matrices

.* Producto de escalares o de vectores

/ Cociente escalar o B/A=B*inv(A), donde A y B son matrices

./ A./B=[A(i,j)/B(i,j)], donde A y B son vectores [dim(A)=dim(B)]

^ Potencia de escalares o potencia escalar de matriz (Mp)

. ^ Potencia de vectores (A.^B)=[A(i,j)B(i,j)],donde A y B son vectores

- = a -= b Establece la condición de a b.

> a > b Establece la condicion de a mayor que b

Page 35: lenguaje programacion matlab

35

< a < b Establece la condicion de a menor que b

>= a >= b Establece la condicion de a mayor o igual que b

<= a <= b Establece la condicion de a menor o igual que b

a b Establece la disyuncion de a o b

== A == b Establece la condicion de a igual a b

Las operaciones matemáticas simples entre escalares y vectores aplican el escalar todos

los elementos del vector según la operación definida y las operaciones simples entre

vectores se realizan elemento a elemento, hay que tener presente que los vectores han de

ser de la misma longitud.

>>X=[4,2,6]; Y=[2,5,3]; >>a=X+Y >>b=X-Y >>c=X.*Y Comandos de Ayuda Help: Para saber el significado de un comando digite help, seguido del comando del cual se desea obtener informacion. >>help quit >>help + % nos permite visualizar caracteres y operadores especialesdel matlab. >>what % produce una lista de archivo. >>who % produce una lista de las variables del espacio de trabajo actual. >>doc help % permite visualizar el documento de ayuda. FUNCIONES BASICAS Variables En Matlab como en cualquier leguaje de programacion se utilizan variables, bajo ciertas

reglas:

No pueden comenzar con un numero, aunque si pueden tener numeros en su estructura.

La mayusculas y minusculas se diferencian en los nombres de las variables.

Los nombres no pueden utilizar operadores ni punto. No es valido usar / * - + . ; :

Una variable puede tener hasta 31 caracteres.

>>V=5; >>v=2; >>producto=V*v La variable V valdrá 5 mientras no se le cambie su valor mediante una nueva asignación,

una vez declarada la variable podemos utilizarla en los cálculos.

>>r=5; >>area=2*pi*r area = 31.4159

Page 36: lenguaje programacion matlab

36

>>clear r % borra simplemente la variable r de la memoria de trabajo

>>clear r area % borra ambos r y area.

>>clear % borra todas las variables usadas de la memoria.

>>clc % limpia la informacion de la pantalla de comandos

Matlab tiene variables especiales que son las siguientes:

Variables Valor

Ans Nombre por defecto de las variables usada por los resultados

Pi Razón de una circunferencia a su diámetro

Eps Número mas pequeño tal que, cuando se le suma 1, crea un numero en coma flotante en el computador mayor que 1

Inf Infinito, p. e.,1/0

NaN Magnitud no numérica (Not-a-Number), p.e.,0/0

i y j Imaginario i = j = 1

realmin El número real positivo más pequeño que es utilizable 2-1022

Realmax El número real positivo más grande que es utilizable (2-e) 2 1023

Formatos de visualización de números Es posible modificar el formato numérico por defecto especificando un formato numérico

diferente usando la opción numerical format en el menú option o escribiendo la orden

apropiada en matlab.

Orden de matlab Comentarios

Format short Visualización por defecto con 4 cifras decimales

Format short e 4 decimales + la potencia de 10 necesaria

Format long Ofrece el resultado con 16 cifras decimales

Format long e 16 decimales + la potencia de 10 necesaria

Format hex Hexadecimal

Format bank 2 dígitos decimales

Format + Positivo, negativo o cero

Format rat Aproximación racional

vpa´operaciones´ n Ofrece el resultado con n digitos decimales exactos

digits(n) Ofrece los resultados con n digitos exactos

Es importante observar que matlab no cambia la representación interna de un número

cuando se escogen diferentes formatos; solo se modifica la visualización del número.

>>pi ans = 3.1416 >>format long >>pi ans =

3.14159265358979 >>170/13 >>format long; 174/13 >>format long e; 174/13

Page 37: lenguaje programacion matlab

37

>>format short e; 174/13 >>format hex; 174/13 >>format bank; 174/13 >>format hex; 174/13 >>vpa ¨74/13¨ 10 % muestra el resultado con 10 digitos decimales exactos >>digits(20);vpa ¨74/13¨ % muestra el resultado con 20 dígitos decimales exactos Comando de lectura y escritura input .- Permite el ingreso de datos al programa a travez del teclado asignandole a una

variable, esta orden puede usarse con un mensaje en la linea de comandos.

>> x = input (' '); >> n = input ('ingrese un numero:'); >> N = input ('ingrese un nombre:', 's') % s indica que la entrada que se hara por teclado es una cadena fprintf .- Permite la visualizacion de un valor numerico o el resultado de una expresion

guardada por el usuario.

>> vol = 50; >> fprintf (' el volumen de la esfera es : %12.0f \n', vol); \n' indica que la impresión de la variable vol sera en la siguiente linea. %12.0f formato de un numero entero. %12.5f formato de un numero real con 5 decimales. disp .- Permite la visualizar en pantalla un mensaje de texto o el valor de una matriz, pero

sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices, las

cadenas de caracteres se consideran un caso particular de vectores.

>> disp (' Esto es una prueba ' ); >> disp ( pi ); >> disp (' Programa terminado ' ); >> A = rand(4,4) >> disp ( A ) Funciones Matemáticas Una lista parcial de las funciones comunes que posee Matlab se muestra en la tabla que sigue. la mayoría de estas funciones se utilizan de la misma forma en que ustedes las escribe matemáticamente: >>a=3; >>b=4; >>hipot=sqrt(a^2+b^2) hipot = 5 >>x=sqrt(2)/2 x = 0.7071 >> y=asin (x) y = 0.7854

Page 38: lenguaje programacion matlab

38

>> y_deg=y*180/pi y_deg= 45.0000

Estas ordenes encuentran el ángulo donde la función seno tiene un valor de 2 /2 Mientras que su calculadora puede trabajar en grados o radianes, MATLAB solo opera en radianes, donde 2π radianes es igual a 360 grados. >> y=sqrt(3^2+4^2) % muestra que 3-4-5 son lados de un triángulo rectángulo >> y=rem(23,4) % nos muestra el resto de 23/4 >>x=2.6, y1=fix(x), y2=floor(x), y3=ceil(x), y4=round(x) x = 2.6000 y1 = 2 y2 = 2 y3 = 3 y4 = 3

Funciones Trigonometricas

sin(x) Seno de x

asin(x) Arco seno de x

abs(x) Valor absoluto o magnitud de un numero complejo

sinh(x) Seno hiperbolico de x

asính(x) Arcoseno hiperbolico de x

cos(x) Coseno de x

acos(x) Arcocoseno de x

cosh(x) Coseno hiperbólico de x

acosh(x) Arco coseno hiperbólico de x

tan(x) Tangente de x

atan(x) Arcotangente de x

tanh(x) Tangente hiperbolico de x

atanh(x) Arcotangente hiperbolico de x

cot(x) Cotangente de x

sec(x) Secante de x

csc(x) Cosecante de x

>> x=[1,2,3 ; 9,8,7]; >> sin(x) ans = 0.8415 0.9093 0.1411 0.4121 0.9894 0.6570 los corchetes se utilizan para definir una variable con multiples valores >> x=[0.8, 0.9, 0.1; 0.8, 0.9, 0.1; 0.4, 0.9, 0.6]; >> z=asin(x) >> y=sech(x)

Otras Funciones Matematicas

Abs(x) Valor absoluto de x

Page 39: lenguaje programacion matlab

39

sqrt(x) Ruiz cuadrada de x

real(x) Parte real de un numero complejo x

imag(x) Parte imaginaria de un numero complejo x

sign(x) Función signo: devuelve el signo del argumento , p.e.,sign(1.2)=1, sing(-23.4)=-1, sing(0)=0

exp(x) Exponencial ex

log(x) Logaritmo natural de x

log10(x) Logaritmo decimal de x

log2(x) Logaritmo en base 2 de x

min(x) Devuelve el valor minimo de un arreglo x

max(x) Devuelve el valor maximo de un arreglo x

sort(x) Ordena elementos del arreglo x ascendentemente

Sum(x) Suma de todos los elementos de un arreglo x

Num2str(x) Convierte en cadena el numero x

Str2double(x) Convierte en numero real la cadena x

ceil(x) Redondea hacia mas infinito

conj(x) Complejo conjugado

angle(x) Angulo de un numero complejo

Fix(x) Redondea hacia cero

floor(x) Redondea hacia menos infinito

rem(x,y) Restos después de la división: rem (x,y) da resto de x/y

Round(x) Redondea hacia el entero mas próximo

>> x=[-1,5,-3, - 9]; >> abs(x) >> x=3 + 2i; >> imag(x) >> real(x) >> x=[2,1,7, 0]; >> sort(x) >> sort([2,1,7, 0]') Números complejos Para ilustrar los números complejos, considere la ecuación cuadrática ax2 +bx+c=0. Los valores de x donde esta ecuación es cierta, i.e.. las raíces de estas ecuaciones vienen dadas por:

x1,x2 =

a

acbb

2

42

si a=1, b=5 y c=6, la solución se puede encontrar utilizando MATLAB como: >>a=1; b=5; c=6; >>x1 =(-b+sqrt(b^2-4*a*c))/(2*a) x1 = -3 >>x2 =(-b-sqrt(b^2-4*a*c))/(2*a) x2 = -2 >>a*x1 ^2+b*x1 +c %sustituir x1 para comprobar respuesta ans=

Page 40: lenguaje programacion matlab

40

0 >>a*x2 ^2+b*x2 +c %sustituir x2 para comprobar la respuesta ans= 0 Las dos últimas órdenes se utilizaron para confirmar los resultados. En este caso el termino de la raíz cuadrada es positivo y las dos raíces son números reales. Sin embargo, si a=1, b=4, c=13 las soluciones son:

x1= -2+3 1

x2= -2-3 1

El término 1 no se puede simplificar más y como resultado de esto se dice que las

soluciones son complejas. Los términos -2 en x1 y x2 son las partes real de la solución. Los términos 3 y -3 son las partes imaginarias de la soluciones. >>a=1; b=4; c=13; >>x1 =(-b+sqrt(b^2-4*a*c))/(2*a) x1 = -2.0000 + 3.0000i >>x2 =(-b-sqrt(b^2-4*a*c))/(2*a) x2 = -2.0000 - 3.0000i >>a*x1 ^2+b*x1 +c %sustituir x1 para comprobar respuesta ans= 0 >>a*x2 ^2+b*x2 +c %sustituir x2 para comprobar respuesta ans= 0

En ingeniería normalmente se asocia la letra j en lugar de la i con 1 , se puede emplear

también esta para representar la parte imaginaria. Ejemplos de los números complejos son: >>c1=1-2i >>c1=1-2j % j también funciona >>c2=3*(2-sqrt(-1)*3) >>c3=sqrt(-2) >>c4=6+sin(.5)*i >>c5=6+sin(.5)*j >>c6= (c1+c2)/c3 % de los datos anteriores c6= -7.7782 -4.9497i >>check_it_out=i^2 %¡sqrt(-1) al cuadrado debe ser -1! Check_it_out= -1.0000 + 0.0000i >>check_it_out=real(check_it_out) %muestra la parte real check_it_out= -1 En general, operaciones sobre números complejos conduce a números complejos. Así pues, incluso aunque i2 = -1 es estrictamente real, MATLAB mantiene la parte imaginaria igual a cero. Tal como se muestra en la, la función real, MATLAB extrae la parte real de un número complejo. Funciones Reales

Page 41: lenguaje programacion matlab

41

Función Descripción

eval(f) Evalúa una función en los valores de x.

fplot(f, [a,b] ) Grafica la función en el intervalo [a,b]

fzero(f, a ) Calcula la raiz de la función f, partiendo del valor a.

trapz(x,f) Calcula el areá de la región plana limitada por f en el intervalo [a,b], donde a es el primer valor de x y b el último valor de x, x debe ser una variable con múltiples valores ordenados en orden creciente.

>>funcion= '3*x.^2-5'; >>x=[1 2 4]; >>eval(funcion) ans = -2 7 43 >>fplot(funcion,[0,4]); % grafica la función >>z=fzero(funcion,2) % calcula la raiz partiendo de 2 ans = 1.2910 >> x=[0 0.2 0.4 0.6 0.8 1] % tambien puede ser x=[0:0.1:1] >> funcion= x.^2 >> area=trapz(x,funcion) area = 0.3400

>> funcion= 'x.^2' >>fplot(funcion,[0,1]); % grafica la función MATRICES Y ARREGLOS Arreglo.- Es un conjunto de números, ordenados en filas y columnas. >> x = [1,4,5,8; 5,0,0,2; 0,1,-7,3] % crea un arreglo de 3 filas por 4 columnas x =

1 4 5 8 5 0 0 2 0 1 -7 3

>> x = [1,2,10,3] % crea un arreglo unidimensional >> x (3) % nos devuelve el elemento ubicado en la tercera posición. >> x = [1; 8; 3; 4] % crea un arreglo en una columna. >> x = 1 : 0.5: 4 % crea un arreglo de una razon constante. >> x(8) = 6 % adiciona un elemento a la matriz x en la octava posición. Arreglos Bidimensionales

Page 42: lenguaje programacion matlab

42

>> x = [1,4,5,8; 5,0,0,2; 0,1,-7,3] % crea un arreglo de 3 filas por 4 columnas >> x(2,3) % visualiza el elmento de la segunda fila y tercera columna. >> x(1,:) % visualiza todos los elementos de la primera fila. >> x(:,3) % visualiza todos los elementos de la tercera columna. Operadores Aritmeticos de Arreglos Adición de Arreglos.- Realiza la suma de los elementos de los arreglos de acuerdo a su posición. >> a = [1,4; 5,2] >> b = [2,1; 3,4] >> c = a + b c= 3 5 8 6 >> b = a +2 % suma 2 unidades a cada elemento del arreglo. Sustracción de Arreglos >> a = [1,4; 5,2] >> b = [2,1; 3,4] >> d = a - b Multiplicación de Arreglos >> a = [1,4; 5,2; 3,7] >> b = [2,1; 3,4; 2,6] >> e = a .* b Multiplicación de un Arreglos por un número >> a = [1,4; 5,2; 3,7] >> f = -2 * a División de Arreglos.- realiza el cociente de cada elemento de los arreglos de acuerdo a su posición. >> a = [1,4; 5,2; 3,7] >> b = [2,1; 3,4; 2,6] >> g = a . / b Matriz.- Es un arreglo rectangular de números reales o complejos ordenados en filas y columnas. Producto de Matrices >> F=[3 -2 7; 6 5 4; 0 4 9] % matriz de orden 3x3 F = 3 -2 7

Page 43: lenguaje programacion matlab

43

6 5 4 0 4 9 >> G=[1 7; 0 4; 2 9] % matriz de orden 3x2 G = 1 7 0 4 2 9 >> H=F*G H = 17 76 14 98 18 97 3(1)-2(0)+7(2)=17 6(1)+5(0)+4(2)=14 0(1)+4(0)+9(2)=18 3(7)-2(4)+7(9)=76 6(7)+5(4)+4(9)=98 0(7)+4(4)+9(9)= 97 otro ejemplo >> A=[2 3 1; 1 -1 1; 0 2 2] >> B=[1 2 1; -1 2 -1; 2 0 2] >> C=A*B C = 1 10 1 4 0 4 2 4 2 Transpuesta de una Matriz .- La matriz transpuesta se obtiene intercambiando filas por columnas. >> A=[1 -3 0 -2; 3 -12 -2 -6; -2 10 2 5; -1 6 1 3] A = 1 -3 0 -2 3 -12 -2 -6 -2 10 2 5 -1 6 1 3 >> Y=A' Y = 1 3 -2 -1 -3 -12 10 6 0 -2 2 1 -2 -6 5 3 >> I=[1 0 0; 0 1 0; 0 0 1] % matriz identidad de tercer orden Inversa de Matrices >> B=[22 -6 -26 17; -17 5 20 -13; -1 0 2 -1; 4 -1 -5 3] B = 22 -6 -26 17 -17 5 20 -13 -1 0 2 -1

Page 44: lenguaje programacion matlab

44

4 -1 -5 3 >> Y=inv(B) Y = 1.0000 2.0000 3.0000 4.0000 2.0000 3.0000 1.0000 2.0000 1.0000 1.0000 1.0000 -1.0000 1.0000 0 -2.0000 -6.0000 Determinante de una Matriz >> a=[4 -3; 1 2]; >> d=det(a) d = 11 >> A=[3 -1 0 2; -1 -2 3 4; 7 4 4 0; 1 0 0 5]; >> D=det(A) D = -401 >> a=[28 25 38; 42 38 65; 56 47 83] >> det(a) ans = 770 >> a=[1/2 1/2 1 1/2; -1/2 1/2 0 1/2; 2/3 1/3 1/3 0; 1/3 1 1/3 0] >> det(a) ans = 0.1667 Rango de un Matriz: .- El rango de una matriz es igual al número de filas no nulas que quedan en la última iteración de las sucesivas transformaciones elementales que se hacen con la matriz. >> C=[0 -2 4;1 4 -5;3 1 7;0 1 -2;2 3 0] >> Z=rank(C) Z = 2 Matrices especiales: eye(m): Genera una matriz identidad de orden m x m. >> A=eye(3) A = 1 0 0 0 1 0 0 0 1 zeros(m,n): Genera una matriz m x n. >> B=zeros(3,2) B = 0 0 0 0 0 0 ones(m,n): Genera una matriz de unos de orden m x n.

Page 45: lenguaje programacion matlab

45

>> A=ones(2,3) A = 1 1 1 1 1 1 magic(n): Genera una matriz cuya suma de los elementos de sus filas, columnas y diagonales da como resultado un mismo valor. >> A=magic(3) A = 8 1 6 3 5 7 4 9 2 >> A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 Funciones en Matrices : diag(A).- Devuelve los elementos de la diagonal de una matriz cuadrada. >> A=[1 -3 0;3 -2 -6;10 2 5] A = 1 -3 0 3 -2 -6 10 2 5 >> B=diag(A) B = 1 -2 5 sum(A).- Devuelve la suma obtenida en cada una de las columnas de la matriz A. >> A=[1 -3 0;3 -2 -6;10 2 5] A = 1 -3 0 3 -2 -6 10 2 5 >> H=sum(A) H = 14 -3 -1 rand(n).- Genera una matriz de orden n x n en forma aleatoria, donde sus cuyos elementos son uniformemente distribuidos en el intervalo (0,1). >> Y=rand(3) Y = 0.0196 0.8318 0.4289 0.6813 0.5028 0.3046 0.3795 0.7095 0.1897

Page 46: lenguaje programacion matlab

46

rref(A).- Devuelve en forma canónica la matriz A. >> A=[1 -3 0;3 -2 -6] A = 1 -3 0 3 -2 -6 >> S=rref(A) S = 1.0000 0 -2.5714 0 1.0000 -0.8571 find(A).- Devuelve los índices de los elementos de la matriz A que no son cero, enumerándolos en forma vertical. >> A=[12 -31 0;13 0 -16] A = 12 -31 0 13 0 -16 >> G=find(A) G = 1 2 3 6 cross(u,v).- Calcula el producto vectorial entre dos vectores u y v de R3. >> u=[2 -5 1] >> v=[3 1 -4] >> cross(u,v) ans = 19 11 17 eig(A).- Calcula los valores y vectores propios de la matriz A. >> A=[1 2; 3 4] >> [V, D]= eig(A) V = -0.8246 -0.4160 0.5658 -0.9094 D = -0.3723 0 0 5.3723 Donde V es una matriz que contiene a los vectores propios ordenados en columnas y D es una matriz diagonal que contiene los valores propios. length(u).-Calcula la dimensión del vector u. >> u=[13 -5 1] >> length(u) ans = 3

Page 47: lenguaje programacion matlab

47

size(A).- Calcula la dimensión de la matriz A. >> A=[4 1 3;-5 2 1] >> size(A) ans = 2 3 >> D=[3;1;0;15;8] >> size(D) ans = 5 1 GRAFICA DE UNA MATRIZ: >> b=[3 4 5 6 8 6 5 6 7] >> plot(b) >> grid on >> title('Grafico de una matriz') Concatenacion de Matrices: Es un proceso para generar un matriz nueva uniendo uno

o mas matrices con el operador [ ].

>> A=[1 2 -5; 2 1 7] >> B=[3 9; 0 1] >> C=[A,B] % concatena horizontalmente las matrices D y E C = 1 2 -5 3 9 2 1 7 0 1 >> D=[6 -1 5;0 1 12] >> E=[3 2 2; 6 1 7; 5 2 -8] >> F=[D; E] % concatena verticalmente las matrices D y E F = 6 -1 5 0 1 12 3 2 2 6 1 7 5 2 -8 Funciones de concatenación de matrices: horzcat.- Concatena matrices horizontales. >> A=[8 1 6;3 5 7];; >> B=[4 13 2 1;6 7 0 11]; >> horzcat(A,B) ans = 8 1 6 4 13 2 1 3 5 7 6 7 0 11 vercat.- Concatena matrices verticalmente. >> A=[8 1 6;3 5 7;4 9 2];

Page 48: lenguaje programacion matlab

48

>> B=[4 13 1;6 0 11]; >> C=vertcat(A,B) C = 8 1 6 3 5 7 4 9 2 4 13 1 6 0 11

Page 49: lenguaje programacion matlab

49

EJEMPLOS ILUSTRATIVOS

1. Presentación de la matriz de Hilbert de orden 2 con cinco dígitos decimales.

>> vpa(hilb(2),5) ans = [ 1., .50000] [ .50000, .33333]

2. Definimos una matriz simbolia y calculamos su determinante.

>> syms a x >> A=[cos(a*x),sin(a*x);-sin(a*x),cos(a*x)] A = [ cos(a*x), sin(a*x)] [ -sin(a*x), cos(a*x)] >> det(A) ans = cos(a*x)^2+sin(a*x)^2

3. Calculamos la inversa de la matriz anterior.

>> inv(A) ans = [ cos(a*x)/(cos(a*x)^2+sin(a*x)^2), -sin(a*x)/(cos(a*x)^2+sin(a*x)^2)] [ sin(a*x)/(cos(a*x)^2+sin(a*x)^2), cos(a*x)/(cos(a*x)^2+sin(a*x)^2)]

4. Resolvemos la ecuación x4+1=0 y presentamos el resultado en escritura matemática

habitual.

>> solve('x^4+1=0') ans = 1/2*2^(1/2)+1/2*i*2^(1/2) -1/2*2^(1/2)+1/2*i*2^(1/2) 1/2*2^(1/2)-1/2*i*2^(1/2) -1/2*2^(1/2)-1/2*i*2^(1/2) >> pretty(solve('x^4+1=0')) [ 1/2 1/2 ] [ 1/2 2 + 1/2 i 2 ] [ ] [ 1/2 1/2 ] [- 1/2 2 + 1/2 i 2 ] [ ] [ 1/2 1/2 ] [ 1/2 2 - 1/2 i 2 ] [ ] [ 1/2 1/2 ] [- 1/2 2 - 1/2 i 2 ]

5. Calcular mediante los métodos aproximados de Simpson y lobato la integral siguiente

Page 50: lenguaje programacion matlab

50

Para la solución mediante el método de Simpson tenemos: >> quad(inline('2+ sin(2*sqrt(x))'),1,6) ans = 8.1835 Para la solución mediante el método de lobato tenemos: >> quadl (inline('2+ sin (2*sqrt (x))'),1,6) ans = 8.1835

6. Calcular el área comprendida bajo la curva normal (0,1) entre los limites -1.96 y 1.96

Se trata de calcular el valor de la integral

El cálculo se realiza mediante matlab utilizando el método aproximado de lobato como sigue: >> quadl(inline('exp(-x.^2/2)/sqrt(2*pi)'),-1.96,1.96) ans = 0.9500

7. Calcular el volumen del hemisferio definido en [-1,1] x[-1,1] por la función

f(x,y)=

>> dblquad(inline('sqrt(max(1-(x.^2+y.^2),0))'),-1,1,-1,1) ans = 2.0944 El cálculo también pudo haberse hecho asi: >> dblquad(inline('sqrt(1-(x.^2+y.^2)).*(x.^2+y.^2<=1)'),-1,1,-1,1) ans = 2.0944

8. Evaluar la integral doble siguiente:

>> dblquad(inline('1./(x+y).^2'),3,4,1,2) ans = 0.0408

9. Calcular los límites de las funciones siguientes:

>> syms x a >> limit((x-1)/(x^(1/2)-1),x,1)

Page 51: lenguaje programacion matlab

51

ans = 2 >> limit((x-(x+2)^(1/2))/((4*x+1)^(1/2)-3),2) ans = 9/8

10. Calculamos la derivada de la function log(sen(2x)).

>> pretty(diff('log(sin(2*x))','x')) cos(2 x) 2 -------- sin(2 x) >> pretty(simple(diff('log(sin(2*x))','x'))) 2 -------- tan(2 x)

EJERCICIOS PROPUESTOS

1. Resuelva el sistema:

2x + 3y = 4 5x – 2y = 6

2. Resuelva la ecuación cúbica 5x3 + 2x2 - 3x + 1 = 0;

3. Obtenga la solución de la ecuación diferencial ordinaria: y´-x-y = 0, y(0)=1

4. Integre la función f(x) = x sen(x)

5. Con cuantos decimales muestra el resultado el comando : >> format long

6. Con cuanto decimals se muestra el resultado? >> vpa(sqrt(2), 100)

7. Cual es el resultado de lo sigiente? >> 2/0

8. Indique el tipo de variable en cada caso:

>> x=3

Page 52: lenguaje programacion matlab

52

>> x='mensaje' >> syms x >> x=[2 7 4] >> x=2+3i

9. Indique que realiza cada uno de estos comandos:

>> clear a b c >> clc >> pwd

10. Indique el tipo de variable en cada caso:

>> save prueba >> load prueba >> delete prueba.m

>> quit

Page 53: lenguaje programacion matlab

53

EVALUACION

1. Indique le tipo de matriz:

>> a=ones(5)

2. Indique le tipo de matriz:

>> a=eye(5)

3. Indique lo que genera cada comando:

>> x=rand

b=rand(4,5)

4. Que nos muestra los siguientes comsndos?

>> a=[3, 2; 1, 4];

>> b=[8, 6; 5, 7];

>> c=a'

5. Que evalúa los siguientes comandos?

>> a=[2, -3, 0, 5]

>> y=polyval(a,4)

6. Que realiza los siguientes comandos?

>> x=[1 2 4 5 7]; >> y=[5 3 6 7 4];

>> a=polyfit(x,y,2);

7. Que realiza el siguiente comando?

>> u=diff(f)

8. Que realiza el siguiente comando?

>> v=int(f)

9. Que realiza el siguiente comando?

>> r=int(f, 0, 2)

10. Dar un ejemplo de aplicación con cada uno de los siguientes comandos?

>>input

>>disp

Page 54: lenguaje programacion matlab

54

Bibliografia Referencial 1. NAKAMURA, SHOICHIRO Analisis Numérico y Visualización con Matlab. Editorial

Prentice may. México. 1997. 2. MORALES MARCHENA, HERÓN. Métodos numéricos y Visualización Gráfica Editorial

Megabit. Peru. 2005. 3. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniería Editores

Prentice. España. 2002 .

Page 55: lenguaje programacion matlab

55

CAPITULO IV

GRAFICAS CON MATLAB

OBJETIVOS: El participante aprenderá a hacer gráficos con el Matlab

CONTENIDOS: Graficos en el plano, graficos bidimensioanles y gráficos tridimensionales.

Matlab ofrece una gama amplia de opciones a la hora de realizar representaciones

gráficas. Permite realizar gráficos de curvas planas y superficies, posibilitando la

agrupación y superposición.

Gráficos en el Plano

Comandos Descripción

plot(x,y) Grafica el conjunto de puntos (x,y) en un sistema cartesiano

bar(x,y) Grafico de barras vertical, donde y representa la frecuencia y x define los espacios en el eje x.

barh(x,y) Grafico de barras horizontal.

stem(x,y) Grafico de bastones verticales.

stairs(x,y) Grafica una curva escalonada.

polar(x,y) Dibuja una curva en coordenadas polares. y=y(x)

pie(x) Realiza el grafico de sectores relativo al vector x.

rose(x) Dibuja el histograma angular relativo al vector x.

Los gráficos son una poderosa forma visual de interpretar datos. Realizar la gráfica de una

función seno durante un período, por ejemplo:

y = sin(x) para 0<=x<=2pi. En primer lugar, creamos 30 puntos entre 0 y 2pi. >> x = linspace(0,2*pi,30) ; % crea 30 puntos entre 0 y 2pi. >> y = sin(x); % calcula el seno de los puntos en x. >> plot(x,y) % la orden plot genera una grafica : Se pueden graficar al mismo tiempo muchas curvas suministrando parejas adicionales de

argumentos a plot.

>> x = linspace(0,2*pi,30) ; >> y = sin(x); >> z = cos(x) ; >> plot(x,y,x,z)

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 56: lenguaje programacion matlab

56

El siguiente ejemplo ilustra la identidad trigonométrica 2sin(a)cos(a) = sin2(a). La gráfica de

2sin(a)cos(a) se representa utilizando líneas i trazos.

>> plot(x,y,x,2*y.*z,'r*') >> grid % para colocar una rejilla en los puntos marcados sobre los ejes >> xlabel(„Variable Independiente x‟) % para colocar una etiqueta sobre el eje x >> ylabel ( „ Variable dependiente‟) % para colocar una etiqueta sobre el eje y >> title („ 2sin(x)cos(x) = sin(2x) „) % para colocar un titulo sobre la grafica actual Estilo de líneas, marcadores y colores Con MATLAB se puede especificar los colores y los estilos de línea que necesita dando un

argumento adicional a plot después de cada pareja de arrays de datos. El argumento

opcional adicional es una cadena de caracteres formada por 1, 2 ó 3 caracteres de la tabla

siguiente:

Símbolo Color Símbolo Estilo de línea

y amarillo m magenta c turquesa r rojo g verde b azul w blanco k negro

. punto o círculo x marca - x + más * estrella * línea sólida : línea punteada -. línea punto-raya -- línea de trazos

>> plot(x,y,'bo',x,z,'r--',x,y,'k*',x,z,'c.')

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Variable Independiente X

Var

iabl

e D

epen

dien

te

2sin(x)cos(x) = sin(2x)

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 57: lenguaje programacion matlab

57

Para añadir una etiqueta identificando

la curva del seno en la localización (2.5,0.7): >> text (2.5,0.7,‟sin(x)‟) >> x=-1 :0.1 :5; >> y=sin(x.^2); >> plot(x,y) >> grid on >> title('grafico de y=sin(x.^2)') histograma de una curva en forma de campana de datos gausianos: >> x=-3 :0.2 :3; >> y=exp(-x.^2); >> bar(x,y) >> grid on >> title('grafico de Barras') >> x=-2.9:0.2:2.9; % especifica los elementos a usar >> y=randn(5000,1); % crea 5000 puntos aleatorios >> hist(y,x) % dibuja el histograma >> title('Histograma de Datos Gausianos') >> x=-3 :0.2 :3; >> y=cos(-x.^3)-2*x+1; >> barh(x,y); >> grid on >> title('grafico Barras Horizontal')

0 1 2 3 4 5 6 7-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

indepent variable x

depe

nden

t va

riabl

e y

and

z

sine and cosine curves

sin(x)

-1 0 1 2 3 4 5-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1grafico de y=sin(x.2

-4 -3 -2 -1 0 1 2 3 40

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1grafico de Barras

-6 -4 -2 0 2 4 6 8-4

-3

-2

-1

0

1

2

3

4grafico Barras Horizontal

-3 -2 -1 0 1 2 30

50

100

150

200

250

300

350

400

450Histograma de Datos Gausianos

Page 58: lenguaje programacion matlab

58

>> x=0 :0.2 :10; >> y=sin(x); >> stairs(x,y); >> grid on >> title('grafico tipo stairs') gráficos en coordenadas polares utilizando la orden polar (t, r), donde t es el vector de

ángulos en radianes, r es el radio vector

>> t=0 : .01 : 2*pi; >> r=sin(2*t).*cos(2*t); >> polar(t,r) >> title('Coordenadas Polares de: sin(2t)cos(2t)‟)

>> y=randn(50,1); % crea algún dato aleatorio >> stem(y,':') % dibuja una gráfica stem con línea punteada >> title('Grafico Stern de datos aleatorios')

Una gráfica puede incluir barras de error en los puntos. errorbar (x, y, e) representa. la

gráfica del vector x frente al vector y con barras de error especificadas por el vector e.

Todos los vectores deben tener la misma longitud. Para cada punto (xi,yi), se dibuja una

barra de error una distancia ei por encima y ei por debajo del punto.

>> x=0:0.1:2; % crea un vector >> y=erf(x); % y es la función error de x >> e=rand(size(x) )/10; % genera valores de error aleatorios >> errorbar(x,y,e) % crea la gráfica >> title('Errorbar Plat')

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1grafico tipo stairs

0.1

0.2

0.3

0.4

0.5

30

210

60

240

90

270

120

300

150

330

180 0

Polar Plot of sin(2t)cos(2t)

0 5 10 15 20 25 30 35 40 45 50-3

-2

-1

0

1

2

3Ploteo Stern de Datos Aleatorios

-0.5 0 0.5 1 1.5 2 2.5-0.2

0

0.2

0.4

0.6

0.8

1

1.2Ploteo de la Barra de Error

Page 59: lenguaje programacion matlab

59

Se pueden representar datos complejos usando compass y feather. Compass (z) dibuja

una gráfica que visualiza el ángulo y la magnitud de los elementos complejos de z como

flechas que emanan del origen. Feather (z) representa los mismos datos usando flechas

que emanan de puntos igualmente espaciados sobre una línea horizontal.

compass (x,y) y feather (x,y) son equivalentes a compass (x+i*y) y feather (x+i*y).

>> z=eig(randn(20,20)); >> compass (z) >> title('Compass Plot of the Eigenvalues of a Random Matrix') >> feather (z)

>> title (‟Feacther Plot of Eigenvalues of a Random Matrix‟)

La orden subplot (m, n, p) subdivide la ventana de la figura actual en una matriz mxn de las

áreas de representación gráfica y escoge como activa el área p-ésima. Las subgráficas se

numeran de izquierda a derecha a lo largo de la lila superior, luego la segunda fila, etc. por

ejemplo:

% ejemplo de Grafico en multiples ejes >> x=linspace(0,2*pi,30); >> y=cos(x); >> z=sin(x); >> a=y.*z+58; >> f=tan(x); >> g=z+a+f; >> u=y.*z.*a; >> subplot(3,2,1), plot(x,y,'r-'), title( 'Grafico No 1' ); >> subplot(3,2,2), plot(x,z,'mo'), title( 'Grafico No 2' ); >> subplot(3,2,3), plot(x,a,'g*'), title( 'Grafico No 3' ); >> subplot(3,2,4), plot(x,f,'b+'), title( 'Grafico No 4' ); >> subplot(3,2,5), plot(x,g,'k--'), title( 'Grafico No 5' ); >> subplot(3,2,6), plot(x,u,'c:'), title( 'Grafico No 6' );

-5 0 5 10 15 20 25-4

-3

-2

-1

0

1

2

3

4Feacther Plot of Eigenvalues of a Random Matrix

2

4

6

30

210

60

240

90

270

120

300

150

330

180 0

Compass Plot of the Eigenvalues of a Random Matrix

Page 60: lenguaje programacion matlab

60

Gráfica de Superficies Plot3(x,y,z) : Realiza una grafica de un conjunto de puntos x,y,z en un sistema de 3

dimensiones.

El ejemplo siguiente genera una grafica 3-D con una rejilla. >> x = linspace(0,2*pi,30) ; % crea 30 puntos entre 0 y 2pi. >> y = sin(x); % calcula el seno de los puntos en x. >> z = cos(x) ; >> plot3(y,z,x), grid >> t = -8:0.2:8 ; % crea puntos entre -8 y 8. >> x = t; >> y = 3-t ; >> z=cos(t); >> plot3(x,y,z), grid mesh(x,y,z) : Grafica una superficie explicita z=f(x,y) con los arreglos x, y e z.

0 2 4 6 8-1

0

1Grafico No 1

0 2 4 6 8-1

0

1Grafico No 2

0 2 4 6 857.5

58

58.5Grafico No 3

0 2 4 6 8-20

0

20Grafico No 4

0 2 4 6 80

50

100Grafico No 5

0 2 4 6 8-50

0

50Grafico No 6

-10

-5

0

5

10

-5

0

5

10

15-1

-0.5

0

0.5

1

Page 61: lenguaje programacion matlab

61

>> [x,y] = meshgrid(-2:0.2:2); >> z = x.*exp(-x.^2-y.^2) >> mesh(x,y,z) >> title('Z=X.*exp(-x. ^2 – y.^2)');

cylinder('f') : Grafica una superficie de revolución generada por la rotación de la función

f=f(t) en el intervalo definido para t.

explicita z=f(x,y) con los arreglos x, y e z. >> t = 0:0.2:7 ; >> cylinder(2+sin(t)); >> title(' 2 + sin( t )'); >> xlabel('eje x') ; ylabel('eje y') ; zlabel('eje z')

-2

-1

0

1

2

-2

-1

0

1

2-0.5

0

0.5

Z=X.*exp(-x. 2 – y.2)

-4

-2

0

2

4

-4

-2

0

2

40

0.2

0.4

0.6

0.8

1

eje x

2 + sin( t )

eje y

eje

z

Page 62: lenguaje programacion matlab

62

EJERCICIOS PROPUESTOS

1. Realizar el siguiente gráfico.

function y=prueba(x) y = 1./((x-.3).^2+.01)+1./... ((x-.9).^2+.04)-6;

>> x=-1:0.1:2; >> plot(x,prueba(x))

2. Realizar el siguiente gráfico con los datos que Ud. sugiera.

3. Ingrese los datos para realizar el siguiente gráfico.

0.5

1

1.5

2

30

210

60

240

90

270

120

300

150

330

180 0

Page 63: lenguaje programacion matlab

63

EVALUACION

1. Realizar el grafico en coordenadas polares de la siguiente ecuación:

2cos2 r

2. Gráfica la circunferencia con centro en el origen:

1622 yx

3. Grafica la siguiente hipérbola con eje focal en el eje x:

194

22

yx

4. Gráfica la siguiente parábola con el eje focal en x:

)(4/1 2yx

5. Gráfica la elipse con el eje focal x:

1620

22

yx

6. Gráfica la siguiente función:

7. Gráfica la siguiente función: f(z) = z2

8. Gráfica los resultados de unas elecciones con 5 participantes en un gráfico

tipo pastel.

9. Realiza con los datos anteriores un diagrama de sectores 3D.

Page 64: lenguaje programacion matlab

64

10. Realizar un gráfico para generar un histograma con 1000 números aleatorios

siguiendo la normal N(0; 1)

Page 65: lenguaje programacion matlab

65

Bibliografía Referencial

1. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniería Editores Prentice. España. 2002 .

2. NAKAMURA, SHOICHIRO Analisis Numérico y Visualización con Matlab. Editorial Prentice may. México. 1997.

3. MORALES MARCHENA, HERÓN. Métodos numéricos y Visualización Gráfica Editorial Megabit. Peru. 2005.

Page 66: lenguaje programacion matlab

66

CAPITULO V

PROGRAMACION EN MATLAB

OBJETIVOS: El participante aprenderá a hacer programas en el Matlab

CONTENIDOS: Estructuras de control secuencial, bucles, bifurcaciones, sentencia if …

end, for … end, while … end, case … end,

PPRROOGGRRAAMMAACCIIÓÓNN IINNFFOORRMMÁÁTTIICCAA

Programación informática, acción de programar, es decir, de establecer una serie de

instrucciones para que el ordenador o computadora ejecute una tarea.

Previamente hay que realizar una serie de trabajos que tienen por objeto la definición de la

tarea, el análisis de la información que se quiere obtener (información de salida) y de los

datos que se precisan para ello (información de entrada), y el establecimiento del algoritmo,

o procedimiento de cálculo, que va a permitir transformar una información en otra. Para

esta labor de análisis, el programador utiliza una serie de herramientas, entre las que

destacan los diagramas de flujo y las tablas de decisión.

Resuelto del problema desde el punto de vista lógico, se utiliza un lenguaje de

programación para codificar la secuencia de instrucciones que el ordenador debe ejecutar

para realizar la tarea.

Escrito el programa, hay que verificarlo, es decir, someterlo a pruebas que determinen si

puede realizar la tarea prevista, lo que se consigue simulando situaciones que se puedan

comprobar; a esto se le denomina depuración. Una vez verificado, el programa se debe

optimizar, con el fin de utilizar los recursos del sistema del modo más eficiente.

PPRROOGGRRAAMMAACCIIÓÓNN EENN MMAATTLLAABB MATLAB es una aplicación que se puede programar muy fácilmente. De todas formas,

como lenguaje de programación pronto verá que no tiene tantas posibilidades como otros

lenguajes (ni tan complicadas...). Se comenzará viendo las bifurcaciones y bucles, y la

lectura y escritura interactiva de variables, que son los elementos básicos de cualquier

programa de una cierta complejidad, previo a ingresar a esta este capitulo se considera

que ya se cuenta con los conocimientos básicos del matlab.

Bifurcaciones y bucles

Page 67: lenguaje programacion matlab

67

MATLAB posee un lenguaje de programación que –como cualquier otro lenguaje – dispone

de sentencias para realizar bifurcaciones y bucles.

Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una

determinada condición.

La Figura muestra tres posibles formas de bifurcación.

Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. el

Matlab utiliza la palabra end para finalizar el bucle.

La Figura muestra dos posibles formas de bucle, con el control situado al principio o al final

del mismo. Si el control está situado al comienzo del bucle es posible que las sentencias no

se ejecuten ninguna vez, por no haberse cumplido la condición cuando se llega al bucle por

primera vez.

Sin embargo, si la condición está al final del bucle las sentencias se ejecutarán por lo

menos una vez, aunque la condición no se cumpla. Muchos lenguajes de programación

disponen de bucles con control al principio (for y while en C/C++/Java) y al final (do…

while en C/C++/Java).

En MATLAB no hay bucles con control al final del bucle, es decir, no existe la construcción

análoga a do... while.

Page 68: lenguaje programacion matlab

68

Las bifurcaciones y bucles no sólo son útiles en la preparación de programas o de ficheros

*.m. También se aplican con frecuencia en el uso interactivo de MATLAB, como se verá

más adelante en algunos ejemplos.

FFUUNNCCIIÓÓNN IINNPPUUTT La función input permite imprimir un mensaje en la línea de comandos de MATLAB y

recuperar como valor de retorno un valor numérico o el resultado de una expresión

tecleada por el usuario.

>> n = input('Teclee el número de ecuaciones:' ) Teclee el número de ecuaciones: 5 n = 5 Otra posible forma de esta función es la siguiente (obsérvese el parámetro 's'): >> nombre = input('¿Cómo te llamas?','s') %”s” indica que la entrada que se hara por teclado es una cadena. ¿Cómo te llamas? Walter Fuentes Lopez nombre = Walter Fuentes Lopez En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo

que se almacena en la cadena nombre. Así pues, en este caso, si se teclea una fórmula,

se almacena como texto sin evaluarse.

FFUUNNCCIIÓÓNN DDIISSPP La función disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz,

pero sin imprimir su nombre.

En realidad, disp siempre imprime vectores y/o matrices: Las cadenas de caracteres son

un caso particular de vectores. Considérense los siguientes ejemplos de cómo se utiliza:

>> disp(' El programa ha terminado ') >> A= rand(4,4) >> disp(A) Ejecútense las sentencias anteriores en MATLAB y obsérvese la diferencia entre las dos

formas de imprimir la matriz A.

>> a=[1:10]; >> b=[-10:-1]; >> disp([a;b])

Page 69: lenguaje programacion matlab

69

Da como salida: 1 2 3 4 5 6 7 8 9 10 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 SENTENCIA IF ELSE END En su forma más simple, la sentencia if se escribe en la forma siguiente: if condición sentencias end Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condición1

bloque de instrucciones 1 else if condición 2

bloque de instrucciones 2 else if condición n

bloque de instrucciones n else % opción por defecto para cuando no se % cumplan… las condiciones 1,2,n

bloque de instrucciones final end

end end En esta estructura se ejecuta solamente el primer bloque de instrucciones cuyo valor lógico

sea uno. Si ninguno de los valores lógicos que aparecen es uno entonces MATLAB ejecuta

el bloque de instrucciones final.

Donde la opción por defecto else puede ser omitida: si no está presente no se hace nada

en caso de que no se cumpla ninguna de las condiciones que se han chequeado.

Una observación muy importante: la condición del if puede ser una condición matricial, del

tipo A==B, donde A y B son matrices del mismo tamaño. Para que se considere que la

condición se cumple, es necesario que sean iguales dos a dos todos los elementos de las

matrices A y B (aij = bij, 1 i m, 1 j n).

Basta que haya dos elementos aij y bij diferentes para que las matrices ya no sean iguales,

y por tanto las sentencias del if no se ejecuten. Análogamente, una condición en la forma

A-=B exige que todos los elementos sean diferentes dos a dos (aij ‚bij, 1 i m, 1 j

n).

Page 70: lenguaje programacion matlab

70

Basta que hubiera dos elementos aij y bij iguales para que la condición no se cumpla. En

resumen:

if A == B exige que todos los elementos sean iguales dos a dos. if A ~= B exige que todos los elementos sean diferentes dos a dos. Como se ha dicho, MATLAB dispone de funciones especiales para ayudar en el chequeo

de condiciones matriciales. Por ejemplo, la función isequal (A, B) devuelve un uno si las

dos matrices son idénticas y un cero en caso de que difieran en algo.

EEjjeemmpplloo ccoonn IIff…… EEnndd 1) Programa que determina si el número ingresado por teclado es positivo, negativo o cero.

n=input(' ingresa un numero :'); if n==0; ' el numero es CERO ' else if n>0 ' el numero es POSITIVO ' else ' el numero es NEGATIVO ' end end

2) Programa que determina si el número ingresado por teclado es par o impar. n=input(' ingresa un numero :'); if n==0; fprintf (' el numero ingresado es CERO ') else if rem(n,2)==0; %obtiene el resto de dividir n entre 2 fprintf (' el numero es PAR ') else fprintf (' el numero es IMPAR ') end end

44.. SSEENNTTEENNCCIIAA FFOORR …… EENNDD La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La

siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de uno en

uno.

for i = 1 : n sentencias end

Page 71: lenguaje programacion matlab

71

for i = vector valores sentencias end Donde vector valores es un vector con los distintos valores que tomará la variable i.

for var = vector for a=0 : 1 : t sentencia 1 sentencia 2 v=[a, a^2,a^3] . . . sentencia n end end

En el siguiente ejemplo se presenta el caso más general para la variable del bucle (valor _

inicial: incremento: valor _ final); el bucle se ejecuta por primera vez con i =n, y luego i se

va reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se

termina:

for i = n : -0.2:1 sentencias end En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles

anidados. La variable j es la que varía más rápidamente (por cada valor de i, j toma todos

sus posibles valores):

for i = 1 : m for j = 1 : n

sentencias end end Una última forma de interés del bucle for es la siguiente (A es una matriz): for i = A sentencias end En la que la variable i es un vector que va tomando en cada interacción el valor de una de

las columnas de A.

Cuando se introducen interactivamente en la línea de comandos, los bucles for se ejecutan

sólo después de introducir la sentencia end que los completa.

v=[a, a^2,a^3]

for a = 0 : 1 : t

Page 72: lenguaje programacion matlab

72

El siguiente ejemplo creara un bucle que después realizará una suma de los 5 primeros

números.

En un archivo m-file: salida s=0; for n=1:5 s=n+s; disp([n s ]) end Realizar un programa haciendo uso de la instrucción for... end, para que presente en

pantalla la tabla de la suma de un número que se ingrese por teclado.

En un archivo m-file: n=input('ingrese n:'); for i=0:12; s=n+i; disp([n,i,s]) end

En un archivo m-file: para presentar la tabla de la resta clc n=input('ingrese el numero:'); for m=n:n+12; d=m-n; disp([m n d]) end

ingrese el numero:5 5 5 0 6 5 1 7 5 2 8 5 3 9 5 4 10 5 5 11 5 6 12 5 7 13 5 8 14 5 9 15 5 10 16 5 11 17 5 12

1 1

2 3

3 6

4 10

5 15

ingrese n:1

1 0 1 1 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1 6 7 1 7 8 1 8 9 1 9 10 1 10 11 1 11 12 1 12 13

Page 73: lenguaje programacion matlab

73

5. SENTENCIA WHILE

El bucle while o bucle mientras es una estructura de la mayoría de los lenguajes de

programación estructurados cuyo propósito es repetir un bloque de código mientras una

condición se mantenga verdadera.

Java. Su sintaxis es la siguiente:

While condición

Sentencias end

Donde condición puede ser una expresión vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en

condición, es decir, mientras haya algún o algunos elementos true.

El bucle se termina cuando todos los elementos de condición son false (es decir, cero).

EEJJEEMMPPLLOOSS IILLUUSSTTRRAATTIIVVOOSS Programa que te permite obtener un tabla de multiplicación clc n=input('ingrese el número:'); while n<=0; %restringe negativos y 0 n=input('ingrese el número:'); end for f=1:12;%crea el factor multiplicador p=n*f; %creacion de los productos disp([n f p]) end Programa para determinar el número de divisores clc n=input('ingrese valor:');

ingrese el número:5 5 1 5 5 2 10 5 3 15 5 4 20 5 5 25 5 6 30 5 7 35 5 8 40 5 9 45 5 10 50 5 11 55 5 12 60

Page 74: lenguaje programacion matlab

74

c=0;%contador para el numero de divisores for g=(1:n); if mod(n,g)==0%bucle solo para resto 0 d=n; c=c+1; end end 'el numero de divisores es' disp([c]) Programa para hallar el factorial de un número %programa para sacar el factorial de un número clc n=input('ingrese el numero:');%ingreso del número fa=1; while n<0;%restricción para los negativos' 'el numero que ingreso es negativo no tiene factorial' n=input('ingrese el numero:'); end if n==0;%restricción para el 0 Factorial=fa else for i=1:n;%bucle de multiplicación hasta n fa=fa*i; if i==n; Factorial=fa%resultado final end end end

Program para realizar un tabla de división clc n=input('ingrese el número:'); while n<=0 'el numero ingresado debe ser mayor que cero' n=input('ingrese el número:'); end for r=1:12;

ingrese valor:7 ans = el numero de divisores es 2

ingrese el numero:-5 ans = el numero que ingreso es negativo no tiene factorial ingrese el numero:5 Factorial = 120

Page 75: lenguaje programacion matlab

75

D=n*r; disp([D n r]) end

Programa para convertir de grados Celsius a grados kelvin %Programa para convertir grados celsius a kelvin clc n=input('ingrese n:');%grados celsius d=n-5; for n=d:n+5; kelvin=n+273;%grados kelvin disp([n kelvin]) end Programa para hallar el tiempo de encuentro de dos móviles a una cierta distancia

clc da=0;%distancia inicial del movil 1 db=0;%distancia inicial del movil 2 t=0;%contador para el tiempo v1=input('ingrese velocidad del movil 1:'); while v1 <= 0%restringe velocidades negativas y 0 'ingrese velocidad positiva' v1=input('ingrese velocidad del movil 1:'); end v2=input('ingrese velocidad del movil 2:'); while v2 <= 0%restringe velocidades negativas y 0 'ingrese velocidad positiva'

ingrese el número:-6 ans = el numero ingresado debe ser mayor que cero ingrese el número:5 5 5 1 10 5 2 15 5 3 20 5 4 25 5 5 30 5 6 35 5 7 40 5 8 45 5 9 50 5 10 55 5 11 60 5 12

ingrese n:10 5 278 6 279 7 280 8 281 9 282 10 283 11 284 12 285 13 286 14 287

15 288

Page 76: lenguaje programacion matlab

76

v2=input('ingrese velocidad del movil 2:'); end d=input('ingrese la distancia de separacion:'); while d <= 0%restringe distancias negativas y 0 'ingrese valores positivos' d=input('ingrese la distancia de separacion:'); end disp([t da db d]) while da+db<%Bucle hasta el encuentro t=t+1;%creador del tiempo da=v1*t; db=v2*t; disp([t da db d])%imprime los datos correspond. end

Programa para hallar la gráfica de cualquier ecuación con una sola variable

En un archivo m-file: clc x=linspace(-10,10,200); a=input('ingrese ecuacion:','s') fplot(a ,[-100 100]) El gráfico que sale es:

ingrese velocidad del movil 1:20 ingrese velocidad del movil 2:30 ingrese la distancia de separacion:500 0 0 0 500 1 20 30 500 2 40 60 500 3 60 90 500 4 80 120 500 5 100 150 500 6 120 180 500 7 140 210 500 8 160 240 500 9 180 270 500 10 200 300 500

ingrese ecuacion:x^2-5 a = x^2-5

Page 77: lenguaje programacion matlab

77

-100 -80 -60 -40 -20 0 20 40 60 80 100-2000

0

2000

4000

6000

8000

10000

Programa para ordenar 3 números en forma ascendente %programa para ordenar 3 números en forma ascendente clc n1=input('ingrese el primer número:'); n2=input('ingrese el segundo número:'); n3=input('ingrese el tercer numero:'); if n1 ~= n2 & n2 ~= n3;%restricción para números iguales if n1>=n2 & n2>=n3; disp([n3 n2 n1]) end if n1>=n2 & n3>=n2 & n1>=n3; disp([n2 n3 n1]) end if n2>=n1 & n1>=n3; disp([n3 n1 n2]) end if n2>=n1 & n3>=n1 & n2>=n3; disp([n1 n3 n2]) end if n3>=n1 & n1>=n2; disp([n2 n1 n3]) end if n3>=n1 & n2>=n1 & n3>=n2; disp([n1 n2 n3]) end else disp([n1 n2 n3])%en caso contrario si son iguales end Programa para hallar y mostrar los divisores de un número %programa para hallar los divisores de un número clc n=input('ingrese el número :');%ingreso del número while n<=1;%restricción para el cero y negativos 'ingrese numeros mayores que 1' n=input('ingrese el número:'); end for g=1:n;

Page 78: lenguaje programacion matlab

78

if rem(n,g)==0;%resto d división cero disp([g]) end end Programa para saber si un número es primo mostrando sus divisores %programa para hallar los divisores de un número n=input('ingrese el número :') c=0;%contador de los divisores while n<=1;%restricción para el cero y negativos n=input('ingrese el número:'); end for g=1:n; if rem(n,g)==0;%resto d división cero c=c+1; disp([g]) end end if c==2 'primo' else 'divisible' end Programa para saber si un número es perfecto mostrando sus divisores n=input('ingrese el numero:'); while n<=1 n=input('ingrese el numero:'); end D=n; sum=0; for d=1:n; resto=rem(D,d); if resto==0 sum=sum+d; disp([d]) end end if sum==2*d; 'perfecto' else ' no es perfecto' end Programa para promediar un número determinado de notas. n=input('cuantas notas se va a promediar:'); while n<1; 'el numero de notas no es promediable' n=input('cuantas notas se va a promediar:'); end sum=0; c=0;

Page 79: lenguaje programacion matlab

79

nota=1; while nota>-1 & nota<=20 while c<n nota=input('ingrese nota:'); if nota>=0 & nota<=20 sum=sum+nota; c=c+1; end end nota=100; end p=sum/c; 'promedio:' disp(p) Programa para la división de números hasta el 12 %programa para hallar la tabla de dividir hasta el 12 n=input('ingrese el número:'); while n<=0 'el numero ingresado debe ser mayor que cero' n=input('ingrese el número:'); end for r=1:12; D=n*r; disp([D n r]) end Programa que ejecuta sentencias con valores de: x de 1 hasta 9. for x=1:2:9 y=x.^2 - 1; disp([x , y ]); end clear all clc for n = 1 : 5 x(n) = sin ( n*pi / 10 ) end Programa función que devuelve una sola variable Guardar en un archivo con el nombre: cubica.m function [y]=cubica(x) y=2*x^3+8; para utilizar esta función digitar desde la ventana de comandos: >> cubica(5)

Page 80: lenguaje programacion matlab

80

ans = 258 Programa función que devuelve multiples variables Guardar en un archivo con el nombre: media_ds.m function [M,S]=media_ds(x) n=length(x); M=sum(x)/n S=sqrt(( sum(x.^2/n)-M^2 )) para utilizar esta función digitar desde la ventana de comandos: >> x= [1 2 ] >> media_ds(x); M = 1.5000 S = 0.5000 Programa función con varias opciones, guardar en un archivo con el nombre:

numero.m

function numero(x) if x > 0 opcion = 1; end if x < 0 opcion = 2; end if x == 0 opcion = 3; end switch opcion case 1 disp('x un numero positivo' ); case 2 disp('x un numero negativo' ); otherwise disp('x es nulo' ); end clear all para utilizar esta función numero digitar desde la ventana de comandos: >> numero(-1) programa con el commando CASE … END

Page 81: lenguaje programacion matlab

81

clc clear all x=0; while x<=0 | x>=8 x=input('ingrese un número entre 1 y 7: '); end if x==1 opcion=1; end if x==2 opcion=2; end if x==3 opcion=3; end if x==4 opcion=4; end if x==5 opcion=5; end if x==6 opcion=6; end if x==7 opcion=7; end switch opcion case 1 disp('DIA DOMINGO'); case 2 disp('DIA LUMES'); case 3 disp('DIA MARTES'); case 4 disp('DIA MIERCOLES'); case 5 disp('DIA JUEVES'); case 6 disp('DIA VIERNES'); otherwise disp('DIA SABADO'); end Programa para obtener las raíces de polinomios P(x)= x3 -2x -5 >> p=[1 0 -2 -5]; >> r= roots(p) r =

Page 82: lenguaje programacion matlab

82

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

20

40

60

80

100

120REGRESION LINEAL

TIEMPO EN SEGUNDOS

TE

MP

ER

AT

UR

A E

N o

F

2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i Programa para obtener la derivada de un polinomio P(x)= 2x4 –x3 +3x2 +5x +9 >> P=[2 -1 3 5 9 ]; >> polyder(P) ans = 8 -3 6 5 esto es: P¨(x)= 8x3 –3x2 +6x +5 Programa para obtener la derivada de un producto de polinomios P(x)= x2 +5x +9 y Q(x)=x2 +x -1 >> P=[1 -5 9]; >> Q= [1 1 -1]; >> polyder(P,Q) ans = 4 -12 6 14 esto es: P¨(x)= 4x3 –12x2 +6x +14 Realizar un programa para el ajuste de datos a un modelo lineal, polinomial cuadrático, polinomial cúbico y cuarto grado. Se realiza una prueba de funcionamiento de un equipo en la cual se toman datos de la temperatura en grados Fahrenheit durante los 5 primeros segundo y se obtienen los siguientes datos

Tiempos 0 1 2 3 4 5 Temperaturas 0 20 60 68 77 110 x = 0:5; y = [0, 20, 60, 68, 77, 110]; coef = polyfit(x, y, 1) m=coef(1); b=coef(2); y1 = m.*x+b; plot(x, y1, x, y, 'ms'), title('REGRESION LINEAL') xlabel ('TIEMPO EN SEGUNDOS') Ylabel ('TEMPERATURA EN oF') Coef = 20.8286 3.7619 % con este dato se obtiene la ecuación: Se observa que el modelo lineal ajustado tiene la ecuación:

Page 83: lenguaje programacion matlab

83

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

20

40

60

80

100

120REGRESION LINEAL

TIEMPO EN SEGUNDOS

TE

MP

ER

AT

UR

A E

N o

F

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-20

0

20

40

60

80

100

120REGRESION LINEAL

TIEMPO EN SEGUNDOS

TE

MP

ER

AT

UR

A E

N o

F

Y = 20.8286 x + 3.7619

Para realizar un mejor ajuste de datos usaremos un modelo polinomial cuadrático, para lo cual se utilizará el siguiente programa. x = 0:5; y = [0, 20, 60, 68, 77, 110]; coef = polyfit(x, y, 2) a=coef(1); b=coef(2); c=coef(3); y2 = a*x.^2 + b * x + c; plot(x, y2, x, y, 'r*'), title('REGRESION LINEAL') xlabel ('TIEMPO EN SEGUNDOS') Ylabel ('TEMPERATURA EN oF') coef = -1.0536 26.0964 0.2500 % con estos coeficientes se obtiene la ecuación: Se observa que el polinomio de segundo grado ajustado tiene la ecuación:

y = -1.0536 x2 + 26.0964 x + 0.2500 Para realizar un mejor ajuste de datos usaremos un modelo polinomial cúbico, para lo cual se utilizará el siguiente programa. x = 0:5; y = [0, 20, 60, 68, 77, 110]; coef = polyfit(x, y, 3) a=coef(1); b=coef(2); c=coef(3); d=coef(4); y3 = a*x.^3 + b*x.^2 + c * x + d; plot(x, y3, x, y, 'oc'), title('REGRESION LINEAL') xlabel ('TIEMPO EN SEGUNDOS') Ylabel ('TEMPERATURA EN oF')

Coef = 1.1019 -9.3175 41.1918 -3.0556 % con estos coeficientes se obtiene la ecuación.

Se observa que el polinomio de tercer grado ajustado tiene la ecuación:

y = 1.1019 x3 -9.3175x2 + 41.1918x -3.0556 Para realizar el mejor ajuste de datos usaremos un modelo polinomial de cuarto grado, para lo cual se utilizará el siguiente programa.

Page 84: lenguaje programacion matlab

84

x=[0 1 2 3 4 5 ];

y = [0 20 60 68 77 110]; coef = polyfit(x, y, 4) a=coef(1); b=coef(2); c=coef(3); d=coef(4); e=coef(5); y4 = a*x.^4 + b*x.^3 + c*x.^2 + d*x + e; plot(x, y4, x, y, 'o'), title('REGRESION LINEAL') xlabel ('TIEMPO EN SEGUNDOS') Ylabel ('TEMPERATURA EN oF') coef = 1.5625 -14.5231 38.6736 -3.4511 -0.3770 Se observa que el polinomio de cuarto grado ajustado tiene la ecuación: y = 1.5625x4 -14.5231x3 + 38.6736x2 -3.4511x -0.3770

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-20

0

20

40

60

80

100

120REGRESION LINEAL

TIEMPO EN SEGUNDOS

TE

MP

ER

AT

UR

A E

N o

F

Page 85: lenguaje programacion matlab

85

EJERCICIOS PROPUESTOS

1. Revisar y analizar el siguiente programa en matlab clc,clear all %ESTE PROGRAMA SIRVE PARA DETERMINAR EL VECTOR, MODULO Y LOS ANGULOS EN %TRES DIMENSIONES, YA QUE INGRESANDO POR EL TECLADO EL PROGRAMA SE DETERMINA %INMEDIATAMENTE disp('===========================================================================') disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') disp(' HALLANDO EL VECTOR, MODULO Y LOS ANGULOS EN TRES DIMENSIONES') disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') disp('===========================================================================') format short x1=input('"==> ingrese x1" : '); y1=input('"==> ingrese y1" : '); z1=input('"==> ingrese z1" : '); x2=input('"==> ingrese x2" : '); y2=input('"==> ingrese y2" : '); z2=input('"==> ingrese z2" : '); v=x2-x1; v1=y2-y1; v2=z2-z1; m=sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2); A=(v/m); B=(v1/m); C=(v2/m); alfa=acos(v/m); beta=acos(v1/m); ganma=acos(v2/m); a=acos(v/m)*180/pi; b=acos(v1/m)*180/pi; g=acos(v2/m)*180/pi; disp('---------------------------------------------------------------------------') disp(' el vector es: ') %Concatenando con i,j y k para una mejor presentacion v=num2str(v);%Por Ebc v1=num2str(v1); v2=num2str(v2); v=strcat(v,'i'); v1=strcat(v1,'j'); v2=strcat(v2,'k'); fprintf('%1s\t','');fprintf('%0s\t',v); fprintf('%1s\t','');fprintf('%0s\t',v1); fprintf('%1s\t','');fprintf('%0s\t',v2);fprintf('\n\n'); disp('---------------------------------------------------------------------------') disp(' el modulo es: ')

Page 86: lenguaje programacion matlab

86

disp([m]) disp('---------------------------------------------------------------------------') disp(' VECTOR UNITARIO: ') %Concatenando con i,jyk para una mejor presentacion A=num2str(A); B=num2str(B); C=num2str(C); A=strcat(A,'i'); B=strcat(B,'j'); C=strcat(C,'k'); fprintf('%1s\t','');fprintf('%0s\t',A); fprintf('%1s\t','');fprintf('%0s\t',B); fprintf('%1s\t','');fprintf('%0s\t',C);fprintf('\n\n'); %Por Ebc %En una forma mas Ordenada...Ebc disp('---------------------------------------------------------------------------') fprintf('%4s\t','');fprintf('LOS ANGULOS EN RADIANES%10d\t',''); fprintf('%12s\t','');fprintf('LOS ANGULOS EN SEXAGESIMAL%d\n','');fprintf('\n\n'); fprintf('%1s\t',''); fprintf('Alfa%s\t');fprintf('%4s\t',''); fprintf('Beta%s\t');fprintf('%4s\t',''); fprintf('Gama%s\t');fprintf('%4s\t',''); fprintf('%1s\t',' '); fprintf('Alfa%s\t');fprintf('%4s\t',''); fprintf('Beta%s\t');fprintf('%4s\t',''); fprintf('Gama%s\t');fprintf('%4s\n',''); fprintf('%1s\t',''); fprintf('%0.2f\t',alfa);fprintf('%3s\t',''); fprintf('%0.2f\t',beta);fprintf('%3s\t',''); fprintf('%0.2f\t',ganma);fprintf('%3s\t',''); fprintf('%1s\t',''); fprintf('%0.2f\t',a);fprintf('%3s\t',''); fprintf('%0.2f\t',b);fprintf('%3s\t',''); fprintf('%0.2f\t',g);fprintf('%3s\t','');;fprintf('\n\n'); disp('---------------------------------------------------------------------------') %disp('LOS ANGULOS EN SEXAGESIMAL') %disp(' alfa beta ganma') %disp([a b g]) disp('FIN DEL PROGRAMA') disp('===========================================================================') disp('===========================================================================')

2. Determinar que realiza línea a línea el siguiente programa. %programa para graficar tiempo espacio, velocidad, aceleracion clc clear all %x(x)= t^4 +2t^2 -200 %x=[1 0 2 0 -200 ]; %polyder(x) %polyval(x,t) x=[1 0 2 0 -200 ];

Page 87: lenguaje programacion matlab

87

v=polyder(x); a=polyder(v); for t=1:10 m(t)=polyval(x,t); n(t)=polyval(v,t); k(t)=polyval(a,t); hold on;grid on; subplot(2,2,1);plot(t,m(t),'m*');title('Tiempo - Espacio');xlabel('tiempo');ylabel('esapcio'); hold on;grid on; subplot(2,2,2);plot(t,n(t),'kx');title('Tiempo - Velocidad');xlabel('tiempo');ylabel('Velocidad'); hold on;grid on; subplot(2,2,3);plot(t,k(t),'bo');title('Tiempo - Aceleracion');xlabel('tiempo');ylabel('Acelecracion'); hold on;grid on; end disp('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤') disp(' Tiempo - Espacio - Velocidad - Aceleracion') disp('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤') fprintf('tiempo%d\t');fprintf(' %5s\t',''); fprintf('Espacio%d\n');fprintf(' %5s\t',''); fprintf('Velociad%d\t');fprintf(' %5s\t',''); fprintf('Aceleracio%s\n','n'); disp('------------------------------------------------------------') for h=1:10 fprintf('%s\t',''); fprintf('%d\t',h); fprintf('%15.0f\t',m(h)); fprintf('%15.0f\t',n(h)) fprintf('%15.0f\n',k(h)) end disp('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤')

3. Determinar que realiza línea a línea el siguiente programa. %PROGRAMA DE UNA PRUEBA EXPERIEMENTAL CON LA CINETICA QUIMICA DE UN %CONTAMINANTE TENIENDO COMO DATOS EL TIEMPO(EN HORAS),CONCENTRACIOIN FINAL %DEL CONTAMINANTE ASI COMO LAS INICIALES clc clear all fprintf('\n\n'); fprintf('\n\n'); fprintf('\n\n'); fprintf('\n\n'); disp('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤') disp(' PROGRAMA PARA PRUEBA EXPERIMENTAL CON CINETICA QUIMICA') disp('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤') fprintf('\n\n'); fprintf('\n\n'); fprintf(' Esta Cargando...%12.0f\n'); a=0; while a==0 tic;

Page 88: lenguaje programacion matlab

88

for i=1:1000 for u=1:10000 for o=1:50 end end end a=toc; end fprintf('\n\n'); fprintf('\n\n'); fprintf(' Presione Cualquier Tecla...%12.0f\n'); pause clc clear all S0=500;%es la concentración final del contaminante t=[2.6 5.22 7.85 10.51 13.19 15.91 18.7 21.61 24.8 31.16]; %tiempo(horas) DQO=[450 400 350 300 250 200 150 100 50 1]; %concentraciones iniciales del contaminante (DQO mg/L) %gráfico de los puntos experimentales para probar una cinética de orden = 0 plot(t, DQO,'o-') title('Datos experimentales (orden cero, grafica cinetica de orden cero)') xlabel('tiempo (h)') ylabel('DQO (mg/L)') grid pause x=t; y=log(S0./DQO); plot(x,y,'o-k') title('datos experimentales (cinetica de primer orden)') xlabel('tiempo(h)') ylabel('ln(Se /S0)(mg/L)') grid pause %prueba para cinética de orden variable x1=t./( S0-DQO); y1=log(S0./DQO)./( S0-DQO); plot(x1,y1,'o-k'); title('calculo de k1 y k2 (orden variable)') xlabel('t/( S0- Se)(Lh/mg)') ylabel('ln((S0 /Se)/( S0 -Se)(L/mg)') text(0.06, 0.0077,'o experimentales') grid hold on pause %obtencion de la recta que se ajusta mejor a los datos experimentales A=polyfit(x1,y1,1); K1=A(1); %pendiente k1 K2e=A(2); K2=-A(2); %ordenada al origen k2 %grafica de la recta que se ajusta a los datos expermientales Resta=x1.*K1+K2e; plot(x1,Resta,'--k'); text(0.06, 0.007, '---ajuste')

Page 89: lenguaje programacion matlab

89

4. Determinar línea a línea lo que realiza el siguiente programa. %LEY DE GAY -LUSSAC(1802):PROCESO ISOCORICO O ISOMETRICO %GAY -LUSSAC científico francés realizo trabajos similares a Charles %fue el que descubrió la ley estequiometrica de la combinación de los gases %en una relación volumétrica sencilla y constante; la ley:"SI EL VOLUMEN DE UN GAS %PERMANECE CONSTANTE (proceso isocorico)PAR UNA CIERTA MASA DE UN GAS ,SU PRESION ABSOLUTA VARIA DIRECTAMENTE %PROPORCIONAL A LA TEMPERATURA" %PARA ESTA LEY SE CUMPLE: P/T=Kv(donde Kv es la constante de gay -lussac)..........(1) %como bien sabemos por los gases ideales: %PV=nRT; DONDE:(n=1,R=0.08205(atm*lts)/k*mol,T=298ºk)...........(2) %este programa nos ayudara a determinar las curvas de la ley gay -lussac clc; hold off ;clear all ;clear memory; clear command history for V=100:100:500 K=(1.*0.08205)./V; P=1:0.1:10; T=P./K; switch V case 100 q='-r'; case 200 q='-b'; case 300 q='-m'; case 400 q='-R'; case 500 q='-k'; end hold on,grid on subplot(2,2,1), plot(T,P,q), title('LEY DE GAY - LUSSAC'),ylabel('presion(atm)'),xlabel('temperatura(ºk)') h=legend('V=100 Lts','V=200 Lts','V=300 Lts','V=400 Lts','V=500 Lts') hold on,grid on subplot(2,2,2),plot((1./T),P,q), title('LEY DE GAY - LUSSAC'),ylabel('presion(atm)'),xlabel('temperatura(ºk^(-1))') h=legend('V=100 Lts','V=200 Lts','V=300 Lts','V=400 Lts','V=500 Lts') hold on,grid on subplot(2,2,3), plot(T,(P./T),q), title(' LEY DE GAY - LUSSAC'),ylabel('presion(atm/ºK)'),xlabel('temperatura(ºk)') h=legend('V=100 Lts','V=200 Lts','V=300 Lts','V=400 Lts','V=500 Lts')

Page 90: lenguaje programacion matlab

90

5. Analizar los resultados del siguiente programa aplicado a la elaboración de vino

clc clear all disp('---------------------------------------------------------------------') disp(' ELABORACION DE VINO') disp('---------------------------------------------------------------------') disp(' ') disp('- Este programa nos ayudara de una manera facil y rapida detenerinar ') disp(' la adicion de azucar, levadura, etc y un balance de materia para la ') disp(' aboracion del vino dependiendo de la cantidad de materia prima con ') disp(' que contamos. ') disp(' ') x=input('Ingrese Materia Prima (Kg): '); merma1=0.05*x disp(' kg') productoi=0.95*x;%es el porcentaje de materia prima que sigue el flujo y=input('Ingrese Grados Brix: '); k=input('Ingrese Densidad del Mosto: '); j=x/k;%es el volumen de la materia prima if y<14 ('Grados Brix que me faltan:') a=14-y; disp([a]) disp(' brix') z=(j*10)/100;%Es el 10% del volumen de la materia prima que sigue el flujo disp('Cantidad azucar a agregar') azucar=z*a disp(' Kg') disp('Cantidad de levadura') levadura=0.0002*productoi disp(' Kg') merma2=0.03*(productoi+azucar) disp(' Kg') disp('BALANCE DE MATERIA') mermato=merma1+merma2 disp(' Kg') pesofinal=productoi+azucar+levadura disp(' Kg') mlprofinal=pesofinal/1.02 disp(' ml') else if y>=14 disp('Cantidad de levadura') levadura=0.0002*productoi disp(' Kg') merma2=0.03*(productoi) disp(' Kg') disp('BALANCE DE MATERIA' ) mermato=merma1+merma2

Page 91: lenguaje programacion matlab

91

disp(' Kg') pesofinal=productoi+levadura disp(' Kg') mlprofinal=pesofinal/1.02 disp(' ml') end end disp('=========================================') disp('PROCESOS DE LA FERMENTACION (Esto se saca de datos experimentales)') disp('NOTA: -Ingresar los datos en forma de vector ') disp(' -Siendo la misma cantidad de datos para todos ') disp('Ejemplo [0 2 4 6 8 10 12] ') dias=input('Ingresar el numero de dias: '); disp(' ') disp('Ejemplo [12 30 65 80 90 98 100] ') gxlalcohol=input('Ingresar g/l de alcohol producido: '); disp(' ') disp('Ejemplo [200 140 70 30 15 8 3] ') gxlazucar=input('Ingresar g/l de azucar: '); disp(' ') disp([dias]) disp([gxlalcohol]) disp([gxlazucar]) cla disp('DECREMENTO DEL AZUCAR') disp('LA ECUACION LINEALIZADA ES:') disp('y3 = a*x.^3 + b*x.^2 + c * x + d') x = dias; y = gxlazucar; coef = polyfit(x, y, 3); a=coef(1); b=coef(2); c=coef(3); d=coef(4); y3 = a*x.^3 + b*x.^2 + c * x + d; subplot(2,2,1),plot(x, y3, 'bo'), title('DECREMENTO DEL AZUCAR') xlabel ('Dias') ylabel ('g/l de Azucar') disp(' a b c d') disp([a b c d]) disp('INCREMENTO DE ALCOHOL') disp('LA ECUACION LINEALIZADA ES:') disp('y3 = a*x.^3 + b*x.^2 + c * x + d') x = dias; z = gxlalcohol; coef = polyfit(x, z, 3); a=coef(1); b=coef(2); c=coef(3); d=coef(4); ya3 = a*x.^3 + b*x.^2 + c * x + d;

Page 92: lenguaje programacion matlab

92

subplot(2,2,2),plot(x, ya3, 'ro'), title('INCREMENTO DE ALCOHOL') xlabel ('Dias') ylabel ('% de Alcohol') disp(' a b c d') disp([a b c d]) subplot(2,2,3),plot(x, y,'b+', x, z, 'r+'), title('GRAFICO 1 y 2 LINEALIZADOS')

6. Ejecutar el siguiente programa y analizar los resultados. %PROGRAMA PARA HALLAR DERIVADAS PARCIALES y SU GRAFICA clc; disp('=================================================') disp('---------------------OBTENCION DE LA DERIVADA-------------------') disp('----------------------PARCIAL RESPECTO A X e Y----------------------') disp('=================================================') syms x y z %la funcion syms define como variables a X e Y A=input('ingrese funcion:'); B=diff(A,x) C=diff(A,y) disp('la derivada respecto a x es:'),; disp(diff(A,x)) %calcula la derivada parcial respecto a X disp('la derivada respecto a y es:'); disp(diff(A,y)) %calcula la derivada parcial respecto a y subplot(1,2,1), ezplot(z-B) %la funcion ezplot muestra el grafico panoramico de la funcion subplot(1,2,2), ezplot(z-C) %El ezplot muestra el titulo por defecto SALIDA:

=================================================== ---------------------OBTENCION DE LA DERIVADA---------------------- -----------------------PARCIAL RESPECTO A X e Y------------------------ ===================================================

ingrese funcion:x^2+y^3 la derivada respecto a x es: 2*x la derivada respecto a y es: 3*y^2

Page 93: lenguaje programacion matlab

93

7. Ejecutar el siguiente programa y analizar los resultados. %METODO de NEWTON RAPHSON mas rápido converge la función(llega a la solucion) clc; disp('===========================================') disp('-------------* METODO DE NEWTON RAPHSON *---------') disp('===========================================') nombre_f=input(' ingrese función asociada f(x)=','s'); x0=input(' ingrese valor inicial:'); fprintf('\n'); fprintf('iter aproximación g(x) error\n'); i=1;e=1;delta=0.001; while e>=3E-12 & i<=18 x=x0; fx0=eval(nombre_f); x=x0-delta; df1=eval(nombre_f); x=x0+delta; df2=eval(nombre_f); dfx0=(df2-df1)/(2*delta); r=x0-(fx0/dfx0); e=abs((r-x0)/r); fprintf('%3.0f %10.6f %10.6f %10.6f\n',i,x0,r,e); x0=r; i=i+1; end disp('-----------------------------------------') fprintf(' la raiz es:%10.9f\n',x0); disp('-----------------------------------------') SALIDA:

=================================================== -------------------*METODO DE NEWTON RAPHSON*------------------ ===================================================

ingrese funcion asociada f(x)=5*x - x^3 ingrese valor inicial:2 iter aproximación g(x) error 1 2.000000 2.285714 0.125000 2 2.285714 2.237640 0.021484 3 2.237640 2.236070 0.000702 4 2.236070 2.236068 0.000001 5 2.236068 2.236068 0.000000 ---------------------------------------------- la raiz es:2.236067977 ----------------------------------------------

Page 94: lenguaje programacion matlab

94

8. Ejecutar el siguiente programa y analizar los resultados. %PROGRAMA PARA INTEGRALES DEFINIDAS POR EL METODO DE SIMPSON clc; disp('===================================================') disp('---------------------------* METODO DE SIMPSON *-----------------------') disp('===================================================') syms x A=input('ingrese función:') B=input('ingrese primer limite:') C=input('ingrese segundo limite:') D=subs(A,B); %Evalúa la función A para el valor de B E=subs(A,C); %Evalúa la función A para el valor de C D=(B+C)/2; F=subs(A,D); %Evalúa la función para la semisuma de valores G=(C-B)*(D+E+4*F)/6; disp('-------------------------------') fprintf('La solución es: %10.6f\n',G); disp('-------------------------------') SALIDA:

=================================================== ---------------------------* METODO DE SIMPSON *------------------------ ===================================================

ingrese funcion:log(x/2)-x^3+x

A = log(1/2*x)-x^3+x

ingrese primer limite:4 B = 4 ingrese segundo limite:2 C = 2 ---------------------------------- La solución es: 32.459380 ----------------------------------

9. Ejecutar el siguiente programa y analizar los resultados. %este programa sirve para hallar el siguiente la siguiente integral definida :

dxxsen )(ln

%ingresando por teclado el límite superior (a) y el limite inferior (b): clc;

Page 95: lenguaje programacion matlab

95

disp('=====================================================') disp('--------PROGRAMA PARA HALLAR LA INTEGRAL DE sen(ln x)-------- ') disp('=====================================================') a=input('ingrese el limite superior:'); b=input('ingrese el limite inferior:'); if a>b r=cos(log(a))-cos(log(b)); disp('el resultado de la integral es:') disp(r) else r=tan(a)-tan(b); disp('el resultado de la integral es:') disp(r) end disp('=====================') disp('FIN DEL PROGRAMA') disp('=====================') SALIDA:

================================================= ----PROGRAMA PARA HALLAR LA INTEGRAL DE sen(ln x)--- =================================================

ingrese el limite superior:5 ingrese el limite inferior:8 el resultado de la integral es: 3.4192

===================== FIN DEL PROGRAMA =====================

10. Ejecutar el siguiente programa y analizar los resultados. %Programa para integrar por el método del trapecio clc, disp('================================================') disp('------------------------* METODO DEL TRAPECIO *----------------------') disp('================================================') fprintf('\n'); f=input('Ingrese la función a integrar f(x) =','s'); a=input('Ingrese limite inferior :'); b=input('Ingrese limite superior :'); n=input('Ingrese números de trapecios a considerar en la integración :'); xmin=a-1;xmax=b+1; h=(b-a)/n; x=a:h:b; fx=eval(f);y=abs(fx); A=y(1)+y(n+1); B=2*sum(y(2:n)); integral=(h/2)*(A+B); fprintf('el área es:%10.9f\n',integral); %grafica

Page 96: lenguaje programacion matlab

96

xp=xmin:0.2:xmax; x=xp; yp=eval(f); plot(xp,yp,'g'); hold on x=a:0.05:b; y=eval(f); bar(x,y,'r'); grid

SALIDA: ==============================================

--------------------* METODO DEL TRAPECIO *-------------------

==============================================

Ingrese la función a integrar f(x) =sqrt(1+x.^2)

Ingrese limite inferior :2

Ingrese limite superior :3

Ingrese números de trapecios a considerar en la integración :8

el área es:2.694824624

Page 97: lenguaje programacion matlab

97

EVALUACIÓN

Describir línea por línea lo que hace el programa y luego indicar el resultado de la ejecución de dicho programa. clc,clear all %ESTE PROGRAMA SIRVE PARA xxxxxx xxxxx xxxxxxx xxxxxx disp('================================================================') disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') disp(' xxxxx xxxxx xxxxx xxxxxxx xxxxxxx') disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') disp('================================================================') format short x1=input('"==> ingrese x1" : '); y1=input('"==> ingrese y1" : '); z1=input('"==> ingrese z1" : '); x2=input('"==> ingrese x2" : '); y2=input('"==> ingrese y2" : '); z2=input('"==> ingrese z2" : '); v=x2-x1; v1=y2-y1; v2=z2-z1; m=sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2); A=(v/m); B=(v1/m); C=(v2/m); alfa=acos(v/m); beta=acos(v1/m); ganma=acos(v2/m); a=acos(v/m)*180/pi; b=acos(v1/m)*180/pi; g=acos(v2/m)*180/pi; disp('---------------------------------------------------------------------------') disp(' el vector es: ') %Concatenando con para una mejor presentacion v=num2str(v);%Por Ebc v1=num2str(v1); v2=num2str(v2); v=strcat(v,'i'); v1=strcat(v1,'j'); v2=strcat(v2,'k'); fprintf('%1s\t','');fprintf('%0s\t',v); fprintf('%1s\t','');fprintf('%0s\t',v1); fprintf('%1s\t','');fprintf('%0s\t',v2);fprintf('\n\n'); disp('---------------------------------------------------------------------------') disp(' el modulo es: ') disp([m]) disp('---------------------------------------------------------------------------') disp(' xxxxxxx xxxxxxxxx: ') %Concatenando con i,jyk para una mejor presentacion A=num2str(A);%Por Ebc B=num2str(B); C=num2str(C); A=strcat(A,'i');

Page 98: lenguaje programacion matlab

98

B=strcat(B,'j'); C=strcat(C,'k'); fprintf('%1s\t','');fprintf('%0s\t',A); fprintf('%1s\t','');fprintf('%0s\t',B); fprintf('%1s\t','');fprintf('%0s\t',C);fprintf('\n\n'); %Por Ebc %En una forma mas Ordenada...Ebc disp('---------------------------------------------------------------------------') fprintf('%4s\t','');fprintf('LOS xxxxxxx EN xxxxxx%10d\t',''); fprintf('%12s\t','');fprintf('LOS xxxxxxx EN xxxxxx%d\n','');fprintf('\n\n'); fprintf('%1s\t',''); fprintf('Alfa%s\t');fprintf('%4s\t',''); fprintf('Beta%s\t');fprintf('%4s\t',''); fprintf('Gama%s\t');fprintf('%4s\t',''); fprintf('%1s\t',' '); fprintf('Alfa%s\t');fprintf('%4s\t',''); fprintf('Beta%s\t');fprintf('%4s\t',''); fprintf('Gama%s\t');fprintf('%4s\n',''); fprintf('%1s\t',''); fprintf('%0.2f\t',alfa);fprintf('%3s\t',''); fprintf('%0.2f\t',beta);fprintf('%3s\t',''); fprintf('%0.2f\t',ganma);fprintf('%3s\t',''); fprintf('%1s\t',''); fprintf('%0.2f\t',a);fprintf('%3s\t',''); fprintf('%0.2f\t',b);fprintf('%3s\t',''); fprintf('%0.2f\t',g);fprintf('%3s\t','');;fprintf('\n\n'); disp('---------------------------------------------------------------------------') %disp('LOS xxxxxxxx EN xxxxxxx ') %disp(' alfa beta ganma') %disp([a b g]) disp('FIN DEL PROGRAMA') disp('================================================================') disp('================================================================')

Page 99: lenguaje programacion matlab

99

Bibliografía referencial

5. CHAPRA, STEVEN Métodos Numéricos para Ingenieros. Editorial Mc. Graw Hill. México. 2004.

6. NAKAMURA, SHOICHIRO Analisis Numérico y Visualización con Matlab. Editorial Prentice may. México. 1997.

7. MORALES MARCHENA, HERÓN. Métodos numéricos y Visualización Gráfica Editorial Megabit. Peru. 2005.

8. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniería Editores Prentice. España. 2002 .

9. VASQUEZ PARAGULLA, JULIO “Diseño de Programación “ Edit. San Marcos – PERU . 2000.

10. KERLINGER, F. N. Y LEE, H. B. Investigación del Comportamiento: Métodos de Investigación en ciencias sociales. Mc Graw Hill Interamericana Editores. México. 2002.