SlideShare una empresa de Scribd logo
1 de 83
Descargar para leer sin conexión
libro abierto / serie manuales             Pablo M. Garc´ Corzo
                                                          ıa




                                   Proyecto Physthones
Simulaciones F´
              ısicas en Visual Python              ¬¬¬¬ 0.1




    Un libro libre de Alqua
physthones




                                                          531(07)

                                                                    ALQ
             Proyecto Physthones




                         † lomo para ediciones impresas
Dedicado
A todos los que se molestan en utilizar tizas de colores porque ayudan a ense˜ar
                                                                             n
http://alqua.org/documents/physthones




 Pablo M. Garc´ Corzo
              ıa        ozrocpablo@gmail.com   http://alqua.org




         Proyecto Physthones
                        versi´n 0.1
                             o
                   17 de octubre de 2008




alqua,madeincommunity
c
                                           copyleft
  Copyright (c) 2008 Pablo M. Garc´ Corzo.
                                  ıa
  Esta obra est´ bajo una licencia Reconocimiento - NoComercial - CompartirIgual 2.5 de Creative Com-
               a
  mons. Para ver una copia de esta licencia visite http://creativecommons.org/licenses/by-nc-sa/2.5/es o
  escriba una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, Califorina 94105,
  USA.
  This work is licensend under the Creative Commons Reconocimiento - NoComercial - CompartirIgual
  2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or
  send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, Califorina 94105, USA.




Serie manuales

Area f´
´     ısica computacional

CDU 531(07)



Editores
 Pablo M. Garc´ Corzo
              ıa            ozrocpablo@gmail.com




                                       Notas de producci´n
                                                        o

                                                      ´
            Plantilla latex-book-es-b.tex, v. 0.1 (C) Alvaro Tejero Cantero.
                                   compuesto con software libre
´
Indice general

Portada                                                                                                                              I


Copyleft                                                                                                                            VI

´
Indice general                                                                                                                     VII


1. Objetivos y capacidades (A modo de pr´logo)o                                                                                     1
   1.1. Primeros pasos en la f´
                              ısica computacional          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    1
   1.2. ¿Por qu´ Python? . . . . . . . . . . . . .
                e                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
   1.3. Visual Python . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    2
        1.3.1. Instalaci´n del sistema . . . . . . .
                        o                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    3

2. Toma de contacto: Python y Visual-Python                                                                                         5
   2.1. Python e IDLE . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
   2.2. Visual . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
        2.2.1. Operando con vectores . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
        2.2.2. Listas y diccionarios . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
        2.2.3. L´gica . . . . . . . . . . . . . . .
                o                                      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
        2.2.4. Bucles . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
        2.2.5. Rebota Mundo . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8

3. Modelos diferenciales                                                                                                           11
   3.1. Tiro parab´lico . . . . . . . . . . . . . . . . . . . . . . . . .
                    o                                                                              .   .   .   .   .   .   .   .   11
        3.1.1. F´ısica del tiro parab´lico . . . . . . . . . . . . . . .
                                     o                                                             .   .   .   .   .   .   .   .   11
        3.1.2. Construcci´n de una escena . . . . . . . . . . . . . .
                            o                                                                      .   .   .   .   .   .   .   .   12
        3.1.3. Animaci´n . . . . . . . . . . . . . . . . . . . . . . .
                        o                                                                          .   .   .   .   .   .   .   .   13
        3.1.4. Visualizaci´n de las fuerzas de Coriolis . . . . . . . .
                            o                                                                      .   .   .   .   .   .   .   .   16
   3.2. El p´ndulo simple y la aproximaci´n para ´ngulos peque˜os
             e                              o        a               n                             .   .   .   .   .   .   .   .   19
        3.2.1. La gracia del p´ndulo . . . . . . . . . . . . . . . . .
                                e                                                                  .   .   .   .   .   .   .   .   19
        3.2.2. El oscilador arm´nico . . . . . . . . . . . . . . . . .
                                  o                                                                .   .   .   .   .   .   .   .   19
        3.2.3. ¿Es el p´ndulo un oscilador arm´nico? . . . . . . . .
                        e                         o                                                .   .   .   .   .   .   .   .   20
        3.2.4. P´ndulo simple y aproximaci´n arm´nica . . . . . .
                 e                             o      o                                            .   .   .   .   .   .   .   .   21
   3.3. El p´ndulo inercial . . . . . . . . . . . . . . . . . . . . . . .
             e                                                                                     .   .   .   .   .   .   .   .   23
        3.3.1. Un simp´tico s´lido r´
                         a      o     ıgido en rotaci´n . . . . . . . .
                                                      o                                            .   .   .   .   .   .   .   .   23
        3.3.2. Construcci´n de la simulaci´n . . . . . . . . . . . . .
                            o                o                                                     .   .   .   .   .   .   .   .   27
   3.4. Breve introducci´n al caos . . . . . . . . . . . . . . . . . . .
                          o                                                                        .   .   .   .   .   .   .   .   29
        3.4.1. El atractor de Lorenz . . . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   30



                                                                                                                                   vii
´
INDICE GENERAL


           3.4.2. Construcci´n del m´dulo
                            o       o        . . . . . . . . . . . . . . . . . . . . . . . 30

4. Modelos determin´  ısticos y estoc´sticos
                                      a                                                            33
   4.1. Simulaci´n de un gas . . . . . . . . . . . . . . . . . . . . . . . . . .
                o                                                                  .   .   .   .   33
        4.1.1. Precedentes hist´ricos: Teor´ de la gravitaci´n de Le Sage
                                 o           ıa                o                   .   .   .   .   33
        4.1.2. Teor´ cin´tica . . . . . . . . . . . . . . . . . . . . . . . . .
                   ıa      e                                                       .   .   .   .   34
        4.1.3. Distribuci´n de velocidades . . . . . . . . . . . . . . . . . .
                           o                                                       .   .   .   .   36
        4.1.4. Magnitud de las velocidades moleculares . . . . . . . . . . .       .   .   .   .   36
        4.1.5. Magnitudes . . . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   36
        4.1.6. Choques el´sticos . . . . . . . . . . . . . . . . . . . . . . . .
                            a                                                      .   .   .   .   37
        4.1.7. Reversibilidad e irreversibilidad . . . . . . . . . . . . . . . .   .   .   .   .   42
        4.1.8. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . .    .   .   .   .   48
   4.2. Breve introducci´n a los m´todos Montecarlo . . . . . . . . . . . .
                          o         e                                              .   .   .   .   48
        4.2.1. Simulaci´n de crecimiento de dendritas . . . . . . . . . . .
                         o                                                         .   .   .   .   49

5. Jugando con Visual Python                                                              55
   5.1. Visual Pong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
   5.2. Space Rebounder Racing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Bibliograf´
          ıa                                                                                       65

Historia                                                                                           67

Creative Commons Deed                                                                              69

El proyecto libros abiertos de Alqua                                                               71

Otros documentos libres                                                                            75




viii                                                            Proyecto Physthones - 0.1
1 Objetivos y capacidades (A modo de
  pr´logo)
    o
   Este documento pretende ser una presentaci´n que sirva de gu´ sobre la que construir
                                                o                  ıa
un taller de simulaciones f´ısicas con Visual Python.
   No debe entenderse, por tanto, como un tutorial de Visual Pythonni como un texto
de f´
    ısica computacional.
   El proyecto Physthones pretende transmitir un car´cter transgresor e innovador y
                                                         a
parte de ello estar´ en el nuevo paradigma pedag´gico hacker que viene a ser una actua-
                   a                               o
lizaci´n de la academia de Plat´n.
      o                           o
   El hacker no aprende asistiendo a clases magistrales para escuchar la lecci´n, el hacker
                                                                              o
decide modificar (hackear) un programa que otro hab´ escrito para adaptarlo a una
                                                         ıa
nueva necesidad y en el camino, a base de e-mails (con el propio autor u otros integrantes
de la comunidad, a menudo verdaderos expertos) y b´squedas en la red obtiene los
                                                          u
conocimientos necesarios.
   Creemos que este modelo encaja a la perfecci´n en la nueva ideolog´ que est´ tratando
                                                 o                     ıa        a
de implantarse en nuestra universidad de menos clases presenciales y m´s trabajo por
                                                                            a
parte del alumno. Por eso creemos importante resaltar que lo que queremos conseguir no
es tanto un curso sino un taller en el que haya lugar para la interactividad y el desarrollo
comunitario.


1.1.    Primeros pasos en la f´
                              ısica computacional
   La f´
       ısica computacional se ha ido convirtiendo en una herramienta de trabajo indis-
pensable para cualquier f´ ısico ya sea experimental o te´rico.
                                                          o
   La experiencia directa de los integrantes del proyecto nos dec´ que los alumnos (incluso
                                                                  ıa
los ya licenciados) no tienen apenas capacidad para sacar provecho a las posibilidades
que les brinda un ordenador m´s all´ de el an´lisis estad´
                                  a     a         a          ıstico de datos experimentales
(conocimiento adquirido, todo sea dicho, de manera autodidacta por el alumno) y algunos
ejercicios meramente acad´micos y poco aplicables de c´lculo num´rico y programaci´n.
                            e                              a          e                 o
   Consideramos importante reforzar, pues estos conocimientos en el curr´   ıculum de un f´
                                                                                          ı-
sico y si bien no pretendemos alcanzar este objetivo con el presente curso, s´ que podemos
                                                                              ı
allanar los primeros pasos en ese camino.
   No creemos que deba ser nuestro objetivo en este peque˜o curso dar una introducci´n
                                                             n                           o
formal a la f´ısica computacional. Sin embargo, un ordenador no excesivamente moderno
permite obtener resultados suficientemente satisfactorios con los algoritmos m´s sencillos
                                                                                 a
con s´lo hacer suficientemente peque˜o el paso diferencial y por tanto no se hace necesario
     o                                 n



                                                                                          1
1 Objetivos y capacidades (A modo de pr´logo)
                                       o


en esta primera aproximaci´n el uso de t´cnicas sofisticadas de c´lculo num´rico ni
                              o               e                          a         e
meternos en complicaciones innecesarias.
  Una primera aproximaci´n a la f´
                            o        ısica computacional integrada en los primeros cursos
de f´
    ısica puede permitir, por ejemplo, que el alumno vea la mec´nica como algo m´s
                                                                      a                  a
que un peque˜o conjunto de soluciones anal´
              n                                ıticas m´s o menos acad´micas. Chabbay y
                                                         a               e
Sherwood introducen estas ideas en su curso de f´    ısica general de primer a˜o de carrera
                                                                              n
obteniendo excelentes resultados y proponiendo la experiencia para una reforma del
curr´
    ıculum de f´ısica en la universidad [3].


1.2.    ¿Por qu´ Python?
               e
   Cuando hemos presentado este proyecto en alguna conversaci´n como la elaboraci´n
                                                                      o                    o
de un conjunto de simulaciones f´  ısicas para la docencia, surge inevitablemente la compa-
raci´n inmediata con los extendidos “fislets” en Java y suelen sugerir que quiz´ estemos
    o                                                                               a
reinventando la rueda.
   Desde luego, hay muchos lenguajes y sistemas posibles para llevar a cabo este pro-
yecto, no s´lo los applets de Java promiscuamente distribuidos por internet, tambi´n el
            o                                                                            e
menos conocido Box2D (ActonScript, Flash) o las opciones de visualizaci´n que integran
                                                                               o
cualquiera de los muchos paquetes num´ricos y algebraicos como Matlab, Mathematica,
                                           e
Maple...
   Por un lado, quer´ ıamos utilizar software libre (no en vano la idea surgi´ en en el Grupo
                                                                             o
de Software Libre) y quer´   ıamos un sistema multiplataforma que pudiese utilizarse en
cualquier m´quina.
              a
   Otro de los requisitos que le ped´ ıamos al sistema era que fuese lo m´s sencillo posible,
                                                                           a
pues quer´ ıamos romper esa “caja negra” en que se convierten a nuestros ojos los fislets
java que encontramos por la red. La gran mayor´ de los alumnos que llegan a los primeros
                                                   ıa
cursos de f´ ısica no han programado nada en su vida. Incluso en cursos superiores nos
encontramos con que un porcentaje demasiado grande no han ido m´s all´ de los ejercicios
                                                                        a    a
propuestos en el curso de introducci´n al c´lculo num´rico (actualmente impartido con
                                        o      a           e
Matlab en esta casa).
   Por lo tanto el sistema deb´ ser lo m´s sencillo posible.
                                ıa          a
   Python nos ofrec´ esa sencillez y elegancia como lenguaje de iniciaci´n[5] y adem´s
                      ıa                                                       o           a
una gran cantidad de librer´ y una importante comunidad de usuarios y desarrolladores
                             ıas
que lo soportan.


1.3.    Visual Python
  La visualizaci´n y creaci´n de escenas din´micas tridimensionales (y no s´lo el plo-
                o          o                   a                              o
teando de funciones) pueden tener un gran valor did´ctico en muchos aspectos de la f´
                                                    a                               ısica
b´sica como la din´mica del s´lido r´
 a                a          o      ıgido, la din´mica de fluidos o el electromagnetismo.
                                                 a
  David Scherer crea desde la universidad Carnegie Mellon en el a˜o 2000 un m´dulo de
                                                                   n            o
gr´ficos tridimensionales para Python extremadamente sencillo de usar llamado Visual.
  a



2                                                                Proyecto Physthones - 0.1
1.3 Visual Python


El programador no tiene que lidiar con la complicaci´n de las capacidades gr´ficas. S´lo
                                                      o                         a     o
debe describir los objetos en un lenguaje algebraico, natural para los f´
                                                                        ısicos.
   Con Visual Pythonno s´lo se trata de que se haga sencilla la generaci´n de escenas
                           o                                                o
tridimensionales en movimiento, sino que el lenguaje algebraico que utiliza mantiene la
coherencia con el utilizado en los cursos tradicionales, no suponiendo su inclusi´n en un
                                                                                  o
curso de f´
          ısica fundamental una extensi´n sensible del temario sino un refuerzo positivo
                                         o
en el manejo de estas herramientas.

