Sie sind auf Seite 1von 84

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

Das könnte Ihnen auch gefallen