Documente Academic
Documente Profesional
Documente Cultură
FFA
ACCU
ULLTTA
ADDD
DEE IIN
NGGE
ENNIIE
ERRÍÍA
AQQU
UÍÍM
MIIC
CAA
TEXTO UNIVERSITARIO
LENGUAJE DE PROGRAMACION
HUANCAYO – PERU
2
DEDICATORIA
El presente texto lo dedicamos a
nuestros estudiantes, quienes son el
motivo de nuestra existencia en la
UNCP.
3
PRESENTACION
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.
INDICE
Presentación
Indice
Introducción
pág.
CAPITULO I
Introducción a la Computación 5
CAPITULO II
CAPITULO III
CAPITULO IV
CAPITULO V
Programación en Matlab 65
If … end 69
For … end 70
While … end 72
Bibliografía 98
5
CAPITULO I
INTRODUCCION A LA COMPUTACIÓN
COMPUTADORA U ORDENADOR
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.
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
“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.
Los parlantes sirven para escuchar los sonidos que emite la computadora a
través de una tarjeta de sonido.
Unidad de Memoria
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
7
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.
EL SOFTWARE
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.
8
Software de Aplicación
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
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
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
9
TIPOS DE LENGUAJES
Lenguaje Máquina
100001010101010
100100101010100
100011100101110
A = B + C;
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
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.
11
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
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.
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
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.
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:
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.
14
EJERCICIOS PROPUESTOS
EVALUACIÓN
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.
17
CAPITULO II
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
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
19
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
pasos. La mayoría de los algoritmos de utilidad al programador poseen 3 partes
principales:
Entrada de Datos
Salida de Resultados
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.
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
Complemento de la selección SI - ENTONCES
S
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
Inicia la iteración mientras
S
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
21
PROGRAMACION ESTRUCTURADA
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:
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.
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.
23
EJEMPLOS ILUSTRATIVOS
Estructura Secuencial
Calcular el área de un rectángulo a partir de su altura y su base
Inicio
Base
Altura
Área
Fin
24
Estructura Selectiva
Convertir calificaciones numéricas (0 al 10) a calificaciones de “Aprobado” ó “Reprobado”,
siendo 7.0 la calificación mínima aprobatoria.
Inicio
Calificación
Verdadero Falso
Resultado=”Aprobado” Resultado=”Reprobado”
Resultado
Fin
25
Inicio
Número
Factorial = 1
Contador = 1
Falso
Verdadero
Factorial=Factorial * Contador
Contador=Contador + 1
Factorial
Fin
26
Realizar un diagrama de flujo para calcular las raíces de una ecuación de segundo grado.
27
EJERCICIOS PROPUESTOS
1. Realizar un diagrama de flujo que te permita convertir una cantidad dada en metros
a pies y pulgadas.
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.
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 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.
29
CAPITULO III
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
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)
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
>>V=5;
>>v=2;
>>producto=V*v
>>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 dígitos decimales exactos
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.
>> N = input ('ingrese un nombre:', 's') % s indica que la entrada que se hara por
teclado es una cadena
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_deg=y*180/pi
y_deg= 45.0000
Funciones Trigonometricas
sin(x) Seno de x
33
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)
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 =
b b 2
4ac
2a
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.
>>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
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
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
MATRICES Y ARREGLOS
x=
1 4 5 8
5 0 0 2
0 1 -7 3
Arreglos Bidimensionales
c= 3 5
8 6
Sustracción de Arreglos
Multiplicación de Arreglos
Producto de Matrices
>> F=[3 -2 7; 6 5 4; 0 4 9] % matriz de orden 3x3
F=
3 -2 7
6 5 4
0 4 9
>> H=F*G
H=
17 76
14 98
18 97
otro ejemplo
38
>> 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
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
Inversa de Matrices
B=
22 -6 -26 17
-17 5 20 -13
-1 0 2 -1
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
>> 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.
Matrices especiales:
>> A=eye(3)
A=
1 0 0
0 1 0
0 0 1
>> 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
40
4 14 15 1
Funciones en Matrices :
>> B=diag(A)
B=
1
-2
5
sum(A).- Devuelve la suma obtenida en cada una de las columnas de la matriz A.
>> 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
>> 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.
13 0 -16
>> G=find(A)
G=
1
2
3
6
>> u=[2 -5 1]
>> v=[3 1 -4]
>> cross(u,v)
ans = 19 11 17
>> A=[1 2; 3 4]
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.
>> u=[13 -5 1]
>> length(u)
ans = 3
>> D=[3;1;0;15;8]
>> size(D)
ans = 5 1
>> b=[3 4 5 6 8 6 5 6 7]
>> plot(b)
>> grid on
>> title('Grafico de una matriz')
42
C=
1 2 -5 3 9
2 1 7 0 1
EJEMPLOS ILUSTRATIVOS
>> vpa(hilb(2),5)
ans =
[ 1., .50000]
[ .50000, .33333]
>> 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
>> 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 ]
𝟔
∫ (𝟐 + 𝐬𝐢𝐧 𝟐√𝟐) 𝒅𝒙
𝟏
44
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 ∫−𝟏.𝟗𝟔 √𝟐𝝅 𝒅𝒙
>> quadl(inline('exp(-x.^2/2)/sqrt(2*pi)'),-1.96,1.96)
ans = 0.9500
>> dblquad(inline('sqrt(max(1-(x.^2+y.^2),0))'),-1,1,-1,1)
ans =
2.0944
>> dblquad(inline('sqrt(1-(x.^2+y.^2)).*(x.^2+y.^2<=1)'),-1,1,-1,1)
ans =
2.0944
𝟒
𝟐
𝟏
∫∫ 𝒅𝒙𝒅𝒚
𝟏 (𝒙 + 𝒚)𝟐
𝟑
>> dblquad(inline('1./(x+y).^2'),3,4,1,2)
ans = 0.0408
−𝟏 + 𝒙 𝒙 − √𝟐 + 𝒙
𝐥𝐢𝐦 , 𝐥𝐢𝐦
𝒙→𝟏 −𝟏 + √𝒙 𝒙→𝟐 −𝟑 + √𝟏 + 𝟒𝒙
>> syms x a
>> limit((x-1)/(x^(1/2)-1),x,1)
45
ans = 2
>> limit((x-(x+2)^(1/2))/((4*x+1)^(1/2)-3),2)
ans = 9/8
>> 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
>> x=3
46
>> x='mensaje'
>> syms x
>> x=[2 7 4]
>> x=2+3i
>> clear a b c
>> clc
>> pwd
EVALUACION
10. Dar un ejemplo de aplicación con cada uno de los siguientes comandos?
>>input
>>disp
48
Bibliografia Referencial
CAPITULO IV
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:
0.8
0.6
0.4
>> x = linspace(0,2*pi,30) ; % crea 30 puntos entre 0 y 2pi. 0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
0.8
0.6
0.4
>> y = sin(x); 0
-0.4
>> plot(x,y,x,z)
-0.6
-0.8
>> plot(x,y,'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
0.6
0.4
Variable Dependiente
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
Variable Independiente X
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:
1
>> plot(x,y,'bo',x,z,'r--',x,y,'k*',x,z,'c.') 0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
51
0.8
sin(x)
0.6
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
indepent variable x
grafico de y=sin(x. 2
1
0.8
0.6
>> plot(x,y) 0
-0.6
-0.8
-1
-1 0 1 2 3 4 5
0.9
0.6
0.3
0.1
0
-4 -3 -2 -1 0 1 2 3 4
400
250
>> hist(y,x) % dibuja el histograma
200
>> title('Histograma de Datos Gausianos') 150
100
50
0
-3 -2 -1 0 1 2 3
grafico Barras Horizontal
4
3
>> x=-3 :0.2 :3;
>> y=cos(-x.^3)-2*x+1; 2
>> barh(x,y); 1
>> grid on 0
-2
-3
-4
-6 -4 -2 0 2 4 6 8
52
0.8
0.6
0.4
0
>> y=sin(x); -0.2
>> stairs(x,y); -0.4
-1
0 1 2 3 4 5 6 7 8 9 10
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
Polar Plot of sin(2t)cos(2t)
0.1
180 0
210 330
240 300
270
2
0.8
1 0.6
0.4
0
0.2
-1
-2
-0.2
-0.5 0 0.5 1 1.5 2 2.5
-3
0 5 10 15 20 25 30 35 40 45 50
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.
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')
90 6
3
120 60
4 2
150 30
1
2
0
180 0
-1
-2
210 330
-3
240 300 -4
-5 0 5 10 15 20 25
270
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:
>> 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' );
Grafico No 1 Grafico No 2
1 1
0 0
-1 -1
0 2 4 6 8 0 2 4 6 8
Grafico No 3 Grafico No 4
58.5 20
58 0
57.5 -20
0 2 4 6 8 0 2 4 6 8
Grafico No 5 Grafico No 6
100 50
50 0
0 -50
0 2 4 6 8 0 2 4 6 8
Gráfica de Superficies
1
>> t = -8:0.2:8 ; % crea puntos entre -8 y 8.
>> x = t; 0.5
-0.5
-1
15
55
>> y = 3-t ;
>> z=cos(t);
>> plot3(x,y,z), grid
Z=X.*exp(-x. 2 – y. 2)
>> mesh(x,y,z)
>> title('Z=X.*exp(-x. ^2 – y.^2)');
0
-0.5
2
1 2
0 1
0
-1 -1
-2 -2
0.8
0.4
>> title(' 2 + sin( t )');
>> xlabel('eje x') ; ylabel('eje y') ; zlabel('eje z') 0.2
0
4
2 4
0 2
0
-2 -2
eje y -4 -4
eje x
56
EJERCICIOS PROPUESTOS
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))
90 2
120 60
1.5
150 1 30
0.5
180 0
210 330
240 300
270
57
EVALUACION
x 2 y 2 16
x2 y2
1
4 9
x 1/ 4( y 2 )
x2 y2
1
20 6
f(z) = z2
pastel.
10. Realizar un gráfico para generar un histograma con 1000 números aleatorios
siguiendo la normal N(0; 1)
58
59
Bibliografía Referencial
CAPITULO V
PROGRAMACION EN MATLAB
PROGRAMACIÓN INFORMÁTICA
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.
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.
PROGRAMACIÓN EN MATLAB
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
61
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.
62
FUNCIÓN INPUT
>> nombre = input('¿Cómo te llamas?','s') %”s” indica que la entrada que se hara
por teclado es una cadena.
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.
FUNCIÓN DISP
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:
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])
63
Da como salida:
1 2 3 4 5 6 7 8 9 10
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1
if condición
sentencias
end
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).
64
Basta que hubiera dos elementos aij y bij iguales para que la condición no se cumpla. En
resumen:
1) Programa que determina si el número ingresado por teclado es positivo, negativo o cero.
for i = 1 : n
sentencias
end
65
Donde vector valores es un vector con los distintos valores que tomará la variable i.
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
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
El siguiente ejemplo creara un bucle que después realizará una suma de los 5 primeros
números.
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.
ingrese el numero:5
clc 5 5 0
n=input('ingrese el numero:'); 6 5 1
for m=n:n+12; 7 5 2
d=m-n; 8 5 3
disp([m n d]) 9 5 4
end 10 5 5
11 5 6
12 5 7
13 5 8
14 5 9
15 5 10
16 5 11
17 5 12
67
5. SENTENCIA WHILE
While condición
Sentencias
end
El bucle se termina cuando todos los elementos de condición son false (es decir, cero).
EJEMPLOS ILUSTRATIVOS
ingrese el número:5
5 1 5
5 2 10
clc 5 3 15
n=input('ingrese el número:'); 5 4 20
while n<=0; %restringe negativos y 0 5 5 25
n=input('ingrese el número:'); 5 6 30
end 5 7 35
for f=1:12;%crea el factor multiplicador 5 8 40
p=n*f; %creacion de los productos 5 9 45
disp([n f p]) 5 10 50
end 5 11 55
5 12 60
clc
n=input('ingrese valor:');
68
ingrese el numero:-5
ans =
ingrese el numero:5
Factorial =
120
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;
69
D=n*r;
disp([D n r])
end
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
%Programa para convertir grados celsius a kelvin 6 279
clc 7 280
n=input('ingrese n:');%grados celsius 8 281
d=n-5; 9 282
for n=d:n+5; 10 283
kelvin=n+273;%grados kelvin 11 284
disp([n kelvin]) 12 285
end 13 286
14 287
15 288
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'
70
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
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])
ingrese ecuacion:x^2-5
a=
x^2-5
71
10000
8000
6000
4000
2000
-2000
-100 -80 -60 -40 -20 0 20 40 60 80 100
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
nota=1;
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
function [y]=cubica(x)
y=2*x^3+8;
ans = 258
function [M,S]=media_ds(x)
n=length(x);
M=sum(x)/n
S=sqrt(( sum(x.^2/n)-M^2 ))
>> x= [1 2 ]
>> media_ds(x);
M= 1.5000
S= 0.5000
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
>> numero(-1)
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
P(x)= x3 -2x -5
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
>> P=[2 -1 3 5 9 ];
>> polyder(P)
ans = 8 -3 6 5
ans = 4 -12 6 14
Tiempos 0 1 2 3 4 5
Temperaturas 0 20 60 68 77 110
REGRESION LINEAL
120
100
x = 0:5;
TEMPERATURA EN oF
80
y = [0, 20, 60, 68, 77, 110];
coef = polyfit(x, y, 1) 60
m=coef(1); 40
b=coef(2);
y1 = m.*x+b; 20
Y = 20.8286 x + 3.7619
x = 0:5;
y = [0, 20, 60, 68, 77, 110]; 120
REGRESION LINEAL
coef = polyfit(x, y, 2)
100
a=coef(1);
b=coef(2);
TEMPERATURA EN oF
80
c=coef(3); 60
y2 = a*x.^2 + b * x + c;
plot(x, y2, x, y, 'r*'), title('REGRESION LINEAL') 40
Para realizar un mejor ajuste de datos usaremos un modelo polinomial cúbico, para
lo cual se utilizará el siguiente programa. 120
REGRESION LINEAL
100
x = 0:5;
y = [0, 20, 60, 68, 77, 110]; 80
TEMPERATURA EN oF
coef = polyfit(x, y, 3) 60
a=coef(1);
40
b=coef(2);
c=coef(3); 20
d=coef(4); 0
x=[0 1 2 3 4 5 ];
y = [0 20 60 68 77 110]; 120
REGRESION LINEAL
a=coef(1);
80
b=coef(2);
TEMPERATURA EN oF
c=coef(3); 60
d=coef(4); 40
e=coef(5); 20
EJERCICIOS PROPUESTOS
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: ')
80
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('=================================================================
==========')
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('¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤')
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)
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')
84
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(' ')
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
85
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(' ')
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('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;
86
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
SALIDA:
===================================================
-------------------*METODO DE NEWTON RAPHSON*------------------
===================================================
ingrese funcion asociada f(x)=5*x - x^3
ingrese valor inicial:2
SALIDA:
===================================================
---------------------------* METODO DE SIMPSON *------------------------
===================================================
ingrese funcion:log(x/2)-x^3+x
A=
log(1/2*x)-x^3+x
B=
4
C=
2
----------------------------------
La solución es: 32.459380
----------------------------------
sen(ln x)dx
%ingresando por teclado el límite superior (a) y el limite inferior (b):
clc;
89
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
=====================
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 *-------------------
==============================================
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');
92
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('================================================================')
93
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.