Universidad de Guadalajara
DEPARTAMENTO DE FISICA
Manual de Computo I
Autor: Daniel Rios Parra
Profesor:
ROBERTO TOSCANO F.
Indice general
1. Fundamentos del manejo de LATEX 4
1.1. LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1. LATEX contra Word . . . . . . . . . . . . . . . . . . . . 5
1.2. Preambulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3. Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4. Cuerpo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5. Principios basicos de la escritura . . . . . . . . . . . . . . . . . 9
1.6. Herramientas dentro del Texto . . . . . . . . . . . . . . . . . . 10
1.7. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.9. Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.10. Tabulaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.11. Bibliografa en LATEX . . . . . . . . . . . . . . . . . . . . . . . 15
2. Uso de gnuplot 16
2.0.1. Instalacion . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1. Funciones de gnuplot . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.1. Como se ejecuta Gnuplot . . . . . . . . . . . . . . . . . 19
2.1.2. Comandos utiles . . . . . . . . . . . . . . . . . . . . . 19
2.1.3. Comandos basicos de dibujo . . . . . . . . . . . . . . . 20
2.1.4. Dibujo de curvas definidas por funciones . . . . . . . . 20
2.1.5. Funciones parametricas . . . . . . . . . . . . . . . . . . 22
2.1.6. Coordenadas polares . . . . . . . . . . . . . . . . . . . 22
2.1.7. Dibujo de curvas definidas por puntos . . . . . . . . . . 23
2.1.8. Modificadores del comando plot . . . . . . . . . . . . . 23
2.1.9. Como salvar a fichero una grafica gnuplot . . . . . . . 24
2.1.10. Grafica datos . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.11. Splot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1
INDICE GENERAL 2
3. Uso de Octave 26
3.1. Uso basico de octave . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1. Operaciones basicas . . . . . . . . . . . . . . . . . . . . 27
3.2. Ejecutar codigo de MATLAB en octave . . . . . . . . . . . . . 28
3.3. Algebra lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1. Introduccion a MATLAB . . . . . . . . . . . . . . . . . 29
3.3.2. Notacion para formar las submatrices y las matrices
aumentadas . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.3. Ejecucion de operaciones por renglones . . . . . . . . . 30
3.3.4. Generacion de matrices aleatorias . . . . . . . . . . . . 30
3.3.5. Caractersticas usales . . . . . . . . . . . . . . . . . . . 31
4. Phython 32
4.1. Python contra otros lenguajes de programacion . . . . . . . . 33
4.2. Primeros pasos . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3. Tipos de variables . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.1. Numeros . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.3.2. Cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3.3. Booleanos . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4. Coleccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4.1. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4.2. Tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.4.3. Diccionarios . . . . . . . . . . . . . . . . . . . . . . . . 40
4.5. Sentencias condicionales . . . . . . . . . . . . . . . . . . . . . 41
4.5.1. If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.6. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.6.1. While . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.6.2. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.7. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.8. Orientacion a objetos . . . . . . . . . . . . . . . . . . . . . . . 45
4.8.1. Clases y objetos . . . . . . . . . . . . . . . . . . . . . . 45
4.9. Modulos y paquetes . . . . . . . . . . . . . . . . . . . . . . . . 47
4.9.1. Modulos . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.9.2. Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5. Anexos 49
5.1. Ejemplos Practicos de L TEX . . . . . . . . . . . . . . . . . . . 49
A
5.2. Ejemplos de Gnuplot . . . . . . . . . . . . . . . . . . . . . . . 60
INDICE GENERAL 3
5.2.1. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.2. Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2.3. Ejemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.4. Ejemplo 4 . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.5. Ejemplo 5 . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.6. Ejemplo 6 . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2.7. Ejemplo 7 . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.2.8. Ejemplo 8 . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.9. Ejemplo 9 . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.2.10. Ejemplo 10 . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.11. Ejemplo 11 . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2.12. Ejemplo 12 . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2.13. Ejemplo 13 . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.14. Ejemplo 14 . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2.15. Ejemplo 15 . . . . . . . . . . . . . . . . . . . . . . . . 70
5.2.16. Ejemplo 16 . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.17. Ejemplo 17 . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.18. Ejemplo 18 . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2.19. Ejemplo 19 . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2.20. Ejemplo 20 . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.21. Ejemplo 21 . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2.22. Ejemplo 22 . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3. Calcular con octave . . . . . . . . . . . . . . . . . . . . . . . 80
Captulo 1
Fundamentos del manejo de
LATEX
1.1. LATEX
LATEX (escrito LaTeX en texto plano) es un sistema de composicion de
textos, orientado a la creacion de documentos escritos que presenten una alta
calidad tipografica. Por sus caractersticas y posibilidades, es usado de forma
especialmente intensa en la generacion de artculos y libros cientficos que in-
cluyen, entre otros elementos, expresiones matematicas. LaTeX esta formado
por un gran conjunto de macros de TeX, escrito por Leslie Lamport en 1984,
con la intencion de facilitar el uso del lenguaje de composicion tipografi-
ca,TeX,creado por Donald Knuth. Es muy utilizado para la composicion de
artculos academicos, tesis y libros tecnicos, dado que la calidad tipografica
de los documentos realizados con LaTeX es comparable a la de una editorial
cientfica de primera lnea. LaTeX es software libre bajo licencia LPPL.
LaTeX es un sistema de composicion de textos que esta formado ma-
yoritariamente por ordenes construidas a partir de comandos de TeX -un
lenguaje ((de nivel bajo)), en el sentido de que sus acciones ultimas son muy
elementales- pero con la ventaja anadida de ((poder aumentar las capacidades
de LaTeX utilizando comandos propios del TeX descritos en The TeXbook))
Esto es lo que convierte a LaTeX en una herramienta practica y util pues, a
su facilidad de uso, se une toda la potencia de TeX. Estas caractersticas hi-
cieron que LaTeX se extendiese rapidamente entre un amplio sector cientfico
y tecnico, hasta el punto de convertirse en uso obligado en comunicaciones
4
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 5
y congresos, y requerido por determinadas revistas a la hora de entregar
artculos academicos.
LaTeX presupone una filosofa de trabajo diferente a la de los procesado-
res de texto habituales (conocidos como WYSIWYG, es decir, ((lo que ves es
lo que obtienes))) y se basa en instrucciones. Tradicionalmente, este aspecto
se ha considerado una desventaja (probablemente la unica). Sin embargo,
LaTeX, a diferencia de los procesadores de texto de tipo WYSIWYG, per-
mite a quien escribe un documento centrarse exclusivamente en el contenido,
sin tener que preocuparse de los detalles del formato. Ademas de sus capa-
cidades graficas para representar ecuaciones, formulas complicadas, notacion
cientfica e incluso musical, permite estructurar facilmente el documento (con
captulos, secciones, notas, bibliografa, ndices analticos, etc.), lo cual brin-
da comodidad y lo hace util para artculos academicos y libros tecnicos. Con
LaTeX, la elaboracion del documento requiere normalmente de dos etapas:
en la primera hay que crear mediante cualquier editor de texto llano un ar-
chivo o fichero fuente que, con las ordenes y comandos adecuados, contenga
el texto que queramos imprimir. La segunda etapa consiste en procesar este
archivo; el procesador de textos interpreta las ordenes escritas en el y compila
el documento, dejandolo preparado para que pueda ser enviado a la salida
correspondiente, ya sea la pantalla o la impresora. Si se quiere anadir o cam-
biar algo en el documento, se deberan hacer los cambios en el archivo fuente
y procesarlo de nuevo. Esta idea, que puede parecer poco practica a priori,
es conocida a los que estan familiarizados con el proceso de compilacion que
se realiza con los lenguajes de programacion de alto nivel (C, C++, etc.), ya
que es completamente analogo.
1.1.1. LATEX contra Word
LATEX en ambitos cientificos presenta muchas ventajas contra word, pero
para no desprestigiar a word del todo tenemos que este mismo es mas eficiente
para documentos cortos, volviendo a las ventajas de LATEX tenemos que para
documentos largos word es practicamente inutil.
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 6
1.2. Preambulo
En el preambulo se escriben las instrucciones fundamentales que indican
a LATEX que clase de documento se va a escribir y que caractersticas va a
tener este, as como tambien las que indican a LATEX que paquetes se deben
carga.El preambulo siempre empezara con la instruccion
1 \ documentclass [ < opciones >]{ < plantilla _ documento >}
Para definir la plantilla que se va a emplear en el documento,como por ejem-
plo article o report ,que determinan diferentes estilos.En general,los ar-
gumentos que toma este comando son las llamadas clases de documento, y
puede aceptar diferentes opciones.Por ejemplo, la instruccion
1 \ documentclass [12 pt , letterpaper ]{ book }
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 7
Declara que el documento es un libro, con el tamano de letra configurado a
12 puntos y utilizando papel tamano carta.En vez de latterpaper ,se pueden
usar otros tamanos de papel, como lo es A4(a4paper ).
1.3. Paquetes
Se llama paquete a una extension del sistema basico que anade nuevas
funciones. Hay, literalmente, cientos de paquetes con muy diversas funciones:
insercion de imagenes (graphicx), paquetes graficos (TikZ), internacionaliza-
cion (babel, polyglossia), color (xcolor), musica, ajedrez, ediciones crticas,
secuencias de amninoacidos, etc. Todos estos paquetes deberan ser declarados
con:
1 \ usepackage [ < opciones >]{ < paquete >}
Algunos de los paquetes que son necesarios para un buen manejo del lenguaje
no estaran incluidos en la descarga original, los tendras que descargar cuando
los necesites, algunos ejemplos de paquetes son:
1 % Smbolos matematicos mejores
2 \ usepackage { amsmath }
3 \ usepackage { amsfonts }
4 % Con este paquete se puede definir en masa ( en lugar de
selectivamente ) nombres de comandos para todos los
smbolos y fuentes ( fonts ) msam msbm .
5 \ usepackage { amssymb }
6 % Para incluir graficos
7 \ usepackage { graphicx }
8 % Permiten modificar el tama~ n o de pagina , margenes , etc .
9 \ usepackage { geometry }
10 % Define colores en distintos modelos de color ( rgb , cmy
, etc )
11 \ usepackage { xcolor }
12 % Imprescindible si quieres escribir en espa~ n ol o
cualquier otro idioma que sea distinto de ingles .
Este paquete traduce todos los textos estandar (?
figure ? ,? chapter ? ,? section ? ,?) al idioma deseado .
13 \ usepackage { babel }
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 8
14 % Crea figuras compuestas por dos o mas subfiguras ,
opcionalmente numeradas como ( a ) , ( b ) ,?
15 \ usepackage { subfigure }
16 % La herramienta a usar para a~ n adir enlaces a nuestros
documentos .
17 \ usepackage { hyperref }
18 % Permite generar graficos 2 D y hasta en 3 D realmente
complejos
19 \ usepackage { TikZ }
20 % Permite colocar hipervnculos de diferentes colores
21 \ usepackage [ colorlinks = true , linkcolor = blue , urlcolor =
violet ]{ hyperref }
22 % El paquete blindtext provee un texto de prueba en la
etiqueta \ blindtext
23 % El paquete xfrac permite el comando \ sfrac {1}{2} para
escribir 1/2 en un solo caracter
24 \ usepackage { blindtext , xfrac }
25 % El ambiente verbatim imprime tal cual se escribe
respetando los espacios o tabulaciones
26 \ usepackage { verbatim }
27 % El paquete newlfm es para cartas , facsmiles y
memoradums
28 \ usepackage { newlfm }
29 % Mejora la tipografia ae -> " almost european " casi
europeo
30 \ usepackage { ae }
31 % Usa times como fuente de texto por defaul , y provee
soporte matematico
32 \ usepackage { mathptmx }
33 % Controla los margenes { izquierda }{ derecha }{ arriba }{
abajo }
34 \ marginsize {1.9 cm }{1.9 cm }{2.54}{2.54}
35 % El macro vect llama bolsymbol
36 \ newcommand {\ vect }[1]{\ boldsymbol {#1}}
37 % Para que diga Tabla en lugar de cuadro en el pie de la
figura
38 \ usepackage [ spanish , es - tabla ]{ babel }
39 % Sirve para crear listas
40 \ usepackage { enumerate }
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 9
Otros ejemplos de paquetes serian:Beamer,Quotchap, kbordermatrix,cleveref,Sketch,
Etc.
1.4. Cuerpo
El cuerpo del documento consiste en practicamente todo lo que aparecera
en nuestra compilacion. Es aqu, pues, donde escribiremos el texto verdadero.
Comienza con la instruccion
1 \ begin { document }
y termina con
1 \ end { document }
Todo lo que se escriba con posterioridad a esta instruccion sera ignorado por
LATEX y no se compilara. Una vez que iniciemos el cuerpo del documento
debemos escribir al final de todo lo escrito la instruccion de cierre aunque
no hayamos terminado todo el documento, pues de otra manera tendremos
un error en el proceso de la compilacion y no podremos ir viendo como van
quedando nuestros avances
1.5. Principios basicos de la escritura
Todo bloque de texto separado del resto con lneas en blanco se considera
un parrafo. No es el unico caso en que LaTeX considera que hay un parrafo,
pero s es el mas importante. En este caso, se lee el texto contenido en ese
bloque y LaTeX lo procesa con objeto de encontrar las mejores divisiones
de lnea, los mejores guiones y el mejor espaciado posible para el parrafo.
Tambien se preocupa de encontrar el mejor punto para cambiar de pagina,
as como de cuadrar el resultado en la pagina. Todo ello, naturalmente, sin
necesidad de intervencion directa de quien escribe.
El texto de cada parrafo se escribe de modo normal, con algunas salve-
dades importantes. En primer lugar, un espacio entre palabras vale lo mismo
que dos, tres o cientos, siempre que no se deje una lnea en blanco. De esta for-
ma se evitan espaciados irregulares que en sistemas WYSIWYG aparecen en
ocasiones al teclear por error dos espacios seguidos. En segundo lugar, LaTeX
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 10
proporciona un buen numero de caracteres adicionales a menudo inexistentes
en los teclados y que se pueden introducir como ordenes.
1.6. Herramientas dentro del Texto
Existen varias maneras de modificar el contenido de nuestro texto para
hacerlo ver de determinada manera,para modificar la letra dentro de nuestro
texto existen varios comandos
1 \ textbf { Texto } % Negritas
2 \ textit { Texto } % Italica
3 \ emph { Texto } % Enfasis
Para modificar la alineacion del texto tenemos los siguientes comandos
1 % Alineacion izquierda
2 \ begin { flushleft }
3 Texto
4 \ end { flushleft }
5 % Centrado
6 \ begin { center }
7 Texto
8 \ end { center }
9 % Alineacion derecha
10 \ begin { flushright }
11 Texto
12 \ end { flushright }
Para tener una nueva linea tenemos el comando
1 Texto anterior \\ Texto posterior
Para mostrar una ecuacion se puede usar el comando
1 $ Ecuacion $
Esta se vera en el mismo renglon en el que lo pongas, si quieres que la ecuacion
se muestre en su propio renglon se puede usar el comando
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 11
1 $$ Ecuacion $$
Si quieres tener una variable con un subindice se puede utilizar la herramienta
1 $( variable ) _{( subindice ) }$
De manera analoga se puede utilizar la herramienta para elevar una variable
a una potencia determinada
1 $( Variable ) ^{( Potencia ) }$
Se puede crear fracciones con la instruccion
1 $\ frac { a }{ b }$
e insertar una raz con
1 $\ sqrt { a }$
1.7. Matrices
Para crear una matriz se puede usar el comando
1 \ begin { array }
2 \ end { array }
Se puede usar el siguiente modelo para reciclar el codigo, todas las matrices
usan una forma similar
1 2 3
A= 4 5 6
7 8 9
Su codigo es
1 \[
2 A=
3 \ left (
4 \ begin { array }{ lcr }
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 12
5 1 & 2 & 3 \\
6 4 & 5 & 6 \\
7 7 & 8 & 9 \\
8 \ end { array }
9 \ right )
10 \]
1.8. Listas
Para crear una lista se tiene que utilizar el paquete
1 \ usepackage { enumerate }
dentro del cuerpo del documento en la zona que quieres enumerar tienes que
tener la siguiente estructura
1 \ begin { itemize }
2 \ item Primer elemento
3 \ item Segundo elemento
4 \ item Tercer elemento
5 \ item etcetera
6 \ end { itemize }
1.9. Tablas
Hay varias formas de crear tablas en LATEX, una de las mas convenientes es
crearlas en un programa especficamente disenado para crear tablas como los
serian Exel y Calc y luego convertirlas a codigo LATEX mediante una pagina
web, la otra forma seria hacerla directamente en latex con el siguiente codigo:
1 \ begin { tabular }{| c | c |}
2 \ hline
3 Elemento 1 & Elemento 2 \\
4 \ hline
5 Elemento 1 & Elemento 2 \\
6 \ hline
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 13
7 \ end { tabular }
puedes modficar la tabla a tu preferencia y una buena forma de insertar esta
tabla en latex sin tener que requerir memorizarla o consultarla en internet es
usando el asistente de texmaker
Figura 1.1: Parte 1
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 14
Figura 1.2: Parte 2
1.10. Tabulaciones
Se pueden crear tabulaciones personalizadas con la forma
Primer elemento Segundo elemento Tercer elemento
Cuarto elemento Quinto elemento Sexto elemento
Septimo elemento Octavo elemento Noveno elemento
con el codigo
1 \ begin { tabbing }
2 \ hspace {100 pt }\=\ hspace {100 pt }\=\ kill
3 Primer elemento \ > Segundo elemento \ > Tercer elemento
\\
4 Cuarto elemento \ > Quinto elemento \ > Sexto elemento \\
5 Septimo elemento \ > Octavo elemento \ > Noveno elemento
6 \ end { tabbing }
Tambien se puede usar el asistente de TexMaker de manera analoga que la
tablas
CAPITULO 1. FUNDAMENTOS DEL MANEJO DE LATEX 15
1.11. Bibliografa en LATEX
Para crear una Bibliografa se puede crear usando el comando thebiblio-
graphy que ya es nativo de latex, esta mismo tiene la siguiente estructura:
1 \ begin { thebibliography }{ X }
2 \ bibitem { Nombre de la referencia } \ textsc { Apellido ,
Nombres , Apellido 2. Nombre 2} y \ textsc { Tercer autor } ,
3 \ textit { Nombre de el libro } , Pais de origen , Estado de
origen , A~n o de origen .
4 \ end { thebibliography }
se puede anadir mas referencias usando el comando
1 \ bibitem { Nombre de la referencia }
Captulo 2
Uso de gnuplot
Geany es un editor de texto pequeno y ligero basado en Scintilla con carac-
tersticas basicas de entorno de desarrollo integrado (IDE). Utiliza bibliotecas
GTK para su funcionamiento. Esta disponible para distintos sistemas opera-
tivos, como GNU/Linux, Mac OS X, BSD, Solaris y Microsoft Windows. Es
distribuido como software libre bajo la Licencia Publica General de GNU.
2.0.1. Instalacion
En linux se puede usar el comando
1 $ sudo yum install gnuplot
2.1. Funciones de gnuplot
gnuplot es un programa de visualizacion grafica de datos cientficos. Per-
mite realizar graficos 2D y 3D de curvas, lineas de nivel y superficies, tanto
a partir de funciones como de datos discretos.
gnuplot es software libre, lo cual significa que cualquier persona lo puede utili-
zar y distribuir gratuitamente. Esta disponible para casi todas la plataformas.
La primera version data de 1986. La ultima version es la 4.0. Informacion so-
bre el programa se puede encontrar en su pagina web: http://www.gnuplot.info
. Gnuplot funciona mediante comandos, que pueden usarse tanto en modo
interactivo como escribiendo scripts (secuencia de comandos escritos en un
fichero). En estas notas se expone brevemente como utilizar gnuplot para
16
CAPITULO 2. USO DE GNUPLOT 17
dibujar curvas planas. El sistema operativo de referencia es Linux. Algunas
distribuciones de Linux (por ejemplo RedHat) traen gnuplot entre los paque-
tes que se instalan por defecto. La version dependera de la version de RedHat
que se instale.
CAPITULO 2. USO DE GNUPLOT 18
Funcion Salida
abs(x) valor absoluto de x
acos(x) coseno inverso
acosh(x) coseno hiperbolico inverso
asin(x) seno inverso
asinh(x) seno hiperbolico inverso
atan(x) tangente inversa
atan2(y,x) tangente inversa de (x/y)
atanh(x) tangente hiperbolica inversa
ceil(x) el menor integer no menor que x(parte real)
cos(x) coseno de x
cosh(x) coseno hiperbolico de x
exp(x) ex , funcion exponencial de x
floor(x) el mayor integer no mallor que x(parte real)
gamma(x) gamma(real(x))
ibeta(p,q,x) ...
igamma(a,x) ...
imag(x) ...
invnorm(x) ...
int(x) ...
lambertw(x) ...
lgamma(x) ...
log(x) ...
log10(x) ...
norm(x) ...
rand(x) ...
real(x) ...
sgn(x) ...
sin(x) ...
sinh(x) ...
sqrt(x) ...
tan(x) ...
tanh(x) ...
Podras usar todas estas funciones de diferentes maneras y con diferentes
combinaciones en el programa geany, como se observara en los ejemplos del
anexo Ejemplos de Gnuplot
CAPITULO 2. USO DE GNUPLOT 19
2.1.1. Como se ejecuta Gnuplot
a) Desde un terminal, escribiendo en la lnea de comandos
1 >> gnuplot
se ejecuta el programa en modo interactivo. Aparecera, tras unas lineas de
informacion, el prompt
1 gnuplot >
en el que se pueden escribir los comandos.
b) Ejecutando directamente un script: para ello, en la lnea de comandos del
terminal de Linux se escribe
1 >> gnuplot fichero _ script
siendo fichero script un fichero conteniendo comandos de gnuplot. Se ejecu-
taran de forma inmediata las ordenes contenidas en el fichero. Cuando estas
se terminan, se devolvera el control al Sistema Operativo, es decir, se termina
la ejecucion de gnuplot.
2.1.2. Comandos utiles
1 %De Print Working Directory . Indica cual es el
directorio por defecto . Importante porque es en ese
directorio donde gnuplot buscara los ficheros cuando
se lo indiquemos .
2
3 pwd
4
5 %De Change Directory . Cambia el directorio por defecto
. El path del directorio se puede indicar en forma
absoluta o relativa .
6
7 cd
8
9 % Si fichero es un script , es decir , contiene comandos
gnuplot , esta orden ejecuta dichos comandos . Cuando
CAPITULO 2. USO DE GNUPLOT 20
se termina , se vuelve al modo interactivo . Aunque no
es obligatorio , es muy recomendable para el usuario
que el fichero lleve una extension que nos recuerde
que contiene . Se puede usar , por ejemplo , la
extension ***. gnu , para recordarnos que contiene un
script de gnuplot .
10
11 load
12
13 %Borra el terminal grafico .
14
15 clear
16
17 %En la lnea de comandos de gnuplot , terminan la
ejecucion del programa .
18
19 exit / quit
2.1.3. Comandos basicos de dibujo
1 %Para dibujar curvas planas y graficos 2 D
2 plot
3
4 %Para dibujar superficies
5 splot
6
7 %Para hacer modificaciones de un plot o un splot
anterior .
8 replot
2.1.4. Dibujo de curvas definidas por funciones
Con el comando plot se pueden dibujar curvas definidas por una funcion.
Para ello se utiliza el comando en la forma:
1 gnuplot > plot funcion
CAPITULO 2. USO DE GNUPLOT 21
donde funcion es la expresion de una funcion f(x). En las expresiones, las ope-
raciones aritmeticas y la inmensa mayora de las funciones se escriben como
en FORTRAN. La lista de las funciones matematicas intrnsecas disponibles
en gnuplot, as como su descripcion se puede obtener tecleando el comando
1 gnuplot > help functions
La siguiente grafica es un ejemplo de la graficacion con gnuplot el se definio
la funcion sin(x) cos(x/3) y se uso el comando plot
Tambien se pueden determinar los rangos, en x y en y, que se quieren visua-
lizar. El primero que se especifica es el xrango y el segundo el y-rango:
1 plot [ -5:5] [ -2:2] sin ( x ) * cos ( x /3)
2 plot [ -5:5] sin ( x ) * cos ( x /3)
con sus respectivas graficas
Se pueden utilizar otras variables independientes, pero hay que indicarlas
expresamente en el x-rango:
1 >> plot [ t = - pi : pi ] cos (2* t **2/3)
CAPITULO 2. USO DE GNUPLOT 22
2.1.5. Funciones parametricas
Se pueden dibujar funciones definidas por sus ecuaciones parametricas.
La variable independiente por defecto, en este caso, es t
1 >> set parametric
2 >> plot sin ( t ) * cos ( t /3) , t /2
Tambien se puede indicar el rango de variacion de la variable independiente:
1 >> plot [ -1:1] sin ( t ) * cos ( t /3) , t /2
Y tambien se puede utilizar otra variable, si se indica expresamente:
1 >> plot [ r = -1 :1] sin ( r ) * cos ( r /3) , r /2
La orden set parametric afectara a todos los plot siguientes, hasta que se
desactive:
1 >> unset parametric
2.1.6. Coordenadas polares
Se pueden dibujar funciones en coordenadas polares. La variable indepen-
diente por defecto, en este caso, es tambien t
CAPITULO 2. USO DE GNUPLOT 23
1 >> set polar
2 >> plot [ -2* pi :2* pi ] t * sin (4* t )
3 >> unset polar
2.1.7. Dibujo de curvas definidas por puntos
Con el comando plot se pueden dibujar curvas definidas por un conjun-
to discreto de puntos cuyas coordenadas estan almacenadas en un fichero.
gnuplotplot fichero.dat (la extension ***.dat no es obligatoria). El fichero
fichero.dat debe contener, en cada lnea, la abscisa y la ordenada de uno de
los puntos. La orden anterior dibujara, en un rectangulo que contenga todos
los puntos del fichero, un marcador en el lugar de cada punto. Si no se ha
indicado expresamente, no se uniran los puntos entre s con ninguna clase de
lnea.
2.1.8. Modificadores del comando plot
Hay una serie de parametros opcionales que se pueden utilizar para mo-
dificar el resultado del comando plot. Se exponen a continuacion algunos
(pocos) de ellos. Para ver las caractersticas por defecto de las graficas gnu-
plot, se puede usar el comando test. Por ejemplo, se puede ver as el color por
defecto asignado a cada curva, segun su numero de orden: roja la primera,
verde la segunda, azul la tercera, ? etc. Tambien se pueden ver los grosores
de lnea correspondientes a los distintos ndices, los marcadores, etc.
Las caractersticas de la grafica se pueden modificar tambien utilizando el co-
mando set. De esta forma las modificaciones se aplicaran a todas las graficas
que se realicen posteriormente. Algunos ejemplos:
set style data lines establece el estilo lines para todas las graficas de datos
set style function linespoints establece linespoints para las graficas de funciones
set style line 1 linewidth 2 establece que las lneas de tipo 1 tengan grosor 2
set xrange [xmin:xmax] establece el rango x para todas las graficas posteriores
set xrange restore restaura el rango en x por defecto
set yrange [ymin:ymax] establece el rango y para todas las graficas posteriores
set yrange restore restaura el rango en y por defecto
set title Titulo establece el ttulo para todas las graficas posteriores
set title Titulo tc lt k ttulo con el texto en el color de la linea tipo 4
CAPITULO 2. USO DE GNUPLOT 24
set title restaura el ttulo a su valor por defecto (vaco)
reset restaura todas las caractersticas graficas a sus valores por defect
2.1.9. Como salvar a fichero una grafica gnuplot
Se puede hacer que una grafica gnuplot se almacene en un fichero, para
luego incluirla en un texto o imprimirla. Para ello hay que redirigir la salida
del programa hacia el dispositivo o driver adecuado. Explicamos aqu como
dirigir la salida hacia un fichero postscript. La orden gnuplotset terminal
nos mostrara la lista de los terminales disponibles en nuestro sistema. Para
mas informacion consultar, en gnuplot,
1 gnuplot > help set terminal
2 gnuplot > help set output
En primer lugar hay que elegir el terminal postscript (por defecto el terminal
de salida de gnuplot es X11)
1 gnuplot > set terminal postscript
En segundo lugar hay que re-dirigir la salida hacia un fichero:
1 gnuplot > set output grafica . ps
A continuacion se dan las ordenes adecuadas para conseguir la grafica que
nos interese. Esta no generara una ventana grafica, sino un fichero de nombre
grafica.ps. Como todos los comandos set, seguiran estando activos hasta que
no se restauren, por ejemplo, con el comando reset.
2.1.10. Grafica datos
Gnuplot trabaja de manera natural con los datos. Supongamos que tie-
nes un archivo experimento.dat con un monton de datos dispuestos en dos
columnas. Graficar esos datos es tan sencillo como esto:
1 gnuplot > plot " experimento . dat " ,
CAPITULO 2. USO DE GNUPLOT 25
Toma en cuenta que el archivo con los datos debe estar en el mismo directorio
desde donde ejecutaste gnuplot. De lo contrario, debes indicar, entre comillas,
la ruta completa. Tambien considera que la primera y segunda columna del
archivo seran los ejes X y Y, respectivamente.
2.1.11. Splot
1 set title " Superficie 3 D de una matriz de valores de z "
2 set xrange [ -0.5:4.5]
3 set yrange [ -0.5:4.5]
4 set grid
5 set hidden 3 d
6 $ grid << EOD
7 5 4 3 1 0
8 2 2 0 0 1
9 0 0 0 1 0
10 0 0 0 2 3
11 0 1 2 4 3
12 EOD
13 splot $ grid matrix with lines notitle
Captulo 3
Uso de Octave
Octave o GNU Octave es un programa libre para realizar calculos numeri-
cos. Como su nombre indica, es parte del proyecto GNU. Es considerado el
equivalente libre de MATLAB. Entre varias caractersticas que comparten,
se puede destacar que ambos ofrecen un interprete, permitiendo ejecutar
ordenes en modo interactivo. Notese que Octave no es un sistema de alge-
bra computacional, como lo es Maxima, sino que esta orientado al analisis
numerico. El proyecto fue creado alrededor del ano 1988, pero con una fi-
nalidad diferente: ser utilizado en un curso de diseno de reactores qumicos.
Posteriormente, en el ano 1992, se decidio extenderlo, y comenzo su desarro-
llo a cargo de John W. Eaton.1 La primera version alpha fue lanzada el 4 de
enero de 1993. Un ano mas tarde, el 17 de febrero de 1994, aparecio la version
1.0. El nombre surge de Octave Levenspiel, profesor de uno de los autores y
conocido por sus buenas aproximaciones, por medio de calculos elementales,
a problemas numericos en ingeniera qumica.
Octave esta escrito en C++ usando la biblioteca STL.
Tiene un interprete de su propio lenguaje (de sintaxis casi identica a
Matlab), y permite una ejecucion interactiva o por lotes.
Su lenguaje puede ser extendido con funciones y procedimientos, por
medio de modulos dinamicos.
Utiliza otros programas GNU para ofrecer al usuario la posibilidad de
crear graficos para luego imprimirlos o guardarlos (Grace).
26
CAPITULO 3. USO DE OCTAVE 27
Dentro del lenguaje tambien se comporta como una consola de ordenes
(shell). Esto permite listar contenidos de directorios, por ejemplo.
Ademas de correr en plataformas Unix tambien lo hace en Windows.
Puede cargar archivos con funciones de Matlab (reconocibles por la
extension .m).
Tiene ayuda en espanol.
3.1. Uso basico de octave
En esta seccion explicaremos algunas de las caractersticas basicas de oc-
tave, esto incluye como iniciar sesion en octave,obtener ayuda en la consola
ce comandos,editar la linea de comandos,y escribir programas en octave que
podras ejecutar como comandos desde tu consola de comandos.
Normalmente, octave es usado interactivamente corriendo el programa .octavesin
argumentos
3.1.1. Operaciones basicas
GNU Octave es un programa creado para trabajar con matrices, por lo
tanto, este punto es probablemente el mas importante y en el que mejor te-
nemos que aclararnos para empezar a trabajar. Tenemos muchas opciones
para trabajar con ellas, podemos intercambiar matrices, permutarlas, inver-
tirlas; GNU Octave es una herramienta de calculo muy potente en lo que a
matrices se refiere. Octave es como una calculadora, si en la consola colo-
cas la operacion 5 + 2 te dara 7, pero octave es mejor que una calculadora
convencional, puede almacenar variables que tu puedes utilizar despues por
medio de operaciones
Matrices
En matematica, una matriz es un arreglo bidimensional de numeros. Da-
do que puede definirse tanto la suma como el producto de matrices, en mayor
generalidad se dice que son elementos de un anillo. Una matriz se representa
por medio de una letra mayuscula(A,B..) y sus elementos con la misma letra
en minuscula (a,b...), con un doble subndice donde el primero indica la fila
CAPITULO 3. USO DE OCTAVE 28
y el segundo la columna a la que pertenece.
Las matrices y vectores en octave son variables del programa cuyos nombres
podemos definir, siempre y cuando no utilicemos los caracteres que el pro-
grama tiene como caracteres prohibidos.
Para definir una matriz en GNU Octave se determina el numero de filas y de
columnas en funcion del numero de elementos que se proporcionan (o se utili-
zan). Las matrices se definen por filas; los elementos de una misma fila estan
separados por blancos o comas, mientras que las filas estan separadas por
pulsaciones intro o por caracteres punto y coma (;). Tomemos como ejemplo:
1 octave :31 > a =[1 1; 2 5]
cuya salida saldra !
1 1
a=
2 5
esta se identificara como una variable y se guardara en octave para realizar
futuras operaciones con ella algunas de las operaciones que se pueden hacer
con esta son:
Matriz traspuesta con el comando: a', como no se le asigno variable a este
comando se guardara en ans
Suma y resta de matrices con el comando: a+b y a-b
Multiplicacion de matrices con el comando: a*b
Generar una matriz aleatoria(con valores de 0 a 1) de 3x3 con el comando:
a=rand(3)
Calcular la matriz inversa con el comando: inv(a)
3.2. Ejecutar codigo de MATLAB en octave
Abre el programa GNU Octave en tu computadora. Esto generalmente
se realiza utilizando un terminal de comandos.
Navega hasta el directorio especfico en el que se encuentra el programa
Matlab que deseas ejecutar. Por ejemplo, en Linux, puedes navegar
hasta el directorio donde se encuentra el archivo mediante un comando
similar al cd home/matlab/files/ donde cd es el comando de cambio de
directorio y el archivo especfico esta contenido en files.
CAPITULO 3. USO DE OCTAVE 29
Ejecuta el programa de Matlab en tu computadora escribiendo el co-
mando en la terminal. Por ejemplo, para ejecutar el archivo test1.m en
Octave, deberas escribir: test1.m
3.3. Algebra lineal
El algebra lineal es una rama de las matematicas que estudia conceptos
tales como vectores, matrices, sistemas de ecuaciones lineales y en su enfoque
de manera mas formal, espacios vectoriales y sus transformaciones lineales.
Es un area activa que tiene conexiones con muchas areas dentro y fuera
de las matematicas, como el analisis funcional, las ecuaciones diferenciales,
la investigacion de operaciones, las graficas por computadora, la ingeniera,
etc.
La historia del algebra lineal moderna se remonta a 1843, cuando William
Rowan Hamilton (de quien proviene el uso del termino vector) creo los cua-
terniones; y a 1844, cuando Hermann Grassmann publico su libro Die lineare
Ausdehnungslehre (La teora lineal de extension).
En esta seccion observaremos los ejemplos del libro Algebra Lineal de
Grossman,estos estan escritos en codigo de matlab pero este codigo es com-
patible con octave
3.3.1. Introduccion a MATLAB
MATLAB distingue minusculas y mayusculas. Esto quiere decir que a y
A representan variables diferentes
Introduccion de matrices. Los elementos de un renglon se separan por
espacios y/o comas, y las columnas se separan por ;:
A = [1 2 3; 4 5 6; 7 8 9] Produce la matriz
1 2 3
A= 4 5 6
7 8 9
La matriz B = [3;6;1] Produce la matriz
3
B= 6
1
CAPITULO 3. USO DE OCTAVE 30
3.3.2. Notacion para formar las submatrices y las ma-
trices aumentadas
f = A(2, 3) f es elemento en el segundo renglon, tercera columna de A.
d = A(3, :) d es el tercer renglon de A.
d = A(; , 3) d es la tercera columna de A.
C = A([24]), :) C es la matriz que consiste del segundo y cuarto renglones de
A.
C = [Ab] Forma una matriz aumentada C =(A/b)
3.3.3. Ejecucion de operaciones por renglones
A(2, :) = 3 A(2, :) R2 3R2
A(2, :) = A(2, :)/4 R2 41 R2
A([23]), :) = A([32]), :) Intercambia los renglones 2 y 3
A(3, :) = A(3, :) + 3 A(2, :) R3 R3 + 3R2 Nota. Todos estos comandos
cambian a la matriz A. Si se requiere conservar la matriz original y llamar a
C a la matriz cambiada
C=A
C(2, :) = 3 C(2, :)
C = rref (A)
C = Forma escalonada reducida por renglones de A
3.3.4. Generacion de matrices aleatorias
A = rand(2, 3) matriz 2 x 3 con elementos entre 0 y 1
A = 2 rand(2, 3) 1 matriz 2 x 3 con elementos entre -1 y 1
A = 4 (2 rand(2) 1) matriz 2 x 2 con elementos entre -4 y 4
A = round(10 rand(3)) matriz 3 x 3 con elementos enteros entre 0 y 10
CAPITULO 3. USO DE OCTAVE 31
3.3.5. Caractersticas usales
Help. Si se teclea help seguido de un comando MATLAB en la ventana
de comandos de MATLAB, aparecera una descripcion del comando en la
ventana de comandos.
Doc. Si se teclea doc seguido de un comando de MATLAB en la venta-
na de comando de MATLAB, aparecera una descripcion del comando en la
ventana de ayuda.
ComentariosSe puede usar el smbolo por ciento,MATLAB interpre-
tara esto como una linea de comentario.
Captulo 4
Phython
Python es un lenguaje de programacion interpretado cuya filosofa hace
hincapie en una sintaxis que favorezca un codigo legible.
Se trata de un lenguaje de programacion multiparadigma, ya que soporta
orientacion a objetos, programacion imperativa y, en menor medida, pro-
gramacion funcional. Es un lenguaje interpretado, usa tipado dinamico y es
multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de
codigo abierto, denominada Python Software Foundation License, que es
compatible con la Licencia publica general de GNU a partir de la version
2.1.1, e incompatible en ciertas versiones anteriores
Python es un lenguaje de programacion poderoso y facil de aprender. Cuen-
ta con estructuras de datos eficientes y de alto nivel y un enfoque simple
pero efectivo a la programacion orientada a objetos. La elegante sintaxis de
Python y su tipado dinamico, junto con su naturaleza interpretada, hacen
de este un lenguaje ideal para scripting y desarrollo rapido de aplicaciones
en diversas areas y sobre la mayora de las plataformas. El interprete de
Python y la extensa biblioteca estandar estan a libre disposicion en forma
binaria y de codigo fuente para las principales plataformas desde el sitio
web de Python, http://www.python.org/, y puede distribuirse libremente.
El mismo sitio contiene tambien distribuciones y enlaces de muchos modulos
libres de Python de terceros, programas y herramientas, y documentacion
adicional. El interprete de Python puede extenderse facilmente con nuevas
funcionalidades y tipos de datos implementados en C o C++ (u otros len-
guajes accesibles desde C). Python tambien puede usarse como un lenguaje
32
CAPITULO 4. PHYTHON 33
de extensiones para aplicaciones personalizables.
4.1. Python contra otros lenguajes de pro-
gramacion
Este lenguaje de programacion se usa en varios institutos cientficos al-
rededor del mundo ejemplos de estas instituciones son el CERN, cambridge,
oxford, maxplak,etc., aunque python puede tardar mas en realizar los calcu-
los numericos que puede hacer MATLAB y Octave el tiempo en escribir el
codigo de python es mucho mayor,y no solo eso, en python se puede escribir
el codigo que veas que esta tardando demasiado en procesar los datos en
codigo c, el lenguaje c se puede escribir dentro de python con un paquete de
python, esto es recalcable ya que de hecho, c es mas rapido que MATLAB y
Octave.
4.2. Primeros pasos
Phyton a semejanza de octave y matlab tambien es una gran calculadora,
pero este es un lenguaje mucho mas simple, y mas completo, en python
existen paquetes similares a los de latex, puedes cargar varios paquetes en
python, un ejemplo seria el paquete multiplot, dicho esto podemos comenzar.
4.3. Tipos de variables
4.3.1. Numeros
Enteros
Los numeros enteros son aquellos numeros positivos o negativos que no
tienen decimales (ademas del cero).
En Python se pueden representar mediante el tipo int o si se requiere alma-
cenar numeros muy grandes el tipo long nos lo permite a costa de gastar mas
memoria, as que se recomiendo un uso unicamente en situaciones necesarias.
Al asignar un numero a una variable esta pasara a tener tipo int, a menos
que el numero sea tan grande como para requerir el uso del tipo long.
CAPITULO 4. PHYTHON 34
1 # type ( entero ) devolvera int
2 entero = 23
Tambien podemos indicar a Python que un numero se almacene usando long
anadiendo una L al final:
1 # type ( entero ) devolvera long
2 entero = 23 L
El literal que se asigna a la variable tambien se puede expresar como un octal
anteponiendo un cero:
1 # 027 octal = 23 en base 10
2 entero = 027
O bien en hexadecimal anteponiendo un 0x:
1 # 027 octal = 23 en base 10
2 entero = 027
Reales
Los numeros reales son los que tienen decimales. Se expresa mediante el
tipo float. Para representar un numero real en Python se escribe primero la
parte entera, seguido de un punto y por ultimo la parte decimal.
1 real = 0.2703
Tambien se puede utilizar notacion cientfica, y anadir una e (de exponente)
para indicar un exponente en base 10. Por ejemplo:
1 real = 0.1 e -3
Sera equivalente a 0,1x?10?( 3) = 0,1x0,001 = 0,0001
CAPITULO 4. PHYTHON 35
Complejos
Los numeros complejos son aquellos que tienen parte imaginaria. En el
caso de que se requiera utilizar los numeros complejos, son llamados complex
en Python. Los numeros complejos en Python se representan de la siguiente
forma:
1 complejo = 2.1 + 7.8 j
Operadores aritmeticos
Cuadro 4.1: Operadores Aritmeticos
Operaciones Descripcion Ejemplo
+ Suma r = 3 + 2 # r es 5
- Resta r = 4 - 7 # r es -3
- Negacion r = -7 # r es -7
* Multiplicacion r = 2 * 6 # r es 12
** Exponente r = 2 ** 6 # r es 64
/ Division r = 3.5 / 2 # r es 1.75
// Division entera r = 3.5 // 2 # r es 1.0
% Modulo r = 7 % 2 # r es 1
Operadores a nivel de bit
Una operacion como 3&2, lo que estais viendo es un and bit a bit entre
los numeros binarios 11 y 10 (las representaciones en binario de 3 y 2). El
operador and (&), del ingles ?y?, devuelve 1 si el primer bit operando es 1 y
el segundo bit operando es 1. Se devuelve 0 en caso contrario. El resultado de
aplicar and bit a bit a 11 y 10 sera entonces el numero binario 10, o lo que
es lo mismo, 2 en decimal (el primer dgito es 1 para ambas cifras, mientras
que el segundo es 1 solo para una de ellas).
El operador or (), del ingles ?o?, devuelve 1 si el primer operando es 1 o
CAPITULO 4. PHYTHON 36
Cuadro 4.2: Operadores a nivel e bit
Operador Descripcion Ejemplo
& and r = 3&2#res2
| or r = 3|2#res3
not r = 3#res 4
<< desplazamiento izquierda r = 3 << 1#res6
>> desplazamiento derecha r = 3 >> 1#res1
el segundo operando es 1. Para el resto de casos se devuelve 0. El operador
xor u or exclusivo () devuelve 1 si uno de los operandos es 1 y el otro no lo
es. El operador not ( ), del ingles ?no?, sirve para negar uno a uno cada bit;
es decir, si el operando es 0, cambia a 1 y si es 1, cambia a 0. Por ultimo los
operadores de desplazamiento ((( y ))) sirven para desplazar los bits n posi-
ciones hacia la izquierda o la derecha.
4.3.2. Cadenas
Las cadenas no son mas que texto encerrado entre comillas simples (?ca-
dena?) o dobles (cadena). Dentro de las comillas se pueden anadir ca-
racteres especiales escapandolos con como n, el caracter de nueva lnea, o
, el de tabulacion. Una cadena puede estar precedida por el caracter u o el
caracter r, los cuales indican, respectivamente, que se trata de una cadena
que utiliza codificacion Unicode y una cadena raw (del ingles, cruda). Tam-
bien es posible encerrar una cadena entre triples comillas (simples o dobles).
De esta forma podremos escribir el texto en varias lneas, y al imprimir la ca-
dena, se respetaran los saltos de lnea que introdujimos sin tener que recurrir
al caracter n, as como las comillas sin tener que escaparlas.
1 triple = primera linea
2 esto se vera en otra linea
Concatenar Las cadenas tambien admiten operadores como +, que funciona
realizando una concatenacion de las cadenas utilizadas como operandos y *,
CAPITULO 4. PHYTHON 37
en la que se repite la cadena tantas veces como lo indique el numero utilizado
como segundo operando.
1 a = uno
2 b = dos
3 c = a + b # c es unodos
4 c = a * 3 # c es unounouno
4.3.3. Booleanos
Este tipo de variables pueden tener unicamente dos valores: True (cierto)
y False (falso). Estos valores son especialmente importantes para las expresio-
nes condicionales y los bucles. Los valores booleanos son ademas el resultado
Cuadro 4.3: Add caption
Operador Descripcion Ejemplo
and Se cumple a y b? r = True and False # r es False
or se cumple a o b? r = True or False # r es True
not No a r = not True # r es False
de expresiones que utilizan operadores relacionales (comparaciones entre va-
lores):
Cuadro 4.4: Add caption
Operador Descripcion Ejemplo
== Son iguales a y b? r = 5 == 3 # r es False
!= Son distintos a y b? r = 5 != 3 # r es True
< es a menor que b? r = 5 3 # r es False
> es a mayor que b? r = 5 3 # r es True
<= es menor o igual que b? r = 5 = 5 # r es True
>= es a mayor o igual que b? r = 5 = 3 # r es True
CAPITULO 4. PHYTHON 38
4.4. Coleccion
4.4.1. Listas
La lista es un tipo de coleccion ordenada. Seria equivalente a lo que en
otros lenguajes se conoce por arrays o vectores. Las listas pueden contener
cualquier tipo de dato: numeros. Cadenas, booleanos,? y tambien listas. Crear
una lista es tan sencillo como indicar entre corchetes, y separados por comas,
los valores que queremos incluir en la lista:
1 l = [22 , True , una lista , [1 , 2]]
Podemos acceder a cada uno de los elementos de la lista escribiendo el nombre
de la lista e indicando el ndice del elemento entre corchetes. Hay que tener
en cuenta que el ndice del primer elemento de la lista es 0 y no 1:
1 l = [11 , False ]
2 mi _ var = l [0] # mi _ var vale 11
Si queremos acceder a un elemento de un lista incluida dentro de otra lista
tendremos cuando que utilizar dos veces este operador, primero para indi-
car a que posicion de la lista exterior queremos acceder, y el segundo para
seleccionar el elemento de la lista:
1 l = [ una lista , [1 , 2]]
2 mi _ var = l [1][0] # mi _ var vale 1
Tambien podemos utilizar este operador para modificar un elemento de la
lista si lo colocamos en la parte izquierda de una asignacion:
1 l = [22 , True ]
2 l [0] = 99 # Con esto l valdra [99 , True ]
Una curiosidad sobre el operador [] de Python es que podemos utilizar tam-
bien numeros negativos. Si se utiliza un numero negativo como ndice, esto
se traduce en que el ndice empieza a contar desde el final, hacia la izquier-
da; es decir, con [-1] accederamos al ultimo elemento de la lista, con [-2] al
penultimo, con [-3], al antepenultimo, y as sucesivamente. Otra cosa inusual
es lo que en Python se conoce como slicing o particionado, y que consiste
CAPITULO 4. PHYTHON 39
en ampliar este mecanismo para permitir seleccionar porciones de la lista.
Si en lugar de un numero escribimos dos numeros inicio y fin separados por
dos puntos (inicio:fin) Python interpretara que queremos una lista que vaya
desde la posicion inicio a la posicion fin, sin incluir este ultimo. Si escribi-
mos tres numeros (inicio:fin:salto) en lugar de dos, el tercero se utiliza para
determinar cada cuantas posiciones anadir un elemento a la lista.
1 l = [99 , True , una lista , [1 , 2]]
2 mi _ var = l [0:2] # mi _ var vale [99 , True ]
3 mi _ var = l [0:4:2] # mi _ var vale [99 , una lista ]
Hay que mencionar as mismo que no es necesario indicar el principio y el final
del slicing, sino que, si estos se omiten, se usaran por defecto las posiciones
de inicio y fin de la lista, respectivamente:
1 l = [99 , True , una lista ]
2 mi _ var = l [1:] # mi _ var vale [ True , una lista ]
3 mi _ var = l [:2] # mi _ var vale [99 , True ]
4 mi _ var = l [:] # mi _ var vale [99 , True , una lista ]
5 mi _ var = l [::2] # mi _ var vale [99 , una lista ]
4.4.2. Tuplas
Todo lo que hemos explicado sobre las listas se aplica tambien a las tuplas,
a excepcion de la forma de definirla, para lo que se utilizan parentesis en lugar
de corchetes.
1 t = (1 , 2 , True , python )
En realidad el constructor de la tupla es la coma, no el parentesis, pero
el interprete muestra los parentesis, y nosotros deberamos utilizarlos, por
claridad.
1 >>> t = 1 , 2 , 3
2 >>> type ( t )
3 type tuple
CAPITULO 4. PHYTHON 40
Ademas hay que tener en cuenta que es necesario anadir una coma para tuplas
de un solo elemento, para diferenciarlo de un elemento entre parentesis.
1 >>> t = (1)
2 >>> type ( t )
3 type ? int ?
4 >>> t = (1 ,)
5 >>> type ( t )
6 type tuple
Para referirnos a elementos de una tupla, como en una lista, se usa el operador
[ ]:
1 mi _ var = t [0] # mi _ var es 1
2 mi _ var = t [0:2] # mi _ var es (1 , 2)
Las cadenas de texto tambien son secuencias asi que puede darse el caso de
usar esta caracterstica para obtener una letra en especfico como se muestra
a continuacion:
1 c = hola mundo
2 c [0] # h
3 c [5:] # mundo
4 c [::3] # hauo
La diferencia entre las tuplas y las litas esta en que las tuplas no poseen
mecanismos de modificacion a traves de funciones. Son inmutables (sus va-
lores no se pueden modificar una vez creadas; y tienen un tamano fijo. A
cambio de estas limitaciones la tuplas son mas ?ligeras? que las listas, por lo
que si el uso que se le dara es muy basico, se puede emplear tuplas en lugar
de listas y ahorrar memoria.
4.4.3. Diccionarios
Los diccionarios, tambien llamados matrices asociativas, deben su nom-
bre a que son colecciones que relacionan una clave y un valor. Por ejemplo,
veamos un diccionario de pelculas y directores:
1 d = { Love Actually : Richard Curtis ,
CAPITULO 4. PHYTHON 41
2 Kill Bill : Tarantino ,
3 Amelie : Jean - Pierre Jeunet }
El primer valor se trata de la clave y el segundo del valor asociado a la
clave. Como clave podemos utilizar cualquier valor inmutable: podramos
usar numeros, cadenas, booleanos, tuplas,? pero no listas o diccionarios, dado
que son mutables. La diferencia principal entre los diccionarios y las listas o
las tuplas es que a los valores almacenados en un diccionario se les accede no
por su ndice, porque de hecho no tienen orden, sino por su clave, utilizando
de nuevo el operador [ ].
1 d [ Love Actually ] # devuelve Richard Curtis
Al igual que en listas y tuplas tambien se puede utilizar este operador para
reasignar valores.
1 d [ Kill Bill ] = Quentin Tarantino
Sin embargo en este caso no se puede utilizar slicing, entre otras cosas porque
los diccionarios no son secuencias, si no mappings (mapeados, asociaciones).
4.5. Sentencias condicionales
4.5.1. If
La forma mas simple de un estamento condicional es un if (del ingles si)
seguido de la condicion a evaluar, dos puntos (:) y en la siguiente lnea e
indentado, el codigo a ejecutar en caso de que se cumpla dicha condicion.
1 fav = mundogeek . net
2 # si ( if ) fav es igual a mundogeek . net
3 if fav == mundogeek . net :
4 print Tienes buen gusto !
5 print Gracias
No hay que olvidar que es importante el uso de la tabulacion en las acciones a
realizar en caso de que se cumpla la condicion, ya que si se omite la tabulacion
en el segundo print se tomara como una cadena que se imprimira siempre y
no como una cadena condicionada, tal y como se muestra a continuacion:
CAPITULO 4. PHYTHON 42
1 if fav == mundogeek . net :
2 print Tienes buen gusto !
3 print Gracias
if else
Si se quisiera ejecutar una accion cuando una condicion if no se cum-
pla ademas de poder emplearse una condicion contraria a la original puede
emplearse el termino else para hacer referencia a un si no.
1 if fav == mundogeek . net :
2 print Tienes buen gusto !
3 print Gracias
4 else :
5 print Vaya , que lastima
if,elif,elif,else
En caso de querer emplear mas condicionales se hace uso de la terminacion
elif que se refiere a ?si no, si?? agregando otra condicional, que de no ser
cumplida se pasara a la siguiente hasta llegar a un else indicando que ninguna
de las condicionales anteriores se ha cumplido:
1 if numero < 0:
2 print Negativo
3 elif numero > 0:
4 print Positivo
5 else :
6 print Cero
4.6. Bucles
Mientras que los condicionales nos permiten ejecutar distintos fragmen-
tos de codigo dependiendo de ciertas condiciones, los bucles nos permiten
CAPITULO 4. PHYTHON 43
ejecutar un mismo fragmento de codigo un cierto numero de veces, mientras
se cumpla una determinada condicion.
4.6.1. While
El bucle while (mientras) ejecuta un fragmento de codigo mientras se
cumpla una condicion.
1 edad = 0
2 while edad < 18:
3 edad = edad + 1
4 print ? Felicidades , tienes ? + str ( edad )
En el ejemplo anterior, la edad es definida con un valor 0, al entrar el bucle
while evalua primeramente la variable, en este caso edad, si la condicion se
cumple entonces el fragmento de codigo es ejecutado completamente. Cada
vez que el fragmento sea completado el bucle volvera a evaluar la variable y
seguira ejecutandose mientras la variable cumpla con la condicion. En caso
de que no se modifique la variable dentro del ciclo while estamos hablando
de un ciclo infinito ya que como no hemos asignado un cambio a la variable
el bucle seguira ejecutandose infinitamente. Sin embargo hay situaciones en
las que un bucle infinito es util. Por ejemplo, veamos un pequeno programa
que repite todo lo que el usuario diga hasta que escriba adios .
1 while True :
2 entrada = raw _ input ( > )
3 if entrada == adios :
4 break
5 else :
6 print entrada
La palabra clave break (romper) sale del bucle en el que se encuentra.
4.6.2. For
Los for se utilizan en Python para recorrer secuencias, por lo que vamos a
utilizar un tipo secuencia, como es la lista, para nuestro ejemplo. Leamos la
cabecera del bucle como si de lenguaje natural se tratara: para cada elemento
en secuencia. Y esto es exactamente lo que hace el bucle: para cada elemento
CAPITULO 4. PHYTHON 44
que tengamos en la secuencia, ejecuta estas lneas de codigo. Lo que hace la
cabecera del bucle es obtener el siguiente elemento de la secuencia secuencia
y almacenarlo en una variable de nombre elemento. Por esta razon en la
primera iteracion del bucle elemento valdra uno, en la segunda dos, y en
la tercera tres.
1 Secuencia = [ uno , dos , tres ]
2 for elemento in secuencia :
3 print elemento
4.7. Funciones
Una funcion es un fragmento de codigo con un nombre asociado que
realiza una serie de tareas y devuelve un valor. A los fragmentos de codigo
que tienen un nombre asociado y no devuelven valores se les suele llamar
procedimientos. En Python no existen los procedimientos. En Python no
existen los procedimientos, ya que cuando el programador no especifica un
valor de retorno la funcion devuelve el valor None (nada), equivalente al null
de Java.
1 def mi _ funcion ( param 1 , param 2) :
2 print param 1
3 print param 2
Es importante aclarar que al declarar la funcion lo unico que hacemos es
asociar un nombre al fragmento de codigo que conforma la funcion, de forma
que podamos ejecutar dicho codigo mas tarde referenciandolo por su nombre.
Es decir, a la hora de escribir estas lneas no se ejecuta la funcion. Para llamar
a la funcion (ejecutar su codigo) se escribira:
1 mi _ funcion ( hola , 2)
Es decir, el nombre de la funcion a la que queremos llamar seguido de los
valores que queramos pasar como parametros entre parentesis. La asociacion
de los parametros y los valores pasados a la funcion se hace normalmente
de izquierda a derecha: como a param1 le hemos dado un valor hola y
param2 vale 2, mi f uncion imprimira hola en una lnea, y a continuacion
CAPITULO 4. PHYTHON 45
2. Sin embargo tambien es posible modificar el orden de los parametros si
indicamos el nombre del parametro al que asociar el valor a la hora de llamar
a la funcion:
1 mi _ funcion ( param 2 = 2 , param 1 = hola )
4.8. Orientacion a objetos
La Programacion Orientada a Objetos (POO u OOP segun sus siglas en
ingles) es un paradigma de programacion en el que los conceptos del mundo
real relevantes para nuestro problema se modelan a traves de clases y objetos,
y en el que nuestro programa consiste en una serie de interacciones entre estos
objetos.
4.8.1. Clases y objetos
Un objeto es una entidad que agrupa un estado y una funcionalidad re-
lacionadas. El estado del objeto se define a traves de variables llamadas
atributos, mientras que la funcionalidad se modela a traves de funciones a
las que se les conoce con el nombre de metodos del objeto. Un ejemplo de
objeto podra ser un coche, en el que tendramos atributos como la marca, el
numero de puertas o el tipo de carburante y metodos como arrancar y parar.
O bien cualquier otra combinacion de atributos y metodos segun lo que fuera
relevante para nuestro programa. Una clase, por otro lado, no es mas que
una plantilla generica a partir de la cual instanciar los objetos; plantilla que
es la que define que atributos y metodos tendran los objetos de esa clase.
En Python las clases se definen mediante la palabra clave class seguida del
nombre de la clase, dos puntos (:) y a continuacion, indentado, el cuerpo de
la clase.
1 class Coche :
2 Abstraccion de los objetos coche .
3 def __ init __( self , gasolina ) :
4 self . gasolina = gasolina
5 print Tenemos , gasolina , litros
6 def arrancar ( self ) :
7 if self . gasolina > 0:
CAPITULO 4. PHYTHON 46
8 print Arranca
9 else :
10 print No arranca
11 def conducir ( self ) :
12 if self . gasolina > 0:
13 self . gasolina -= 1
14 print Quedan , self . gasolina , litros
15 else :
16 print No se mueve
Lo primero que llama la atencion en el ejemplo anterior es el nombre tan
curioso que tiene el metodo init. Este nombre es una convencion y no un
capricho. El metodo init, con una doble barra baja al principio y final del
nombre, se ejecuta justo despues de crear un nuevo objeto a partir de la clase,
proceso que se conoce con el nombre de instanciacion. El metodo init sirve,
como sugiere su nombre, para realizar cualquier proceso de inicializacion que
sea necesario. Como vemos el primer parametro de init y del resto de metodos
de la clase es siempre self. Esta es una idea inspirada en Modula-3 y sirve para
referirse al objeto actual. Este mecanismo es necesario para poder acceder a
los atributos y metodos del objeto diferenciando, por ejemplo, una variable
local mi var de un atributo del objeto self.mi var. Si volvemos al metodo init
de nuestra clase Coche veremos como se utiliza self para asignar al atributo
gasolina del objeto (self.gasolina) el valor que el programador especifico para
el parametro gasolina. El parametro gasolina se destruye al final de la funcion,
mientras que el atributo gasolina se conserva (y puede ser accedido) mientras
el objeto viva. Para crear un objeto se escribira el nombre de la clase seguido
de cualquier parametro que sea necesario entre parentesis. Estos parametros
son los que se pasaran al metodo init, que como decamos es el metodo que
se llama al instanciar la clase. Para crear un objeto se escribira el nombre
de la clase seguido de cualquier parametro que sea necesario entre parentesis.
Estos parametros son los que se pasaran al metodo init, que como decamos
es el metodo que se llama al instanciar la clase.
1 mi _ coche = Coche (3)
Ahora que ya hemos creado nuestro objeto, podemos acceder a sus atributos
y metodos mediante la sintaxis objeto.atributo y objeto.metodo():
1 >>> print mi _ coche . gasolina
CAPITULO 4. PHYTHON 47
2 3
3 >>> mi _ coche . arrancar ()
4 Arranca
5 >>> mi _ coche . conducir ()
6 Quedan 2 litros
7 >>> mi _ coche . conducir ()
8 Quedan 1 litros
9 >>> mi _ coche . conducir ()
10 Quedan 0 litros
11 >>> mi _ coche . conducir ()
12 No se mueve
13 >>> mi _ coche . arrancar ()
14 No arranca
15 >>> print mi _ coche . gasolina
16 0
Como ultimo apunte recordar que en Python, como ya se comento en re-
petidas ocasiones anteriormente, todo son objetos. Las cadenas, por ejem-
plo, tienen metodos como upper(), que devuelve el texto en mayusculas o
count(sub), que devuelve el numero de veces que se encontro la cadena sub
en el texto.
4.9. Modulos y paquetes
4.9.1. Modulos
Para facilitar el mantenimiento y la lectura los programas demasiado
largos pueden dividirse en modulos, agrupando elementos relacionados. Los
modulos son entidades que permiten una organizacion y division logica de
nuestro codigo. Vamos a crear nuestro primer modulo entonces creando un
pequeno archivo modulo.py con el siguiente contenido:
1 def mi _ funcion () :
2 print una funcion
3 class MiClase :
4 def __ init __( self ) :
5 print una clase
6 print un modulo
CAPITULO 4. PHYTHON 48
Si quisieramos utilizar la funcionalidad definida en este modulo en nuestro
programa tendramos que importarlo. Para importar un modulo se utiliza
la palabra clave import seguida del nombre del modulo, que consiste en el
nombre del archivo menos la extension. Como ejemplo, creemos un archi-
vo programa.py en el mismo directorio en el que guardamos el archivo del
modulo (esto es importante, porque si no se encuentra en el mismo directorio
Python no podra encontrarlo), con el siguiente contenido:
1 import modulo
modulo . mi _ funcion ()
El import no solo hace que tengamos disponible todo lo definido dentro del
modulo, sino que tambien ejecuta el codigo del modulo. Por esta razon nues-
tro programa, ademas de imprimir el texto una funcion al llamar a mi
funcion, tambien imprimira el texto un modulo, debido al print del modulo
importado. No se imprimira, no obstante, el texto una clase, ya que lo que
se hizo en el modulo fue tan solo definir de la clase, no instanciarla.
4.9.2. Paquetes
Si los modulos sirven para organizar el codigo, los paquetes sirven para
organizar los modulos. Los paquetes son tipos especiales de modulos (ambos
son de tipo module) que permiten agrupar modulos relacionados. Mientras
los modulos se corresponden a nivel fsico con los archivos, los paquetes se
representan mediante directorios. Para hacer que Python trate a un directorio
como un paquete es necesario crear un archivo init.py en dicha carpeta. Como
los modulos, para importar paquetes tambien se utiliza import y from-import
y el caracter . para separar paquetes, subpaquetes y modulos.
1 import paq . subpaq . modulo
2 paq . subpaq . modulo . func ()
Captulo 5
Anexos
5.1. Ejemplos Practicos de LATEX
En este capitulo veremos varios ejemplos de documentos de LATEX que
seran utiles como plantillas para proyectos posteriores,el reciclado de codigo
es una parte importante del aprendizaje de LATEX, esta nos ahorra tiempo
de escribir el preambulo,hacer la portada,acordarse de como se utiliza un
paquete, etc.
1 \ documentclass [12 pt , letterpaper , sigleft ]\\\\ \
usepackage { newlfm }
2 %el paquete newlfm es para cartas , facsimiles y
memoradums
3 \ usepackage { blindtext , xfrac }
4 %el paquete blindtext provee un texto de prueba en la
etiqueta \ blindtext
5 %el paquete xfrac permite el comando \ sfrac {1}{2} para
escribir 1/2 en un solo caracter
6 \ usepackage [ T 1]{ fontenc }
7 \ usepackage [ utf 8]{ inputenc }
8 \ usepackage [ spanish ]{ babel }
9 \ usepackage { verbatim } %el ambiente verbatim imprime tal
cual se escribe respetando los espacios o
tabulaciones
10 \ usepackage { graphicx } %se debe compilar con pdflatex
11 \ usepackage { ae } %mejora la tipografia ae -> " almost
european " casi europeo
49
CAPITULO 5. ANEXOS 50
12
13 \ newlfmP { dateskipbefore =50 pt }
14 \ newlfmP { sigsize =50 pt }
15 \ newlfmP { sigskipbefore =50 pt }
16 \ newlfmP { Headlinewd =0 pt , Footlinewd =0 pt }
17
18 \ namefrom { Fis . Daniel Rios }
19 \ addrfrom { %
20 221 B Baker Street \\
21 London , UK
22 }
23
24 \ addrto { %
25 Basil of Baker Street \\
26 221&$\ sfrac {1}{2}$ Baker Street \\
27 London , UK
28 }
29 \ dateset { February 20 , 2017}
30
31 \ greetto { Comite seleccionador Estudiantes Becarios }
32
33 \ closeline { Saludos cordiales }
34
35 \ begin { document }
36 \ begin { newlfm }
37 Por este conducto solicito la participacion en el
programa de verano de investigacion de universidad
autonoma de Madrid .
38 \ end { newlfm }
39 \ end { document }
1 \ documentclass [12 pt , letterpaper , oneside ]{ article }
2 \ usepackage [ utf 8]{ inputenc }
3 \ usepackage [ T 1]{ fontenc }
4 \ usepackage [ spanish ]{ babel }
5 \ usepackage { amsmath } %Cuando se carga este paquete
tambien se cagtan los paquetes amsbsy , amsop y
amstext que son para simbolos en negritas nombres de
operadores text embebido en ecuaciones matematicas
CAPITULO 5. ANEXOS 51
6 \ usepackage { amsfonts } %Un conjunto extendido de fuentes y
simbolos matematicos
7 \ usepackage { amssymb } %Con este paquete se puede definir
en masa ( en lugar de selectivamente ) nombres de
comandos para todos los simbolos y fuentes ( fonts )
msam msbm .
8 \ usepackage { makeidx }
9 \ usepackage { graphicx }
10 %\ usepackage { mhchem } % para escribir formulas quimicas
11 \ newcommand {\ vect }[1]{\ boldsymbol {#1}} %El macro vect
llama bolsymbol
12 \ author { Josue Gonzalez }
13 \ title { Ecuaciones con \ LaTeX }
14 \ date {}
15 \ begin { document }
16 \ maketitle
17 %\ section { Ambiente de Ecuacion }
18 Ambiente de ecuacion sin enumerar \\\ \\\
19 \ begin { minipage }{\ linewidth }
20 \ centering
21 \ begin { minipage }{0.3\ textwidth }
22 \ begin { verbatim }
23 \ begin { equation *}
24 y ( x _{1}=4+ x { i }^{2}
25 \ end { equation *}
26 \ end { verbatim }
27 \ end { minipage }
28 \ hspace {0.05\ linewidth }
29 \ begin { minipage }{0.3\ textwidth }
30 \ begin { equation *}
31 y ( x _{1}) =4+ x _{ i }^{2}
32 \ end { equation *}
33 \ end { minipage }
34 \ end { minipage }
35 \\\ \\\\ \\\
36 Ambiente de ecuacion numerada \ eqref { eq : ecu 1} , \ verb |\
eqref { eq : ecu 1}| \\\ \\\
37 \ begin { minipage }{0.3\ linewidth }
38 \ centering
39 \ begin { minipage }{0.3\ textwidth }
CAPITULO 5. ANEXOS 52
40 \ begin { verbatim }
41 \ begin { equation }
42 y ( x _{1}=4+ x { i }^{2}
43 \ label { eq :1}
44 \ end { equation }
45 \ end { verbatim }
46 \ end { minipage }
47 \ hspace {0.05\ linewidth }
48 \ begin { minipage }{0.3\ textwidth }
49 \ begin { equation }\ label { eq :1}
50 y ( x _{1}) =4+ x _{ i }^{2}
51 \ end { equation }
52 \ end { minipage }
53 \ end { minipage }
54 \\
55
56 %\ section { Forumlas Quimicas }
57 \ LaTeX \ \ pone las ecuaciones en cursivas , por
ejemplo el Peroxido de Hidrogeno ( o
58 \ textit { Agua oxigenada }) $ H _{2}0_2$ se deberia
escribir como $\ mathrm { H _{2}0_2}$.\\
59
60 La reaccion quimica del metano con oxigeno
producira dioxido de carbono mas agua
61
62 $$
63 \ mathrm {
64 CH _{4} + O _{2} \ longrightarrow
CO _{2}+ H _{2} O
65 }
66 $$
67 El radioisotopo $^{40}\ mathrm { K }$ posee un periodo de
se mi de si nt eg ra ci on de $1.248\ times 10^{9}$ a~
n os . En
animales y personas , el $^{40}\ mathrm { K }$ representa
la principal fuente de radiacion presente en los
organismos , por delante del $_{6}^{14}\ mathrm { C }$.
68 %Una manera mejor de representar reacciones quimicas es
uando el paquete \ verb | mhchem | en el preambulo poner
\ verb |\ usepackage [ mhchem ]|. Ahora es mas facil en el
radical sulfato $\ ce { SO 4^{2 -}}$ se escribe como \ verb
CAPITULO 5. ANEXOS 53
|\ ce { SO 4^{2 -}| , el isotopo 227 del Thorio $\ ce
{^{227}_{90} Th +}$
69
70 %\ section { Espaciado de Ecuaciones }
71 Los espacios en las ecuaciones se escriben con \ verb |\| ,
los espacios negativos con \ verb |\!|
72 \ \\\
73 \ begin { minipage }{0.3\ linewidth }
74 \ centering
75 \ begin { minipage }{0.3\ textwidth }
76 \ begin { verbatim }
77 \ begin { equation *}
78 x y.x \ y,x \!\! y
79 \ end { equation }
80 \ end { verbatim }
81 \ end { minipage }
82 \ hspace {0.05\ linewidth }
83 \ end { minipage }
84 %\ \\\
85 Una integral indefinida se debera escribir vectores
pueden ser con raya arriba $\ overline { r }$ , con raya
abajo $\ underline { r }$ , con flecha de arriba $\ vec {1}$
o con flecha grande arriba $\ overrightarrow { ab }$.
Las dadas ( tensores ) se escriben con doble flecha $\
ov er le ft ri gh ta rr ow { T }$.
86
87 Para el producto punto vectorial se puede usar los
simbolos $\ cdot $ y $\ times $ , el tiple producto
escalar $\ vec { a }\ cdot (\ vec { b }\ times \ vec { c }) $.
88
89 Tambien los vectores suelen escribirse en las letras
negritas $\ boldsymbol { r }$ y $$ r =|\ boldsymbol { r }|=\
sqrt { x ^2+ y ^2+ x ^2}$$. Podemos crear un comando (
algunas veces llamado macro ) en el preambulo \ verb |\
newcommand {\ vect }[1]{\ boldsymbol {#1}}| , y asi
facilmente escribir $$ r =| vect { r }|$$.
90
91 %\ section { Matrices }
92 Las matrices son similares a las TABLAS , se usa el
caracter \ verb |&| para pasar al elemento siguiente en
CAPITULO 5. ANEXOS 54
el mismo renglon y \ verb |\\| para la siguiente linea
, en la ecuacion \ eqref { eq : ecu 2}
93
94 \ begin { equation }
95 \ begin { array }{ cc }
96 a & b \\
97 c&d
98 \ end { array }
99 \ label { eq : ecu 2}
100 \ end { equation }
101 La matriz identidad de $ m \ times n $ \ eqref { eq : ecu 3}
102
103 \ begin { equation }
104 \ label { eq : ecu 3}
105 \ left (
106 \ begin { array }{ cccc }
107 1_{11}&0_{12}&\ cdots &0_{1 m }\\
108 0_{21}&0_{22}&\ cdots &0_{2 m }\\
109 \ vdots &\ vdots &\ vdots &\ vdots \\
110 0_{ n 1}&0_{ n 2}&\ cdots &1_{ nm }
111 \ end { array }
112 \ right )
113 \ end { equation }
114
115 %\ section { Funciones a trozos }
116 Las funciones definidas a trozos en ingles (\ textit {
piecewice function }) se espresan con una notacion
funcional comun , donde el cuepro de la funcion es una
lista de expresiones matematicas asociadas a
subconjuntos del dominio .
117 Por ejemplo , la funcion \ textbf { valor absoluto } $\ mathrm
{ abs }() :\ \ mathbb { R }
118 \ rightarrow \ mathbb { R }$ , puede definirse as
119 %\ begin { equation }
120 | x |=\ mathrm { abs }( x ) =
121 \ left \ lbrace
122 \ begin { array }{ lll }
123 \ textup { si }& x < 0& - x \\
124 \ textup { si }& x \ geq 0& x
125 \ end { array }
CAPITULO 5. ANEXOS 55
126 \ right .
127 %\ end { equation }
128
129 En este caso , el dominio fue dividido en los conjuntos
130 %\ begin { equation *}
131 D _{1}) =\{ x \ in \ mathbb { R }:\ x <0 \} , \ quad D
_{2}=\{ x \ in \ mathbb { R }:\ x \ geq 0 \}
132 %\ end { equation *}
133
134 que son conjuntos disjuntos y cumplen
135 \[
136 D _{1} \ cup D _{2} = \ mathbb { R }
137 \]
138
139 %\ section { Procedimientos Algebraicos }
140 Supongamos por un momento que deseamos dearrollar un
binomio al cuadrado y queremos ir se~ n alando los pasos
algebraicos , ademas que las ecuaciones queden
alineadas , por ejemplo
141 %\ begin { eqnarray *}
142 x & = & ( a + b ) ^{2}\\
143 & = & ( a + b ) ( a + b ) \\
144 & = & a ^{2} + 2 ab + b ^{2}
145 %\ end { eqnarray *}
146 %\ end { document }
1 \ documentclass [12 pt , letterpaper , oneside ]{ article }
2 \ usepackage [ utf 8]{ inputenc }
3 \ usepackage [ spanish , es - tabla ]{ babel } %para que diga
Tabla en lugar de cuadro en el pie de la figura
4 \ usepackage { amsmath }
5 \ usepackage { amsfonts }
6 \ usepackage { amssymb }
7 \ usepackage { makeidx }
8 \ usepackage { graphicx }
9 \ usepackage [ left =2 cm , right =2 cm , top =2 cm , bottom =2 cm ]{
geometry }
10 \ usepackage { float } %[ H ] quiero mi grafica aqui
11 \ usepackage { mathptmx } %Usa times como fuente de texto por
CAPITULO 5. ANEXOS 56
defaul , y provee soporte matematico
12 \ usepackage [ tiny ]{ titlesec }
13 \ usepackage [ T 1]{ fontenc }
14 \ titleformat *{\ section }{\ normalsize \ bfseries }
15 \ titleformat *{\ subsection }{\ normailsize \ bfseries }
16 \ usepackage { anysize }
17 %\ marginsize {1.9 cm }{1.9 cm }{2.54}{2.54} %Controla los
margenes { izquierda }{ derecha }{ arriba }{ abajo }
18
19 \ title {\ normalsize \ bfseries DESARROLO DE UN MODELO PARA
MUTACIONES DE VIRUS MEDIANTE EL CALCULO DE LIMITES DE
ENTROPIAS }
20
21 \ usepackage { authblk } %Ayuda a establecer diferente
institucion de los autores [1] , [2]
22 \ author [1]{\ small \ em Nombre Apellido ( s ) A }
23 \ author [2]{\ small \ em Nombre Apellido ( s ) B }
24 %diferentes instituciones [1] y [2]
25
26 \ affil [1]{\ small Departamento de Fisica , CUCEI ,
Universidad de guadlajara , Av . Revolucion 1500 , GDL ,
Jal . , 44330 , Mexico . A . A@university . edu }
27 \ affil [2]{\ small Departamento de Quimica , CUCEI ,
Universidad de guadlajara , Av . Revolucion 1500 , GDL ,
Jal . , 44330 , Mexico . A . A@university . edu }
28
29 \ renewcommand \ Authands { y } %pone " Y " entre autores
30 \ date {}
31
32 \ begin { document }
33 \ maketitle
34
35 %\ section *{ Resumen }
36 Describa en un parrafo de 250 palabras maximo , el
resumen de la contribucion . \ \ \\
37 Las entropias de calculan en base a ....
38
39 %\ section *{ Introduccion }
40 Texto de introduccion sobre el tema principal de la
contribucion . Utilice corchetes numerados para
CAPITULO 5. ANEXOS 57
indicar las citas , ver ejemplo siguiente \ cite { uno ,
dos , sha } o el suiguiente \ cite { tres }
41
42 $$ \ gamma =\ frac {1}{\ sqrt {1 - \ frac { v ^2}{ c ^2}}} $$
43 \ \ \\
44 %\ section *{ Metodologia }
45 Describa el material , procedimientos , herramientas y
equipos utilizados en el trabajo .
46 \ \ \\
47 %\ section *{ Resultados }
48 Presente en esta seccion resultados , puede utilizar
imagenes , frumulas , tablas , etc .\\
49 %\ begin { figure }[ H ]
50 %\ centering
51 %\ includegraphics [ width =0.5\ linewidth ]{ grafico }
52 %\ caption { Descripcion de la figura }
53 %\ label { fig : grafico }
54 %\ end { figure }
55 En la tabla siguiente \\
56 \ begin { table }[ H ]
57 \ centering
58 \ begin { tabular }{| c || c || c |}
59 \ hline A & B & C \\
60 \ hline 340 & 31 & 78 \\
61 \ hline 67 & 53 & 81 \\
62 \ hline 1 & 4 & 503 \\
63 \ hline
64 \ end { tabular }
65 \ caption { Tablas verdaderas y valores creibles .}
66 %\ label { tab : truthTables }
67 \ end { table }
68
69 Este trabajo se estructura de la siguiente manera :
70 \ begin { itemize }
71 \ item Primero se explica la forma en que se calcularon
las frecuencias de $ n $ - mers en los distintos genomas
...
72 \ item En la segunda parte se describen ....
73 \ end { itemize }
74 \ \ \\
CAPITULO 5. ANEXOS 58
75 %\ section *{ Conclusiones }
76 Presente en esta seccion sus conclusiones .
77 \ \ \\
78 %\ section *{ Apendices }
79 \ appendix
80 %\ section { Graficas y resultados }
81 \ \ \\
82
83 \ begin { thebibliography }{99}
84
85 \ bibitem { uno } C . Kittel \ emph { Elementary statistical
physics } , John Wiley \& Sons , pp 17 -25 , New York
(1958) .
86 \ bibitem { dos } M . Toda , R . Kubo , N . Saito \ emph { Elementary
statistical physics } , John Wiley \& Sons , pp 17 -25 ,
New York (1958) .
87 \ bibitem { sha } C . Cheche \ emph { Elementary statistical
physics } , John Wiley \& Sons , pp 17 -25 , New York
(1958) .
88 \ end { thebibliography }
89 \ end { document }
Este es un ejemplo de una portada, le podra ser util para comenzar cada
documento con una plantilla de portada ya hecha
1 \ documentclass [12 pt , openbib , oneside , letterpaper ]{ report }
2 \ usepackage [ utf 8]{ inputenc }
3 \ usepackage [ spanish ]{ babel }
4 \ usepackage { amsmath }
5 \ usepackage { amsfonts }
6 \ usepackage { amssymb }
7 \ usepackage { makeidx }
8 \ usepackage { graphicx }
9 \ usepackage [ left =2 cm , right =2 cm , top =2 cm , bottom =2 cm ]{
geometry }
10 \ usepackage [ colorlinks = true , linkcolor = blue , urlcolor =
violet ]{ hyperref }
11 \ usepackage { float }
12
13 \ setlength {\ textwidth }{15.5 cm }
CAPITULO 5. ANEXOS 59
14 \ setlength {\ textheight }{22.5 cm }
15 \ setlength {\ topmargin }{ -17 mm }
16
17 \ begin { document }
18 \ begin { titlepage }
19 \ begin { center }
20 \ textbf {\ huge Universidad de Guadalajara } \\
21 \ textbf {\ large Centro Universitario de Ciencias Exactas
e Ingeniera }\\
22 \ textbf {\ LARGE Division de Ciencias Basicas }\\
23 \ end { center }
24
25 \ begin { figure }[ H ]
26 \ begin { center }
27 \ includegraphics [ width =5 cm ]{ udg }
28 \ end { center }
29 \ end { figure }
30
31 \ begin { center }
32 {\ large T E S I S }\\
33 \ vspace *{0.15 in }
34 \ textbf {\ large DESARROLLO DE UN MODELO PARA MUTACIONES
DE VIRUS MEDIANTE EL CALCULO DE LIMITES DE ENTROPIAS
}\\
35 \ end { center }
36
37
38 \ begin { center }
39 \ vspace *{0.15 in }
40 \ textbf {?}
41 \ end { center }
42 \ end { titlepage } %Termina portada
43
44 %\ section *{ Agradecimientos }
45 \ begin { itemize }
46 \ item Para mi
47
48 \ end { itemize }
49
50 \ newpage
CAPITULO 5. ANEXOS 60
51 \ tableofcontents \ clearpage
52
53 %addcontentsline { toc }{ chapter }{ Introduccion }
54 %\ chapter *{ Introduccion }
55
56 \ end { document }
5.2. Ejemplos de Gnuplot
En esta seccion como ejercicio practico pedimos al lector que intente in-
sertar cada uno de los ejemplos siguientes para generar su respectiva grafica
5.2.1. Ejemplo 1
1 #00. gp
2 unset border
3 unset key
4 set xzeroaxis lt -1 lw 2
5 set yzeroaxis lt -1 lw 2
6 set xtics axis
7 set ytics axis
8 set xrange [ -5:5]
9 set yrange [ -5:5]
10 set title " TITULO "
5.2.2. Ejemplo 2
1 # uso de multiplot avanzado en estilos graficas
2 reset
3 set term pdfcairo size 20 cm ,20 cm
4 set output "1 - multiplot - avanzado . pdf "
5
6 set sample 3001
7 set multiplot title " Multiplot Avanzado 1"
8
CAPITULO 5. ANEXOS 61
9 set origin 0 ,1./2.
10 set size 1. ,.5 - 0.05
11 plot sin (7.* x ) * exp ( -0.2*( x -3.) **2.)
12
13 set origin 0 ,0
14 set size .5 ,.5
15 plot cos (6* x ) *4* exp ( -0.2* x ) lt 0 ,4* exp ( -0.2* x ) lt 6 , -4*
exp ( -0.2* x ) lc rgb "# c 0 c 0 c 0"
16
17 xmin = -1.1* pi
18 xmax =1.1* pi
19 ymin = -2.0
20 ymax =2.0
21 set xrange [ xmin : xmax ]
22 set yrange [ ymin : ymax ]
23 set origin .5 ,0
24 set size .5 ,.5
25 plot tan ( x ) * sin (19* x )
26 unset multiplot
27 unset output
5.2.3. Ejemplo 3
1 reset
2 set term pdfcairo size 20 cm ,20 cm
3 set output "2_ multiplot _ avanzado . pdf "
4
5 set samples 2001
6
7 set multiplot title " Picture in picture " font " Times ,28"
8 f ( x ) = sin (1./ x ) * x
9 # picture
10 set origin 0. ,0.
11 set size 1. ,0.98
12 plot [0.:1.] f ( x ) lw 2 lc rgb " red "
13
14 # Picture in picture
15 set origin .1 ,.7
CAPITULO 5. ANEXOS 62
16 set size .7 ,.2
17 plot [0.:.1][ -.1:.1] f ( x ) lw 1 lc rgb " blue "
18
19 set origin 0.5 ,0.2
20 set size 0.4 ,0.2
21 plot [0:0.01][ -0.02:0.02] f ( x ) lw 1 lc rgb " orange "
22 unset multiplot
23 unset output
5.2.4. Ejemplo 4
1 reset
2 set term wxt persist enhanced
3
4 set xrange [ -10:10]
5 set yrange [ -10:10]
6
7 R =5
8 y 1( x ) = sqrt ( R **2. - x **2.)
9 y 2( x ) = sqrt ( R **2. - x **2.)
10
11 set samples 1000
12 set size ratio 1
5.2.5. Ejemplo 5
1 reset # restablece todos los parametros a sus valores por
defecto
2 set terminal " wxt " persist enhanced
3 # set term png
4 # set output " circulo _ x . png "
5
6 unset border
7 unset key
8 # Para cruzar ejes en (0 ,0)
9 set xzeroaxis lt -1 lw 2 # lt line tipe lw line width
CAPITULO 5. ANEXOS 63
10 set yzeroaxis lt -1 lw 2
11 set xtics axis 2
12 set ytics axis 2
13
14 set grid
15 set xrange [ -10:10]
16 set yrange [ -10:10]
17
18 r =5
19 # centrado en (h , k )
20 h =1
21 k =2
22
23 set label " X " at 9 , -2
24 set label " Y " at -2 ,9
25 set label " Josue Gonzalez " at -10 , -7
26 set label " Rama positiva " at -10 ,7
27 set label " Rama negativa " at 3 , -4
28 discri ( x ) = r **2 - (x - h ) **2
29 y 1( x ) = k + sqrt ( discri ( x ) )
30 y 2( x ) = k - sqrt ( discri ( x ) )
31
32 set size ratio 1
33 set samples 2001
34 plot y 1( x ) lw 3 lc rgb "#2012 DD " , \
35 y 2( x ) lw 3 lc rgb "# ff 5555"
5.2.6. Ejemplo 6
1 reset
2 set term wxt persist enhanced
3
4 set xrange [ -10:10]
5 set yrange [ -10:10]
6
7 R =5
8 y 1( x ) = sqrt ( R **2 - x **2)
9 y 2( x ) = - sqrt ( R **2 - x **2)
CAPITULO 5. ANEXOS 64
10
11 set samples 1000
12 set size ratio 1
13
14 plot y 1( x ) linewidth 3 linecolor rgb "#0000 FF " , \
15 y 2( x ) lw 4 lc rgb "# FFFC 00"
5.2.7. Ejemplo 7
1 reset # restablece todos los parametros a sus valores por
defecto
2 set terminal " wxt " persist enhanced
3 # set term png
4 # set output " circulo _ x . png "
5
6 unset border
7 unset key
8 # Para cruzar ejes en (0 ,0)
9 set xzeroaxis lt -1 lw 2
10 set yzeroaxis lt -1 lw 2
11 set xtics axis 2
12 set ytics axis 2
13 set grid
14
15 set parametric
16 set xrange [ -10:10]
17 set yrange [ -10:10]
18
19 r =5
20 # centrado en (h , k )
21 h =1
22 k =2
23
24 set label " X " at 9 , -2
25 set label " Y " at -2 ,9
26 set label " Josue Gonzalez " at -10 , -7
27 set label " Rama positiva " at -10 ,7
28 set label " Rama negativa " at 3 , -4
CAPITULO 5. ANEXOS 65
29
30 x ( t ) = h + r * cos ( t )
31 y ( t ) = k + r * sin ( t )
32
33 set size ratio 1
34 set samples 1244
35 plot x ( t ) lw 3 lc rgb "#2012 DD " ,\
36 y ( t ) lw 3 lc rgb "#2012 DD "
5.2.8. Ejemplo 8
1 reset
2 set term wxt persist enhanced
3 unset border
4 unset key
5 unset xzeroaxis
6 unset yzeroaxis
7 unset xtics
8 unset ytics
9
10 set size ratio 0.2
11
12 f ( x ) = sqrt (1 -( abs ( x ) -1) **2)
13 g ( x ) = acos (1 - abs ( x ) ) - pi
14
15 set samples 10001
16
17 plot f ( x ) with filledcurves x 1=0 lt 1 ,\
18 g ( x ) with filledcurves x 1 =0 lc rgb "# ff 0000"
5.2.9. Ejemplo 9
1 set term wxt persist enhanced
2 set parametric
3
4 unset border
CAPITULO 5. ANEXOS 66
5 unset key
6 unset xzeroaxis
7 unset yzeroaxis
8 unset xtics
9 unset ytics
10
11 set size ratio 1
12 set trange [0:2* pi ]
13 fx ( t ) =12* sin ( t ) -4* sin (3* t )
14 fy ( t ) = 13* cos ( t ) -5* cos (2* t ) -2* cos (3* t ) - cos (4* t )
15
16 set samples 10001
17
18 set arrow 1 from 5 ,5 to 12.5 ,12.5 lw 3
19 set arrow 2 from -15 , -15 to -7.82 , -7.82 nohead lw 3
20 plot fx ( t ) , fy ( t ) lw 3
5.2.10. Ejemplo 10
1 reset
2 set term wxt persist enhanced
3 unset key
4 set xrange [ -10:10]
5 set yrange [ -10:10]
6
7 a =1
8 b =5.5
9
10 h =3
11 k =4
12
13 disc ( x ) =1 -(( x - h ) / a ) **2.
14 y 1( x ) = k + b * sqrt ( disc ( x ) )
15 y 2( x ) =k - b * sqrt ( disc ( x ) )
16
17 set samples 100001
18 set size ratio 1
19
CAPITULO 5. ANEXOS 67
20 plot y 1( x ) linewidth 3 linecolor rgb "#0000 FF " ,\
21 y 2( x ) lw 4 lc rgb "# FFFC 00"
5.2.11. Ejemplo 11
1 reset
2 set term wxt persist enhanced
3 unset key
4 set xrange [ -10:10]
5 set yrange [ -10:10]
6
7 a =7
8 b =5.5
9
10 disc ( x ) =1 -( x / a ) **2.
11 y 1( x ) = b * sqrt ( disc ( x ) )
12 y 2( x ) = -b * sqrt ( disc ( x ) )
13
14 set samples 100001
15 set size ratio 1
16
17 plot y 1( x ) linewidth 3 linecolor rgb "#0000 FF " ,\
18 y 2( x ) lw 4 lc rgb "# FFFC 00"
5.2.12. Ejemplo 12
1 reset
2 set terminal " wxt " persist
3
4 unset border
5 unset key
6
7 set xzeroaxis lt -1 lw 2
8 set yzeroaxis lt -1 lw 2
9 set xtics axis 2
10 set ytics axis 2
CAPITULO 5. ANEXOS 68
11 set grid
12
13 set parametric
14 set xrange [ -10:10]
15 set yrange [ -10:10]
16 set trange [0:2* pi ]
17
18 a =5
19 b =3
20
21 h =1
22 k =2
23
24 set label " X " at 9 , -2
25 set label " Y " at -2 ,9
26
27 x ( t ) = h + a * cos ( t )
28 y ( t ) = k + b * sin ( t )
29
30 set size ratio 1
31 set samples 2001
32 plot x ( t ) , y ( t ) lw 3 lc rgb "#2012 DD "
5.2.13. Ejemplo 13
1 reset
2 set terminal " x 11" persist enhanced
3
4 unset border
5 unset key
6 set xzeroaxis lt -1 lw 2
7 set yzeroaxis lt -1 lw 2
8 set xtics axis 2
9 set ytics axis 2
10 set grid
11 set parametric
12 set xrange [ -10:10]
13 set yrange [ -10:10]
CAPITULO 5. ANEXOS 69
14 set trange [0:2.* pi ]
15
16 a =5
17 b =3
18
19 h =1
20 k =2
21
22 set label " X " at 9 , -2
23 set label " Y " at -2 ,9
24 set label " Josue Gonzalez " at -10 , -7
25 # set label " Rama positiva " at -10 ,7
26 # set label " Rama negativa " at 3 , -4
27
28 phi =100. * pi /180
29 # Forma canonica parametrico
30 x ( t ) = h + a * cos ( t )
31 y ( t ) = k + b * sin ( t )
32 y 1( t ) = x ( t ) * cos ( phi ) -y ( t ) * sin ( phi )
33 y 2( t ) = x ( t ) * sin ( phi ) + y ( t ) * cos ( phi )
34
35 set size ratio 1
36 set samples 11001
37 plot y 1( t ) , y 2( t ) lw 3 lc rgb "#2012 DD "
5.2.14. Ejemplo 14
1 reset
2 set term " wxt " persist
3
4 set parametric
5 set urange [ - pi : pi ]
6 set vrange [ - pi /2: pi /2]
7
8 a =1.
9 b =2.
10 c =3.
11
CAPITULO 5. ANEXOS 70
12 x (u , v ) = a * cos ( u ) * cos ( v )
13 y (u , v ) = b * sin ( u ) * cos ( v )
14 z ( v ) = c * sin ( v )
15
16 set size ratio 1
17 set isosamples 50
18
19 splot x (u , v ) , y (u , v ) , z ( v )
5.2.15. Ejemplo 15
1 reset
2 set terminal " wxt " persist
3
4 unset border
5 unset key
6 set xzeroaxis lt -1 lw 2
7 set yzeroaxis lt -1 lw 2
8 set xtics axis 2
9 set ytics axis 2
10 set grid
11
12 set parametric
13 set xrange [ -1:1]
14 set yrange [ -1:1]
15
16 set trange [0:2* pi ]
17
18 d = pi /2
19 a =9
20 b =d - a
21
22 set label " X " at 9 , -2
23 set label " Y " at -2 ,9
24 set label " Figuras de Lissajous " at -10 ,7
25
26 x ( t ) = cos (5* t + a )
27 y ( t ) = sin (6* t + b )
CAPITULO 5. ANEXOS 71
28
29 set size ratio 1
30 set samples 2001
31 plot x ( t ) , y ( t ) lw 1 lc rgb "#2012 DD "
5.2.16. Ejemplo 16
1 reset
2 set term " wxt " persist
3
4 set parametric
5 set urange [ - pi : pi ]
6 set vrange [ -5:5]
7
8 a =1.
9 b =2.
10 c =3.
11
12 x (u , v ) = a * cos ( u ) * cosh ( v )
13 y (u , v ) = b * sin ( u ) * cosh ( v )
14 z ( v ) = c * sinh ( v )
15
16 set size ratio 1
17 set isosamples 50
18
19 splot x (u , v ) , y (u , v ) , z ( v )
5.2.17. Ejemplo 17
1 # rotacion 0. gp
2
3 set angles degree
4 # angulo de giro
5 theta =45
6
7 # condiciones iniciales
CAPITULO 5. ANEXOS 72
8 x 0=1
9 y 0=0
10
11 print x 0 , y 0
12 # xrot y yrot , son las nuevas coordenadas giradas
13 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
14 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
15 x 0= xrot
16 y 0= yrot
17
18 print x 0 , y 0
19
20 # xrot y yrot , son las nuevas coordenadas giradas
21 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
22 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
23 x 0= xrot
24 y 0= yrot
25
26 print x 0 , y 0
27
28 # xrot y yrot , son las nuevas coordenadas giradas
29 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
30 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
31 x 0= xrot
32 y 0= yrot
33
34 print x 0 , y 0
35
36 # xrot y yrot , son las nuevas coordenadas giradas
37 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
38 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
39 x 0= xrot
40 y 0= yrot
41
42 print x 0 , y 0
43
44 # xrot y yrot , son las nuevas coordenadas giradas
45 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
46 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
47 x 0= xrot
CAPITULO 5. ANEXOS 73
48 y 0= yrot
49
50 print x 0 , y 0
51
52 # xrot y yrot , son las nuevas coordenadas giradas
53 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
54 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
55 x 0= xrot
56 y 0= yrot
57
58 print x 0 , y 0
59
60 # xrot y yrot , son las nuevas coordenadas giradas
61 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
62 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
63 x 0= xrot
64 y 0= yrot
65
66 print x 0 , y 0
67
68 # xrot y yrot , son las nuevas coordenadas giradas
69 xrot = x 0* cos ( theta ) -y 0* sin ( theta )
70 yrot = x 0* sin ( theta ) + y 0* cos ( theta )
71 x 0= xrot
72 y 0= yrot
73
74 print x 0 , y 0
5.2.18. Ejemplo 18
1 # rotacion 0. gp
2
3 set angles degree
4 # angulo de giro
5 theta =45
6
7 # condiciones iniciales
8 x 0=1
CAPITULO 5. ANEXOS 74
9 y 0=0
10
11 print x 0 , y 0
12
13 load " matrix . sub "
14 # xrot y yrot , son las nuevas coordenadas giradas
15
16 x 0= xrot
17 y 0= yrot
18
19 print x 0 , y 0
20
21 load " matrix . sub "
22 # xrot y yrot , son las nuevas coordenadas giradas
23
24 x 0= xrot
25 y 0= yrot
26
27 print x 0 , y 0
28
29 load " matrix . sub "
30 # xrot y yrot , son las nuevas coordenadas giradas
31
32 x 0= xrot
33 y 0= yrot
34
35 print x 0 , y 0
36
37 load " matrix . sub "
38 # xrot y yrot , son las nuevas coordenadas giradas
39
40 x 0= xrot
41 y 0= yrot
42
43 print x 0 , y 0
44
45 load " matrix . sub "
46 # xrot y yrot , son las nuevas coordenadas giradas
47
48 x 0= xrot
CAPITULO 5. ANEXOS 75
49 y 0= yrot
50
51 print x 0 , y 0
52
53 load " matrix . sub "
54 # xrot y yrot , son las nuevas coordenadas giradas
55
56 x 0= xrot
57 y 0= yrot
58
59 print x 0 , y 0
60
61 load " matrix . sub "
62 # xrot y yrot , son las nuevas coordenadas giradas
63
64 x 0= xrot
65 y 0= yrot
66
67 print x 0 , y 0
68
69 load " matrix . sub "
70 # xrot y yrot , son las nuevas coordenadas giradas
71
72 x 0= xrot
73 y 0= yrot
74
75 print x 0 , y 0
5.2.19. Ejemplo 19
1 # rotacion 1. gp
2 set angles degree
3 # numero de particiones del circulo
4 N =10
5 # angulo de giro
6 theta =360/ N
7 # condiciones iniciales
8 x 0=1.
CAPITULO 5. ANEXOS 76
9 y 0=0.
10 # imprimimos condicones iniciales
11 print "0" , x 0 , y 0
12 # ciclo for para el calculo automatico
13 do for [ I =1: N ]{
14 load " matrix . sub "
15 x 0= xrot
16 y 0= yrot
17 print I , x 0 , y 0
18 }
19 print " Hola , es todo , " ,N ," puntos rotados amo . Tienes
algun otro deseo que satisfacer ?"
5.2.20. Ejemplo 20
1 # rotacio 2. gp
2 set term gif animate size 600 ,600 loop 0
3 set output " rotacion 2. gif "
4 set size ratio 1
5 xmin = -2.0
6 xmax =2.0
7 ymin = -2.0
8 ymax =2.0
9 TITULO =" Rotando un circulo \ n usando una matriz de
rotacion "
10 load "00. gp "
11 set angles degree
12 # Numero de particiones del circulo
13 N =61.
14 # angulo de giro
15 theta =360/ N
16 # Condiciones iniciales
17 x 0=1
18 y 0=0
19 # Ciclo for para el calculo automatico
20 do for [ I =1: N ]{
21 set object circle at x 0 , y 0 size 0.01
CAPITULO 5. ANEXOS 77
22 set arrow from 0 ,0 to x 0 , y 0 head size 0.07 , 20
lt rgb " green "
23 load " matrix . sub "
24 x 0= xrot
25 y 0= yrot
26 plot 1000
27 }
28 unset output
5.2.21. Ejemplo 21
1 # uso de multiplot y funciones trignometricas
2 reset
3 set encoding utf 8 # Permite acentos en titulos
4
5 set term pdfcairo enhanced size 9 cm ,9 cm font " times , 12"
6 set output " ciclo _ seno . pdf "
7
8 set arrow from screen 0.3 , screen 0.8 to screen 0.7 ,
screen 0.8 lw 2 front
9 set arrow from screen 0.9 , screen 0.6 to screen 0.9 ,
screen 0.3 lw 2 front
10 set arrow from screen 0.7 , screen 0.1 to screen 0.3 ,
screen 0.1 lw 2 front
11 set arrow from screen 0.1 , screen 0.3 to screen 0.1 ,
screen 0.6 lw 2 front
12
13 set multiplot layout 2 ,2 title " Ciclo derivada funcion
seno " font " Times , 18"
14
15 unset border
16 unset key
17 set xzeroaxis lt -1 lw 2
18 set yzeroaxis lt -1 lw 2
19 set xtics ("{/ Symbol -p }" -pi ,"{/ Symbol -p /2}" - pi /2 ,""
0 , "{/ Symbol p /2}" pi /2 , "{/ Symbol p }" pi ) axis font
" Times , 10"
CAPITULO 5. ANEXOS 78
20 # La linea de arriba coloca los tics en lugares
personalizados en -pi , - pi /2 ,
21 # quitamos el cero , en pi /2 y en pi
22 set label "0" at -.3 , -.1 # coloca el origen en un lugar
mas adecuado
23 set ytics (" -1" -1 ," -1/2" -.5 ,""0 , "1/2" .5 , "1"1) axis
font " Times , 10"
24 set tics scale 0.3
25 set grid
26
27 xmin = - pi
28 xmax = pi
29 ymin = -1.2
30 ymax =1.2
31 set xrange [ xmin : xmax ]
32 set yrange [ ymin : ymax ]
33 set title "{ f ^{( iv ) }= f ( x ) = sen ( x ) }"
34 plot sin ( x )
35
36 xmin = - pi
37 xmax = pi
38 ymin = -1.2
39 ymax =1.2
40 set xrange [ xmin : xmax ]
41 set yrange [ ymin : ymax ]
42 set title "{ f ( x ) = cos ( x ) }"
43 plot cos ( x )
44
45 xmin = - pi
46 xmax = pi
47 ymin = -1.2
48 ymax =1.2
49 set xrange [ xmin : xmax ]
50 set yrange [ ymin : ymax ]
51 set title "{ f ( x ) = - cos ( x ) }"
52 plot - cos ( x )
53
54 xmin = - pi
55 xmax = pi
56 ymin = -1.2
CAPITULO 5. ANEXOS 79
57 ymax =1.2
58 set xrange [ xmin : xmax ]
59 set yrange [ ymin : ymax ]
60 set title "{ f ( x ) = sen ( x ) }"
61 plot - sin ( x )
62 unset multiplot
63 unset output
5.2.22. Ejemplo 22
1 # uso _ multiplot . gp
2 # uso de multiplot y funciones trigonometricas
3 reset
4 set term pngcairo enhanced size 800 ,800
5 set output " trigonometricas . png "
6
7 set encoding utf 8 # Permite acentos en titulos
8 set multiplot layout 2 ,3 title " Funciones Trignometricas
"\
9 font " Times , 18"
10 unset border
11 unset key
12 set xzeroaxis lt -1 lw 1
13 set yzeroaxis lt -1 lw 1
14 set xtics axis font " Times ,6"
15 set ytics axis font " Times ,6"
16 set tics scale 0.3
17
18 xmin = -2.2* pi
19 xmax =2.2* pi
20 ymin = -1.5
21 ymax =1.5
22 set xrange [ xmin : xmax ]
23 set yrange [ ymin : ymax ]
24 set title " Seno y = sen ( X ) " font " Times , 12"
25 plot sin ( x ) lw 2 lc rgb "# ff 0000"
26
27 set xrange [ xmin : xmax ]
CAPITULO 5. ANEXOS 80
28 set yrange [ ymin : ymax ]
29 set title " Coseno y = cos ( x ) " font " Times , 12"
30 plot cos ( x ) lw 2 lc rgb "#999900"
31
32 xmin = -1.1* pi
33 xmax =1.1* pi
34 ymin = -2.0
35 ymax =2.0
36 set xrange [ xmin : xmax ]
37 set yrange [ ymin : ymax ]
38 set title " Tangente y = tan ( x ) " font " Times , 12"
39 plot tan ( x ) lw 2 lc rgb "#005 ACC "
40
41 xmin = -1.1
42 xmax =1.1
43 ymin = - pi
44 ymax = pi
45 set xrange [ xmin : xmax ]
46 set yrange [ ymin : ymax ]
47 set title " Arcoseno y = arcsen ( x ) " font " Times ,12"
48 plot asin ( x ) lw 2 lc rgb "#1111 ff "
49
50 set xrange [ xmin : xmax ]
51 set yrange [ ymin : ymax ]
52 set title " Arcocoseno y = arccos ( x ) " font " Times ,12"
53 plot acos ( x ) lw 2 lc rgb "#101000"
54
55 set xrange [ xmin : xmax ]
56 set yrange [ ymin : ymax ]
57 set title " Arcotangente y = arctan ( x ) " font " Times ,12"
58 plot atan ( x ) lw 2 lc rgb "#606060"
59 unset multiplot
60 unset output
5.3. Calcular con octave
1 # obtener el numero pi
CAPITULO 5. ANEXOS 81
2 clc
3 clear
4 # formula de gregory - Leibniz calcular pi
5 #$ \ pi =4\ sum _{ i =0}^{ n }\ fracc {( -1) ^ i }
6 #{2 i +1}=4\ left ( 1 - \ fracc {1}{9} - \ cdots \ right ) $
7
8 tic
9 format long
10 # aumentar de orden para aumentar de precision
11 nstep =10000
12 pii =0; # valor inical de PPI
13 alternador = -1;
14 for ii =0: nstep
15 sumatoria =( alternador ^ ii ) /(2* ii +1) ;
16 pii = pii + sumatoria ;
17 endfor
18 pii =4* pii
19 pi
20 abs ( pi - pii )
21 toc }
1 # obtener el numero pi
2 clc
3 clear
4 %calcular pi usando la serie Nilakantha
5
6 %\ pi =3+4\ sum { i =1}^{\ infty } \ fracc {{ -1}^{\ left ( i +1\ right )
}}
7 % %{{\ left (2 i \ right ) }{\ left (2 i +1\ right ) }{\ left (2 i +2\ right
) }}
8 %
9 %$ \ pi =3+\ fracc {4}{2\ times 3 \ times 4} - \ fracc {4}{4\
times 5 \ times 6}+\ fracc {4}{6\ times 7\ times 8}
10 % -\ fracc {4}{8\ times 9\ times 10}+ \ dots $
11 %
12 %que converge mas rapido que el metodo de la serie de
gregory - leinbiz
13
14 tic
CAPITULO 5. ANEXOS 82
15 format long
16 # aumentar de orden para aumentar de precision
17 nsteps =100
18 mipi =3;
19 alternador = -1;
20
21 for ii =1: nsteps
22 iii =2* ii ;
23 sumatoria =4.0*( alternador ^( ii +1) ) /(( iii ) *( iii +1) *(
iii +2) ) ;
24 mipi = mipi + sumatoria ;
25 endfor
26 mipi
27 pi
28 100* abs ( pi - mipi ) / pi
Bibliografa
[1] Mata Perez,M., Bibliografa en LATEX:Una gua concisa de BibTEX,
Mexico, Nuevo leon, 2014.
[2] Valiente Cifuentes,J.M., Manual de iniciacion a GNU Octave , Es-
pana, Teruel, 2006.
[3] Gonzales Duque,R., Python para todos , Espana.
[4] Grossman,S.I,Flores Godoy,J.J, Algebra lineal,Mc Graw Hill,
Mexico, 2012.
[5] Desconocido, Breve introduccion a gnuplot,Universidad de sevilla, Es-
pana.
83