1.3.1.   Instalaci´n del sistema
                  o
   Desde la p´gina web del proyecto Visual Python(http://vpython.org) nos ofrecen unas
              a
instrucciones concisas y claras para realizar una instalaci´n de todo lo necesario para
                                                           o
windows, Linux y Mac con s´lo un par de clicks.
                             o
   Adem´s, Visual Pythonest´ integrado en los repositorios de paquetes de la mayor´ de
         a                   a                                                     ıa
las distribuciones Linux.




http://alqua.org/documents/physthones                                                  3
1 Objetivos y capacidades (A modo de pr´logo)
                                       o




4                                               Proyecto Physthones - 0.1
2 Toma de contacto: Python y
  Visual-Python

  No pretendemos convertir esto en un tutorial de python, s´lo dar un breve paseo
                                                              o
explicado sobre c´mo trabajar en este sistema partiendo de cero.
                 o



2.1.    Python e IDLE

  Python es un lenguaje interpretado, por lo que nos brinda la posibilidad de trabajar
en sesiones interactivas utiliz´ndolo como una calculadora programable.
                               a
  No obstante, lo c´modo normalmente ser´ escribir en archivos con cadenas de coman-
                   o                         a
dos (scripts) y pedir al sistema que los interprete todos de golpe.
   Para programar necesitaremos, pues, el int´rprete de python y un editor de texto.
                                               e
Como edito podr´ ıamos utilizar cualquiera capaz de leer y escribir en texto plano, como
el notepad de windows (no MSWord), emacs, vi, pico, scite... o IDLE, que es el que
viene incluido con la distribuci´n de python, est´ especialmente pensado para el tipo
                                o                 a
de tareas que vamos a realizar y nos ayudar´ en determinadas ocasiones. Por ejemplo,
                                             a
cuando queramos ejecutar el archivo en el que estamos trabajando s´lo tendremos que
                                                                       o
pulsar F5.
  Cuando ejecutemos IDLE, tendremos una ventana con la consola interactiva de python
en la que podr´
              ıamos hacer, por ejemplo, una cuenta simple.




                         Figura 2.1: Ventana interactiva de IDLE




                                                                                      5
2 Toma de contacto: Python y Visual-Python


2.2.      Visual
  En cuanto a Visual Python, ser´n un m´dulo que debemos cargar en python y nos
                                  a        o
permitir´ dibujar sobre la marcha escenas tridimensionales:
        a
from v i s u a l import ∗
c a j a=box ( pos=v e c t o r ( 4 , 2 , 3 ) , s i z e = ( 8 . , 4 . , 6 . ) , c o l o r=c o l o r . r e d )
b o l a=s p h e r e ( pos=v e c t o r ( 4 , 7 , 3 ) , r a d i u s =2, c o l o r=c o l o r . g r e e n )

   La primera l´ınea simplemente le dice a python que queremos utilizar las herramientas
de la clase visual (es decir, Visual Python). Lo normal y recomendable en python ser´     ıa
llamar a la librer´ simplemente con un import visual. Lo que hacemos al llamarlo con el
                  ıa
from es escribir simplemente box(...) en lugar de visual.box(...). Esto es peligroso hacerlo
por norma pues dos librer´ diferentes pueden tener funciones con nombres iguales y
                             ıas
causar problemas que del otro modo evitar´  ıamos. Sin embargo por comodidad en el tipo
de cosas que vamos a hacer utilizaremos este otro m´todo.
                                                      e




                               Figura 2.2: Nuestro “hola mundo” en python

   Vemos que el lenguaje es bastante intuitivo. Definiremos las coordenadas con vectores
en los que la coordenada x es la horizontal, la y la vertical y la z la perpendicular a la
pantalla.
   Una vez definido un objeto con unas ciertas propiedades, podemos cambiar ´stas sobre
                                                                               e
la marcha o a˜adir nuevas que no estuvieran definidas:
              n
caja . s i z e =(8 ,0.1 ,8)
c a j a . pos =(0 , −1 ,0)
b o l a . pos = ( 0 , 3 , 0 )
b o l a . r a d i u s =1
b o l a . masa=1
b o l a . v e l=v e c t o r (0 , −1 ,0 )

  Al definir la velocidad de la bola, hemos especificado que se trata de un vector. En
general esto es necesario en Visual Pythonpara poder operar. No es necesario en el caso
de las posiciones porque el sistema sabe ya que deben ser vectores, pero en los casos
restantes deberemos especificarlo.



6                                                                              Proyecto Physthones - 0.1
2.2 Visual


2.2.1.    Operando con vectores
  Con vectores podemos hacer las operaciones b´sicas de suma, producto por un escalar,
                                                a
producto escalar, producto vectorial, obtener la norma de un vector o su magnitud.
a = vector ( 1 . , 2 . , 3 . )
b = vector ( 4 . , 5 . , 6 . )
c=a+b
c =3.5∗ a
c=dot ( a , b )
c=c r o s s ( a , b )
c=norm ( a )
c=mag( a )
c=mag( a ) ∗∗2
c=a /1
c=a / 1 .

  Para la exponencial se utiliza en doble asterisco (como en gnuplot).
  Hay que tener cuidado con las divisiones entre enteros. Aunque python no es tipado
(no hay que definir expl´ıcitamente qu´ tipo de variable vamos a usar) s´ que diferencia
                                      e                                ı
entre tipos y debemos tener cuidado con eso al operar.

2.2.2.    Listas y diccionarios
  Una cosa b´sica y tremendamente util en python son las listas y los diccionarios.
             a                        ´
  Una lista es una serie de cosas (variables, objetos, vectores, nuevas listas anidadas...)
ordenadas con un ´ındice que empieza en cero:
   moons = [ Io , Europa , Ganymede , C a l l i s t o ]
   print moons [ 1 ]

  Un diccionario es una lista de pares asociados:
   edad={ ’ M a r g a r i t a ’ : 12 , ’ Pedro ’ : 10 , ’ L u i s ’ : 15 }
   print edad [ ’ Pedro ]


2.2.3.    L´gica
           o
  Es una base important´
                       ısima de todo lenguaje de programaci´n. Supongamos que que-
                                                           o
remos hacer que una pelota rebote en el suelo:
   s i l a coordenada y de l a p e l o t a e s menor que c e r o :
         e n t o n c e s su v e l o c i d a d pasa a s e r p o s i t i v a
         y su p o s i c i ´ n , c e r o .
                           o

  Llevando esto a la realidad de python:



http://alqua.org/documents/physthones                                                    7
2 Toma de contacto: Python y Visual-Python



    i f b o l a . pos . y < 0 :
         b o l a . v e l ∗=−1
         b o l a . pos . y=0

   N´tese que no hay, como en otros lenguajes de programaci´n, un cierre de la condici´n.
    o                                                          o                      o
Python interpreta el indentado de la sintaxis como que todo lo que venga “metido hacia
la derecha” del if ser´ lo que deba leer s´lo si la condici´n se satisface.
                      a                   o                o
   Esto es una gran ventaja pedag´gica para aprender a programar con un orden ade-
                                    o
cuado. El indentado est´ndar en python es de 4 espacios.
                          a

2.2.4.     Bucles
   Ser´n la base del movimiento. Podemos decir que mientras se cumpla tal condici´n se
      a                                                                          o
repitan una serie de comandos. En el siguiente ejemplo vemos c´mo dada una velocidad
                                                               o
para una part´ıcula y un intervalo de tiempo peque˜ito (diferencial) podemos animar el
                                                   n
sistema. Es un esbozo de lo que se llama el m´todo de diferencias finitas.
                                              e
    t=0
    dt =0.001
    while t < 1 0 0 :
         t=t+dt

          b o l a . v e l=b o l a . a c e l ∗ dt
          b o l a . pos=b o l a . v e l ∗ dt

  Otra opci´n interesante de los bucles es la de recorrer listas con, por ejemplo, cada
            o
una de las part´
               ıculas de un sistema.
    t=0
    dt =0.001
    while t < 1 0 0 :
         t=t+dt
         f o r b o l a in l i s t a b o l a s :
               b o l a . v e l=b o l a . a c e l ∗ dt
               b o l a . pos=b o l a . v e l ∗ dt


2.2.5.     Rebota Mundo
  Con lo que hemos aprendido ya podemos construir escenas y animarlas. Veamos una
bola que cae por acci´n de la gravedad y rebota en el suelo:
                     o
from v i s u a l import ∗
grav=v e c t o r (0 , −10 ,0)
b o l a=s p h e r e ( pos = ( 0 , 5 , 0 ) , r a d i u s =1, c o l o r=c o l o r . g r e e n )
s u e l o=box ( s i z e = ( 8 , 0 . 1 , 8 ) , pos =(0 , −1 ,0) , c o l o r=c o l o r . r e d )



8                                                                          Proyecto Physthones - 0.1
2.2 Visual


b o l a . v e l=v e c t o r ( 0 , 0 , 0 )
dt =0.01
t=0
while t < 3 0 :
        t+=dt
        b o l a . v e l+=grav ∗ dt
        b o l a . pos+=b o l a . v e l ∗ dt
        i f b o l a . pos . y < 0 :
                b o l a . v e l ∗=−1
                b o l a . pos . y=0
        rate (50)

  El rate(50) define el n´mero de frames por segundo que deben visualizarse. Sin ´l,
                        u                                                        e
la animaci´n no ser´ observable. Jugando con este valor y el intervalo de tiempo dt
          o        ıa
podemos crear las animaciones en tiempo real.




http://alqua.org/documents/physthones                                            9
2 Toma de contacto: Python y Visual-Python




10                                           Proyecto Physthones - 0.1
3 Modelos diferenciales
   En este cap´ ıtulo vamos a ver varios ejemplos de modelos diferenciales.
   En la f´
          ısica se utilizan constantemente modelos descritos a trav´s de ecuaciones dife-
                                                                         e
renciales, la mayor´ de los cuales no tienen soluciones anal´
                      ıa                                         ıticas.
   Por norma general, en los primeros cursos de f´     ısica s´lo se estudian problemas con
                                                              o
soluciones anal´ ıticas sencillas dejando aquellos cuyas soluciones son m´s complejas para
                                                                           a
cursos superiores.
   De los problemas sin soluciones anal´ ıticas se puede hacer un estudio para obtener datos
importantes acerca de su comportamiento y se pueden obtener soluciones aproximadas.
A continuaci´n vamos a ver el modo m´s sencillo de obtener una gran cantidad de
               o                              a
informaci´n de sistemas de ecuaciones diferenciales arbitrarios.
          o


3.1.     Tiro parab´lico
                   o
   Vamos a construir un ejemplo muy simple que sirva para comenzar a entender el
lenguaje y la forma de implementar modelos diferenciales. Si bien las soluciones del
tiro parab´lico no debieran tener ya secretos para nosotros nos servir´ para entender el
          o                                                           a
m´todo num´rico que vamos a utilizar.
  e          e


3.1.1.   F´
          ısica del tiro parab´lico
                              o
  Vamos a tratar este problema con un an´lisis newtoniano lo m´s simple e intuitivo
                                          a                   a
posible.
  Tenemos un sistema de ecuaciones diferenciales tal que:

                        v=   dx
                                                       x = x0 + vdt
                             dt                    →                                   (3.1)
                        a=   dv
                             dt   = (0 , −g , 0)       v = v0 + adt

Donde g es la aceleraci´n de la gravedad (constante).
                        o
   Partiendo de una posici´n inicial x0 y una velocidad inicial v0 , aplicaremos las ecua-
                           o
ciones utilizando un dt arbitrario lo m´s peque˜o posible. Con ello obtenemos la posici´n
                                       a       n                                        o
y velocidad en el instante siguiente. Repetimos el procedimiento tomando como v0 y x0
los nuevos valores obteniendo entonces el siguiente paso, y as´ sucesivamente. Esta es la
                                                              ı
base del bucle que construiremos para la simulaci´n.
                                                  o
   Cuando dt → 0 la soluci´n ser´ exacta.
                           o      a



                                                                                         11
3 Modelos diferenciales


3.1.2.      Construcci´n de una escena
                      o
   En las primeras l´ıneas debemos llamar a las librer´ de Python necesarias, en este
                                                      ıas
caso s´lo el m´dulo Visual que generar´ los gr´ficos tridimensionales.
      o       o                         a      a
   Despu´s generamos la ventana donde se visualizar´n los gr´ficos llam´ndola scene y
         e                                           a        a         a
le daremos como atributos un t´ ıtulo y le decimos que no queremos que haga autoscale.
El autoscale lo que hace es mover el zoom de la c´mara para que todos los objetos se
                                                   a
vean. Suele resultar bastante inc´modo y el bot´n central del rat´n nos permitir´ hacer
                                 o               o               o              a
eso manualmente sobre la marcha.
from v i s u a l import ∗
s c e n e=d i s p l a y ( )
scene . t i t l e=’ Tiro p a r a b o l i c o ’
s c e n e . a u t o s c a l e =0

  Ahora vamos a definir unos valores iniciales para el problema, que ser´n la posici´n y
                                                                       a           o
velocidad de la part´
                    ıcula en el instante inicial.
pos=v e c t o r ( −10 ,0 ,0 )
v e l=v e c t o r ( 1 0 , 1 0 , 0 )

  A continuaci´n, definimos los objetos que formar´n parte de nuestra escena. B´sica-
                o                                   a                             a
mente necesitaremos el suelo, que definiremos como un paralelep´  ıpedo (box ) muy estre-
cho, el proyectil ser´ una esfera y dibujaremos un cilindro que haga las veces de ca˜´n
                     a                                                              no
(por motivos meramente est´ticos).
                             e
s u e l o=box ( pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . r e d )
cannon=c y l i n d e r ( pos=pos0 , a x i s=norm ( v e l ) )
p r o y e c t i l=s p h e r e ( pos=(r0x , r0y , r 0 z ) , c o l o r=c o l o r . b l u e )

  Veamos con un poco m´s de profundidad c´mo se definen los elementos que acabamos
                      a                  o
de mostrar:

box : Es un paralelep´
                     ıpedo recto centrado en pos. El ancho, alto y largo del paralelep´
                                                                                      ıpe-
     do los definimos con size. Por defecto tiene un eje definido de manera vertical en el
     sistema de referencia del objeto. Ese eje lo situaremos en el sistema de referencia
     externo con axis y podemos modificarlo en el sistema de referencia del objeto con
     up.

cylinder : Se trata de un cilindro circular al que definimos la posici´n del centro de su
                                                                     o
      base, su eje y su radio.

sphere : Simplemente necesitamos definir su posici´n y radio.
                                                 o

   En este primer ejemplo hemos explicado un poco los objetos que se definen en Visual
Python, no obstante en ejemplos posteriores pasaremos por alto en general las descrip-
ciones de objetos, entendiendo que la sintaxis es suficientemente autoexplicativa y que
hay una excelente documentaci´n del proyecto[6].
                               o



12                                                                            Proyecto Physthones - 0.1
3.1 Tiro parab´lico
                                                                                   o


3.1.3.    Animaci´n
                 o
  Ahora viene el momento en que animamos la escena. Hemos puesto un paso dt muy
peque˜o, cuanto m´s peque˜o m´s lenta (y m´s precisa) ser´ la simulaci´n, de modo
      n            a        n    a             a            a             o
que s´lo cuando t → 0 la soluci´n coincidir´ exactamente con la trayectoria anal´
     o                         o           a                                    ıtica.
grav =10
a c e l=v e c t o r (0 , − grav , 0 )
dt =0.001
while p r o y e c t i l . pos >= 0 :
        v e l=v e l+a c e l ∗ dt
        pos=pos+v e l ∗ dt
        p r o y e c t i l . pos=pos
        t=t+dt

  El n´cleo de la animaci´n es un bucle while que viene a decir que mientras la coor-
        u                  o
denada y del proyectil sea mayor o igual que 0 el sistema repita los pasos de dentro del
bucle.
  Esos pasos consisten sencillamente en avanzar intervalos diferenciales y actualizar a
cada paso los valores de la posici´n, velocidad y aceleraci´n dados por el sistema de
                                    o                        o
ecuaciones diferenciales.
  Seg´n lo hemos escrito, en un ordenador lento el movimiento se producir´ muy despacio
       u                                                                  a
y en un ordenador r´pido se producir´ deprisa. Para poder controlar el tiempo de manera
                     a                a
realista debemos jugar con el n´mero de fotogramas por segundo y el intervalo diferencial.
                               u
Para eso se utiliza el comando rate. Si queremos, por ejemplo, 25 fotogramas por segundo
(aproximadamente los que ofrece una pantalla de televisi´n) pondremos:
                                                          o
dt = 1 . / 2 5 .
...
while . . .
      ...
      rate (25)


Elementos adicionales: Vectores y trayectoria
  A continuaci´n vamos a a˜adir algunos elementos m´s a la escena, como la trayectoria
                o            n                     a
de la bola, el vector velocidad y sus componentes.
from v i s u a l import ∗
s c e n e=d i s p l a y ( )
scene . t i t l e=’ Tiro p a r a b o l i c o ’
s c e n e . a u t o s c a l e =0
pos=v e c t o r ( −10 ,0 ,0 )
v e l=v e c t o r ( 1 0 , 1 0 , 0 )
grav =10
a c e l=v e c t o r (0 , − grav , 0 )



http://alqua.org/documents/physthones                                                  13
3 Modelos diferenciales




                     Figura 3.1: Nuestro programa de tiro parab´lico en acci´n
                                                               o            o



dt = 1 . / 5 0 .
t=0
p r o y e c t i l=s p h e r e ( pos=pos , c o l o r=c o l o r . blue , r a d i u s =0.5)
s u e l o=box ( pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . r e d )
cannon=c y l i n d e r ( pos=pos , a x i s = ( 1 , 1 , 0 ) )
t r a y e c t o r i a=c u r v e ( c o l o r=c o l o r . w h i t e )
v e l o c i d a d t o t a l=arrow ( c o l o r=c o l o r . red , pos=p r o y e c t i l . pos , a x i s=
      vel /3.)
v e l o c i d a d x=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =( v e l
      . x/3. ,0 ,0) )
v e l o c i d a d y=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =(0 ,
      vel . y /3. ,0) )
while pos . y >= 0 :
        v e l=v e l+a c e l ∗ dt
        pos=pos+v e l ∗ dt
        t r a y e c t o r i a . append ( pos )
        p r o y e c t i l . pos=pos
        v e l o c i d a d t o t a l . pos=pos
        v e l o c i d a d x . pos=pos
        v e l o c i d a d y . pos=pos
        v e l o c i d a d t o t a l . a x i s=v e l / 3 .
        v e l o c i d a d x . a x i s=v e c t o r ( v e l . x / 3 . , 0 , 0 )
        v e l o c i d a d y . a x i s=v e c t o r ( 0 , v e l . y / 3 . , 0 )
        t=t+dt
        rate (50)




14                                                                       Proyecto Physthones - 0.1
3.1 Tiro parab´lico
                                                                                                  o


Gr´fica de energ´
  a            ıas
  Ahora vamos a agregar una nueva ventana que nos muestre una gr´fica de con la
                                                                          a
evoluci´n de la energ´ cin´tica, potencial y total a lo largo del tiempo.
       o             ıa   e
from v i s u a l import ∗
from v i s u a l . graph import ∗

s c e n e=d i s p l a y ( )
scene . t i t l e=’ Tiro p a r a b o l i c o ’
s c e n e . a u t o s c a l e =0
s c e n e . background = ( 1 , 1 , 1 )

Veamos c´mo agregar la nueva ventana para la gr´fica
        o                                      a
graph1 = g d i s p l a y ( x=0, y=0, width =300 , h e i g h t =150 ,
           t i t l e = ’E vs . t ’ , x t i t l e= ’ t ’ , y t i t l e= ’E ’ ,
           f o r e g r o u n d=c o l o r . bla ck , background=c o l o r . w h i t e )

Ahora a˜adiremos tres curvas en la ventana de gr´ficas:
       n                                        a
p o t e n c i a l = g c u r v e ( g d i s p l a y=graph1 , c o l o r=c o l o r . b l u e )
c i n e t i c a = g c u r v e ( g d i s p l a y=graph1 , c o l o r=c o l o r . r e d )
e t o t a l = g c u r v e ( g d i s p l a y=graph1 , c o l o r=c o l o r . g r e e n )

pos=v e c t o r ( −10 ,0 ,0 )
v e l=v e c t o r ( 1 0 , 1 0 , 0 )
grav =10
m=1
a c e l=v e c t o r (0 , − grav , 0 )
dt = 1 . / 5 0 .
t=0
p r o y e c t i l=s p h e r e ( pos=pos , c o l o r=c o l o r . blue , r a d i u s =0.5)
s u e l o=box ( pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . y e l l o w )
cannon=c y l i n d e r ( pos=pos , a x i s = ( 1 , 1 , 0 ) )
t r a y e c t o r i a=c u r v e ( c o l o r=c o l o r . b l a c k )
v e l o c i d a d t o t a l=arrow ( c o l o r=c o l o r . red , pos=p r o y e c t i l . pos , a x i s=
      vel /3.)
v e l o c i d a d x=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =( v e l
      . x/3. ,0 ,0) )
v e l o c i d a d y=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =(0 ,
      vel . y /3. ,0) )
while pos . y >= 0 :
        v e l=v e l+a c e l ∗ dt
        pos=pos+v e l ∗ dt
        t r a y e c t o r i a . append ( pos )



http://alqua.org/documents/physthones                                                                 15
3 Modelos diferenciales


      p r o y e c t i l . pos=pos
      v e l o c i d a d t o t a l . pos=pos
      v e l o c i d a d x . pos=pos
      v e l o c i d a d y . pos=pos
      v e l o c i d a d t o t a l . a x i s=v e l / 3 .
      v e l o c i d a d x . a x i s=v e c t o r ( v e l . x / 3 . , 0 , 0 )
      v e l o c i d a d y . a x i s=v e c t o r ( 0 , v e l . y / 3 . , 0 )

Y a˜adimos f´cilmente puntos a las gr´ficas
   n        a                        a
      c i n e t i c a . p l o t ( pos=(t , 0 . 5 ∗m∗mag2 ( v e l ) ) )
      p o t e n c i a l . p l o t ( pos=(t ,m∗ grav ∗ p r o y e c t i l . pos . y ) )
      e t o t a l . p l o t ( pos=(t ,m∗ grav ∗ p r o y e c t i l . pos . y +0.5∗m∗mag2 ( v e l ) ) )
      t=t+dt
      rate (50)




                           Figura 3.2: Tiro parab´lico con gr´fica de energ´
                                                 o           a            ıas


3.1.4.    Visualizaci´n de las fuerzas de Coriolis
                     o
  Con lo que sabemos y un poquito de imaginaci´n es sencillo poner el sistema a rotar
                                                   o
y agregar efectos de coriolis, que vendr´n descritos sencillamente como:
                                        a

                                 −mω × (ω × r) → Centr´      ıfuga
                                

                         F =           −2mω × v → Coriolis                      (3.2)
                                        −mω × r → Azimutal
                                            ˙
                                

from v i s u a l import ∗
s c e n e=d i s p l a y ( )
scene . t i t l e=’ C o r i o l i s ’
s c e n e . a u t o s c a l e =0
s c e n e . background = ( 1 , 1 , 1 )
# V e l o c i d a d de r o t a c i o n
omega =0.0



16                                                                            Proyecto Physthones - 0.1
3.1 Tiro parab´lico
                                                                                                o


# I r a aumentandola en . . .
domega =0.00005
# Hasta una omega maxima de . . .
omegamax=0.05
# Nos sentamos en e l s i s t e m a de r e f e r e n c i a no i n e r c i a l ?
# 1 no
# −1 s i
i n e r c i a l =−1
chorros =[]
SRNI=frame ( )
box ( frame=SRNI , pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r .
       yellow )
c y l i n d e r ( frame=SRNI , pos =( −10 ,0 ,0) , a x i s = ( 1 , 2 , 0 ) , r a d i u s =0.5)
c y l i n d e r ( frame=SRNI , pos = ( 1 0 , 0 , 0 ) , a x i s =( −1 ,2 ,0) , r a d i u s =0.5)
box ( frame=SRNI , pos =( −10 ,0 ,0) , s i z e = ( 2 , 2 , 2 ) , c o l o r=c o l o r . w h i t e )
box ( frame=SRNI , pos = ( 1 0 , 0 , 0 ) , s i z e = ( 2 , 2 , 2 ) , c o l o r=c o l o r . w h i t e )
l e y e n d a=l a b e l ( t e x t=”Omega=”+s t r ( omega ) , pos = ( 2 , 7 , 2 ) )
def d i s p a r a ( c h o r r o s ) :
        b o l a 1=s p h e r e ( frame=SRNI , pos=v e c t o r ( −10 ,0 ,0 ) , c o l o r=c o l o r .
              blue , r a d i u s =0.3)
        b o l a 2=s p h e r e ( frame=SRNI , pos=v e c t o r ( 1 0 , 0 , 0 ) , c o l o r=c o l o r . blue
              , r a d i u s =0.3)
        c h o r r o s . append ( [ bola1 , v e c t o r ( 5 , 1 0 , 0 ) ] )
        c h o r r o s . append ( [ bola2 , v e c t o r ( −5 ,1 0 ,0 ) ] )
        return c h o r r o s
def r e c o l o c a ( i ) :
         if i [ 1 ] . x > 0:
                i [ 0 ] . pos=v e c t o r ( −10 ,0 ,0 )
                i [1]= vector (5 ,10 ,0)
        else :
                i [ 0 ] . pos=v e c t o r ( 1 0 , 0 , 0 )
                i [ 1 ] = v e c t o r ( −5 ,1 0 ,0 )
        return i
c h o r r o s=d i s p a r a ( c h o r r o s )
grav =10
m=1
#a c e l=v e c t o r (0 , − grav , 0 )
dt = 1 . / 5 0 .
t=0
f r e c =0.1
Omega=v e c t o r ( 0 , omega , 0 )
dOmega=v e c t o r ( 0 , domega , 0 )
d e n t r o=1
while t r u e :



