Professional Documents
Culture Documents
TEXTO UNIVERSITARIO
LENGUAJE DE PROGRAMACION
HUANCAYO PERU
DEDICATORIA
El presente texto lo dedicamos a
nuestros estudiantes, quienes son el
motivo de nuestra existencia en la
UNCP.
PRESENTACION
INDICE
Presentacin
Indice
4
Introduccin
pg.
CAPITULO I
Introduccin a la Computacin
CAPITULO II
Algoritmos y Diagramas de Flujo
21
CAPITULO III
Operaciones Matemtica con MATLAB
34
CAPITULO IV
Grficas con MATLAB
55
CAPITULO V
Programacin en Matlab
65
If end
69
For end
70
While end
72
Bibliografa
98
CAPITULO I
INTRODUCCION A LA COMPUTACIN
OBJETIVOS: Dar a conocer al estudiate la configuracin de parte fsica y lgica de un sistema
de computo y el entorno en el cual se va trabajar
Los parlantes sirven para escuchar los sonidos que emite la computadora a
travs de una tarjeta de sonido.
Unidad Central de Procesamiento (CPU)
La unidad central de proceso o CPU es la parte ms 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 smil entre un ordenador y el cuerpo humano, la CPU
hara el papel del cerebro: atender las solicitudes, mandar y hacer controlar la ejecucin.
Un microprocesador es un circuito integrado o chip que contiene a la CPU. Su tamao 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 aritmticas y
lgicas (unidad aritmtico-lgica) y otra parte que controla todo
proceso de ejecucin (unidad de control) en la computadora.
los
7
est ejecutando). Slo los datos almacenados en la memoria son procesables por la CPU. Los
datos que estn contenidos en algn dispositivo de almacenamiento externo deben ser
previamente introducidos a la memoria, por medio de una unidad perifrica. Dentro de la
memoria principal, existen dos divisiones en funcin 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 necesitando durante la
ejecucin de dichos programas. Es la memoria flexible y
reutilizable. La memoria RAM se llama tambin 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 tambin memoria residente o
permanente. Son memorias que slo 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 caractersticas es que esta memoria se usa para almacenar
informacin vital para el funcionamiento del sistema. La gestin del
proceso de arranque, la verificacin 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
informacin vital de una computadora forman la llamada BIOS (Basic Input Output System).
Unidad de Almacenamiento Secundario
Esta es el almacn de largo plazo y de alta capacidad de la computadora. Los programas y
datos que no estn siendo utilizados por las otras unidades normalmente se colocan en
dispositivos de almacenamiento secundario hasta que necesiten, posiblemente horas, das,
meses o incluso aos despus. Ejemplo: Disco duro.
EL SOFTWARE
El ordenador, por s mismo, no puede realizar ninguna funcin; 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 unin entre el hardware y el hombre.
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
8
interpretadas por un ordenador, obteniendo como fruto de esa interpretacin un determinado
resultado.
Podemos clasificar en software en dos grandes grupos: software de sistema (Sistema
Operativo) y software de aplicacin.
Software del Sistema o Sistema Operativo
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 operacin de perifricos,
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
comunicacin con el usuario (Ejemplo: aplicaciones como el explorador de windows)
Software de Aplicacin
El software de aplicacin est constituido por aquello programas que hacen que el ordenador
coopere con el usuario en la realizacin de tareas tpicamente humanas, tales como gestionar
una contabilidad, escribir un texto, hacer grficos y diagramas, realizar clculos repetitivos, etc.
Algunos ejemplos de software de aplicacin son: procesadores de texto (Word), hojas de
clculo (Excel), sistemas de bases de datos (Access), etc.
La diferencia principal entre los programas de aplicacin 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 ms cmodo del mismo, mientras que los de aplicacin son programas que
cooperan con el usuario para la realizacin de tareas que anteriormente haban de ser llevadas
a cabo nicamente por el hombre (sin ayuda de ordenador). Es en estos programas de
aplicacin donde se aprecia de forma ms clara la ayuda que puede suponer un ordenador en
las actividades humanas, ya que la mquina se convierte en un auxiliar del hombre, liberndole
de las tareas repetitivas.
LENGUAJES
Lenguaje es el empleo de notaciones, seales y vocales (voz, palabras) para expresar ideas,
comunicarse, y establecer relaciones entre los seres humanos. Un lenguaje no slo consta de
palabras, sino tambin de su pronunciacin y los mtodos para combinar las palabras en
frases y oraciones; los lenguajes se forman mediante combinaciones de palabras definidas en
un diccionario terminolgico previamente establecido. Las combinaciones posibles deben
respetar un conjunto de reglas sintcticas establecidas, a ello se le conoce con el nombre de
Sintaxis. Adems, las palabras deben tener determinado sentido, deben ser comprendidas por
un grupo humano en un contexto dado, a ello se le denomina Semntica.
TIPOS DE LENGUAJES
Aunque existen muchas clasificaciones, en general se puede distinguir entre dos clases de
lenguajes: los lenguajes naturales (ingles, alemn, espaol, etc.) y los lenguajes artificiales
o formales (matemtico, lgico, computacional, etc.). Tanto el lenguaje natural como el lenguaje
artificial son humanos. El primero es natural porque se aprende (o adquiere) inconsciente e
involuntariamente. Ningn beb decide aprender o no la lengua que hablan sus padres, y
ningn padre sienta a su hijo y le ensea las reglas sintcticas 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 programacin
utilizados para desarrollar programas informticos.
TIPOS DE LENGUAJES
Un Lenguaje de Programacin es un conjunto de reglas, notaciones, smbolos 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. Tambin se puede decir que un
programa es un conjunto de rdenes o instrucciones que resuelven un problema especfico
basado en un Lenguaje de Programacin.
Existen varias clasificaciones para los lenguajes de programacin.
Clasificacin de los Lenguajes de Programacin
Los programadores escriben instrucciones en diversos lenguajes de programacin. La
computadora puede entender directamente algunos de ellos, pero otros requieren pasos de
traduccin intermedios. Hoy da se utilizan cientos de lenguajes de computadora.
Los Lenguajes de Programacin pueden clasificarse de acuerdo con su uso en:
1. Lenguajes desarrollados para el clculo numrico. 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.
Tambin se pueden clasificar de acuerdo con el tipo de instrucciones de que constan. En
esta clasificacin se tiene al lenguaje mquina, al lenguaje ensamblador y al lenguaje de
alto nivel. Se presenta a continuacin una descripcin de cada uno de ellos.
Lenguaje mquina (Binario)
Una computadora slo puede entender el lenguaje mquina. El lenguaje de mquina ordena a
la computadora realizar sus operaciones fundamentales una por una. Dicho lenguaje es difcil
de usar para lar persona porque trabajar con nmeros no es muy cmodo adems de que
estos nmeros estn 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 pequeas abreviaturas de palabras en ingls. 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 ms el proceso de programacin se desarrollaron los lenguajes de alto nivel,
en los que se puede escribir un slo enunciado para realizar tareas sustanciales. Los lenguajes
de alto nivel permiten a los programadores escribir instrucciones que asemejan al ingls
cotidiano y contiene notaciones matemticas de uso comn. 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 frmulas matemticas al lenguaje ensamblador y por
consiguiente al lenguaje de mquina. A partir de FORTRAN, se han desarrollado innumerables
lenguajes que siguen el mismo concepto: buscar la mayor abstraccin posible y facilitar la vida
al programador, aumentando la productividad.
EJEMPLOS DE TIPOS DE LENGUAJES
10
Lenguaje Mquina
100001010101010
100100101010100
100011100101110
Lenguaje de Nivel Bajo (Ensamblador)
A = B + C;
HISTORIA DE LOS LENGUAJES DE PROGRAMACION
Se presentan a continuacin datos relevantes de algunos de los lenguajes de programacin de
mayor importancia histrica.
FORTRAN
FORTRAN es el ms viejo de los lenguajes de alto nivel. Fue diseado por IBM en 1950. El
idioma se hizo tan popular en los 60s que otros desarrolladores empezaron a producir sus
propias versiones y esto llev a una gran cantidad de dialectos (en 1963 haba 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 Organizacin de Normas Internacionales (ISO). Tal versin 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 los elementos de
FORTRAN77 para facilitar la compatibilidad. Finalmente, en 1997, surge FORTRAN95 o High
Performance Fortran (HPF).
BASIC
BASIC es la abreviacin de Beginners All-purpose Symbolic Instruction Code. Basic fue
desarrollado en la Universidad de Dartmouth en 1964 bajo la direccin de J. Kemeny y T. Kurtz.
Surgi como un idioma simple de aprender y fcil de traducir. En los 70s, cuando se cre la
computadora personal Altair, Bill Gates y Paul Allen implementaron su propia versin 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 versin BASIC de Gates
ocupaba un total de 4KB de memoria incluyendo el cdigo y los datos que se usaron para el
cdigo fuente. Luego Gates implement BASIC en otras plataformas (Apple, Comodor y Atari) y
fue a partir de entonces que la corporacin de Microsoft empez su reinado en el mundo de las
PC. Ms tarde en los 70s, surgi el sistema operativo MS-DOS de Bill Gates que inclua un
intrprete de BASIC. La versin distribuida con MS-DOS era GW-BASIC y poda ser ejecutada
en cualquier mquina que pudiera ejecutar DOS.
C
El lenguaje C rene caractersticas de programacin tanto de los lenguajes ensambladores
como de los lenguajes de alto nivel; este lenguaje posee gran podero basado en sus
operaciones a nivel de bits (propias de ensambladores) y la mayora de los elementos de la
programacin estructurada de los lenguajes de alto nivel. Por ello es que C ha sido el lenguaje
11
preferido para el desarrollo de software de sistemas y aplicaciones profesionales de la
programacin de computadoras.
En 1970 Ken Thompson de los laboratorios Bell cre la primera versin del lenguaje, la cual
poda ejecutarse en el sistema operativo UNIX; a este lenguaje se le llam lenguaje B y tena 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 diseo incluy una sintaxis simplificada, la aritmtica de
direcciones de memoria (permite al programador manipular bits, bytes y direcciones de
memoria) y el concepto de apuntador. Adems, al ser diseado para mejorar software de
sistemas, se busc que generase cdigos eficientes y uno portabilidad total, es decir el que
pudiese correr en cualquier mquina. Logrados los objetivos anteriores, C se convirti en el
lenguaje preferido de los programadores profesionales.
C++
En 1980 Bjarne Stroustrup, tambin de los laboratorios Bell, adicion al lenguaje C las
caractersticas de la programacin orientada a objetos (incluyendo la ventaja de una biblioteca
de funciones orientada a objetos) y lo denomin C con clases. Para 1983 dicha denominacin
cambi a la de C++.
MATLAB
Cleve Moler escribi el MATLAB original en FORTRAN, durante varios aos. 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
versin fue escrita por:
Steve Bangert, que escribi el intrprete parser
John Little y Cleve Moler que escribieron las rutinas de anlisis, la gua de usuario y la
mayora de los ficheros .m.
CODIGO ASCII
Existe una equivalencia en informtica entre los nmeros naturales entre 0 y 255 (posibles
valores de un byte) y los caracteres, de forma que a cada nmero le corresponde una letra,
12
smbolo o cdigo. La equivalencia ms utilizada es la tabla ASCII (American Standard Code for
Information Interchange). Cada caracter (por ejemplo la letra A) tiene asignado un nmero por
el ordenador de forma que podemos referenciarlo mediante dicho nmero. Por ejemplo, la letra
A tiene por cdigo de identificacin el nmero 65, la B el 66, el 2 el 50, etc. Se proporciona aqu
una copia de esta tabla para su referencia.
Para obtener un carcter a travs del teclado, presione la tecla Alt y, simultneamente (sin
soltar la tecla), presione el nmero de cdigo correspondiente.
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
77 M
!
78 N
79 O
80 P
81 Q
82 R
&
83 S
'
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
12
2
12
3
12
4
12
5
12
6
12
7
12
8
12
9
13
0
13
1
13
2
13
3
13
4
13
5
13
6
13
7
13
8
13
9
14
0
14
1
14
2
14
3
14
4
z
{
|
}
~
16
7
16
8
16
9
17
0
17
1
17
2
17
3
17
4
17
5
17
6
17
7
17
8
17
9
18
0
18
1
18
2
18
3
18
4
18
5
18
6
18
7
18
8
18
9
21
2
21
3
21
4
21
5
21
6
21
7
21
8
21
9
22
0
22
1
22
2
22
3
22
4
22
5
22
6
22
7
22
8
22
9
23
0
23
1
23
2
23
3
23
4
13
5
5
5
6
5
7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7
1
7
2
7
3
7
4
7
5
7
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
10
0
10
1
10
2
10
3
10
4
10
5
10
6
10
7
10
8
10
9
11
0
11
1
11
2
11
3
11
4
11
5
11
6
11
7
11
8
11
9
12
0
12
1
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
14
5
14
6
14
7
14
8
14
9
15
0
15
1
15
2
15
3
15
4
15
5
15
6
15
7
15
8
15
9
16
0
16
1
16
2
16
3
16
4
16
5
16
6
P
t
19
0
19
1
19
2
19
3
19
4
19
5
19
6
19
7
19
8
19
9
20
0
20
1
20
2
20
3
20
4
20
5
20
6
20
7
20
8
20
9
21
0
21
1
23
5
23
6
23
7
23
8
23
9
24
0
24
1
24
2
24
3
24
4
24
5
24
6
24
7
24
8
24
9
25
0
25
1
25
2
25
3
25
4
Note que los cdigos entre 0 y 31 son caracteres de control y se suelen llamar "no imprimibles",
pues su equivalencia no es un caracter sino una determinada accin. Por ejemplo, el cdigo 13
es equivalente a la pulsacin de ENTER. Brevemente, los ms interesantes son:
cdigo
equivale
cdigo
equivale
07
27
08
Backspace
28
cursor a la derecha
14
09
Tab (tabulacin)
29
cursor a la izquierda
10
30
cursor arriba
13
CR (retorno de carro)
31
cursor abajo
NOTA:
Los cdigos ASCII a partir del 127 son definibles y dependen de cada mquina. Los
representados aqu corresponden con los que son imprimibles desde HTML. En una IBM PC
en MS-DOS, por ejemplo, estos cdigos pueden ser distintos a los aqu representados.
EJERCICIOS PROPUESTOS
15
EVALUACIN
16
Bibliografa Referencial
1. CHAPRA, STEVEN Mtodos Numricos para Ingenieros. Editorial Mc. Graw Hill.
Mxico. 2004.
2. NAKAMURA, SHOICHIRO Analisis Numrico y Visualizacin con Matlab. Editorial
Prentice may. Mxico. 1997.
3. MORALES MARCHENA, HERN. Mtodos numricos y Visualizacin Grfica Editorial
Megabit. Peru. 2005.
4. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniera Editores
Prentice. Espaa. 2002 .
5. VASQUEZ PARAGULLA, JULIO Diseo de Programacin Edit. San Marcos PERU .
2000.
6. KERLINGER, F. N. Y LEE, H. B. Investigacin del Comportamiento: Mtodos de
Investigacin en ciencias sociales. Mc Graw Hill Interamericana Editores. Mxico. 2002.
CAPITULO II
ALGORITMOS Y DIAGRAMAS DE FLUJO
OBJETIVOS: Explicar los algoritmos y diagramas de flujo como parte de un proceso de
programacin para cualquier lenguaje de programacin.
CONTENIDOS: Pasos para resolver un problema, algoritmos, digramas de flujos.
PASOS PARA LA SOLUCION DE PROBLEMAS
El proceso de resolucin de un problema con una computadora conduce a la escritura de un
programa y a su ejecucin en la misma. Aunque el proceso de disear programas es
esencialmente un proceso creativo, se pueden considerar tambin 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
programacin:
1. Definicin del problema
2. Anlisis del problema
17
3.
4.
5.
6.
7.
8.
18
Utilizamos ahora un programa Compilador, el cual analiza todo el programa fuente y detecta
errores de sintaxis ocasionados por fallas en la codificacin. Las fallas de lgica que pueda
tener nuestro programa fuente no son detectadas por el compilador. Cuando no hay errores
graves en la compilacin, el compilador traduce cada instruccin del cdigo fuente a
instrucciones propias de la mquina (Lenguaje de Maquina), creando el Programa Objeto.
Cuando hay errores, stos se deben corregir sobre el mismo programa fuente. El paso de
compilacin 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 lgica 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 lgica, y lo ms 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.
Documentacin Externa
Cuando el programa ya se tiene listo para ejecutar, es conveniente que hagamos su
documentacin externa. Una buena documentacin externa incluira, por ejemplo:
Enunciado del problema
Narrativo con la descripcin de la solucin
Descripcin de las variables utilizadas en el programa, cada una con su respectiva funcin
Resultados de la ejecucin del programa
Entrada de Datos
Algoritmo
Procesamiento de Datos
Salida de Resultados
19
Diagramas de flujo
Un diagrama de flujo es una representacin grfica 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 programacin, pues al momento de llevarlo a cdigo se puede hacer en cualquier
lenguaje. Dichos diagramas se construyen utilizando ciertos smbolos de uso especial como
son rectngulos, valos, pequeos crculos, etc.; estos smbolos estn conectados entre s por
flechas conocidas como lneas de flujo. A continuacin se presentan estos smbolos y su
significado.
Smbolos y su Significado
Terminal. Representa el inicio y fin de un programa.
Proceso. Son acciones que el programa tiene que realizar
PALABRA
ABRE
Abre un archivo
UTILIZACIN
20
CASO
CIERRA
ENTONCE
S
ESCRIBE
FIN
HASTA
HAZ
INICIO
LEER
MIENTRA
S
NO
O
O - BIEN
PARA
SI
USUAL
Y
{
}
<=
21
Las cajas A y B pueden ser definidas para ejecutar desde una simple instruccin hasta un
mdulo o programa completo, siempre y cuando stos tambin sean programas apropiados.
Estructura Selectiva
Tambin conocida como la estructura SI-VERDADERO-FALSO, plantea la seleccin entre dos
alternativas con base en el resultado de la evaluacin de una condicin; equivale a la
instruccin IF de todos los lenguajes de programacin y se representa grficamente de la
siguiente manera:
Aqu el bloque A se ejecuta repetidamente mientras que la condicin C se cumpla o sea cierta.
Tambin tiene una sola entrada y una sola salida; igualmente A puede ser cualquier estructura
bsica o conjunto de estructuras.
Ventajas de la Programacin Estructurada
Con la programacin 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:
22
1. Los programas son ms fciles de entender. Un programa estructurado puede ser ledo en
secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la
lgica, lo cual es tpico de otros estilos de programacin.
2. Se logra una reduccin del esfuerzo en las pruebas. El seguimiento de las fallas o
depuracin (debugging) se facilita debido a la lgica ms visible, de tal forma que los
errores se pueden detectar y corregir ms fcilmente.
3. Se crean programas ms sencillos y ms rpidos.
EJEMPLOS ILUSTRATIVOS
Estructura Secuencial
Calcular el rea de un rectngulo a partir de su altura y su base
Inicio
Base
Altura
rea
Fin
23
Estructura Selectiva
Convertir calificaciones numricas (0 al 10) a calificaciones de Aprobado Reprobado,
siendo 7.0 la calificacin mnima aprobatoria.
Inicio
Calificacin
Verdadero
Resultado=Reprobado
Resultado=Aprobado
Resultado
Fin
24
Inicio
Nmero
Factorial = 1
Contador = 1
Verdadero
Factorial=Factorial * Contador
Contador=Contador + 1
Factorial
Fin
25
Realizar un diagrama de flujo para calcular las races de una ecuacin de segundo grado.
26
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 nmeros y ordenarlos
ascendentemente
3. Realizar un diagrama de flujo que te permita multiplicar entre s todos los nmeros
enteros entre n (el menor) y m (incluyndolos) si tales nmeros estn dados.
4.
Ingresar por teclado el Ph (entre 0 y 14) y determinar de que tipo de Ph se trata (cido,
bsico o neutro).
5.
EVALUACIN
Dado la ecuacin de un movil
Realizar un digrama de flujo para determinar cuantos nmeros mltiplos de M hay en los N
primeros nmeros naturales , talque M sea menor o igual que N. Ejemplo. Cuantos mltiplos de
3 hay en los primeros 20 nmeros naturales.
27
Bibliografa
1. CHAPRA, STEVEN Mtodos Numricos para Ingenieros. Editorial Mc. Graw Hill.
Mxico. 2004.
2. MORALES MARCHENA, HERN. Mtodos numricos y Visualizacin Grfica
Editorial Megabit. Peru. 2005.
3. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniera Editores
Prentice. Espaa. 2002 .
4. KERLINGER, F. N. Y LEE, H. B. Investigacin del Comportamiento: Mtodos de
Investigacin en ciencias sociales. Mc Graw Hill Interamericana Editores. Mxico.
2002.
CAPITULO III
OPERACIONES MATEMTICAS CON MATLAB
OBJETIVOS: El participante manejar el Matlab para la obtencin de soluciones puntuales de
problemas matemticos.
CONTENIDOS: Operaciones algebraicas, formatos de visualizacin, funciones matemticas,
nmeros complejos, matrices y arreglos
Operaciones Algebraicas
De la misma forma que una calculadora Matlab realiza matemticas 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 lnea, le dice a matlab que evalu la lnea pero que no nos diga la
respuesta.
>> N1=12;
>> N2=14;
>>promedio=(N1+N2)/2
promedio = 13
28
>>3^2-5-6/3*2
>>3^2-5-6/(3*2)
OPERADORES ARITMETICOS Y LOGICOS
OPERADOR
+
*
.*
/
./
^
.^
-=
>
<
>=
<=
==
Las operaciones matemticas simples entre escalares y vectores aplican el escalar todos los
elementos del vector segn la operacin 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 +
>>what
>>who
>>doc help
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.
29
>>V=5;
>>v=2;
>>producto=V*v
La variable V valdr 5 mientras no se le cambie su valor mediante una nueva asignacin, una
vez declarada la variable podemos utilizarla en los clculos.
>>r=5;
>>area=2*pi*r
area = 31.4159
>>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
Razn de una circunferencia a su dimetro
Eps
Nmero mas pequeo 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 numrica (Not-a-Number), p.e.,0/0
iyj
Imaginario i = j = 1
realmin
El nmero real positivo ms pequeo que es utilizable 2-1022
Realmax
El nmero real positivo ms grande que es utilizable (2-e) 2 1023
Comentarios
Visualizacin por defecto con 4 cifras decimales
4 decimales + la potencia de 10 necesaria
Ofrece el resultado con 16 cifras decimales
16 decimales + la potencia de 10 necesaria
Hexadecimal
2 dgitos decimales
Positivo, negativo o cero
Aproximacin racional
Ofrece el resultado con n digitos decimales exactos
Ofrece los resultados con n digitos exactos
30
ans =
3.14159265358979
>>170/13
>>format long; 174/13
>>format long e; 174/13
>>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 dgitos 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')
una cadena
31
y = 0.7854
>> y_deg=y*180/pi
y_deg= 45.0000
2 /2
Estas ordenes encuentran el ngulo donde la funcin seno tiene un valor de
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 tringulo rectngulo
>> 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
asnh(x)
Arcoseno hiperbolico de x
cos(x)
Coseno de x
acos(x)
Arcocoseno de x
cosh(x)
Coseno hiperblico de x
acosh(x)
Arco coseno hiperblico 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.4121
0.9093
0.9894
0.1411
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)
32
Otras Funciones Matematicas
Abs(x)
Valor absoluto de x
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)
Funcin 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 despus de la divisin: rem (x,y) da resto de x/y
round(x)
Redondea hacia el entero mas prximo
>> 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]')
Nmeros complejos
Para ilustrar los nmeros complejos, considere la ecuacin cuadrtica ax2 +bx+c=0.
Los valores de x donde esta ecuacin es cierta, i.e.. las races de estas ecuaciones vienen
dadas por:
b
x1,x2 =
4ac
2a
33
>>a*x1 ^2+b*x1 +c %sustituir x1 para comprobar respuesta
ans=
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 raz cuadrada es positivo y las dos races son nmeros reales. Sin embargo, si a=1, b=4,
c=13 las soluciones son:
x1= -2+3 1
x2= -2-3 1
El trmino 1 no se puede simplificar ms y como resultado de esto se dice que las
soluciones son complejas. Los trminos -2 en x 1 y x2 son las partes real de la solucin. Los
trminos 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 ingeniera normalmente se asocia la letra j en lugar de la i con 1 , se puede emplear
tambin esta para representar la parte imaginaria. Ejemplos de los nmeros complejos son:
>>c1=1-2i
>>c1=1-2j % j tambin 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 nmeros complejos conduce a nmeros 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 funcin real, MATLAB extrae la parte real de un nmero
complejo.
34
Funciones Reales
Funcin
eval(f)
fplot(f, [a,b] )
fzero(f, a )
trapz(x,f)
Descripcin
Evala una funcin en los valores de x.
Grafica la funcin en el intervalo [a,b]
Calcula la raiz de la funcin f, partiendo del valor a.
Calcula el are de la regin 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 mltiples valores ordenados en orden creciente.
>>funcion= '3*x.^2-5';
>>x=[1 2 4];
>>eval(funcion)
ans = -2
43
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
MATRICES Y ARREGLOS
Arreglo.- Es un conjunto de nmeros, 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
5
0
4
0
1
5
0
-7
8
2
3
35
>> x(8) = 6 % adiciona un elemento a la matriz x en la octava posicin.
Arreglos Bidimensionales
>> 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
Adicin de Arreglos.- Realiza la suma de los elementos de los arreglos de acuerdo a su
posicin.
>> a = [1,4; 5,2]
>> b = [2,1; 3,4]
>> c = a + b
c=
3
8
5
6
36
>> F=[3 -2 7; 6 5 4; 0 4 9] % matriz de orden 3x3
F=
3 -2 7
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
3(7)-2(4)+7(9)=76
6(1)+5(0)+4(2)=14
6(7)+5(4)+4(9)=98
0(1)+4(0)+9(2)=18
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
3 -12
-2 10
-1
6
0
-2
2
1
-2
-6
5
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=
37
22
-17
-1
4
-6 -26 17
5 20 -13
0
2 -1
-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 nmero de filas no nulas que quedan
en la ltima iteracin 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
38
0.4289
39
0.6813
0.3795
0.5028
0.7095
0.3046
0.1897
17
40
>> u=[13 -5 1]
>> length(u)
ans =
3
size(A).- Calcula la dimensin 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:
2
1
-5
7
3
0
9
1
41
vercat.- Concatena matrices verticalmente.
>> A=[8 1 6;3 5 7;4 9 2];
>> 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
EJEMPLOS ILUSTRATIVOS
1. Presentacin de la matriz de Hilbert de orden 2 con cinco dgitos 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.
>> 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 ecuacin x4+1=0 y presentamos el resultado en escritura matemtica 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
[
]
]
]
]
]
]
42
[
1/2
1/2
[ 1/2 2 - 1/2 i 2
[
[
1/2
1/2
[- 1/2 2 - 1/2 i 2
]
]
]
]
]
( 2+sin 2 2 ) dx
1
1 .96
x
2
e2 dx
1 . 96
El clculo se realiza mediante matlab utilizando el mtodo aproximado de lobato como sigue:
>> quadl(inline('exp(-x.^2/2)/sqrt(2*pi)'),-1.96,1.96)
ans = 0.9500
1(x + y )
2
>> dblquad(inline('sqrt(max(1-(x.^2+y.^2),0))'),-1,1,-1,1)
ans =
2.0944
El clculo tambin 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:
43
x+ y
dxdy
1
4
>> dblquad(inline('1./(x+y).^2'),3,4,1,2)
ans = 0.0408
9. Calcular los lmites de las funciones siguientes:
1+ x
x 2+ x
, lim
x 1 1+ x x 2 3+ 1+4 x
lim
>> syms x a
>> limit((x-1)/(x^(1/2)-1),x,1)
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 ecuacin cbica 5x3 + 2x2 - 3x + 1 = 0;
44
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
45
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 evala 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 aplicacin con cada uno de los siguientes comandos?
>>input
>>disp
Bibliografia Referencial
1. NAKAMURA, SHOICHIRO Analisis Numrico y Visualizacin con Matlab. Editorial Prentice
may. Mxico. 1997.
2. MORALES MARCHENA, HERN. Mtodos numricos y Visualizacin Grfica Editorial
Megabit. Peru. 2005.
3. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniera Editores Prentice.
Espaa. 2002 .
46
CAPITULO IV
GRAFICAS CON MATLAB
OBJETIVOS: El participante aprender a hacer grficos con el Matlab
CONTENIDOS: Graficos en el plano, graficos bidimensioanles y grficos tridimensionales.
Matlab ofrece una gama amplia de opciones a la hora de realizar representaciones grficas.
Permite realizar grficos de curvas planas y superficies, posibilitando la agrupacin y
superposicin.
Grficos en el Plano
Comandos
plot(x,y)
bar(x,y)
barh(x,y)
stem(x,y)
stairs(x,y)
polar(x,y)
pie(x)
rose(x)
Descripcin
Grafica el conjunto de puntos (x,y) en un sistema
cartesiano
Grafico de barras vertical, donde y representa la
frecuencia y x define los espacios en el eje x.
Grafico de barras horizontal.
Grafico de bastones verticales.
Grafica una curva escalonada.
Dibuja una curva en coordenadas polares. y=y(x)
Realiza el grafico de sectores relativo al vector x.
Dibuja el histograma angular relativo al vector x.
Los grficos son una poderosa forma visual de interpretar datos. Realizar la grfica de una
funcin seno durante un perodo, por ejemplo:
y = sin(x) para 0<=x<=2pi.
En primer lugar, creamos 30 puntos entre 0 y 2pi.
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
1
0.8
0.6
0.4
>> x = linspace(0,2*pi,30) ;
>> y = sin(x);
>> z = cos(x) ;
>> plot(x,y,x,z)
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
47
El siguiente ejemplo ilustra la identidad trigonomtrica 2sin(a)cos(a) = sin2(a). La grfica de
2sin(a)cos(a) se representa utilizando lneas 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
2sin(x)cos(x) = sin(2x)
1
0.8
V ariable D ependiente
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
3
4
Variable Independiente X
Color
Smbolo
Estilo de lnea
amarillo
.
punto
magenta
o
crculo
turquesa
x
marca - x
rojo
+
ms
verde
*
estrella
azul
*
lnea slida
blanco
:
lnea punteada
negro
-.
lnea punto-raya
-lnea de trazos
>> plot(x,y,'bo',x,z,'r--',x,y,'k*',x,z,'c.')
0.8
0.6
0.4
0.2
0
-0.2
sine and cosine curves
-0.4
1
d ep en de nt v a ria ble y an d z
0.8
-0.6
sin(x)
0.6
-0.8
0.4-1
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
3
4
indepent variable x
48
grafico de y=sin(x. 2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-4
-3
-2
-1
450
400
>> 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')
350
300
250
200
150
100
50
0
-3
-2
-1
3
2
1
0
-1
-2
-3
-4
-6
-4
-2
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
49
grficos en coordenadas polares utilizando la orden polar (t, r), donde t es el vector de ngulos
en radianes, r es el radio vector
Polar Plot of sin(2t)cos(2t)
90
120
0.5
60
0.4
0.3
150
30
0.2
0.1
180
210
330
240
300
270
1.2
0.8
0.6
0.4
0.2
-1
0
-2
-0.2
-0.5
-3
10
15
20
25
30
35
40
45
0.5
1.5
2.5
50
Una grfica puede incluir barras de error en los puntos. errorbar (x, y, e) representa. la grfica
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 funcin error de x
>> e=rand(size(x) )/10; % genera valores de error aleatorios
>> errorbar(x,y,e) % crea la grfica
>> title('Errorbar Plat')
Se pueden representar datos complejos usando compass y feather. Compass (z) dibuja una
grfica 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
50
de puntos igualmente espaciados sobre una lnea 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)
4
120
60
150
30
180
-1
-2
210
330
240
-3
-4
-5
300
270
10
15
20
25
La orden subplot (m, n, p) subdivide la ventana de la figura actual en una matriz mxn de las
reas de representacin grfica y escoge como activa el rea p-sima. Las subgrficas 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);
Grafico No 1
>> z=sin(x);
1
1
>> a=y.*z+58;
>> f=tan(x);
0
0
>> g=z+a+f;
>> u=y.*z.*a;
>> subplot(3,2,1), plot(x,y,'r-'), title( 'Grafico No 1' );
-1
-1
>> subplot(3,2,2),
No
0
2 plot(x,z,'mo'),
4
6title( 'Grafico
8
02' );
>> subplot(3,2,3), plot(x,a,'g*'),
title(
'Grafico
No
3' );
Grafico No 3
>> subplot(3,2,4),
plot(x,f,'b+'),
title(
'Grafico
No
4'
58.5
20 );
>> subplot(3,2,5), plot(x,g,'k--'), title( 'Grafico No 5' );
>> subplot(3,2,6), plot(x,u,'c:'), title( 'Grafico No 6' );
58
57.5
Grafico No 4
Grafico No 5
100
-20
4
Grafico No 6
50
50
0
Grafico No 2
0
0
-50
51
Grfica 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
1
0.5
0
-0.5
-1
15
10
5
0
-5
-5
-10
10
Z=X.*exp(-x. 2 y.2)
-0.5
2
1
0
-1
-2
-2
-1
52
cylinder('f') : Grafica una superficie de revolucin generada por la rotacin de la funcin f=f(t)
en el intervalo definido para t.
2 + sin( t )
>> t = 0:0.2:7 ;
>> cylinder(2+sin(t));
>> title(' 2 + sin( t )');
>> xlabel('eje x') ; ylabel('eje y') ; zlabel('eje z')
0.4
0.2
0
4
2
0
-2
eje y
EJERCICIOS PROPUESTOS
1. Realizar el siguiente grfico.
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))
-4
-4
-2
0
eje x
53
90
120
60
1.5
1
150
30
0.5
180
210
330
240
300
270
EVALUACION
1. Realizar el grafico en coordenadas polares de la siguiente ecuacin:
r 2 cos 2
2. Grfica la circunferencia con centro en el origen:
x 2 y 2 16
3. Grafica la siguiente hiprbola con eje focal en el eje x:
x2 y2
1
4
9
4. Grfica la siguiente parbola con el eje focal en x:
x 1 / 4( y 2 )
5. Grfica la elipse con el eje focal x:
54
x2 y2
1
20 6
6. Grfica la siguiente funcin:
10.
PROGRAMACIN INFORMTICA
55
Programacin informtica, accin 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 definicin de la
tarea, el anlisis de la informacin que se quiere obtener (informacin de salida) y de los datos
que se precisan para ello (informacin de entrada), y el establecimiento del algoritmo, o
procedimiento de clculo, que va a permitir transformar una informacin en otra. Para esta
labor de anlisis, el programador utiliza una serie de herramientas, entre las que destacan los
diagramas de flujo y las tablas de decisin.
Resuelto del problema desde el punto de vista lgico, se utiliza un lenguaje de programacin
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 depuracin. Una vez verificado, el programa se debe optimizar, con el fin
de utilizar los recursos del sistema del modo ms eficiente.
PROGRAMACIN EN MATLAB
MATLAB es una aplicacin que se puede programar muy fcilmente. De todas formas, como
lenguaje de programacin 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 bsicos de cualquier programa de una cierta
complejidad, previo a ingresar a esta este capitulo se considera que ya se cuenta con los
conocimientos bsicos del matlab.
Bifurcaciones y bucles
MATLAB posee un lenguaje de programacin que como cualquier otro lenguaje dispone de
sentencias para realizar bifurcaciones y bucles.
Las bifurcaciones permiten realizar una u otra operacin segn se cumpla o no una
determinada condicin.
La Figura muestra tres posibles formas de bifurcacin.
56
Los bucles permiten repetir las mismas o anlogas 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 condicin cuando se llega al bucle por
primera vez.
Sin embargo, si la condicin est al final del bucle las sentencias se ejecutarn por lo menos
una vez, aunque la condicin no se cumpla. Muchos lenguajes de programacin 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 construccin
anloga a do... while.
Las bifurcaciones y bucles no slo son tiles en la preparacin de programas o de ficheros *.m.
Tambin se aplican con frecuencia en el uso interactivo de MATLAB, como se ver ms
adelante en algunos ejemplos.
FUNCIN INPUT
57
La funcin input permite imprimir un mensaje en la lnea de comandos de MATLAB y recuperar
como valor de retorno un valor numrico o el resultado de una expresin tecleada por el
usuario.
>> n = input('Teclee el nmero de ecuaciones:' )
Teclee el nmero de ecuaciones: 5
n= 5
Otra posible forma de esta funcin es la siguiente (obsrvese el parmetro 's'):
>> nombre = input('Cmo te llamas?','s') %s indica que la entrada que se hara
por teclado es una cadena.
Cmo 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 frmula, se
almacena como texto sin evaluarse.
FUNCIN DISP
La funcin 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. Considrense los siguientes ejemplos de cmo se utiliza:
>> disp(' El programa ha terminado ')
>> A= rand(4,4)
>> disp(A)
Ejectense las sentencias anteriores en MATLAB y obsrvese la diferencia entre las dos
formas de imprimir la matriz A.
>> a=[1:10];
>> b=[-10:-1];
>> disp([a;b])
Da como salida:
1
-10
2
-9
3
-8
4
-7
5
-6
6
-5
7
-4
8 9 10
-3 -2 -1
58
end
Existe tambin la bifurcacin mltiple, en la que pueden concatenarse tantas condiciones como
se desee, y que tiene la forma:
if condicin1
bloque de instrucciones 1
else if condicin 2
bloque de instrucciones 2
else if condicin n
bloque de instrucciones n
else % opcin 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 lgico sea
uno. Si ninguno de los valores lgicos que aparecen es uno entonces MATLAB ejecuta el
bloque de instrucciones final.
Donde la opcin 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 observacin muy importante: la condicin del if puede ser una condicin matricial, del tipo
A==B, donde A y B son matrices del mismo tamao. Para que se considere que la condicin 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. Anlogamente, una condicin en la forma A-=B
exige que todos los elementos sean diferentes dos a dos (aij bij, 1 i m, 1 j n).
Basta que hubiera dos elementos aij y bij iguales para que la condicin 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 funcin isequal (A, B) devuelve un uno si las dos
matrices son idnticas y un cero en caso de que difieran en algo.
59
for a = 0 : 1 : t
v=[a, a^2,a^3]
for a=0 : 1 : t
v=[a, a^2,a^3]
60
...
sentencia n
end
end
En el siguiente ejemplo se presenta el caso ms 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 vara ms rpidamente (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 inters 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 interaccin el valor de una de las
columnas de A.
Cuando se introducen interactivamente en la lnea de comandos, los bucles for se ejecutan
slo despus de introducir la sentencia end que los completa.
El siguiente ejemplo creara un bucle que despus realizar una suma de los 5 primeros
nmeros.
En un archivo m-file:
s=0;
for n=1:5
s=n+s;
disp([n s ])
end
salida
1
2
3
4
5
1
3
6
10
15
61
Realizar un programa haciendo uso de la instruccin for... end, para que presente en pantalla
la tabla de la suma de un nmero que se ingrese por teclado.
En un archivo m-file:
ingrese n:1
n=input('ingrese n:');
for i=0:12;
s=n+i;
disp([n,i,s])
end
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
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
el
numero:');
5. SENTENCIA WHILE
El bucle while o bucle mientras es una estructura de la mayora de los lenguajes de
programacin estructurados cuyo propsito es repetir un bloque de cdigo mientras una
condicin se mantenga verdadera.
Java. Su sintaxis es la siguiente:
While condicin
Sentencias
end
Donde condicin puede ser una expresin vectorial o matricial.
62
Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicin,
es decir, mientras haya algn o algunos elementos true.
El bucle se termina cuando todos los elementos de condicin son false (es decir, cero).
EJEMPLOS ILUSTRATIVOS
Programa que te permite obtener un tabla de multiplicacin
clc
n=input('ingrese el nmero:');
while n<=0; %restringe negativos y 0
n=input('ingrese el nmero:');
end
for f=1:12;%crea el factor multiplicador
p=n*f; %creacion de los productos
disp([n f p])
end
ingrese el nmero: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
numero de divisores
ingrese valor:7
ans =
el numero de divisores es
2
es'
63
fa=1;
while n<0;%restriccin para los negativos'
'el numero que ingreso es negativo no tiene factorial'
n=input('ingrese el numero:');
end
if n==0;%restriccin para el 0
Factorial=fa
else
for i=1:n;%bucle de multiplicacin hasta n
fa=fa*i;
if i==n;
Factorial=fa%resultado final
end
end
end
ingrese el numero:-5
ans =
el numero que ingreso es negativo no tiene factorial
ingrese el numero:5
Factorial =
120
64
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
Programa para hallar el tiempo de encuentro de dos mviles 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'
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
65
Programa para hallar la grfica de cualquier ecuacin 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 grfico que sale es:
ingrese ecuacion:x^2-5
a=
x^2-5
10000
8000
6000
4000
2000
-2000
-100
-80
-60
-40
-20
20
40
60
80
100
66
n1=input('ingrese el primer nmero:');
n2=input('ingrese el segundo nmero:');
n3=input('ingrese el tercer numero:');
if n1 ~= n2 & n2 ~= n3;%restriccin para nmeros 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
67
end
end
if c==2
'primo'
else
'divisible'
end
Programa para saber si un nmero 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 nmero 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;
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)
68
Programa para la divisin de nmeros hasta el 12
%programa para hallar la tabla de dividir hasta el 12
n=input('ingrese el nmero:');
while n<=0
'el numero ingresado debe ser mayor que cero'
n=input('ingrese el nmero:');
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 funcin 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 funcin digitar desde la ventana de comandos:
>> cubica(5)
ans =
258
69
>> media_ds(x);
M=
1.5000
S=
0.5000
Programa funcin 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 funcin numero digitar desde la ventana de comandos:
>> numero(-1)
programa con el commando CASE END
clc
clear all
x=0;
while x<=0 | x>=8
x=input('ingrese un nmero 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
70
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 races de polinomios
P(x)= x3 -2x -5
>> p=[1 0 -2 -5];
>> r= roots(p)
r=
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
Q(x)=x2 +x -1
71
14
0
0
1
20
2
60
3
68
4
77
5
110
REGRESION LINEAL
120
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
TEMPERATURA EN oF
100
80
60
40
20
0.5
1.5
2
2.5
3
3.5
TIEMPO EN SEGUNDOS
4.5
x + 3.7619
72
100
80
60
40
20
REGRESION LINEAL
120
TEMPERATURA EN oF
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')
0.5
1.5
2
2.5
3
3.5
TIEMPO EN SEGUNDOS
4.5
120
100
TEMPERATURA EN oF
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')
80
60
40
20
0
-20
0.5
1.5
2
2.5
3
3.5
TIEMPO EN SEGUNDOS
4.5
Coef = 1.1019 -9.3175 41.1918 -3.0556 % con estos coeficientes se obtiene la ecuacin.
Se observa que el polinomio de tercer grado ajustado tiene la ecuacin:
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.
REGRESION LINEAL
120
100
TEMPERATURA EN oF
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')
80
60
40
20
0
-20
0.5
1.5
2
2.5
3
3.5
TIEMPO EN SEGUNDOS
4.5
73
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 ecuacin:
y = 1.5625x4 -14.5231x3 + 38.6736x2 -3.4511x -0.3770
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
74
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(' 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('====================================================================
=======')
75
76
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;
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 concentracin 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)
%grfico de los puntos experimentales para probar una cintica 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 cintica 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
77
%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')
4. Determinar lnea a lnea lo que realiza el siguiente programa.
%LEY DE GAY -LUSSAC(1802):PROCESO ISOCORICO O ISOMETRICO
%GAY -LUSSAC cientfico francs realizo trabajos similares a Charles
%fue el que descubri la ley estequiometrica de la combinacin de los gases
%en una relacin volumtrica 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=298k)...........(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')
78
79
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
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')
80
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;
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')
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
81
SALIDA:
===================================================
-------------------*METODO DE NEWTON RAPHSON*-----------------===================================================
ingrese funcion asociada f(x)=5*x - x^3
ingrese valor inicial:2
82
iter aproximacin 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
----------------------------------------------
83
sen(ln x)dx
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
=====================
84
f=input('Ingrese la funcin a integrar f(x) =','s');
a=input('Ingrese limite inferior :');
b=input('Ingrese limite superior :');
n=input('Ingrese nmeros de trapecios a considerar en la integracin :');
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
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 funcin a integrar f(x) =sqrt(1+x.^2)
Ingrese limite inferior :2
Ingrese limite superior :3
Ingrese nmeros de trapecios a considerar en la integracin :8
el rea es:2.694824624
85
EVALUACIN
Describir lnea por lnea lo que hace el programa y luego indicar el resultado de la
ejecucin 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);
86
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');
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('================================================================')
Bibliografa referencial
5. CHAPRA, STEVEN Mtodos Numricos para Ingenieros. Editorial Mc. Graw Hill.
Mxico. 2004.
6. NAKAMURA, SHOICHIRO Analisis Numrico y Visualizacin con Matlab. Editorial
Prentice may. Mxico. 1997.
87
7. MORALES MARCHENA, HERN. Mtodos numricos y Visualizacin Grfica
Editorial Megabit. Peru. 2005.
8. PEREZ, CESAR Matlab y sus Aplicaciones en las Ciencias y la Ingeniera Editores
Prentice. Espaa. 2002 .
9. VASQUEZ PARAGULLA, JULIO Diseo de Programacin Edit. San Marcos
PERU . 2000.
10. KERLINGER, F. N. Y LEE, H. B. Investigacin del Comportamiento: Mtodos de
Investigacin en ciencias sociales. Mc Graw Hill Interamericana Editores. Mxico.
2002.