1.0 introduccion

Post on 18-Aug-2015

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

python

TRANSCRIPT

1.IntroduccinAutores:JosMaraHerreraFernndez,LuisMiguelSnchezBreaContenidosdeestecaptulo:PrecedentesPorquPython?Pythonvs.MatlabPythonenelmbitocientfico1.1.PrecedentesEl manejo de aplicaciones informticas, actualmente generalizado, no conlleva realmente el dominio de las nuevastecnologasinformticas.Laprogramacinysimulacinsehaconvertidoenunatareanecesariaenlasociedadyenelmbito cientficotcnico, y por supuesto en el mbito acadmico. Sin embargo, la gran mayora de los alumnos quellegan a los primeros cursos universitarios no tienen ninguna experiencia en programacin. Incluso en cursossuperiores,unporcentajedemasiadoaltonohanidomsalldelosejerciciospropuestosenlasasignaturasobligatorasdeclculonumrico.DentrodelaasignaturapticadelgradoenFsicadelaUniversidadComplutensedeMadrid,LuisMiguelSnchezBrea y Jos Mara Herrera Fernndez (profesor de la asignatura y alumnotutor respectivamente) incorporaron en elcurso20112012unaseriedeseminariosdeComputacincientficadefenmenospticosbasadosenellenguajedeprogramacin Python. Los seminarios se enfocaron como apoyo al aprendizaje de ptica utilizando la programacincomo medio de resolucin de ejercicios en ptica y fueron la semilla para este proyecto docente donde pretendemospresentarejemplossencillosydefcilcomprensindelusodePythoncomoherramientaendiferentesmbitos.1.2.PorquPython?Python es un lenguaje de programacin moderno, de alto nivel, ideal para pequeas aplicaciones as como paraproyectos de gran envergadura. El cdigo de Python es similar al pseudocdigo utilizado para esquematizar laprogramacin.Permiterealizartodolonecesarioparaunaprogramacincompleta:diseoorientadoaobjetos,unidadesdetesteo,generacindedocumentacinenelcdigo,sencillainteraccinconelsistemaoperativo,etc.Escompatibleconlaprogramacinbasadaenobjetos,ascomolaestructuradayporeventos.Tieneunexcelenteconjuntodelibreraspara extender su funcionalidad, incluyendo libreras cientficas que permiten realizar numerosas tareas de tratamientodedatos,visualizacin,clculonumricoysimblicoyotrasaplicacionesespecficas.Adems,existeunacomunidadmuygrandedeusuariosque,debidoalafilosofaopensource,sonmuchomsproclivesacompartirsucdigo.A la hora de empezar a trabajar en computacin lo primero que nos sorprende es la gran cantidad de lenguajes deprogramacin, por lo que se debe realizar una seleccin cuidadosa. Una lista de los lenguajes de programacin msutilizadossepuedeencontrarenlaFigura1.TABLA DE CONTENI DOSAutoresQuesnuevoLicenciaDescargasReferencias1.Introduccin2.PuestaenMarcha3.LenguajesdeProgramacin4.MdulosCientficos5.EcuacionesdeMaxwellenelvaco6.Polarizacin7.Interaccinradiacinmateria8.ndicederefraccin:modelomicroscpico9.EcuacionesdeFresnel10.Pulsosdeluz11.Interferencias12.Mdulosdeptica13.Difraccinencampocercano14.Difraccinencampolejano15.RedesdeDifraccin16.ProcesadopticodelainformacinBSQUEDA IraIntroduzcalostrminosdebsquedaounnombredemdulo,claseofuncin.Computacin cientfica con Python para mdulos de evaluacin continuaen asignaturas de ciencias aplicadasANTERI OR|SI GUI ENTEFigura1.Lenguajesdeprogramacinmsutilizadosenelmundo.PythonsemantieneestablecomotercerlenguajedeprogramacindespusdelafamiliadeCydeJava.AdemscomparndoconunlenguajedembitocientficocomoMATLAB,suposicinesnotablementesuperior(4,3%deusofrentea0,6%).Fuente:TIOBEProgrammingCommunityIndexforNovember2013,http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.Porunladoexistenlenguajesdeusomuyextendido.ActualmenteJavaesellenguajemsutilizado,puesseutilizaparaaplicacionescorporativas.ElsegundolenguajeesCensusdiferentesversiones,unestndarenlaprogramacindurantemuchsimos aos. La mayor parte de las ms famosas aplicaciones de escritorio estn escritas en C++. Estos doslenguajes dominan el negocio de la programacin. PHP domina en la red. Mientras Java lo utilizan las grandesorganizaciones,PHPloutilizanempresasmspequeaseindividuosparacrearaplicacioneswebdinmicas.Porotrolado,haynumerospaquetesnumricoscomoMatlab,MathematicayMaplequeseutilizanencentrosdeinvestigacin.LagranmayoradelosalumnosquelleganalosprimeroscursosdeFsicanohanprogramadonadaocasinada.Esporelloquehemoselegidounlenguajedeprogramacinlomssencilloycompletoposible.Pythonnosofreceunagransencillez de programacin, una gran cantidad de libreras en las que basar nuestros programas y una importantecomunidaddeusuariosydesarrolladoresquelosoportan.Tambintienelaventajadeseropensource,porlononosvamosatenerqueasumirningncostedebidoaderechosdeautor.Otraventajaesserunsistemamultiplataforma,asquepodremosprogramarencualquiersistemaoperativocomoWindows,LinuxoMacOs.VeamosresumidasalgunasdelasventajasdellenguajedeprogramacinPython.Python es un lenguaje de programacin de alto nivel que permite una rpida implementacin de aplicacionescon muy poco cdigo. Es ideal para prototipado rpido, pero tambien permite el desarrollo de grandesaplicaciones.ElcdigodePythoneslegible,muysimilaralpseudocdigoutilizadoparaesquematizarlaprogramacin.Pythonesunlenguajeinterpretadoporunamquinavirtual,nocompilado,porloqueesmultiplataforma.Python permite realizar todo lo necesario para una programacin de cdigo moderna: diseo orientado aobjetos, unidades de testeo, generacin de documentacin en el cdigo, sencilla interaccin con el sistemaoperativo,etc.Tieneestructurasdedatosdealtonivel,comolaslistas,tuplasydiccionariosPermite la programacin basada en objetos, aunque tambien soporta la programacin funcional y laprogramacinestructurada.Esunlenguajedinmico,pudiendoseaadirnuevasfuncionesyclasesaunobjetoexistente,inclusoentiempodeejecucin.ExistenlibrerascientficasescritasenPhythonmadurasycongrancapacidad.Permite extender trivialmente su aplicabilidad con mdulos escritos en C, C++ y Fortran, de los que existennumerosaslibrerascientficas.Alserlosprocedimientosmsrpidosyeficientesparadesarrollodealgoritmosmatemticos (aunque a veces mucho ms complicados para otras tareas), se pueden programar las partes mssensiblesenCyrealizarelrestodelaaplicacinenPythonTiene un enorme conjunto de libreras para extender su funcionalidad: para acceseo a base de datos, paraalmacenamientodedatos,paraprocesamientodeimgenes,desonido,paraprogramacinconGUIs(Interfacesgrficasdeusuario,ventanas),yotrasmuchisimasms.Permiteelaccesoatodalafuncionalidaddelsistemaoperativo(sobretodoenLinux).Pythonsepuedeutilizarcomosoftwareglueparacombinardistintasaplicacionesenunasola(sobretodoelLinux).Elusodelaindentacinenlugardelosparntesispermiteunamayorlegibilidaddelcdigo.El cdigo Python se escriben en archivos .py. Estos archivos se pueden agrupar en mdulos, y se puedenimportarloselementosdelosmdulosaotrosarchivos.Para sistemas Unix, se puede utilizar cdigo para hacer el archivo autoejecutable indicando al sistema queprogramaqueelesunejecutable(nohacefaltaqueseaunarchivo.exe).utilizar(#!)Elcdigoesextraordinariamentesencillodecomprender.Existenmdulosdegrancalidadyrepositoriosdecdigodondesepuedeencontrarnumerosasaplicaciones.Enlinux,granpartedelosmdulosestnenlosrepositoriosestndar,porloquesuinstalacinestnsencillacomopulsarunbotn.Existeunacomunidadmuygrandedeusuariosydebidoalafilosofaopen,losdesarrolladoressonmuchomsproclives a compartir su cdigo con otros. Adems no suelen existir problemas de uso del cdigo de otros,siemprequecumplaslosrequisitosdelalicenciaGLS.AlserPythonunlenguajedepropsitogeneral,elcdigoquesegenerasepuedeaprovechardelasventajasdeotrosmdulos(comocomprimirarchivos,enviardatos,automatizarprocesos,enlazarnuestrosdatosconbasesdedatos,conservidoresweb....PythonsepuedeejecutarenbastantesIDEs(editores),desdealgunosmuysencillos,comoIDLE,hastaotrostancompletoscomoSpyder,EclipseoNetBeans.Existen diversas tcnica para creas sistemas de ventanas (Tkinter, wx, QT, etc.) de una formasorprendentemente sencilla en comparacin con otros sistemas operativos. Si se nos da bien el curso,intentaremosverQT4,atravsdelaherramientadecreacindeventanasQTDesigner4.1.3.Pythonvs.MatlabMATLAB (abreviatura de MATrix LABoratory, laboratorio de matrices) es un software matemtico que ofrece unentornodedesarrollointegrado(IDE)conunlenguajedeprogramacinpropio(lenguajeM).EstdisponibleparalasplataformasUnix,WindowsyAppleMacOSX.Entresusprestacionesbsicassehallan:lamanipulacindematrices,larepresentacindedatosyfunciones,laimplementacindealgoritmos,lacreacindeinterfacesdeusuario(GUI)ylacomunicacin con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone dedos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulacinmultidominio) y GUIDE (editor de interfaces de usuario GUI). Adems, se pueden ampliar las capacidades deMATLABconlascajasdeherramientas(toolboxes)ylasdeSimulinkconlospaquetesdebloques(blocksets).Matlabtieneventajasmuyinteresantesparalaprogramacincientfica.Lassesionesinteractivaspermitenjugarconlosdatosdeunaformamuysencilla.Lasintaxisestmuybiendesarrolladaparatrabajarconvectoresymatrices.Lacapacidaddevisualizacindedatosymodificacindefigurasesexcepcionalementebuena.Existenlibreras(normalmentepropietarias)degrancalidadyexisteunacomunidadmuygrandedeusuarios.Noobstante,lamayorpartedeestasventajastambinlastienePhython.Adems,tieneunaseriededesventajasquelodesaconsejancomoprimerlenguajedeprogramacin.Enprimerlugarnoesunlenguajedeprogramacinverdaderoyaqueestmuydedicadoalclculonumrico,aunquesufuncionalidadsehaextendidoconnumerosastoolboxes(controldebasesdedatos,interaccinconelsistemaoperativo,etc...).Adicionalmente,esunlenguajepropietarioquerequieredelicenciasexcesivamentecarasparaestudiantes.Nosepuedeejecutarcdigodeformaindependiente(standalone).NOTA:Recientementesehaproporcionadouna herramienta adicional llamada MATLAB Builder bajo la seccin de herramientas ApplicationDeployment para utilizar funciones MATLAB como archivos de biblioteca que pueden ser usados conambientesdeconstruccindeaplicacin.NEToJava.Es horrible hacer un cdigo largo, pues cada funcin debe estar en un nico archivo. Esto significan miles dearchivosyhacemscomplicadoquevariosprogramadorestrabajenenelmismocdigo.TambinPythontienealgunasdesventajasrespectoaMatlab:Noestansencillomanipularlasfigurasentiemporeal.Al existir una cantidad ingente de programadores que aportan su cdigo de forma libre, a veces es dificildeterminarcualessonlosmdulosmejoresparaunaciertaaplicacin.Haymsposiblidadesdondeelegir.1.4.PythonenelmbitocientficoPython es un lenguaje de programacin de propsito general que, en un principio, no se pens para aplicacionescientficas. Con los aos, siguiendo la filosofa GNU, se han desarrollado multitud de mdulos cientficos, quepermitenrealizarnumerosastareasdetratamientodedatos,visualizacin,clculosimblicoyaplicacionescientficasespecficas.Nosotrosutilizaremosfundamentalmentelossiguientesmduloscientficos:Numpy:Generacindetiposdedatoscientficos.http://www.numpy.org/Scipy:Funcionescientficasdeusogeneral.http://www.scipy.org/Matplotlib:Grficasen2Dy3D.http://matplotlib.org/Mayavi:visualizacindedatostridimensionales.http://code.enthought.com/projects/mayavi/Visual Python: Permite realizar representaciones tridimensionales de objetos en movimiento.http://www.vpython.org/SymPy:Clculosimblico.http://sympy.org/en/index.htmlOpencv: Biblioteca libre de visin artificial en C cuyas libreras se han adaptado a Python.http://opencv.willowgarage.com/documentation/python/Meep: clculo de Diferencias finitas en el dominio del tiempo. http://abinitio.mit.edu/wiki/index.php/Meep.NOTA: Existe un enlace (binding) para Python, de forma que se puede programar dicho mdulo de unamaneramuchomssencilla,https://launchpad.net/pythonmeep.Existen asimismo otros muchos mdulos bastante maduros escritos en Python como OpenFilters para el diseo defiltros interferenciales, http://www.polymtl.ca/larfis/English_Version/OF/OF_English.htm y Empy donde seimplementa la tcnica de RCWA, http://empy.sourceforge.net. Para ms informacin el lector puede consultar elsiguienteenlacehttp://www.scipy.org/topicalsoftware.htmldondepodrencontrarotrosmodulosdeinters.ANTERIOR|SIGUIENTEMOSTRARELCDIGOCopyright2013,LuisMiguelSnchezBrea.CreadoconSphinx

top related