http://alqua.org/documents/physthones                                                                  17
3 Modelos diferenciales


     f o r i in c h o r r o s :
           r=v e c t o r ( i [ 0 ] . pos . x , 0 , 0 )
           a c e l=c r o s s (Omega , c r o s s (Omega , i [ 0 ] . pos ) ) +2∗ c r o s s (Omega , r
                  )+v e c t o r (0 , − grav , 0 )+c r o s s ( dOmega , r )
           i [ 0 ] . pos+=i [ 1 ] ∗ dt
           i [1]+= a c e l ∗ dt
           i f i [ 0 ] . pos . y <= −5:
                   d e n t r o=0
                    i=r e c o l o c a ( i )
     t=t+dt
     i f t>=f r e c and d e n t r o == 1 :
           t=0
           c h o r r o s=d i s p a r a ( c h o r r o s )
     i f i n e r c i a l == −1:
           SRNI . r o t a t e ( a n g l e=omega∗ dt , a x i s = ( 0 , 1 , 0 ) )
     rate (50)
     i f omega < omegamax :
           omega+=domega
           Omega=v e c t o r ( 0 , omega , 0 )
           l e y e n d a . t e x t= ’Omega= ’+s t r ( omega )




18                                                                   Proyecto Physthones - 0.1
3.2 El p´ndulo simple y la aproximaci´n para ´ngulos peque˜os
                               e                            o       a            n


3.2.     El p´ndulo simple y la aproximaci´n para ´ngulos
             e                            o       a
         peque˜os
               n
3.2.1.   La gracia del p´ndulo
                        e
   Suele contarse que todo comenz´ con un aburrido Galileo oyendo misa en la catedral de
                                      o
Pisa. Una l´mpara que hab´ sido empujada por un monaguillo al encenderla comenz´ a
            a                 ıa                                                      o
describir unas oscilaciones que sin duda ten´ m´s inter´s para Galileo que las palabras
                                              ıan a        e
del sacerdote. Midi´ el per´
                      o        ıodo de las oscilaciones de la l´mpara usando como reloj
                                                                a
los latidos de su coraz´n y qued´ fascinado al comprobar que aunque las oscilaciones
                         o            o
descritas por la l´mpara eran cada vez menores, dicho per´
                  a                                          ıodo se manten´ tozudamente
                                                                            ıa
constante.
   Al llegar a casa, amarr´ una piedra a una cuerda y la colg´ del techo para observar su
                           o                                    o
movimiento. Lo hizo con diferentes cuerdas y piedras y su sorpresa no pudo ser mayor
al descubrir que tampoco importaba lo gorda que fuese la piedra, sino unicamente la
                                                                             ´
longitud de la cuerda.
   Antes de abandonar definitivamente su carrera como m´dico, Galileo dej´ su legado en
                                                            e                 o
ese mundo con el “puls´metro”, que no era m´s que usar el p´ndulo como regla de medida
                        o                      a               e
para tomar el pulso a los pacientes. Invirti´ el proceso que comenzara en la catedral.
                                             o
   El p´ndulo fue el sistema experimental que inspir´ las leyes de ca´ de los cuerpos
        e                                               o               ıda
de Galileo, rompiendo por fin la idea aristot´lica de que una bola de hierro caer´ m´s
                                                e                                  ıa a
r´pido que una de madera. Hab´ nacido el nuevo paradigma, “la edad del p´ndulo”.
 a                                  ıa                                          e
   Naturalmente, luego llegar´ los famosos (aunque supuestamente ficticios) experimen-
                                ıan
tos de Galileo arrojando pesos desde la torre de Pisa, aunque eso fue s´lo un segundo
                                                                           o
plato, quiz´ m´s adornado y aplaudido, pero nada interesante comparado con la magni-
            a a
ficencia de un p´ndulo.
                 e
   Observar lo que Galileo supuestamente mostr´ desde la torre de Pisa era muy compli-
                                                   o
cado. Las cosas ca´ demasiado r´pido por aquel entonces.
                    ıan                a
   Las ligaduras (las del p´ndulo y las del plano inclinado) fueron las que permitieron a
                            e
Galileo hacer caer los cuerpos lo suficientemente despacio como para tomar medidas con
una “clepsidra”, estudiar su din´mica y predecir lo que suceder´ al arrojarlos desde la
                                    a                              ıa
torre de Pisa.


3.2.2.   El oscilador arm´nico
                         o
   Una manera de definir un oscilador arm´nico es decir que se trata de un movimiento
                                          o
con un tiempo caracter´
                      ıstico al que llamaremos per´
                                                  ıodo (T ) en el que el sistema vuelve
al estado de movimiento inicial:


                                    x(t + T ) = x(t)                                (3.3)

  Aplicando Lagrange sobre dicho sistema, y considerando para simplificar que el origen



http://alqua.org/documents/physthones                                                 19
3 Modelos diferenciales


de coordenadas coincide con el m´
                                ınimo de potencial (U (x = 0) = 0):


                                                   1
                                           T (x) = mx2 ˙
                                                   2
                                                    1
                                            U (x) = kx2
                                                    2                                  (3.4)
                                                L=T −U
                                         d ∂L ∂L
                                                −     =0
                                              ˙
                                         dt ∂ q   ∂q

donde estamos denotando x = dx
                         ˙   dt
  Obtenemos f´cilmente la ecuaci´n de movimiento:
             a                  o

                                           m¨ + kx = 0
                                            x                                          (3.5)
            dx2
donde x =
      ¨     dt2
   Llamando ω =      2π
                     T    =    k
                               m   a la frecuencia, que es un par´metro inversamente propor-
                                                                 a
cional al per´
             ıodo,

                                           x + w2 x = 0
                                           ¨                                           (3.6)
  Las soluciones para este tipo de potencial son de tipo arm´nico, est´n bien estudiadas
                                                            o         a
y son sencillas de tratar:

                  x = Asin(ωt) 
                               

                       o
                       ´         una c. lineal: x(t) = Acos(ωt) + Bsin(ωt)             (3.7)
                  x = Acos(ωt)
                               


3.2.3.   ¿Es el p´ndulo un oscilador arm´nico?
                 e                      o
  Un p´ndulo es, sencillamente una masa pendiente de un hilo. Para estudiar su din´mica
      e                                                                           a
hemos de considerar el hilo como una ligadura que expresamos matem´ticamente como:
                                                                      a

                              x = −L sin φ                  ˙
                                                     x = −Lφ cos φ
                                                     ˙
                                               →           ˙ sin φ                     (3.8)
                              y = −L cos φ           y = Lφ
                                                     ˙
  A continuaci´n procedemos a un an´lisis lagrangiano del sistema situando el origen
               o                      a
de potenciales en el punto m´s bajo del p´ndulo.
                            a            e


                      1           1      ˙                 1    ˙
                   T = mx2 + y 2 = mL2 φ2 sin2 φ + cos2 φ = mL2 φ2
                         ˙    ˙
                      2           2                        2
                   U =mgh = mgL (1 − cos φ)                                            (3.9)
                      1    ˙
                   L = mL2 φ2 − mgL (1 − cos φ)
                      2


20                                                                Proyecto Physthones - 0.1
3.2 El p´ndulo simple y la aproximaci´n para ´ngulos peque˜os
                                       e                            o       a            n




                                                  ∂L      ˙
                                                     =mL2 φ
                                                   ˙
                                                  ∂φ
                                                       d        ¨
                                                          = mL2 φ
                                                       dt
                                                  ∂L                                  (3.10)
                                                     = − mgL sin φ
                                                  ∂φ
                          d      ∂L       ∂L          ¨
                                      −      = 0 →mL2 φ + mgL sin φ = 0
                          dt      ˙
                                 ∂φ       ∂φ

   La ecuaci´n diferencial que describe la din´mica del p´ndulo simple es, pues:
            o                                 a          e

                                           ¨
                                       mL2 φ + mgL sin φ = 0                          (3.11)

  Que es bastante compleja comparada con la ecuaci´n del oscilador arm´nico (a pesar
                                                      o                    o
de ser tan parecidas) ya que para resolverla se requieren funciones el´
                                                                      ıpticas.
  No obstante se puede hacer la llamada aproximaci´n para oscilaciones peque˜as que
                                                      o                        n
consiste b´sicamente en aproximar el seno por el ´ngulo sin φ ≈ φ.
          a                                       a
  Con ello, es inmediato obtener resultados aplicando las soluciones conocidas del osci-
lador arm´nico.
          o

                                              ¨
                                          mL2 φ + mgLφ = 0                            (3.12)
  Sin embargo, no nos queda claro exactamente hasta qu´ punto es buena esta aproxi-
                                                         e
maci´n (c´mo de peque˜os tienen que ser esos ´ngulos) y, sobre todo, qu´ significa el
    o     o            n                       a                        e
hecho de que la apliquemos. ¿C´mo se comporta el sistema en realidad y c´mo lo hace
                               o                                        o
nuestra aproximaci´n algebraica?
                  o
  A veces, alumnos que hemos estudiado el p´ndulo simple hasta la saciedad nos he-
                                             e
mos quedado intrigados al hacernos esta pregunta que deber´ resultarnos tan obvia.
                                                             ıa
Construyamos una simulaci´n sencilla que nos aclare las ideas.
                          o

3.2.4.     P´ndulo simple y aproximaci´n arm´nica
            e                         o     o
   Vamos a construir una simulaci´n, en principio, de un p´ndulo simple.
                                 o                        e
#! / u s r / b i n / python
from v i s u a l import ∗
s c e n e=d i s p l a y ( )
s c e n e . t i t l e = ’ Pendulo s i m p l e ’
s c e n e . a u t o s c a l e =0

  Queremos introducir un ´ngulo inicial φ0 (en radianes) desde el que activar el p´ndulo
                           a                                                      e
con una velocidad inicial nula.
p h i 0=p i ∗ 0 . 1



http://alqua.org/documents/physthones                                                    21
3 Modelos diferenciales


  A continuaci´n damos valores a los par´metros del sistema y definimos nuestro dt
              o                         a
como paso
m=1.
g =10.
l =4.

dt = 1 . / 5 0 .

Queremos construir el p´ndulo como un cilindro estrechito y una esfera en el extremo.
                         e
Para manejar varios objetos como uno s´lo m´s complejo es util utilizar los frames. Un
                                      o     a              ´
frame har´ el papel de un sistema de referencia de modo que los objetos que defina-
          a
mos como pertenecientes a ese frame utilizar´n coordenadas propias a ese sistema de
                                            a
referencia y se mover´ solidariamente con ´l.
                     ıan                  e
SR=frame ( )
masa=s p h e r e ( frame=SR , pos =(0. , − l , 0 . ) , r a d i u s =0.2 , c o l o r=c o l o r . b l u e
      )
h i l o=c y l i n d e r ( frame=SR , a x i s=masa . pos , r a d i u s =0.05 , c o l o r=c o l o r .
      blue )

   A continuaci´n, vamos a preparar nuestra coordenada φ en su posici´n inicial y su
               o                                                        o
derivada respecto del tiempo ajustada a cero.
   Colocaremos el sistema de referencia que contiene al p´ndulo en su posici´n inicial
                                                          e                   o
gir´ndolo un ´ngulo φ en torno a un eje perpendicular al plano de la pantalla:
   a         a
p h i=p h i 0
phip=0
SR . r o t a t e ( a x i s = ( 0 , 0 , 1 ) , a n g l e=p h i )

  Finalmente queda plantear el bucle que anima la escena teniendo en cuenta que en
                                                                                      ˙
cada paso diferencial lo que hacemos es rotar el sistema de referencia un ´ngulo dφ = φdt
                                                                          a
while 1 :
    phipp=−(m∗ g∗ l ) ∗ s i n ( p h i )
    phip=phip+phipp ∗ dt
    p h i=p h i+phip ∗ dt
    SR . r o t a t e ( a x i s = ( 0 , 0 , 1 ) , a n g l e=phip ∗ dt )
    rate (50)

   Si, sencillamente, sustituy´semos la l´
                              e          ınea
phipp=−(m∗ g∗ l ) ∗ s i n ( p h i )

por
phipp=−(m∗ g∗ l ) ∗ p h i



22                                                                       Proyecto Physthones - 0.1
3.3 El p´ndulo inercial
                                                                             e


   Obtendr´ıamos la simulaci´n del problema en aproximaci´n para oscilaciones peque˜as.
                            o                            o                         n
   Puede ser pedag´gico dibujar dos p´ndulos de diferente color superpuestos con una
                    o                  e
de las soluciones cada uno para compararlos en tiempo real y ver cu´l es exactamente el
                                                                   a
significado de hacer la aproximaci´n para oscilaciones peque˜as.
                                   o                        n




Figura 3.3: Comparaci´n de un p´ndulo simple con y sin aproximaci´n para oscilaciones peque˜as
                     o         e                                 o                         n



3.3.     El p´ndulo inercial
             e
   En la mec´nica del s´lido r´
             a         o      ıgido, donde aparecen frecuentemente osciladores arm´nicos,
                                                                                  o
se une a la posibilidad de simular soluciones num´ricas, la capacidad de Visual Pythonde
                                                  e
visualizar escenas tridimensionales manejando por parte del usuario diferentes sistemas
de referencia.

3.3.1.   Un simp´tico s´lido r´
                a      o      ıgido en rotaci´n
                                             o
   El montaje propuesto consta sencillamente de una plataforma horizontal que haremos
girar con una velocidad angular constante ω0 . Sobre ella se monta un soporte para
sostener un eje libre paralelo a la plataforma.
   El s´lido r´
       o      ıgido ir´ insertado en dicho eje, que lo atravesar´ por su centro de masas de
                      a                                         a
manera que ´ste punto sea un punto fijo de movimiento.
              e

Grados de libertad y coordenadas generalizadas
  Por el hecho de ser un s´lido r´
                            o     ıgido en el espacio posee 6 grados de libertad, tres de
rotaci´n y tres de traslaci´n.
      o                    o
  El punto fijo le har´ perder sus tres grados de libertad de traslaci´n y el eje que lo
                       a                                              o
atraviesa dejar´ un unico grado de libertad de rotaci´n al s´lido.
               a     ´                                 o     o
  Tras estas consideraciones, podemos expresar la velocidad angular ω0 en t´rminos de
                                                                              e
un sistema de referencia no inercial ligado a la estructura como:

                                 ω0 = ω0 (0 , cos φ , sin φ)                            (3.13)



http://alqua.org/documents/physthones                                                       23
3 Modelos diferenciales




                             Figura 3.4: Montaje experimental




                Figura 3.5: Descomposici´n de la velocidad angular constante
                                        o




24                                                               Proyecto Physthones - 0.1
3.3 El p´ndulo inercial
                                                                           e


Energ´
     ıa
  La energ´ cin´tica la expresamos de manera sencilla en forma tensorial como:
          ıa   e
                    1 ˆ
                 T = ω Iω
                    2
                 ω =ω0 + ω1
                     ω0 = ω0 (0 , cos φ , sin φ)
                          ˙
                    ω1 = φ , 0 , 0
                       I1 0 0
                                 
                 ˆ
                 I =  0 I2 0                                                      (3.14)
                       0 0 I3
                                         I1 0 0       ˙
                                                       
                                                      φ
                    1 ˙
                 T = φ , cos φ , sin φ  0 I2 0   cos φ 
                    2
                                         0 0 I3     sin φ
                    1 ˙     ω2
                   = I1 φ2 + 0 I2 cos2 φ + I3 sin2 φ
                    2        2
  La energ´ cin´tica presenta dos t´rminos, uno cuadr´tico con las velocidades y otro
          ıa   e                   e                  a
que no depende de variaciones temporales de las coordenadas:

                      1 ˙     ω2
                   T = I1 φ2 + 0 I2 cos2 φ + I3 sin2 φ = T2 + T0                    (3.15)
                      2        2
                           T2                    T0
  Situar el centro de masas en un punto fijo nos permite fijar adecuadamente el origen
del potencial gravitatorio para que no aparezca en nuestras ecuaciones.
  El lagrangiano, por tanto, s´lo tiene t´rminos de energ´ cin´tica:
                               o         e               ıa   e
                               1 ˙     ω2
                  L = L2 + L0 = I1 φ2 + 0 I2 cos2 φ + I3 sin2 φ                     (3.16)
                               2        2

Ecuaciones de movimiento
  Ataquemos ahora a la ecuaciones de movimiento:

                         d ∂L ∂L
                     0=         −
                        dt ∂ φ˙    ∂φ
                           ∂L           ˙      ¨
                        ∂t      = ∂t I1 φ = I1 φ
                           ∂φ˙
                          ∂L                                                        (3.17)
                             = ω0 (I2 cos φ sin φ − I3 cos φ sin φ) =
                                 2
                          ∂φ
                          = ω0 (I2 − I3 ) (sin φ cos φ) =
                             2

                           2
                          ω0
                      =      (I2 − I3 ) sin 2φ
                          2


http://alqua.org/documents/physthones                                                  25
3 Modelos diferenciales


  Llegamos a una expresi´n bastante elegante:
                        o
                                         2
                                        ω0
                                  ¨
                               I1 φ −      (I2 − I3 ) sin 2φ = 0                         (3.18)
                                        2

El p´ndulo inercial
    e
   Lo que nos llama la atenci´n al ver la ecuaci´n 3.18 es el enorme parecido que tiene con
                             o                  o
la ecuaci´n del oscilador arm´nico. Adem´s, cuando nos ponemos a estudiar el potencial
         o                    o             a
y encontramos puntos de equilibrio estable lo primero que se nos ocurre es ponerlo a
oscilar.
   Veamos si encontramos algo interesante.

Aproximaci´n para oscilaciones peque˜as Podemos poner el sistema a describir osci-
            o                         n
laciones tan peque˜as en torno a φ0 como para que podamos considerar sin 2φ ≈ 2φ.
                  n
  La ecuaci´n de movimiento se nos queda entonces como un oscilador arm´nico perfec-
            o                                                          o
tamente reconocible:

                                     ¨
                                  I1 φ −ω0 (I2 − I3 ) φ = 0
                                         2
                                                                                         (3.19)
                                  Mi           Ki

  El potencial generalizado del oscilador arm´nico viene dado por:
                                             o

                                  1       ω2
                              Ui = Ki φ2 = 0 (I2 − I3 ) φ2                               (3.20)
                                  2        2
  Vemos que en el proceso de aproximaci´n hemos perdido un t´rmino constante:
                                       o                    e

                                                        2
                                ω2                φ2
                            U ≈− 0        I2   1−           + I3 φ2                      (3.21)
                                 2                2




         Figura 3.6: Aproximaci´n por oscilador arm´nico. Comparaci´n de potenciales.
                               o                   o               o




26                                                                    Proyecto Physthones - 0.1
3.3 El p´ndulo inercial
                                                                              e


Frecuencia caracter´ ıstica del oscilador Tener frente a nosotros un oscilador arm´nico
                                                                                  o
nos pide buscar la frecuencia normal del sistema:

                                           ω0 (I2 − I3 )
                                            2
                                    ωc =
                                     2
                                                                                     (3.22)
                                                I1
   Puede ser divertido jugar con los par´metros del problema de modo que se acople la
                                         a
frecuencia caracter´ıstica del p´ndulo inercial con la frecuencia que le metemos externa-
                                e
mente al sistema para dibujar figuras de Lissajous.
   Si, por ejemplo, I2 − I3 = I1 estas frecuencias se igualar´ y mirando el sistema de
                                                              ıan
perfil ver´ıamos una hermosa elipse (una recta con el desfase adecuado).
   El caso m´s simple al que se nos ocurre tratar de aplicar esto es a la barra delgada en
             a
la que I3 ≈ 0 y I1 = I2 .




                         Figura 3.7: Figuras de Lissajous 1/1 y 1/2

   Exactamente el mismo resultado ser´ el obtenido para cualquier figura plana que pu-
                                        ıa
si´semos en el sistema utilizando un eje de rotaci´n libre distinto de aquel cuyo momento
  e                                               o
de inercia es suma de los otros dos (I2 = I1 + I3 ).
   Parece cosa de magia que obtener esas figuras de Lissajous dependa exclusivamente de
las proporciones geom´tricas del s´lido y no de la frecuencia que imponemos al sistema
                       e           o
no inercial ni de la amplitud con que produzcamos las oscilaciones del p´ndulo inercial.
                                                                            e

3.3.2.   Construcci´n de la simulaci´n
                   o                o
   A continuaci´n vamos a construir una simulaci´n computacional sin la necesidad de
                o                                 o
la aproximaci´n para ´ngulos peque˜os de modo que nos ofrezca soluciones un poco m´s
              o       a            n                                               a
cercanas a la realidad.
   La unica complicaci´n a la hora de llevar este montaje a Python estar´ en expresar
      ´                 o                                                a
correctamente las transformaciones de coordenadas y las relaciones que las ligan.
   Empezaremos como siempre:
#! / u s r / b i n / python
# −∗− c o d i n g : u t f −8 −∗−
from v i s u a l import ∗



http://alqua.org/documents/physthones                                                     27
3 Modelos diferenciales


s c e n e=d i s p l a y ( )
s c e n e . t i t l e = ’ I n e r t i a l Pendulum ’
s c e n e . a u t o s c a l e =0

Defino las dimensiones del trompo:
l 1 =0.7
l 2 =5
l 3 =12.5

El coeficiente que relaciona las frecuencias para un paralelep´
                                                             ıpedo recto es:

                                         wc = w0 (I2 − I3 )/I1
                                          2    2
                                                                                                     (3.23)

c o e f =(( l 3 ∗∗2− l 2 ∗ ∗ 2 ) / ( l 3 ∗∗2+ l 2 ∗ ∗ 2 ) ) ∗∗( −0.5)

dim=l 3 ∗3/4

El coeficiente dim solamente se usa para dar proporciones est´ticas a la representaci´n.
                                                            e                       o
  A continuaci´n definimos la posici´n inicial (´ngulo)
               o                   o           a
p h i 0=2

   Para definir el sistema vamos a utilizar dos sistemas de referencia no inerciales (a parte
del inercial predefinido por el sistema). Uno de ellos soportar´ la plataforma giratoria y
                                                                a
el otro (ligado a ´ste) girar´ con el trompo. Montaremos toda la parafernalia sobre ellos.
                  e          a
# S i st em a de r e f e r e n c i a en r o t a c i o n
SRR=frame ( pos = ( 0 , 0 , 0 ) )
# S i st em a de r e f e r e n c i a d e l trompo
SRP=frame ( frame=SRR)

# Ejes y soporte
e j e s=c u r v e ( pos =[( dim ∗ 3 / 4 , 0 , 0 ) , ( 0 , 0 , 0 ) , ( 0 , dim ∗ 3 / 4 , 0 ) , ( 0 , 0 , 0 )
       , ( 0 , 0 , dim ∗ 3 / 4 ) ] , c o l o r=c o l o r . b l u e )
S o p o r t e 1=box ( frame=SRR, pos =[0,−dim , 0 ] , s i z e =[dim , 0 . 5 , dim ] , c o l o r
     =c o l o r . g r e e n )
S o p o r t e 2=box ( frame=SRR, pos =[dim/2,−dim / 2 , 0 ] , s i z e = [ 0 . 5 , dim
      , 0 . 5 ] , c o l o r=c o l o r . g r e e n )
S o p o r t e 3=box ( frame=SRR, pos=[−dim/2,−dim / 2 , 0 ] , s i z e = [ 0 . 5 , dim
      , 0 . 5 ] , c o l o r=c o l o r . g r e e n )
Eje=c y l i n d e r ( frame=SRR, pos=[−dim / 2 , 0 , ] , a x i s =[dim , 0 , 0 ] , r a d i u s
      =0.2 , c o l o r=c o l o r . g r e e n )

# De fi n o dos b o l a s como marcadores ( no t i e n e n s e n t i d o f i s i c o )
b o l a 1=s p h e r e ( frame=SRP, pos =[0 , l 3 / 2 , 0 ] )



28                                                                          Proyecto Physthones - 0.1
3.4 Breve introducci´n al caos
                                                                                        o


b o l a 2=s p h e r e ( frame=SRP, pos =[0,− l 3 / 2 , 0 ] )
b o l a 1 . r a d i u s =0.5
b o l a 1 . c o l o r=c o l o r . r e d
b o l a 2 . r a d i u s =0.5
b o l a 2 . c o l o r=c o l o r . b l u e

# El trompo :
top=box ( frame=SRP, pos = ( 0 , 0 , 0 ) , s i z e =( l 2 , l 3 , l 1 ) , a x i s =(0 ,0 , l 3 ) ,
   c o l o r=c o l o r . b l u e )

Las bolas las hemos puesto sobre los extremos del trompo s´lo como marcadores para
                                                           o
seguir la trayectoria.
  Ahora terminaremos de preparar el sistema en las condiciones iniciales para empezar
a moverlo:
omega=1.
dt =0.02
p h i=p i /2− p h i 0
phip =0.
phipp=omega ∗ ∗ 2 . ∗ c o e f ∗ s i n ( 2 . ∗ p h i ) / 2 .
SRP . r o t a t e ( frame=SRR, a x i s =( −1 ,0 ,0) , a n g l e=p h i )




                             Figura 3.8: Simulaci´n del p´ndulo inercial
                                                 o       e



3.4.      Breve introducci´n al caos
                          o
   En los a˜os 60, Edward Lorenz trabajaba en un modelo de predicci´n del tiempo en
           n                                                           o
el MIT. Hab´ construido un sistema de doce ecuaciones que ligaban los efectos de la
             ıa
temperatura, presi´n, velocidad del viento... en la din´mica atmosf´rica.
                   o                                   a           e



http://alqua.org/documents/physthones                                                                29
3 Modelos diferenciales


   Mediante simulaci´n num´rica por computador estudiaba c´mo evolucionaba el siste-
                     o       e                               o
ma a partir de unas condiciones iniciales tratando de encontrar pautas y repeticiones.
   En cierta ocasi´n introdujo unos valores iniciales que ya hab´ utilizado antes pero
                  o                                              ıa
redondeados a un menor n´mero de cifras decimales. Esperaba encontrar un resultado
                            u
muy similar al obtenido con esos valores sin redondear pero no fue as´ı.
   El sistema de ecuaciones de Lorenz era completamente determinista, es decir que
no hab´ azar de por medio. De unos ciertos valores iniciales deb´ necesariamente
        ıa                                                          ıan
obtenerse siempre las mismas soluciones. Sin embargo una m´   ınima variaci´n produc´
                                                                            o          ıa
cambios catastr´ficos a largo plazo.
                o
   Al efecto que tienen esos peque˜os cambios de las condiciones iniciales en las condi-
                                   n
ciones finales se lo denomin´ dependencia sensitiva de las condiciones iniciales o m´s
                             o                                                        a
vulgarmente conocido como efecto mariposa por la siguiente reflexi´n de Lorenz para
                                                                     o
explicarlo.
   Imaginemos que un meteor´logo fuese capaz de calcular con infinita precisi´n el estado
                              o                                             o
de la atm´sfera en un instante determinado pero olvidase tener en cuenta el aleteo de
           o
una mariposa. Ese aleteo podr´ inducir al cabo de un cierto tiempo un hurac´n en el
                                ıa                                              a
otro extremo del planeta.

3.4.1.    El atractor de Lorenz
  Si bien hemos dicho que el modelo de Lorenz era de doce ecuaciones, cuando comenz´ o
a estudiar este nuevo campo de la f´ısica y la matem´tica abandonando las predicciones
                                                     a
meteorol´gicas lo redujo a tres ecuaciones no lineales con tres variables.
         o

                 dx                dy                    dz
                    = S (y − x) ;      = x (b − z) − y ;    = xy − rz     (3.24)
                 dt                 dt                   dt
  Aunque el modelo de Lorenz no tiene un an´logo inmediato en la realidad, suele
                                                 a
asemejarse al movimiento cil´
                            ındrico de un gas o l´
                                                 ıquido caliente.

3.4.2.    Construcci´n del m´dulo
                    o       o
  Queremos construir un m´dulo que nos muestre las peculiaridades del atractor de
                             o
Lorenz, para ello pondremos un paquete de part´ıculas muy juntas en un momento deter-
minado en unas condiciones iniciales muy similares y veremos c´mo evoluciona el sistema
                                                              o
hasta convertirse en un caos total.
#! / u s r / b i n / python
# −∗− c o d i n g : u t f −8 −∗−

from v i s u a l import ∗
from random import ∗

s c e n e=d i s p l a y ( )
s c e n e . t i t l e = ’ A t r a c t o r de Lorenz ’
s c e n e . a u t o s c a l e =0



30                                                            Proyecto Physthones - 0.1
3.4 Breve introducci´n al caos
                                                                                         o


scene . range =(100 ,100 ,100)

Aunque utilicemos el paquete random, que sirve para obtener n´meros aleatorios, s´lo lo
                                                               u                  o
usaremos a la hora de fijar las condiciones iniciales para no generar siempre los mismos
resultados.
  Con scene.range definimos el tama˜o de la escena.
                                      n
  Los siguientes valores de r, S y b dan soluciones ca´ticas.
                                                      o
r =28.
S=10.
b=8./3.

Como queremos mostrar unas cuantas part´ ıculas las meteremos en una lista. Crearemos
asimismo una lista para guardar velocidades, trayectorias y posiciones:
tray =[]
bola =[]
vel =[]
pos = [ ]

Decidimos que queremos 5 part´
                             ıculas, y situamos la primera en el punto pos0 (aleatorio).
p a r t s =5.
pos0=v e c t o r ( r a n d i n t ( −10 ,10) , r a n d i n t ( −10 ,10) , r a n d i n t ( −10 ,10) )
def empieza ( ) :
        i =0
        while i < p a r t s :
              t r a y . append ( c u r v e ( c o l o r =( i / p a r t s ,1− i / p a r t s , 0 ) ) )
              b o l a . append ( s p h e r e ( c o l o r =( i / p a r t s ,1− i / p a r t s , 0 ) ) )
              v e l . append ( v e c t o r ( 0 , 0 , 0 ) )
              pos . append ( v e c t o r ( pos0 . x , pos0 . y , pos0 . z +0.01∗ i ) )
              b o l a [ i ] . pos=pos [ i ]
              i+=1

Con este primer bucle (la funci´n empieza) simplemente generaremos cada una de las
                                 o
part´
    ıculas en sus posiciones iniciales (todas muy juntitas).
t=0
f p s =25
dt = 1 . / ( 3 . ∗ f p s )

Ajustamos los par´metros temporales para la animaci´n y empezamos a mover las par-
                 a                                 o
t´
 ıculas.
empieza ( )
while 1 :
    i =0



http://alqua.org/documents/physthones                                                                   31
3 Modelos diferenciales


     while i < p a r t s :
         v e l [ i ] . x=−S∗ pos [ i ] . x+S∗ pos [ i ] . y
         v e l [ i ] . y=−pos [ i ] . x∗ pos [ i ] . z+r ∗ pos [ i ] . x−pos [ i ] . y
         v e l [ i ] . z=pos [ i ] . x∗ pos [ i ] . y−b∗ pos [ i ] . z
         pos [ i ] . x=pos [ i ] . x+v e l [ i ] . x∗ dt
         pos [ i ] . y=pos [ i ] . y+v e l [ i ] . y∗ dt
         pos [ i ] . z=pos [ i ] . z+v e l [ i ] . z ∗ dt
         b o l a [ i ] . pos=pos [ i ]
         t r a y [ i ] . append ( pos [ i ] )
         i+=1

Este bucle recorre todas las part´
                                 ıculas en cada paso del bucle principal.
     t+=dt
     rate ( fps )




                          Figura 3.9: Evoluci´n del atractor de Lorenz
                                             o




32                                                                   Proyecto Physthones - 0.1
4 Modelos determin´
                  ısticos y estoc´sticos
                                 a
   Los modelos estoc´sticos son aquellos que est´n afectados por ruido, es decir, en los
                      a                           a
que interviene el azar. El primer modelo de este tipo en la f´ısica fue propuesto en 1908
por Langevin para describir el movimiento Browniano.
   En el caso del atractor de Lorenz part´  ıamos de algo impepinablemente mecanicista,
unas condiciones iniciales infinitamente bien determinadas ofrec´ resultados infinita-
                                                                   ıan
mente id´nticos. Sin embargo, una m´
          e                           ınima indeterminaci´n en esas condiciones iniciales
                                                            o
introduc´ resultados aparentemente ca´ticos en las soluciones.
          ıa                             o
   En los dos casos que vamos a ver a continuaci´n podr´ decirse que suceder´ lo contra-
                                                 o       ıa                   a
rio. Introduciremos caos en el sistema y ´ste tender´ en cierto modo a auto-organizarse
                                           e         a
matem´gicamente. En el primer caso ser´ un caos un tanto falso al inicio salvo por las
        a                                  a
condiciones iniciales, pero en el siguiente ejemplo un movimiento puramente aleatorio
generar´ algo que tiene un cierto y misterioso orden.
        a


4.1.     Simulaci´n de un gas
                 o
   Por norma general suelen estudiarse en los primeros cursos de f´    ısica la mec´nica y la
                                                                                    a
termodin´mica como si se tratase de dos ramas de la f´
          a                                               ısica totalmente disconexas que
apenas parecen pertenecer a una misma disciplina. Sin embargo, la f´    ısica estad´
                                                                                   ıstica llega
a enlazarlas de un modo bastante elegante y convincente, pero se trata de un desarrollo
relativamente complejo que precisa de conocimientos de cursos bastante avanzados.
   Con el ejemplo que vamos a ver, pretendemos poder explicar algunos conceptos de la
termodin´mica desde la naturaleza at´mica de la materia, enlaz´ndolos con la mec´nica
          a                            o                            a                     a
m´s b´sica de los primeros cursos de f´
  a a                                   ısica.
   Para ello veremos un breve desarrollo de lo necesario de f´
                                                             ısica estad´ıstica compar´ndolo
                                                                                        a
con un desarrollo computacional de los mismos conceptos.

4.1.1.   Precedentes hist´ricos: Teor´ de la gravitaci´n de Le Sage
                         o           ıa               o
   Nicolas Fatio propone en 1960 una simp´tica teor´ cin´tica de la gravitaci´n.
                                             a        ıa  e                   o
   Le Sage contin´a su trabajo y da nombre al modelo. Seg´n su teor´ existen unas
                   u                                          u         ıa,
ciertas particulillas en contante movimiento y velocidades aleatorias que empujan los
cuerpos. La masa de los cuerpos determina su densidad (vista ´sta como si los cuerpos
                                                                e
fuesen de car´cter esponjoso) y hace que m´s o menos corp´sculos puedan atravesarlos.
              a                               a             u
   Se trata de un intento de explicar las leyes de Newton de atracci´n universal con s´lo
                                                                    o                 o
una concepci´n atomista de la materia que logra explicar la ley inversa del cuadrado
              o
pero recurre a feos argumentos “infinitos” para explicar la dependencia con la masa.



                                                                                            33
4 Modelos determin´
                  ısticos y estoc´sticos
                                 a




Figura 4.1: Los corp´sculos son apantallados en una direcci´n y se descompensan los momentos
                     u                                     o
            transferidos por colisiones.


  No obstante, esta teor´ una vez falseada, inspirar´ la teor´ cin´tica de la termodi-
                        ıa                          ıa       ıa   e
n´mica que s´ funcion´.
 a          ı        o

4.1.2.   Teor´ cin´tica
             ıa   e
  La teor´ cin´tica de los gases explica el comportamiento macrosc´pico de estos a
          ıa    e                                                 o
partir de sus propiedades microsc´picas.
                                 o

Hip´tesis cinem´ticas
   o           a
  Para poder aplicar esta teor´ deben cumplirse una serie de hip´tesis en nuestro sis-
                              ıa                                o
tema:
      El sistema ha de ser lo suficientemente grande para considerarlo homog´neo. Cada
                                                                           e
      part´ıcula se visualiza como una esfera maciza en movimiento. Las part´ıculas son
      suficientemente peque˜as comparadas con las distancias intermoleculares.
                              n

      Se supone que no existen fuerzas intermoleculares salvo en el instante de la colisi´n.
                                                                                         o

      Las mol´culas se desplazan libremente chocando el´sticamente entre s´
             e                                         a                  ı.
 Veamos a continuaci´n cu´les ser´ los primeros pasos a la hora de simular este
                    o    a       ıan
modelo:

      Construyamos una caja c´bica de lado 8 con cuidado de que las dimensiones de
                                 u
      las esferas y las paredes se respeten:
      thk = 0 . 3
      side = 4.0
      s 2 = 2∗ s i d e + thk
      s 3 = 2∗ s i d e − thk
      wallR = box ( pos=v e c t o r ( s i d e , 0 , 0 ) , l e n g t h=thk , h e i g h t=s2 ,
          width=s3 , c o l o r = c o l o r . g r e e n )



34                                                              Proyecto Physthones - 0.1
4.1 Simulaci´n de un gas
                                                                                        o


     wallL = box ( pos=v e c t o r (− s i d e , 0 , 0 ) , l e n g t h=thk , h e i g h t=s2 ,
           width=s3 , c o l o r = c o l o r . g r e e n )
     wallB = box ( pos=v e c t o r ( 0 , −s i d e , 0 ) , l e n g t h=s3 , h e i g h t=thk ,
           width=s3 , c o l o r = c o l o r . g r e e n )
     b a l l=s p h e r e ( r a d i u s =0.5)

     Las esferas se mover´n de manera rectil´
                         a                  ınea mientras nada las haga cambiar de
     opini´n:
          o
      b a l l . pos = b a l l . pos + b a l l . v e l o c i t y ∗ t i m e s t e p

     Se producir´n choques el´sticos con las paredes
                a            a
      if ball . x > 4:
          b a l l . v e l o c i t y . x = −b a l l . v e l o c i t y . x
          b a l l . x=2∗4− b a l l . x

     En los choques entre part´
                              ıculas se producir´ un intercambio de momentos:
                                                a
     d i s t a n c e=mag( b a l l l i s t [ i ] . pos− b a l l l i s t [ j ] . pos )
     i f d i s t a n c e < 2∗ b a l l r a d i u s :
           d i r e c t i o n=norm ( b a l l l i s t [ j ] . pos− b a l l l i s t [ i ] . pos )
           v i=dot ( b a l l l i s t [ i ] . v e l o c i t y , d i r e c t i o n )
           v j=dot ( b a l l l i s t [ j ] . v e l o c i t y , d i r e c t i o n )
           exchange=vj−v i
            b a l l l i s t [ i ] . v e l o c i t y= b a l l l i s t [ i ] . v e l o c i t y + exchange ∗
                 direction
            b a l l l i s t [ j ] . v e l o c i t y= b a l l l i s t [ j ] . v e l o c i t y − exchange ∗
                 direction
           o v e r l a p =2∗ b a l l r a d i u s −d i s t a n c e
            b a l l l i s t [ i ] . pos= b a l l l i s t [ i ] . pos − o v e r l a p ∗ d i r e c t i o n
            b a l l l i s t [ j ] . pos= b a l l l i s t [ j ] . pos + o v e r l a p ∗ d i r e c t i o n


  En el sistema habr´ dos magnitudes trascendentales:
                    a
Frecuencia de colisi´n: Frecuencia con que se producen colisiones en el sistema.
                    o
                                              ncol
                                        ν=
                                             t·N
Recorrido libre medio: Longitud media recorrida por una mol´cula entre colisiones.
                                                           e
                                             vm
                                        λ=
                                              ν
  Durante una simulaci´n, son valores que podemos calcular trivialmente mientras que
                        o
en la realidad no son estimables por m´todos directos.
                                      e



http://alqua.org/documents/physthones                                                                   35
4 Modelos determin´
                  ısticos y estoc´sticos
                                 a


4.1.3.    Distribuci´n de velocidades
                    o
  Si consideramos el medio is´tropo, la distribuci´n de velocidades ha de serlo tambi´n.
                              o                   o                                  e
  Para visualizar esto, colocamos todos los vectores velocidad asociados a cada mol´cula
                                                                                   e
en un mismo punto O.
v e l o c i d a d=arrow ( pos = ( 9 , 2 , 0 ) , s h a f t w i d t h =0.1)
v e l o c i d a d . a x i s=b a l l . v e l o c i t y

  Donde los vectores velocidad cortan a una esfera de radio R centrada en O, los llama-
remos puntos figurativos. Su distribuci´n debe ser uniforme:
                                      o
                                  N    N      dN         N
                           n=       =       =    → dN =      dS
                                  S   4πR 2   dS        4πR2
  En polares:
                                                  N
                           dS = RdθR sin θdφ → dN =   sin θdθdφ
                                                  4π
   dN es el n´mero de mol´culas con velocidad entre θ y θ + dθ y entre φ y φ + dφ. Lo
             u           e
llamaremos d θ,φ
             2N



4.1.4.    Magnitud de las velocidades moleculares
  Separando por rangos de velocidad, obtendremos esferas conc´ntricas de puntos figu-
                                                             e
rativos.
  Llamemos dNv a las mol´culas con velocidades comprendidas entre v y v + dv.
                         e
  Finamente, podemos clasificar las mol´culas como mol´culas d3 Nφ,θ,v :
                                      e               e
                                  dNv                         dnv
                    d3 Nφ,θ,v =       sin θdθdφ → d3 nφ,θ,v =     sin θdθdφ
                                   4π                         4π

4.1.5.    Magnitudes
Presi´n: choques contra una pared
     o
  La presi´n es efecto de los choques de las mol´culas del gas contra una pared.
          o                                     e
      Consideremos un elemento de pared dS

      Vamos a contabilizar las mol´culas que chocan contra la pared en funci´n de sus
                                    e                                       o
      velocidades, es decir de qu´ tipo sean (v, φ, theta).
                                 e

      Para que una mol´cula de tipo θ, φ, v choque con dS en un intervalo de tiempo dτ ,
                       e
      debe encontrarse justo antes de ese intervalo en un cilindro oblicuo de generatriz
      L = vdτ inclinado seg´n los ´ngulos φθ.
                           u      a

      Las mol´culas que son de ese tipo:
             e
                                                       dnv
                                         d3 nθ,φ,v =       sin θdθdφ
                                                       4π



36                                                                          Proyecto Physthones - 0.1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1
Physthones 0 1

Más contenido relacionado

La actualidad más candente

Localización y decodificación de códigos de barras en imágenes digitales
Localización y decodificación de códigos de barras en imágenes digitalesLocalización y decodificación de códigos de barras en imágenes digitales
Localización y decodificación de códigos de barras en imágenes digitalesHenry Quilla
 
Matematica ii derivadas e integrales
Matematica ii derivadas e integralesMatematica ii derivadas e integrales
Matematica ii derivadas e integralesFabiana Carnicelli
 
Introduccion a la programacion en c prev
Introduccion a la programacion en c prevIntroduccion a la programacion en c prev
Introduccion a la programacion en c prevjtk1
 
Esquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPEsquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPSotero Ordones
 
Java Desde Cero
Java Desde CeroJava Desde Cero
Java Desde CeroSvai
 
Java desde cero
Java desde ceroJava desde cero
Java desde ceroelenaV29
 

La actualidad más candente (10)

Localización y decodificación de códigos de barras en imágenes digitales
Localización y decodificación de códigos de barras en imágenes digitalesLocalización y decodificación de códigos de barras en imágenes digitales
Localización y decodificación de códigos de barras en imágenes digitales
 
Algebra de lie
Algebra de lieAlgebra de lie
Algebra de lie
 
Matematica ii derivadas e integrales
Matematica ii derivadas e integralesMatematica ii derivadas e integrales
Matematica ii derivadas e integrales
 
ANALISIS
ANALISISANALISIS
ANALISIS
 
Catalogo12
Catalogo12Catalogo12
Catalogo12
 
Introduccion a la programacion en c prev
Introduccion a la programacion en c prevIntroduccion a la programacion en c prev
Introduccion a la programacion en c prev
 
Esquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPEsquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMP
 
Tetralogiaposindustrial
TetralogiaposindustrialTetralogiaposindustrial
Tetralogiaposindustrial
 
Java Desde Cero
Java Desde CeroJava Desde Cero
Java Desde Cero
 
Java desde cero
Java desde ceroJava desde cero
Java desde cero
 

Similar a Physthones 0 1

Introduccion comunicaciones
Introduccion comunicacionesIntroduccion comunicaciones
Introduccion comunicacioneshgm2007
 
Vba excel numericos
Vba excel numericosVba excel numericos
Vba excel numericosJOHN BONILLA
 
Gulp 0.11
Gulp 0.11Gulp 0.11
Gulp 0.111 2d
 
Practica5 bash prog-intro-como
Practica5 bash prog-intro-comoPractica5 bash prog-intro-como
Practica5 bash prog-intro-comoAngie Hernandez
 
Comandos cisco ccna_exploration
Comandos cisco ccna_explorationComandos cisco ccna_exploration
Comandos cisco ccna_explorationWhaleejaa Wha
 
Comandos cisco ccna_exploration
Comandos cisco ccna_explorationComandos cisco ccna_exploration
Comandos cisco ccna_explorationzacc601
 
Comandos cisco ccna_exploration
Comandos cisco ccna_explorationComandos cisco ccna_exploration
Comandos cisco ccna_explorationWhaleejaa Wha
 
Prentice hall piensa en java (bruce eckel) - segunda edicion
Prentice hall   piensa en java (bruce eckel) - segunda edicionPrentice hall   piensa en java (bruce eckel) - segunda edicion
Prentice hall piensa en java (bruce eckel) - segunda edicionojoshua44
 
Software libres y privados
Software libres y privadosSoftware libres y privados
Software libres y privadosLuis0101
 
SOFTWARE LIBRE VS PRIVADO
SOFTWARE LIBRE VS PRIVADOSOFTWARE LIBRE VS PRIVADO
SOFTWARE LIBRE VS PRIVADOJose Clavijo
 
Soft libre vs sof propietario
Soft libre  vs sof propietarioSoft libre  vs sof propietario
Soft libre vs sof propietarioAmaia Alvarez
 
32693
3269332693
32693UTM
 
Software libre vs_propietario
Software libre vs_propietarioSoftware libre vs_propietario
Software libre vs_propietariodimaria12
 
Curso programación y_métodos_numéricos_linux
Curso programación y_métodos_numéricos_linuxCurso programación y_métodos_numéricos_linux
Curso programación y_métodos_numéricos_linuxfabianchopinto
 

Similar a Physthones 0 1 (20)

Manual LyX: Con "L" de LaTeX
Manual LyX: Con "L" de LaTeXManual LyX: Con "L" de LaTeX
Manual LyX: Con "L" de LaTeX
 
Tutorial c18
Tutorial c18Tutorial c18
Tutorial c18
 
Introduccion comunicaciones
Introduccion comunicacionesIntroduccion comunicaciones
Introduccion comunicaciones
 
Vba excel mnumericos1
Vba excel mnumericos1Vba excel mnumericos1
Vba excel mnumericos1
 
Vba excel mnumericos
Vba excel mnumericosVba excel mnumericos
Vba excel mnumericos
 
Vba excel numericos
Vba excel numericosVba excel numericos
Vba excel numericos
 
Gulp 0.11
Gulp 0.11Gulp 0.11
Gulp 0.11
 
Curso de html y phpnuke
Curso de html y phpnukeCurso de html y phpnuke
Curso de html y phpnuke
 
Practica5 bash prog-intro-como
Practica5 bash prog-intro-comoPractica5 bash prog-intro-como
Practica5 bash prog-intro-como
 
Comandos cisco ccna_exploration
Comandos cisco ccna_explorationComandos cisco ccna_exploration
Comandos cisco ccna_exploration
 
Comandos cisco ccna_exploration
Comandos cisco ccna_explorationComandos cisco ccna_exploration
Comandos cisco ccna_exploration
 
Comandos cisco ccna_exploration
Comandos cisco ccna_explorationComandos cisco ccna_exploration
Comandos cisco ccna_exploration
 
Prentice hall piensa en java (bruce eckel) - segunda edicion
Prentice hall   piensa en java (bruce eckel) - segunda edicionPrentice hall   piensa en java (bruce eckel) - segunda edicion
Prentice hall piensa en java (bruce eckel) - segunda edicion
 
Software libres y privados
Software libres y privadosSoftware libres y privados
Software libres y privados
 
Software libre vs_propietario
Software libre vs_propietarioSoftware libre vs_propietario
Software libre vs_propietario
 
SOFTWARE LIBRE VS PRIVADO
SOFTWARE LIBRE VS PRIVADOSOFTWARE LIBRE VS PRIVADO
SOFTWARE LIBRE VS PRIVADO
 
Soft libre vs sof propietario
Soft libre  vs sof propietarioSoft libre  vs sof propietario
Soft libre vs sof propietario
 
32693
3269332693
32693
 
Software libre vs_propietario
Software libre vs_propietarioSoftware libre vs_propietario
Software libre vs_propietario
 
Curso programación y_métodos_numéricos_linux
Curso programación y_métodos_numéricos_linuxCurso programación y_métodos_numéricos_linux
Curso programación y_métodos_numéricos_linux
 

Último

c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 

Último (20)

c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 

Physthones 0 1

  • 1. libro abierto / serie manuales Pablo M. Garc´ Corzo ıa Proyecto Physthones Simulaciones F´ ısicas en Visual Python ¬¬¬¬ 0.1 Un libro libre de Alqua
  • 2.
  • 3. physthones 531(07) ALQ Proyecto Physthones † lomo para ediciones impresas
  • 4. Dedicado A todos los que se molestan en utilizar tizas de colores porque ayudan a ense˜ar n
  • 5. http://alqua.org/documents/physthones Pablo M. Garc´ Corzo ıa ozrocpablo@gmail.com http://alqua.org Proyecto Physthones versi´n 0.1 o 17 de octubre de 2008 alqua,madeincommunity
  • 6. c copyleft Copyright (c) 2008 Pablo M. Garc´ Corzo. ıa Esta obra est´ bajo una licencia Reconocimiento - NoComercial - CompartirIgual 2.5 de Creative Com- a mons. Para ver una copia de esta licencia visite http://creativecommons.org/licenses/by-nc-sa/2.5/es o escriba una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, Califorina 94105, USA. This work is licensend under the Creative Commons Reconocimiento - NoComercial - CompartirIgual 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, Califorina 94105, USA. Serie manuales Area f´ ´ ısica computacional CDU 531(07) Editores Pablo M. Garc´ Corzo ıa ozrocpablo@gmail.com Notas de producci´n o ´ Plantilla latex-book-es-b.tex, v. 0.1 (C) Alvaro Tejero Cantero. compuesto con software libre
  • 7. ´ Indice general Portada I Copyleft VI ´ Indice general VII 1. Objetivos y capacidades (A modo de pr´logo)o 1 1.1. Primeros pasos en la f´ ısica computacional . . . . . . . . . . . . . . . . . . 1 1.2. ¿Por qu´ Python? . . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . 2 1.3. Visual Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1. Instalaci´n del sistema . . . . . . . o . . . . . . . . . . . . . . . . . . 3 2. Toma de contacto: Python y Visual-Python 5 2.1. Python e IDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Visual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2.1. Operando con vectores . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2. Listas y diccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.3. L´gica . . . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . 7 2.2.4. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.5. Rebota Mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3. Modelos diferenciales 11 3.1. Tiro parab´lico . . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . 11 3.1.1. F´ısica del tiro parab´lico . . . . . . . . . . . . . . . o . . . . . . . . 11 3.1.2. Construcci´n de una escena . . . . . . . . . . . . . . o . . . . . . . . 12 3.1.3. Animaci´n . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . . 13 3.1.4. Visualizaci´n de las fuerzas de Coriolis . . . . . . . . o . . . . . . . . 16 3.2. El p´ndulo simple y la aproximaci´n para ´ngulos peque˜os e o a n . . . . . . . . 19 3.2.1. La gracia del p´ndulo . . . . . . . . . . . . . . . . . e . . . . . . . . 19 3.2.2. El oscilador arm´nico . . . . . . . . . . . . . . . . . o . . . . . . . . 19 3.2.3. ¿Es el p´ndulo un oscilador arm´nico? . . . . . . . . e o . . . . . . . . 20 3.2.4. P´ndulo simple y aproximaci´n arm´nica . . . . . . e o o . . . . . . . . 21 3.3. El p´ndulo inercial . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . 23 3.3.1. Un simp´tico s´lido r´ a o ıgido en rotaci´n . . . . . . . . o . . . . . . . . 23 3.3.2. Construcci´n de la simulaci´n . . . . . . . . . . . . . o o . . . . . . . . 27 3.4. Breve introducci´n al caos . . . . . . . . . . . . . . . . . . . o . . . . . . . . 29 3.4.1. El atractor de Lorenz . . . . . . . . . . . . . . . . . . . . . . . . . 30 vii
  • 8. ´ INDICE GENERAL 3.4.2. Construcci´n del m´dulo o o . . . . . . . . . . . . . . . . . . . . . . . 30 4. Modelos determin´ ısticos y estoc´sticos a 33 4.1. Simulaci´n de un gas . . . . . . . . . . . . . . . . . . . . . . . . . . o . . . . 33 4.1.1. Precedentes hist´ricos: Teor´ de la gravitaci´n de Le Sage o ıa o . . . . 33 4.1.2. Teor´ cin´tica . . . . . . . . . . . . . . . . . . . . . . . . . ıa e . . . . 34 4.1.3. Distribuci´n de velocidades . . . . . . . . . . . . . . . . . . o . . . . 36 4.1.4. Magnitud de las velocidades moleculares . . . . . . . . . . . . . . . 36 4.1.5. Magnitudes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.6. Choques el´sticos . . . . . . . . . . . . . . . . . . . . . . . . a . . . . 37 4.1.7. Reversibilidad e irreversibilidad . . . . . . . . . . . . . . . . . . . . 42 4.1.8. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.2. Breve introducci´n a los m´todos Montecarlo . . . . . . . . . . . . o e . . . . 48 4.2.1. Simulaci´n de crecimiento de dendritas . . . . . . . . . . . o . . . . 49 5. Jugando con Visual Python 55 5.1. Visual Pong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.2. Space Rebounder Racing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Bibliograf´ ıa 65 Historia 67 Creative Commons Deed 69 El proyecto libros abiertos de Alqua 71 Otros documentos libres 75 viii Proyecto Physthones - 0.1
  • 9. 1 Objetivos y capacidades (A modo de pr´logo) o Este documento pretende ser una presentaci´n que sirva de gu´ sobre la que construir o ıa un taller de simulaciones f´ısicas con Visual Python. No debe entenderse, por tanto, como un tutorial de Visual Pythonni como un texto de f´ ısica computacional. El proyecto Physthones pretende transmitir un car´cter transgresor e innovador y a parte de ello estar´ en el nuevo paradigma pedag´gico hacker que viene a ser una actua- a o lizaci´n de la academia de Plat´n. o o El hacker no aprende asistiendo a clases magistrales para escuchar la lecci´n, el hacker o decide modificar (hackear) un programa que otro hab´ escrito para adaptarlo a una ıa nueva necesidad y en el camino, a base de e-mails (con el propio autor u otros integrantes de la comunidad, a menudo verdaderos expertos) y b´squedas en la red obtiene los u conocimientos necesarios. Creemos que este modelo encaja a la perfecci´n en la nueva ideolog´ que est´ tratando o ıa a de implantarse en nuestra universidad de menos clases presenciales y m´s trabajo por a parte del alumno. Por eso creemos importante resaltar que lo que queremos conseguir no es tanto un curso sino un taller en el que haya lugar para la interactividad y el desarrollo comunitario. 1.1. Primeros pasos en la f´ ısica computacional La f´ ısica computacional se ha ido convirtiendo en una herramienta de trabajo indis- pensable para cualquier f´ ısico ya sea experimental o te´rico. o La experiencia directa de los integrantes del proyecto nos dec´ que los alumnos (incluso ıa los ya licenciados) no tienen apenas capacidad para sacar provecho a las posibilidades que les brinda un ordenador m´s all´ de el an´lisis estad´ a a a ıstico de datos experimentales (conocimiento adquirido, todo sea dicho, de manera autodidacta por el alumno) y algunos ejercicios meramente acad´micos y poco aplicables de c´lculo num´rico y programaci´n. e a e o Consideramos importante reforzar, pues estos conocimientos en el curr´ ıculum de un f´ ı- sico y si bien no pretendemos alcanzar este objetivo con el presente curso, s´ que podemos ı allanar los primeros pasos en ese camino. No creemos que deba ser nuestro objetivo en este peque˜o curso dar una introducci´n n o formal a la f´ısica computacional. Sin embargo, un ordenador no excesivamente moderno permite obtener resultados suficientemente satisfactorios con los algoritmos m´s sencillos a con s´lo hacer suficientemente peque˜o el paso diferencial y por tanto no se hace necesario o n 1
  • 10. 1 Objetivos y capacidades (A modo de pr´logo) o en esta primera aproximaci´n el uso de t´cnicas sofisticadas de c´lculo num´rico ni o e a e meternos en complicaciones innecesarias. Una primera aproximaci´n a la f´ o ısica computacional integrada en los primeros cursos de f´ ısica puede permitir, por ejemplo, que el alumno vea la mec´nica como algo m´s a a que un peque˜o conjunto de soluciones anal´ n ıticas m´s o menos acad´micas. Chabbay y a e Sherwood introducen estas ideas en su curso de f´ ısica general de primer a˜o de carrera n obteniendo excelentes resultados y proponiendo la experiencia para una reforma del curr´ ıculum de f´ısica en la universidad [3]. 1.2. ¿Por qu´ Python? e Cuando hemos presentado este proyecto en alguna conversaci´n como la elaboraci´n o o de un conjunto de simulaciones f´ ısicas para la docencia, surge inevitablemente la compa- raci´n inmediata con los extendidos “fislets” en Java y suelen sugerir que quiz´ estemos o a reinventando la rueda. Desde luego, hay muchos lenguajes y sistemas posibles para llevar a cabo este pro- yecto, no s´lo los applets de Java promiscuamente distribuidos por internet, tambi´n el o e menos conocido Box2D (ActonScript, Flash) o las opciones de visualizaci´n que integran o cualquiera de los muchos paquetes num´ricos y algebraicos como Matlab, Mathematica, e Maple... Por un lado, quer´ ıamos utilizar software libre (no en vano la idea surgi´ en en el Grupo o de Software Libre) y quer´ ıamos un sistema multiplataforma que pudiese utilizarse en cualquier m´quina. a Otro de los requisitos que le ped´ ıamos al sistema era que fuese lo m´s sencillo posible, a pues quer´ ıamos romper esa “caja negra” en que se convierten a nuestros ojos los fislets java que encontramos por la red. La gran mayor´ de los alumnos que llegan a los primeros ıa cursos de f´ ısica no han programado nada en su vida. Incluso en cursos superiores nos encontramos con que un porcentaje demasiado grande no han ido m´s all´ de los ejercicios a a propuestos en el curso de introducci´n al c´lculo num´rico (actualmente impartido con o a e Matlab en esta casa). Por lo tanto el sistema deb´ ser lo m´s sencillo posible. ıa a Python nos ofrec´ esa sencillez y elegancia como lenguaje de iniciaci´n[5] y adem´s ıa o a una gran cantidad de librer´ y una importante comunidad de usuarios y desarrolladores ıas que lo soportan. 1.3. Visual Python La visualizaci´n y creaci´n de escenas din´micas tridimensionales (y no s´lo el plo- o o a o teando de funciones) pueden tener un gran valor did´ctico en muchos aspectos de la f´ a ısica b´sica como la din´mica del s´lido r´ a a o ıgido, la din´mica de fluidos o el electromagnetismo. a David Scherer crea desde la universidad Carnegie Mellon en el a˜o 2000 un m´dulo de n o gr´ficos tridimensionales para Python extremadamente sencillo de usar llamado Visual. a 2 Proyecto Physthones - 0.1
  • 11. 1.3 Visual Python El programador no tiene que lidiar con la complicaci´n de las capacidades gr´ficas. S´lo o a o debe describir los objetos en un lenguaje algebraico, natural para los f´ ısicos. Con Visual Pythonno s´lo se trata de que se haga sencilla la generaci´n de escenas o o tridimensionales en movimiento, sino que el lenguaje algebraico que utiliza mantiene la coherencia con el utilizado en los cursos tradicionales, no suponiendo su inclusi´n en un o curso de f´ ısica fundamental una extensi´n sensible del temario sino un refuerzo positivo o en el manejo de estas herramientas. 1.3.1. Instalaci´n del sistema o Desde la p´gina web del proyecto Visual Python(http://vpython.org) nos ofrecen unas a instrucciones concisas y claras para realizar una instalaci´n de todo lo necesario para o windows, Linux y Mac con s´lo un par de clicks. o Adem´s, Visual Pythonest´ integrado en los repositorios de paquetes de la mayor´ de a a ıa las distribuciones Linux. http://alqua.org/documents/physthones 3
  • 12. 1 Objetivos y capacidades (A modo de pr´logo) o 4 Proyecto Physthones - 0.1
  • 13. 2 Toma de contacto: Python y Visual-Python No pretendemos convertir esto en un tutorial de python, s´lo dar un breve paseo o explicado sobre c´mo trabajar en este sistema partiendo de cero. o 2.1. Python e IDLE Python es un lenguaje interpretado, por lo que nos brinda la posibilidad de trabajar en sesiones interactivas utiliz´ndolo como una calculadora programable. a No obstante, lo c´modo normalmente ser´ escribir en archivos con cadenas de coman- o a dos (scripts) y pedir al sistema que los interprete todos de golpe. Para programar necesitaremos, pues, el int´rprete de python y un editor de texto. e Como edito podr´ ıamos utilizar cualquiera capaz de leer y escribir en texto plano, como el notepad de windows (no MSWord), emacs, vi, pico, scite... o IDLE, que es el que viene incluido con la distribuci´n de python, est´ especialmente pensado para el tipo o a de tareas que vamos a realizar y nos ayudar´ en determinadas ocasiones. Por ejemplo, a cuando queramos ejecutar el archivo en el que estamos trabajando s´lo tendremos que o pulsar F5. Cuando ejecutemos IDLE, tendremos una ventana con la consola interactiva de python en la que podr´ ıamos hacer, por ejemplo, una cuenta simple. Figura 2.1: Ventana interactiva de IDLE 5
  • 14. 2 Toma de contacto: Python y Visual-Python 2.2. Visual En cuanto a Visual Python, ser´n un m´dulo que debemos cargar en python y nos a o permitir´ dibujar sobre la marcha escenas tridimensionales: a from v i s u a l import ∗ c a j a=box ( pos=v e c t o r ( 4 , 2 , 3 ) , s i z e = ( 8 . , 4 . , 6 . ) , c o l o r=c o l o r . r e d ) b o l a=s p h e r e ( pos=v e c t o r ( 4 , 7 , 3 ) , r a d i u s =2, c o l o r=c o l o r . g r e e n ) La primera l´ınea simplemente le dice a python que queremos utilizar las herramientas de la clase visual (es decir, Visual Python). Lo normal y recomendable en python ser´ ıa llamar a la librer´ simplemente con un import visual. Lo que hacemos al llamarlo con el ıa from es escribir simplemente box(...) en lugar de visual.box(...). Esto es peligroso hacerlo por norma pues dos librer´ diferentes pueden tener funciones con nombres iguales y ıas causar problemas que del otro modo evitar´ ıamos. Sin embargo por comodidad en el tipo de cosas que vamos a hacer utilizaremos este otro m´todo. e Figura 2.2: Nuestro “hola mundo” en python Vemos que el lenguaje es bastante intuitivo. Definiremos las coordenadas con vectores en los que la coordenada x es la horizontal, la y la vertical y la z la perpendicular a la pantalla. Una vez definido un objeto con unas ciertas propiedades, podemos cambiar ´stas sobre e la marcha o a˜adir nuevas que no estuvieran definidas: n caja . s i z e =(8 ,0.1 ,8) c a j a . pos =(0 , −1 ,0) b o l a . pos = ( 0 , 3 , 0 ) b o l a . r a d i u s =1 b o l a . masa=1 b o l a . v e l=v e c t o r (0 , −1 ,0 ) Al definir la velocidad de la bola, hemos especificado que se trata de un vector. En general esto es necesario en Visual Pythonpara poder operar. No es necesario en el caso de las posiciones porque el sistema sabe ya que deben ser vectores, pero en los casos restantes deberemos especificarlo. 6 Proyecto Physthones - 0.1
  • 15. 2.2 Visual 2.2.1. Operando con vectores Con vectores podemos hacer las operaciones b´sicas de suma, producto por un escalar, a producto escalar, producto vectorial, obtener la norma de un vector o su magnitud. a = vector ( 1 . , 2 . , 3 . ) b = vector ( 4 . , 5 . , 6 . ) c=a+b c =3.5∗ a c=dot ( a , b ) c=c r o s s ( a , b ) c=norm ( a ) c=mag( a ) c=mag( a ) ∗∗2 c=a /1 c=a / 1 . Para la exponencial se utiliza en doble asterisco (como en gnuplot). Hay que tener cuidado con las divisiones entre enteros. Aunque python no es tipado (no hay que definir expl´ıcitamente qu´ tipo de variable vamos a usar) s´ que diferencia e ı entre tipos y debemos tener cuidado con eso al operar. 2.2.2. Listas y diccionarios Una cosa b´sica y tremendamente util en python son las listas y los diccionarios. a ´ Una lista es una serie de cosas (variables, objetos, vectores, nuevas listas anidadas...) ordenadas con un ´ındice que empieza en cero: moons = [ Io , Europa , Ganymede , C a l l i s t o ] print moons [ 1 ] Un diccionario es una lista de pares asociados: edad={ ’ M a r g a r i t a ’ : 12 , ’ Pedro ’ : 10 , ’ L u i s ’ : 15 } print edad [ ’ Pedro ] 2.2.3. L´gica o Es una base important´ ısima de todo lenguaje de programaci´n. Supongamos que que- o remos hacer que una pelota rebote en el suelo: s i l a coordenada y de l a p e l o t a e s menor que c e r o : e n t o n c e s su v e l o c i d a d pasa a s e r p o s i t i v a y su p o s i c i ´ n , c e r o . o Llevando esto a la realidad de python: http://alqua.org/documents/physthones 7
  • 16. 2 Toma de contacto: Python y Visual-Python i f b o l a . pos . y < 0 : b o l a . v e l ∗=−1 b o l a . pos . y=0 N´tese que no hay, como en otros lenguajes de programaci´n, un cierre de la condici´n. o o o Python interpreta el indentado de la sintaxis como que todo lo que venga “metido hacia la derecha” del if ser´ lo que deba leer s´lo si la condici´n se satisface. a o o Esto es una gran ventaja pedag´gica para aprender a programar con un orden ade- o cuado. El indentado est´ndar en python es de 4 espacios. a 2.2.4. Bucles Ser´n la base del movimiento. Podemos decir que mientras se cumpla tal condici´n se a o repitan una serie de comandos. En el siguiente ejemplo vemos c´mo dada una velocidad o para una part´ıcula y un intervalo de tiempo peque˜ito (diferencial) podemos animar el n sistema. Es un esbozo de lo que se llama el m´todo de diferencias finitas. e t=0 dt =0.001 while t < 1 0 0 : t=t+dt b o l a . v e l=b o l a . a c e l ∗ dt b o l a . pos=b o l a . v e l ∗ dt Otra opci´n interesante de los bucles es la de recorrer listas con, por ejemplo, cada o una de las part´ ıculas de un sistema. t=0 dt =0.001 while t < 1 0 0 : t=t+dt f o r b o l a in l i s t a b o l a s : b o l a . v e l=b o l a . a c e l ∗ dt b o l a . pos=b o l a . v e l ∗ dt 2.2.5. Rebota Mundo Con lo que hemos aprendido ya podemos construir escenas y animarlas. Veamos una bola que cae por acci´n de la gravedad y rebota en el suelo: o from v i s u a l import ∗ grav=v e c t o r (0 , −10 ,0) b o l a=s p h e r e ( pos = ( 0 , 5 , 0 ) , r a d i u s =1, c o l o r=c o l o r . g r e e n ) s u e l o=box ( s i z e = ( 8 , 0 . 1 , 8 ) , pos =(0 , −1 ,0) , c o l o r=c o l o r . r e d ) 8 Proyecto Physthones - 0.1
  • 17. 2.2 Visual b o l a . v e l=v e c t o r ( 0 , 0 , 0 ) dt =0.01 t=0 while t < 3 0 : t+=dt b o l a . v e l+=grav ∗ dt b o l a . pos+=b o l a . v e l ∗ dt i f b o l a . pos . y < 0 : b o l a . v e l ∗=−1 b o l a . pos . y=0 rate (50) El rate(50) define el n´mero de frames por segundo que deben visualizarse. Sin ´l, u e la animaci´n no ser´ observable. Jugando con este valor y el intervalo de tiempo dt o ıa podemos crear las animaciones en tiempo real. http://alqua.org/documents/physthones 9
  • 18. 2 Toma de contacto: Python y Visual-Python 10 Proyecto Physthones - 0.1
  • 19. 3 Modelos diferenciales En este cap´ ıtulo vamos a ver varios ejemplos de modelos diferenciales. En la f´ ısica se utilizan constantemente modelos descritos a trav´s de ecuaciones dife- e renciales, la mayor´ de los cuales no tienen soluciones anal´ ıa ıticas. Por norma general, en los primeros cursos de f´ ısica s´lo se estudian problemas con o soluciones anal´ ıticas sencillas dejando aquellos cuyas soluciones son m´s complejas para a cursos superiores. De los problemas sin soluciones anal´ ıticas se puede hacer un estudio para obtener datos importantes acerca de su comportamiento y se pueden obtener soluciones aproximadas. A continuaci´n vamos a ver el modo m´s sencillo de obtener una gran cantidad de o a informaci´n de sistemas de ecuaciones diferenciales arbitrarios. o 3.1. Tiro parab´lico o Vamos a construir un ejemplo muy simple que sirva para comenzar a entender el lenguaje y la forma de implementar modelos diferenciales. Si bien las soluciones del tiro parab´lico no debieran tener ya secretos para nosotros nos servir´ para entender el o a m´todo num´rico que vamos a utilizar. e e 3.1.1. F´ ısica del tiro parab´lico o Vamos a tratar este problema con un an´lisis newtoniano lo m´s simple e intuitivo a a posible. Tenemos un sistema de ecuaciones diferenciales tal que: v= dx x = x0 + vdt dt → (3.1) a= dv dt = (0 , −g , 0) v = v0 + adt Donde g es la aceleraci´n de la gravedad (constante). o Partiendo de una posici´n inicial x0 y una velocidad inicial v0 , aplicaremos las ecua- o ciones utilizando un dt arbitrario lo m´s peque˜o posible. Con ello obtenemos la posici´n a n o y velocidad en el instante siguiente. Repetimos el procedimiento tomando como v0 y x0 los nuevos valores obteniendo entonces el siguiente paso, y as´ sucesivamente. Esta es la ı base del bucle que construiremos para la simulaci´n. o Cuando dt → 0 la soluci´n ser´ exacta. o a 11
  • 20. 3 Modelos diferenciales 3.1.2. Construcci´n de una escena o En las primeras l´ıneas debemos llamar a las librer´ de Python necesarias, en este ıas caso s´lo el m´dulo Visual que generar´ los gr´ficos tridimensionales. o o a a Despu´s generamos la ventana donde se visualizar´n los gr´ficos llam´ndola scene y e a a a le daremos como atributos un t´ ıtulo y le decimos que no queremos que haga autoscale. El autoscale lo que hace es mover el zoom de la c´mara para que todos los objetos se a vean. Suele resultar bastante inc´modo y el bot´n central del rat´n nos permitir´ hacer o o o a eso manualmente sobre la marcha. from v i s u a l import ∗ s c e n e=d i s p l a y ( ) scene . t i t l e=’ Tiro p a r a b o l i c o ’ s c e n e . a u t o s c a l e =0 Ahora vamos a definir unos valores iniciales para el problema, que ser´n la posici´n y a o velocidad de la part´ ıcula en el instante inicial. pos=v e c t o r ( −10 ,0 ,0 ) v e l=v e c t o r ( 1 0 , 1 0 , 0 ) A continuaci´n, definimos los objetos que formar´n parte de nuestra escena. B´sica- o a a mente necesitaremos el suelo, que definiremos como un paralelep´ ıpedo (box ) muy estre- cho, el proyectil ser´ una esfera y dibujaremos un cilindro que haga las veces de ca˜´n a no (por motivos meramente est´ticos). e s u e l o=box ( pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . r e d ) cannon=c y l i n d e r ( pos=pos0 , a x i s=norm ( v e l ) ) p r o y e c t i l=s p h e r e ( pos=(r0x , r0y , r 0 z ) , c o l o r=c o l o r . b l u e ) Veamos con un poco m´s de profundidad c´mo se definen los elementos que acabamos a o de mostrar: box : Es un paralelep´ ıpedo recto centrado en pos. El ancho, alto y largo del paralelep´ ıpe- do los definimos con size. Por defecto tiene un eje definido de manera vertical en el sistema de referencia del objeto. Ese eje lo situaremos en el sistema de referencia externo con axis y podemos modificarlo en el sistema de referencia del objeto con up. cylinder : Se trata de un cilindro circular al que definimos la posici´n del centro de su o base, su eje y su radio. sphere : Simplemente necesitamos definir su posici´n y radio. o En este primer ejemplo hemos explicado un poco los objetos que se definen en Visual Python, no obstante en ejemplos posteriores pasaremos por alto en general las descrip- ciones de objetos, entendiendo que la sintaxis es suficientemente autoexplicativa y que hay una excelente documentaci´n del proyecto[6]. o 12 Proyecto Physthones - 0.1
  • 21. 3.1 Tiro parab´lico o 3.1.3. Animaci´n o Ahora viene el momento en que animamos la escena. Hemos puesto un paso dt muy peque˜o, cuanto m´s peque˜o m´s lenta (y m´s precisa) ser´ la simulaci´n, de modo n a n a a a o que s´lo cuando t → 0 la soluci´n coincidir´ exactamente con la trayectoria anal´ o o a ıtica. grav =10 a c e l=v e c t o r (0 , − grav , 0 ) dt =0.001 while p r o y e c t i l . pos >= 0 : v e l=v e l+a c e l ∗ dt pos=pos+v e l ∗ dt p r o y e c t i l . pos=pos t=t+dt El n´cleo de la animaci´n es un bucle while que viene a decir que mientras la coor- u o denada y del proyectil sea mayor o igual que 0 el sistema repita los pasos de dentro del bucle. Esos pasos consisten sencillamente en avanzar intervalos diferenciales y actualizar a cada paso los valores de la posici´n, velocidad y aceleraci´n dados por el sistema de o o ecuaciones diferenciales. Seg´n lo hemos escrito, en un ordenador lento el movimiento se producir´ muy despacio u a y en un ordenador r´pido se producir´ deprisa. Para poder controlar el tiempo de manera a a realista debemos jugar con el n´mero de fotogramas por segundo y el intervalo diferencial. u Para eso se utiliza el comando rate. Si queremos, por ejemplo, 25 fotogramas por segundo (aproximadamente los que ofrece una pantalla de televisi´n) pondremos: o dt = 1 . / 2 5 . ... while . . . ... rate (25) Elementos adicionales: Vectores y trayectoria A continuaci´n vamos a a˜adir algunos elementos m´s a la escena, como la trayectoria o n a de la bola, el vector velocidad y sus componentes. from v i s u a l import ∗ s c e n e=d i s p l a y ( ) scene . t i t l e=’ Tiro p a r a b o l i c o ’ s c e n e . a u t o s c a l e =0 pos=v e c t o r ( −10 ,0 ,0 ) v e l=v e c t o r ( 1 0 , 1 0 , 0 ) grav =10 a c e l=v e c t o r (0 , − grav , 0 ) http://alqua.org/documents/physthones 13
  • 22. 3 Modelos diferenciales Figura 3.1: Nuestro programa de tiro parab´lico en acci´n o o dt = 1 . / 5 0 . t=0 p r o y e c t i l=s p h e r e ( pos=pos , c o l o r=c o l o r . blue , r a d i u s =0.5) s u e l o=box ( pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . r e d ) cannon=c y l i n d e r ( pos=pos , a x i s = ( 1 , 1 , 0 ) ) t r a y e c t o r i a=c u r v e ( c o l o r=c o l o r . w h i t e ) v e l o c i d a d t o t a l=arrow ( c o l o r=c o l o r . red , pos=p r o y e c t i l . pos , a x i s= vel /3.) v e l o c i d a d x=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =( v e l . x/3. ,0 ,0) ) v e l o c i d a d y=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =(0 , vel . y /3. ,0) ) while pos . y >= 0 : v e l=v e l+a c e l ∗ dt pos=pos+v e l ∗ dt t r a y e c t o r i a . append ( pos ) p r o y e c t i l . pos=pos v e l o c i d a d t o t a l . pos=pos v e l o c i d a d x . pos=pos v e l o c i d a d y . pos=pos v e l o c i d a d t o t a l . a x i s=v e l / 3 . v e l o c i d a d x . a x i s=v e c t o r ( v e l . x / 3 . , 0 , 0 ) v e l o c i d a d y . a x i s=v e c t o r ( 0 , v e l . y / 3 . , 0 ) t=t+dt rate (50) 14 Proyecto Physthones - 0.1
  • 23. 3.1 Tiro parab´lico o Gr´fica de energ´ a ıas Ahora vamos a agregar una nueva ventana que nos muestre una gr´fica de con la a evoluci´n de la energ´ cin´tica, potencial y total a lo largo del tiempo. o ıa e from v i s u a l import ∗ from v i s u a l . graph import ∗ s c e n e=d i s p l a y ( ) scene . t i t l e=’ Tiro p a r a b o l i c o ’ s c e n e . a u t o s c a l e =0 s c e n e . background = ( 1 , 1 , 1 ) Veamos c´mo agregar la nueva ventana para la gr´fica o a graph1 = g d i s p l a y ( x=0, y=0, width =300 , h e i g h t =150 , t i t l e = ’E vs . t ’ , x t i t l e= ’ t ’ , y t i t l e= ’E ’ , f o r e g r o u n d=c o l o r . bla ck , background=c o l o r . w h i t e ) Ahora a˜adiremos tres curvas en la ventana de gr´ficas: n a p o t e n c i a l = g c u r v e ( g d i s p l a y=graph1 , c o l o r=c o l o r . b l u e ) c i n e t i c a = g c u r v e ( g d i s p l a y=graph1 , c o l o r=c o l o r . r e d ) e t o t a l = g c u r v e ( g d i s p l a y=graph1 , c o l o r=c o l o r . g r e e n ) pos=v e c t o r ( −10 ,0 ,0 ) v e l=v e c t o r ( 1 0 , 1 0 , 0 ) grav =10 m=1 a c e l=v e c t o r (0 , − grav , 0 ) dt = 1 . / 5 0 . t=0 p r o y e c t i l=s p h e r e ( pos=pos , c o l o r=c o l o r . blue , r a d i u s =0.5) s u e l o=box ( pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . y e l l o w ) cannon=c y l i n d e r ( pos=pos , a x i s = ( 1 , 1 , 0 ) ) t r a y e c t o r i a=c u r v e ( c o l o r=c o l o r . b l a c k ) v e l o c i d a d t o t a l=arrow ( c o l o r=c o l o r . red , pos=p r o y e c t i l . pos , a x i s= vel /3.) v e l o c i d a d x=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =( v e l . x/3. ,0 ,0) ) v e l o c i d a d y=arrow ( c o l o r=c o l o r . green , pos=p r o y e c t i l . pos , a x i s =(0 , vel . y /3. ,0) ) while pos . y >= 0 : v e l=v e l+a c e l ∗ dt pos=pos+v e l ∗ dt t r a y e c t o r i a . append ( pos ) http://alqua.org/documents/physthones 15
  • 24. 3 Modelos diferenciales p r o y e c t i l . pos=pos v e l o c i d a d t o t a l . pos=pos v e l o c i d a d x . pos=pos v e l o c i d a d y . pos=pos v e l o c i d a d t o t a l . a x i s=v e l / 3 . v e l o c i d a d x . a x i s=v e c t o r ( v e l . x / 3 . , 0 , 0 ) v e l o c i d a d y . a x i s=v e c t o r ( 0 , v e l . y / 3 . , 0 ) Y a˜adimos f´cilmente puntos a las gr´ficas n a a c i n e t i c a . p l o t ( pos=(t , 0 . 5 ∗m∗mag2 ( v e l ) ) ) p o t e n c i a l . p l o t ( pos=(t ,m∗ grav ∗ p r o y e c t i l . pos . y ) ) e t o t a l . p l o t ( pos=(t ,m∗ grav ∗ p r o y e c t i l . pos . y +0.5∗m∗mag2 ( v e l ) ) ) t=t+dt rate (50) Figura 3.2: Tiro parab´lico con gr´fica de energ´ o a ıas 3.1.4. Visualizaci´n de las fuerzas de Coriolis o Con lo que sabemos y un poquito de imaginaci´n es sencillo poner el sistema a rotar o y agregar efectos de coriolis, que vendr´n descritos sencillamente como: a  −mω × (ω × r) → Centr´ ıfuga  F = −2mω × v → Coriolis (3.2) −mω × r → Azimutal ˙  from v i s u a l import ∗ s c e n e=d i s p l a y ( ) scene . t i t l e=’ C o r i o l i s ’ s c e n e . a u t o s c a l e =0 s c e n e . background = ( 1 , 1 , 1 ) # V e l o c i d a d de r o t a c i o n omega =0.0 16 Proyecto Physthones - 0.1
  • 25. 3.1 Tiro parab´lico o # I r a aumentandola en . . . domega =0.00005 # Hasta una omega maxima de . . . omegamax=0.05 # Nos sentamos en e l s i s t e m a de r e f e r e n c i a no i n e r c i a l ? # 1 no # −1 s i i n e r c i a l =−1 chorros =[] SRNI=frame ( ) box ( frame=SRNI , pos =(0 , −1 ,0) , s i z e = ( 2 5 , 0 . 1 , 2 5 ) , c o l o r=c o l o r . yellow ) c y l i n d e r ( frame=SRNI , pos =( −10 ,0 ,0) , a x i s = ( 1 , 2 , 0 ) , r a d i u s =0.5) c y l i n d e r ( frame=SRNI , pos = ( 1 0 , 0 , 0 ) , a x i s =( −1 ,2 ,0) , r a d i u s =0.5) box ( frame=SRNI , pos =( −10 ,0 ,0) , s i z e = ( 2 , 2 , 2 ) , c o l o r=c o l o r . w h i t e ) box ( frame=SRNI , pos = ( 1 0 , 0 , 0 ) , s i z e = ( 2 , 2 , 2 ) , c o l o r=c o l o r . w h i t e ) l e y e n d a=l a b e l ( t e x t=”Omega=”+s t r ( omega ) , pos = ( 2 , 7 , 2 ) ) def d i s p a r a ( c h o r r o s ) : b o l a 1=s p h e r e ( frame=SRNI , pos=v e c t o r ( −10 ,0 ,0 ) , c o l o r=c o l o r . blue , r a d i u s =0.3) b o l a 2=s p h e r e ( frame=SRNI , pos=v e c t o r ( 1 0 , 0 , 0 ) , c o l o r=c o l o r . blue , r a d i u s =0.3) c h o r r o s . append ( [ bola1 , v e c t o r ( 5 , 1 0 , 0 ) ] ) c h o r r o s . append ( [ bola2 , v e c t o r ( −5 ,1 0 ,0 ) ] ) return c h o r r o s def r e c o l o c a ( i ) : if i [ 1 ] . x > 0: i [ 0 ] . pos=v e c t o r ( −10 ,0 ,0 ) i [1]= vector (5 ,10 ,0) else : i [ 0 ] . pos=v e c t o r ( 1 0 , 0 , 0 ) i [ 1 ] = v e c t o r ( −5 ,1 0 ,0 ) return i c h o r r o s=d i s p a r a ( c h o r r o s ) grav =10 m=1 #a c e l=v e c t o r (0 , − grav , 0 ) dt = 1 . / 5 0 . t=0 f r e c =0.1 Omega=v e c t o r ( 0 , omega , 0 ) dOmega=v e c t o r ( 0 , domega , 0 ) d e n t r o=1 while t r u e : http://alqua.org/documents/physthones 17
  • 26. 3 Modelos diferenciales f o r i in c h o r r o s : r=v e c t o r ( i [ 0 ] . pos . x , 0 , 0 ) a c e l=c r o s s (Omega , c r o s s (Omega , i [ 0 ] . pos ) ) +2∗ c r o s s (Omega , r )+v e c t o r (0 , − grav , 0 )+c r o s s ( dOmega , r ) i [ 0 ] . pos+=i [ 1 ] ∗ dt i [1]+= a c e l ∗ dt i f i [ 0 ] . pos . y <= −5: d e n t r o=0 i=r e c o l o c a ( i ) t=t+dt i f t>=f r e c and d e n t r o == 1 : t=0 c h o r r o s=d i s p a r a ( c h o r r o s ) i f i n e r c i a l == −1: SRNI . r o t a t e ( a n g l e=omega∗ dt , a x i s = ( 0 , 1 , 0 ) ) rate (50) i f omega < omegamax : omega+=domega Omega=v e c t o r ( 0 , omega , 0 ) l e y e n d a . t e x t= ’Omega= ’+s t r ( omega ) 18 Proyecto Physthones - 0.1
  • 27. 3.2 El p´ndulo simple y la aproximaci´n para ´ngulos peque˜os e o a n 3.2. El p´ndulo simple y la aproximaci´n para ´ngulos e o a peque˜os n 3.2.1. La gracia del p´ndulo e Suele contarse que todo comenz´ con un aburrido Galileo oyendo misa en la catedral de o Pisa. Una l´mpara que hab´ sido empujada por un monaguillo al encenderla comenz´ a a ıa o describir unas oscilaciones que sin duda ten´ m´s inter´s para Galileo que las palabras ıan a e del sacerdote. Midi´ el per´ o ıodo de las oscilaciones de la l´mpara usando como reloj a los latidos de su coraz´n y qued´ fascinado al comprobar que aunque las oscilaciones o o descritas por la l´mpara eran cada vez menores, dicho per´ a ıodo se manten´ tozudamente ıa constante. Al llegar a casa, amarr´ una piedra a una cuerda y la colg´ del techo para observar su o o movimiento. Lo hizo con diferentes cuerdas y piedras y su sorpresa no pudo ser mayor al descubrir que tampoco importaba lo gorda que fuese la piedra, sino unicamente la ´ longitud de la cuerda. Antes de abandonar definitivamente su carrera como m´dico, Galileo dej´ su legado en e o ese mundo con el “puls´metro”, que no era m´s que usar el p´ndulo como regla de medida o a e para tomar el pulso a los pacientes. Invirti´ el proceso que comenzara en la catedral. o El p´ndulo fue el sistema experimental que inspir´ las leyes de ca´ de los cuerpos e o ıda de Galileo, rompiendo por fin la idea aristot´lica de que una bola de hierro caer´ m´s e ıa a r´pido que una de madera. Hab´ nacido el nuevo paradigma, “la edad del p´ndulo”. a ıa e Naturalmente, luego llegar´ los famosos (aunque supuestamente ficticios) experimen- ıan tos de Galileo arrojando pesos desde la torre de Pisa, aunque eso fue s´lo un segundo o plato, quiz´ m´s adornado y aplaudido, pero nada interesante comparado con la magni- a a ficencia de un p´ndulo. e Observar lo que Galileo supuestamente mostr´ desde la torre de Pisa era muy compli- o cado. Las cosas ca´ demasiado r´pido por aquel entonces. ıan a Las ligaduras (las del p´ndulo y las del plano inclinado) fueron las que permitieron a e Galileo hacer caer los cuerpos lo suficientemente despacio como para tomar medidas con una “clepsidra”, estudiar su din´mica y predecir lo que suceder´ al arrojarlos desde la a ıa torre de Pisa. 3.2.2. El oscilador arm´nico o Una manera de definir un oscilador arm´nico es decir que se trata de un movimiento o con un tiempo caracter´ ıstico al que llamaremos per´ ıodo (T ) en el que el sistema vuelve al estado de movimiento inicial: x(t + T ) = x(t) (3.3) Aplicando Lagrange sobre dicho sistema, y considerando para simplificar que el origen http://alqua.org/documents/physthones 19
  • 28. 3 Modelos diferenciales de coordenadas coincide con el m´ ınimo de potencial (U (x = 0) = 0): 1 T (x) = mx2 ˙ 2 1 U (x) = kx2 2 (3.4) L=T −U d ∂L ∂L − =0 ˙ dt ∂ q ∂q donde estamos denotando x = dx ˙ dt Obtenemos f´cilmente la ecuaci´n de movimiento: a o m¨ + kx = 0 x (3.5) dx2 donde x = ¨ dt2 Llamando ω = 2π T = k m a la frecuencia, que es un par´metro inversamente propor- a cional al per´ ıodo, x + w2 x = 0 ¨ (3.6) Las soluciones para este tipo de potencial son de tipo arm´nico, est´n bien estudiadas o a y son sencillas de tratar: x = Asin(ωt)   o ´ una c. lineal: x(t) = Acos(ωt) + Bsin(ωt) (3.7) x = Acos(ωt)  3.2.3. ¿Es el p´ndulo un oscilador arm´nico? e o Un p´ndulo es, sencillamente una masa pendiente de un hilo. Para estudiar su din´mica e a hemos de considerar el hilo como una ligadura que expresamos matem´ticamente como: a x = −L sin φ ˙ x = −Lφ cos φ ˙ → ˙ sin φ (3.8) y = −L cos φ y = Lφ ˙ A continuaci´n procedemos a un an´lisis lagrangiano del sistema situando el origen o a de potenciales en el punto m´s bajo del p´ndulo. a e 1 1 ˙ 1 ˙ T = mx2 + y 2 = mL2 φ2 sin2 φ + cos2 φ = mL2 φ2 ˙ ˙ 2 2 2 U =mgh = mgL (1 − cos φ) (3.9) 1 ˙ L = mL2 φ2 − mgL (1 − cos φ) 2 20 Proyecto Physthones - 0.1
  • 29. 3.2 El p´ndulo simple y la aproximaci´n para ´ngulos peque˜os e o a n ∂L ˙ =mL2 φ ˙ ∂φ d ¨ = mL2 φ dt ∂L (3.10) = − mgL sin φ ∂φ d ∂L ∂L ¨ − = 0 →mL2 φ + mgL sin φ = 0 dt ˙ ∂φ ∂φ La ecuaci´n diferencial que describe la din´mica del p´ndulo simple es, pues: o a e ¨ mL2 φ + mgL sin φ = 0 (3.11) Que es bastante compleja comparada con la ecuaci´n del oscilador arm´nico (a pesar o o de ser tan parecidas) ya que para resolverla se requieren funciones el´ ıpticas. No obstante se puede hacer la llamada aproximaci´n para oscilaciones peque˜as que o n consiste b´sicamente en aproximar el seno por el ´ngulo sin φ ≈ φ. a a Con ello, es inmediato obtener resultados aplicando las soluciones conocidas del osci- lador arm´nico. o ¨ mL2 φ + mgLφ = 0 (3.12) Sin embargo, no nos queda claro exactamente hasta qu´ punto es buena esta aproxi- e maci´n (c´mo de peque˜os tienen que ser esos ´ngulos) y, sobre todo, qu´ significa el o o n a e hecho de que la apliquemos. ¿C´mo se comporta el sistema en realidad y c´mo lo hace o o nuestra aproximaci´n algebraica? o A veces, alumnos que hemos estudiado el p´ndulo simple hasta la saciedad nos he- e mos quedado intrigados al hacernos esta pregunta que deber´ resultarnos tan obvia. ıa Construyamos una simulaci´n sencilla que nos aclare las ideas. o 3.2.4. P´ndulo simple y aproximaci´n arm´nica e o o Vamos a construir una simulaci´n, en principio, de un p´ndulo simple. o e #! / u s r / b i n / python from v i s u a l import ∗ s c e n e=d i s p l a y ( ) s c e n e . t i t l e = ’ Pendulo s i m p l e ’ s c e n e . a u t o s c a l e =0 Queremos introducir un ´ngulo inicial φ0 (en radianes) desde el que activar el p´ndulo a e con una velocidad inicial nula. p h i 0=p i ∗ 0 . 1 http://alqua.org/documents/physthones 21
  • 30. 3 Modelos diferenciales A continuaci´n damos valores a los par´metros del sistema y definimos nuestro dt o a como paso m=1. g =10. l =4. dt = 1 . / 5 0 . Queremos construir el p´ndulo como un cilindro estrechito y una esfera en el extremo. e Para manejar varios objetos como uno s´lo m´s complejo es util utilizar los frames. Un o a ´ frame har´ el papel de un sistema de referencia de modo que los objetos que defina- a mos como pertenecientes a ese frame utilizar´n coordenadas propias a ese sistema de a referencia y se mover´ solidariamente con ´l. ıan e SR=frame ( ) masa=s p h e r e ( frame=SR , pos =(0. , − l , 0 . ) , r a d i u s =0.2 , c o l o r=c o l o r . b l u e ) h i l o=c y l i n d e r ( frame=SR , a x i s=masa . pos , r a d i u s =0.05 , c o l o r=c o l o r . blue ) A continuaci´n, vamos a preparar nuestra coordenada φ en su posici´n inicial y su o o derivada respecto del tiempo ajustada a cero. Colocaremos el sistema de referencia que contiene al p´ndulo en su posici´n inicial e o gir´ndolo un ´ngulo φ en torno a un eje perpendicular al plano de la pantalla: a a p h i=p h i 0 phip=0 SR . r o t a t e ( a x i s = ( 0 , 0 , 1 ) , a n g l e=p h i ) Finalmente queda plantear el bucle que anima la escena teniendo en cuenta que en ˙ cada paso diferencial lo que hacemos es rotar el sistema de referencia un ´ngulo dφ = φdt a while 1 : phipp=−(m∗ g∗ l ) ∗ s i n ( p h i ) phip=phip+phipp ∗ dt p h i=p h i+phip ∗ dt SR . r o t a t e ( a x i s = ( 0 , 0 , 1 ) , a n g l e=phip ∗ dt ) rate (50) Si, sencillamente, sustituy´semos la l´ e ınea phipp=−(m∗ g∗ l ) ∗ s i n ( p h i ) por phipp=−(m∗ g∗ l ) ∗ p h i 22 Proyecto Physthones - 0.1
  • 31. 3.3 El p´ndulo inercial e Obtendr´ıamos la simulaci´n del problema en aproximaci´n para oscilaciones peque˜as. o o n Puede ser pedag´gico dibujar dos p´ndulos de diferente color superpuestos con una o e de las soluciones cada uno para compararlos en tiempo real y ver cu´l es exactamente el a significado de hacer la aproximaci´n para oscilaciones peque˜as. o n Figura 3.3: Comparaci´n de un p´ndulo simple con y sin aproximaci´n para oscilaciones peque˜as o e o n 3.3. El p´ndulo inercial e En la mec´nica del s´lido r´ a o ıgido, donde aparecen frecuentemente osciladores arm´nicos, o se une a la posibilidad de simular soluciones num´ricas, la capacidad de Visual Pythonde e visualizar escenas tridimensionales manejando por parte del usuario diferentes sistemas de referencia. 3.3.1. Un simp´tico s´lido r´ a o ıgido en rotaci´n o El montaje propuesto consta sencillamente de una plataforma horizontal que haremos girar con una velocidad angular constante ω0 . Sobre ella se monta un soporte para sostener un eje libre paralelo a la plataforma. El s´lido r´ o ıgido ir´ insertado en dicho eje, que lo atravesar´ por su centro de masas de a a manera que ´ste punto sea un punto fijo de movimiento. e Grados de libertad y coordenadas generalizadas Por el hecho de ser un s´lido r´ o ıgido en el espacio posee 6 grados de libertad, tres de rotaci´n y tres de traslaci´n. o o El punto fijo le har´ perder sus tres grados de libertad de traslaci´n y el eje que lo a o atraviesa dejar´ un unico grado de libertad de rotaci´n al s´lido. a ´ o o Tras estas consideraciones, podemos expresar la velocidad angular ω0 en t´rminos de e un sistema de referencia no inercial ligado a la estructura como: ω0 = ω0 (0 , cos φ , sin φ) (3.13) http://alqua.org/documents/physthones 23
  • 32. 3 Modelos diferenciales Figura 3.4: Montaje experimental Figura 3.5: Descomposici´n de la velocidad angular constante o 24 Proyecto Physthones - 0.1
  • 33. 3.3 El p´ndulo inercial e Energ´ ıa La energ´ cin´tica la expresamos de manera sencilla en forma tensorial como: ıa e 1 ˆ T = ω Iω 2 ω =ω0 + ω1 ω0 = ω0 (0 , cos φ , sin φ) ˙ ω1 = φ , 0 , 0 I1 0 0   ˆ I =  0 I2 0  (3.14) 0 0 I3 I1 0 0 ˙    φ 1 ˙ T = φ , cos φ , sin φ  0 I2 0   cos φ  2 0 0 I3 sin φ 1 ˙ ω2 = I1 φ2 + 0 I2 cos2 φ + I3 sin2 φ 2 2 La energ´ cin´tica presenta dos t´rminos, uno cuadr´tico con las velocidades y otro ıa e e a que no depende de variaciones temporales de las coordenadas: 1 ˙ ω2 T = I1 φ2 + 0 I2 cos2 φ + I3 sin2 φ = T2 + T0 (3.15) 2 2 T2 T0 Situar el centro de masas en un punto fijo nos permite fijar adecuadamente el origen del potencial gravitatorio para que no aparezca en nuestras ecuaciones. El lagrangiano, por tanto, s´lo tiene t´rminos de energ´ cin´tica: o e ıa e 1 ˙ ω2 L = L2 + L0 = I1 φ2 + 0 I2 cos2 φ + I3 sin2 φ (3.16) 2 2 Ecuaciones de movimiento Ataquemos ahora a la ecuaciones de movimiento: d ∂L ∂L 0= − dt ∂ φ˙ ∂φ ∂L ˙ ¨ ∂t = ∂t I1 φ = I1 φ ∂φ˙ ∂L (3.17) = ω0 (I2 cos φ sin φ − I3 cos φ sin φ) = 2 ∂φ = ω0 (I2 − I3 ) (sin φ cos φ) = 2 2 ω0 = (I2 − I3 ) sin 2φ 2 http://alqua.org/documents/physthones 25
  • 34. 3 Modelos diferenciales Llegamos a una expresi´n bastante elegante: o 2 ω0 ¨ I1 φ − (I2 − I3 ) sin 2φ = 0 (3.18) 2 El p´ndulo inercial e Lo que nos llama la atenci´n al ver la ecuaci´n 3.18 es el enorme parecido que tiene con o o la ecuaci´n del oscilador arm´nico. Adem´s, cuando nos ponemos a estudiar el potencial o o a y encontramos puntos de equilibrio estable lo primero que se nos ocurre es ponerlo a oscilar. Veamos si encontramos algo interesante. Aproximaci´n para oscilaciones peque˜as Podemos poner el sistema a describir osci- o n laciones tan peque˜as en torno a φ0 como para que podamos considerar sin 2φ ≈ 2φ. n La ecuaci´n de movimiento se nos queda entonces como un oscilador arm´nico perfec- o o tamente reconocible: ¨ I1 φ −ω0 (I2 − I3 ) φ = 0 2 (3.19) Mi Ki El potencial generalizado del oscilador arm´nico viene dado por: o 1 ω2 Ui = Ki φ2 = 0 (I2 − I3 ) φ2 (3.20) 2 2 Vemos que en el proceso de aproximaci´n hemos perdido un t´rmino constante: o e 2 ω2 φ2 U ≈− 0 I2 1− + I3 φ2 (3.21) 2 2 Figura 3.6: Aproximaci´n por oscilador arm´nico. Comparaci´n de potenciales. o o o 26 Proyecto Physthones - 0.1
  • 35. 3.3 El p´ndulo inercial e Frecuencia caracter´ ıstica del oscilador Tener frente a nosotros un oscilador arm´nico o nos pide buscar la frecuencia normal del sistema: ω0 (I2 − I3 ) 2 ωc = 2 (3.22) I1 Puede ser divertido jugar con los par´metros del problema de modo que se acople la a frecuencia caracter´ıstica del p´ndulo inercial con la frecuencia que le metemos externa- e mente al sistema para dibujar figuras de Lissajous. Si, por ejemplo, I2 − I3 = I1 estas frecuencias se igualar´ y mirando el sistema de ıan perfil ver´ıamos una hermosa elipse (una recta con el desfase adecuado). El caso m´s simple al que se nos ocurre tratar de aplicar esto es a la barra delgada en a la que I3 ≈ 0 y I1 = I2 . Figura 3.7: Figuras de Lissajous 1/1 y 1/2 Exactamente el mismo resultado ser´ el obtenido para cualquier figura plana que pu- ıa si´semos en el sistema utilizando un eje de rotaci´n libre distinto de aquel cuyo momento e o de inercia es suma de los otros dos (I2 = I1 + I3 ). Parece cosa de magia que obtener esas figuras de Lissajous dependa exclusivamente de las proporciones geom´tricas del s´lido y no de la frecuencia que imponemos al sistema e o no inercial ni de la amplitud con que produzcamos las oscilaciones del p´ndulo inercial. e 3.3.2. Construcci´n de la simulaci´n o o A continuaci´n vamos a construir una simulaci´n computacional sin la necesidad de o o la aproximaci´n para ´ngulos peque˜os de modo que nos ofrezca soluciones un poco m´s o a n a cercanas a la realidad. La unica complicaci´n a la hora de llevar este montaje a Python estar´ en expresar ´ o a correctamente las transformaciones de coordenadas y las relaciones que las ligan. Empezaremos como siempre: #! / u s r / b i n / python # −∗− c o d i n g : u t f −8 −∗− from v i s u a l import ∗ http://alqua.org/documents/physthones 27
  • 36. 3 Modelos diferenciales s c e n e=d i s p l a y ( ) s c e n e . t i t l e = ’ I n e r t i a l Pendulum ’ s c e n e . a u t o s c a l e =0 Defino las dimensiones del trompo: l 1 =0.7 l 2 =5 l 3 =12.5 El coeficiente que relaciona las frecuencias para un paralelep´ ıpedo recto es: wc = w0 (I2 − I3 )/I1 2 2 (3.23) c o e f =(( l 3 ∗∗2− l 2 ∗ ∗ 2 ) / ( l 3 ∗∗2+ l 2 ∗ ∗ 2 ) ) ∗∗( −0.5) dim=l 3 ∗3/4 El coeficiente dim solamente se usa para dar proporciones est´ticas a la representaci´n. e o A continuaci´n definimos la posici´n inicial (´ngulo) o o a p h i 0=2 Para definir el sistema vamos a utilizar dos sistemas de referencia no inerciales (a parte del inercial predefinido por el sistema). Uno de ellos soportar´ la plataforma giratoria y a el otro (ligado a ´ste) girar´ con el trompo. Montaremos toda la parafernalia sobre ellos. e a # S i st em a de r e f e r e n c i a en r o t a c i o n SRR=frame ( pos = ( 0 , 0 , 0 ) ) # S i st em a de r e f e r e n c i a d e l trompo SRP=frame ( frame=SRR) # Ejes y soporte e j e s=c u r v e ( pos =[( dim ∗ 3 / 4 , 0 , 0 ) , ( 0 , 0 , 0 ) , ( 0 , dim ∗ 3 / 4 , 0 ) , ( 0 , 0 , 0 ) , ( 0 , 0 , dim ∗ 3 / 4 ) ] , c o l o r=c o l o r . b l u e ) S o p o r t e 1=box ( frame=SRR, pos =[0,−dim , 0 ] , s i z e =[dim , 0 . 5 , dim ] , c o l o r =c o l o r . g r e e n ) S o p o r t e 2=box ( frame=SRR, pos =[dim/2,−dim / 2 , 0 ] , s i z e = [ 0 . 5 , dim , 0 . 5 ] , c o l o r=c o l o r . g r e e n ) S o p o r t e 3=box ( frame=SRR, pos=[−dim/2,−dim / 2 , 0 ] , s i z e = [ 0 . 5 , dim , 0 . 5 ] , c o l o r=c o l o r . g r e e n ) Eje=c y l i n d e r ( frame=SRR, pos=[−dim / 2 , 0 , ] , a x i s =[dim , 0 , 0 ] , r a d i u s =0.2 , c o l o r=c o l o r . g r e e n ) # De fi n o dos b o l a s como marcadores ( no t i e n e n s e n t i d o f i s i c o ) b o l a 1=s p h e r e ( frame=SRP, pos =[0 , l 3 / 2 , 0 ] ) 28 Proyecto Physthones - 0.1
  • 37. 3.4 Breve introducci´n al caos o b o l a 2=s p h e r e ( frame=SRP, pos =[0,− l 3 / 2 , 0 ] ) b o l a 1 . r a d i u s =0.5 b o l a 1 . c o l o r=c o l o r . r e d b o l a 2 . r a d i u s =0.5 b o l a 2 . c o l o r=c o l o r . b l u e # El trompo : top=box ( frame=SRP, pos = ( 0 , 0 , 0 ) , s i z e =( l 2 , l 3 , l 1 ) , a x i s =(0 ,0 , l 3 ) , c o l o r=c o l o r . b l u e ) Las bolas las hemos puesto sobre los extremos del trompo s´lo como marcadores para o seguir la trayectoria. Ahora terminaremos de preparar el sistema en las condiciones iniciales para empezar a moverlo: omega=1. dt =0.02 p h i=p i /2− p h i 0 phip =0. phipp=omega ∗ ∗ 2 . ∗ c o e f ∗ s i n ( 2 . ∗ p h i ) / 2 . SRP . r o t a t e ( frame=SRR, a x i s =( −1 ,0 ,0) , a n g l e=p h i ) Figura 3.8: Simulaci´n del p´ndulo inercial o e 3.4. Breve introducci´n al caos o En los a˜os 60, Edward Lorenz trabajaba en un modelo de predicci´n del tiempo en n o el MIT. Hab´ construido un sistema de doce ecuaciones que ligaban los efectos de la ıa temperatura, presi´n, velocidad del viento... en la din´mica atmosf´rica. o a e http://alqua.org/documents/physthones 29
  • 38. 3 Modelos diferenciales Mediante simulaci´n num´rica por computador estudiaba c´mo evolucionaba el siste- o e o ma a partir de unas condiciones iniciales tratando de encontrar pautas y repeticiones. En cierta ocasi´n introdujo unos valores iniciales que ya hab´ utilizado antes pero o ıa redondeados a un menor n´mero de cifras decimales. Esperaba encontrar un resultado u muy similar al obtenido con esos valores sin redondear pero no fue as´ı. El sistema de ecuaciones de Lorenz era completamente determinista, es decir que no hab´ azar de por medio. De unos ciertos valores iniciales deb´ necesariamente ıa ıan obtenerse siempre las mismas soluciones. Sin embargo una m´ ınima variaci´n produc´ o ıa cambios catastr´ficos a largo plazo. o Al efecto que tienen esos peque˜os cambios de las condiciones iniciales en las condi- n ciones finales se lo denomin´ dependencia sensitiva de las condiciones iniciales o m´s o a vulgarmente conocido como efecto mariposa por la siguiente reflexi´n de Lorenz para o explicarlo. Imaginemos que un meteor´logo fuese capaz de calcular con infinita precisi´n el estado o o de la atm´sfera en un instante determinado pero olvidase tener en cuenta el aleteo de o una mariposa. Ese aleteo podr´ inducir al cabo de un cierto tiempo un hurac´n en el ıa a otro extremo del planeta. 3.4.1. El atractor de Lorenz Si bien hemos dicho que el modelo de Lorenz era de doce ecuaciones, cuando comenz´ o a estudiar este nuevo campo de la f´ısica y la matem´tica abandonando las predicciones a meteorol´gicas lo redujo a tres ecuaciones no lineales con tres variables. o dx dy dz = S (y − x) ; = x (b − z) − y ; = xy − rz (3.24) dt dt dt Aunque el modelo de Lorenz no tiene un an´logo inmediato en la realidad, suele a asemejarse al movimiento cil´ ındrico de un gas o l´ ıquido caliente. 3.4.2. Construcci´n del m´dulo o o Queremos construir un m´dulo que nos muestre las peculiaridades del atractor de o Lorenz, para ello pondremos un paquete de part´ıculas muy juntas en un momento deter- minado en unas condiciones iniciales muy similares y veremos c´mo evoluciona el sistema o hasta convertirse en un caos total. #! / u s r / b i n / python # −∗− c o d i n g : u t f −8 −∗− from v i s u a l import ∗ from random import ∗ s c e n e=d i s p l a y ( ) s c e n e . t i t l e = ’ A t r a c t o r de Lorenz ’ s c e n e . a u t o s c a l e =0 30 Proyecto Physthones - 0.1
  • 39. 3.4 Breve introducci´n al caos o scene . range =(100 ,100 ,100) Aunque utilicemos el paquete random, que sirve para obtener n´meros aleatorios, s´lo lo u o usaremos a la hora de fijar las condiciones iniciales para no generar siempre los mismos resultados. Con scene.range definimos el tama˜o de la escena. n Los siguientes valores de r, S y b dan soluciones ca´ticas. o r =28. S=10. b=8./3. Como queremos mostrar unas cuantas part´ ıculas las meteremos en una lista. Crearemos asimismo una lista para guardar velocidades, trayectorias y posiciones: tray =[] bola =[] vel =[] pos = [ ] Decidimos que queremos 5 part´ ıculas, y situamos la primera en el punto pos0 (aleatorio). p a r t s =5. pos0=v e c t o r ( r a n d i n t ( −10 ,10) , r a n d i n t ( −10 ,10) , r a n d i n t ( −10 ,10) ) def empieza ( ) : i =0 while i < p a r t s : t r a y . append ( c u r v e ( c o l o r =( i / p a r t s ,1− i / p a r t s , 0 ) ) ) b o l a . append ( s p h e r e ( c o l o r =( i / p a r t s ,1− i / p a r t s , 0 ) ) ) v e l . append ( v e c t o r ( 0 , 0 , 0 ) ) pos . append ( v e c t o r ( pos0 . x , pos0 . y , pos0 . z +0.01∗ i ) ) b o l a [ i ] . pos=pos [ i ] i+=1 Con este primer bucle (la funci´n empieza) simplemente generaremos cada una de las o part´ ıculas en sus posiciones iniciales (todas muy juntitas). t=0 f p s =25 dt = 1 . / ( 3 . ∗ f p s ) Ajustamos los par´metros temporales para la animaci´n y empezamos a mover las par- a o t´ ıculas. empieza ( ) while 1 : i =0 http://alqua.org/documents/physthones 31
  • 40. 3 Modelos diferenciales while i < p a r t s : v e l [ i ] . x=−S∗ pos [ i ] . x+S∗ pos [ i ] . y v e l [ i ] . y=−pos [ i ] . x∗ pos [ i ] . z+r ∗ pos [ i ] . x−pos [ i ] . y v e l [ i ] . z=pos [ i ] . x∗ pos [ i ] . y−b∗ pos [ i ] . z pos [ i ] . x=pos [ i ] . x+v e l [ i ] . x∗ dt pos [ i ] . y=pos [ i ] . y+v e l [ i ] . y∗ dt pos [ i ] . z=pos [ i ] . z+v e l [ i ] . z ∗ dt b o l a [ i ] . pos=pos [ i ] t r a y [ i ] . append ( pos [ i ] ) i+=1 Este bucle recorre todas las part´ ıculas en cada paso del bucle principal. t+=dt rate ( fps ) Figura 3.9: Evoluci´n del atractor de Lorenz o 32 Proyecto Physthones - 0.1
  • 41. 4 Modelos determin´ ısticos y estoc´sticos a Los modelos estoc´sticos son aquellos que est´n afectados por ruido, es decir, en los a a que interviene el azar. El primer modelo de este tipo en la f´ısica fue propuesto en 1908 por Langevin para describir el movimiento Browniano. En el caso del atractor de Lorenz part´ ıamos de algo impepinablemente mecanicista, unas condiciones iniciales infinitamente bien determinadas ofrec´ resultados infinita- ıan mente id´nticos. Sin embargo, una m´ e ınima indeterminaci´n en esas condiciones iniciales o introduc´ resultados aparentemente ca´ticos en las soluciones. ıa o En los dos casos que vamos a ver a continuaci´n podr´ decirse que suceder´ lo contra- o ıa a rio. Introduciremos caos en el sistema y ´ste tender´ en cierto modo a auto-organizarse e a matem´gicamente. En el primer caso ser´ un caos un tanto falso al inicio salvo por las a a condiciones iniciales, pero en el siguiente ejemplo un movimiento puramente aleatorio generar´ algo que tiene un cierto y misterioso orden. a 4.1. Simulaci´n de un gas o Por norma general suelen estudiarse en los primeros cursos de f´ ısica la mec´nica y la a termodin´mica como si se tratase de dos ramas de la f´ a ısica totalmente disconexas que apenas parecen pertenecer a una misma disciplina. Sin embargo, la f´ ısica estad´ ıstica llega a enlazarlas de un modo bastante elegante y convincente, pero se trata de un desarrollo relativamente complejo que precisa de conocimientos de cursos bastante avanzados. Con el ejemplo que vamos a ver, pretendemos poder explicar algunos conceptos de la termodin´mica desde la naturaleza at´mica de la materia, enlaz´ndolos con la mec´nica a o a a m´s b´sica de los primeros cursos de f´ a a ısica. Para ello veremos un breve desarrollo de lo necesario de f´ ısica estad´ıstica compar´ndolo a con un desarrollo computacional de los mismos conceptos. 4.1.1. Precedentes hist´ricos: Teor´ de la gravitaci´n de Le Sage o ıa o Nicolas Fatio propone en 1960 una simp´tica teor´ cin´tica de la gravitaci´n. a ıa e o Le Sage contin´a su trabajo y da nombre al modelo. Seg´n su teor´ existen unas u u ıa, ciertas particulillas en contante movimiento y velocidades aleatorias que empujan los cuerpos. La masa de los cuerpos determina su densidad (vista ´sta como si los cuerpos e fuesen de car´cter esponjoso) y hace que m´s o menos corp´sculos puedan atravesarlos. a a u Se trata de un intento de explicar las leyes de Newton de atracci´n universal con s´lo o o una concepci´n atomista de la materia que logra explicar la ley inversa del cuadrado o pero recurre a feos argumentos “infinitos” para explicar la dependencia con la masa. 33
  • 42. 4 Modelos determin´ ısticos y estoc´sticos a Figura 4.1: Los corp´sculos son apantallados en una direcci´n y se descompensan los momentos u o transferidos por colisiones. No obstante, esta teor´ una vez falseada, inspirar´ la teor´ cin´tica de la termodi- ıa ıa ıa e n´mica que s´ funcion´. a ı o 4.1.2. Teor´ cin´tica ıa e La teor´ cin´tica de los gases explica el comportamiento macrosc´pico de estos a ıa e o partir de sus propiedades microsc´picas. o Hip´tesis cinem´ticas o a Para poder aplicar esta teor´ deben cumplirse una serie de hip´tesis en nuestro sis- ıa o tema: El sistema ha de ser lo suficientemente grande para considerarlo homog´neo. Cada e part´ıcula se visualiza como una esfera maciza en movimiento. Las part´ıculas son suficientemente peque˜as comparadas con las distancias intermoleculares. n Se supone que no existen fuerzas intermoleculares salvo en el instante de la colisi´n. o Las mol´culas se desplazan libremente chocando el´sticamente entre s´ e a ı. Veamos a continuaci´n cu´les ser´ los primeros pasos a la hora de simular este o a ıan modelo: Construyamos una caja c´bica de lado 8 con cuidado de que las dimensiones de u las esferas y las paredes se respeten: thk = 0 . 3 side = 4.0 s 2 = 2∗ s i d e + thk s 3 = 2∗ s i d e − thk wallR = box ( pos=v e c t o r ( s i d e , 0 , 0 ) , l e n g t h=thk , h e i g h t=s2 , width=s3 , c o l o r = c o l o r . g r e e n ) 34 Proyecto Physthones - 0.1
  • 43. 4.1 Simulaci´n de un gas o wallL = box ( pos=v e c t o r (− s i d e , 0 , 0 ) , l e n g t h=thk , h e i g h t=s2 , width=s3 , c o l o r = c o l o r . g r e e n ) wallB = box ( pos=v e c t o r ( 0 , −s i d e , 0 ) , l e n g t h=s3 , h e i g h t=thk , width=s3 , c o l o r = c o l o r . g r e e n ) b a l l=s p h e r e ( r a d i u s =0.5) Las esferas se mover´n de manera rectil´ a ınea mientras nada las haga cambiar de opini´n: o b a l l . pos = b a l l . pos + b a l l . v e l o c i t y ∗ t i m e s t e p Se producir´n choques el´sticos con las paredes a a if ball . x > 4: b a l l . v e l o c i t y . x = −b a l l . v e l o c i t y . x b a l l . x=2∗4− b a l l . x En los choques entre part´ ıculas se producir´ un intercambio de momentos: a d i s t a n c e=mag( b a l l l i s t [ i ] . pos− b a l l l i s t [ j ] . pos ) i f d i s t a n c e < 2∗ b a l l r a d i u s : d i r e c t i o n=norm ( b a l l l i s t [ j ] . pos− b a l l l i s t [ i ] . pos ) v i=dot ( b a l l l i s t [ i ] . v e l o c i t y , d i r e c t i o n ) v j=dot ( b a l l l i s t [ j ] . v e l o c i t y , d i r e c t i o n ) exchange=vj−v i b a l l l i s t [ i ] . v e l o c i t y= b a l l l i s t [ i ] . v e l o c i t y + exchange ∗ direction b a l l l i s t [ j ] . v e l o c i t y= b a l l l i s t [ j ] . v e l o c i t y − exchange ∗ direction o v e r l a p =2∗ b a l l r a d i u s −d i s t a n c e b a l l l i s t [ i ] . pos= b a l l l i s t [ i ] . pos − o v e r l a p ∗ d i r e c t i o n b a l l l i s t [ j ] . pos= b a l l l i s t [ j ] . pos + o v e r l a p ∗ d i r e c t i o n En el sistema habr´ dos magnitudes trascendentales: a Frecuencia de colisi´n: Frecuencia con que se producen colisiones en el sistema. o ncol ν= t·N Recorrido libre medio: Longitud media recorrida por una mol´cula entre colisiones. e vm λ= ν Durante una simulaci´n, son valores que podemos calcular trivialmente mientras que o en la realidad no son estimables por m´todos directos. e http://alqua.org/documents/physthones 35
  • 44. 4 Modelos determin´ ısticos y estoc´sticos a 4.1.3. Distribuci´n de velocidades o Si consideramos el medio is´tropo, la distribuci´n de velocidades ha de serlo tambi´n. o o e Para visualizar esto, colocamos todos los vectores velocidad asociados a cada mol´cula e en un mismo punto O. v e l o c i d a d=arrow ( pos = ( 9 , 2 , 0 ) , s h a f t w i d t h =0.1) v e l o c i d a d . a x i s=b a l l . v e l o c i t y Donde los vectores velocidad cortan a una esfera de radio R centrada en O, los llama- remos puntos figurativos. Su distribuci´n debe ser uniforme: o N N dN N n= = = → dN = dS S 4πR 2 dS 4πR2 En polares: N dS = RdθR sin θdφ → dN = sin θdθdφ 4π dN es el n´mero de mol´culas con velocidad entre θ y θ + dθ y entre φ y φ + dφ. Lo u e llamaremos d θ,φ 2N 4.1.4. Magnitud de las velocidades moleculares Separando por rangos de velocidad, obtendremos esferas conc´ntricas de puntos figu- e rativos. Llamemos dNv a las mol´culas con velocidades comprendidas entre v y v + dv. e Finamente, podemos clasificar las mol´culas como mol´culas d3 Nφ,θ,v : e e dNv dnv d3 Nφ,θ,v = sin θdθdφ → d3 nφ,θ,v = sin θdθdφ 4π 4π 4.1.5. Magnitudes Presi´n: choques contra una pared o La presi´n es efecto de los choques de las mol´culas del gas contra una pared. o e Consideremos un elemento de pared dS Vamos a contabilizar las mol´culas que chocan contra la pared en funci´n de sus e o velocidades, es decir de qu´ tipo sean (v, φ, theta). e Para que una mol´cula de tipo θ, φ, v choque con dS en un intervalo de tiempo dτ , e debe encontrarse justo antes de ese intervalo en un cilindro oblicuo de generatriz L = vdτ inclinado seg´n los ´ngulos φθ. u a Las mol´culas que son de ese tipo: e dnv d3 nθ,φ,v = sin θdθdφ 4π 36 Proyecto Physthones - 0.1