Curso Completo de Matlab

download Curso Completo de Matlab

of 127

Transcript of Curso Completo de Matlab

1MATLABeselnombreabreviadodeMATrixLABoratory.MATLABesun programa para realizar clculos numricos con vectores y matrices. Como caso particularpuedetambintrabajarconnmerosescalarestantorealescomo complejos,concadenasdecaracteresyconotrasestructurasdeinformacin ms complejas.Unadelascapacidadesmsatractivasesladerealizarunaampliavariedadde grficosendosytresdimensiones.MATLABtienetambinunlenguajede programacinpropio.Estecursohacereferenciaalaversin6.5deeste programa, aparecida a mediados de 2002. MATLABesungranprogramadeclculotcnicoycientfico.Paraciertas operacionesesmuyrpido,cuandopuedeejecutarsusfuncionesencdigo nativoconlostamaosmsadecuadosparaaprovecharsuscapacidadesde vectorizacin.Enotrasaplicacionesresultabastantemslentoqueelcdigo equivalente desarrollado en C/C++ o Fortran.En la versin 6.5 MATLAB ha incorporado un acelerador JIT (Just In Time), que mejora significativamente la velocidad de ejecucin de los ficheros *.m en ciertas circunstancias, por ejemplo cuando no se hacen llamadas a otros ficheros *.m, no se utilizanestructurasyclases,etc.Aunquelimitado porelmomento,cuandose aplicamejorasensiblementelavelocidad,haciendoinnecesariasciertastcnicas utilizadas en versiones anteriores como la vectorizacin de los algoritmos.Encualquiercaso,ellenguajedeprogramacindeMATLABsiempreesuna magnfica herramienta de alto nivel para desarrollar aplicaciones tcnicas, fcil de utilizaryque,comoyasehadicho,aumentasignificativamentelaproductividad de los programadores respecto a otros entornos de desarrollo.MATLABdisponedeuncdigobsicoydevariaslibrerasespecializadas (toolboxes). En estos apuntes se har referencia exclusiva al cdigo bsico.MATLAB se puede arrancar como cualquier otra aplicacin de Windows, clicando dosveceseneliconocorrespondienteenelescritorioopormediodelmen Inicio).AlarrancarMATLABseabreunaventanadeltipodelaindicadaenla Figura 1.sta es la vista que se obtiene eligiendo la opcin Desktop Layout/Default, en el menView.Comoestaconfiguracinpuedesercambiadafcilmenteporel usuario,esposiblequeenmuchoscasosconcretosloqueaparezcaseamuy diferente.Encualquiercaso,unavistasimilarsepuedeconseguirconelcitado comandoView/DesktopLayout/Default.Estaventanainicialrequiereunas primeras explicaciones.2 Figura 1. Ventana inicial de MATLAB 6.5. LapartemsimportantedelaventanainicialeslaCommandWindow,que apareceenlapartederecha.Enestasub-ventanaesdondeseejecutanlos comandos de MATLAB, a continuacin del prompt (aviso) caracterstico (>>), que indicaqueelprogramaestpreparadopararecibirinstrucciones.Enlapantalla mostrada en la Figura 1 se ha ejecutado el comando A=magic(4), mostrndose a continuacin el resultado proporcionado por MATLAB.En la parte superior izquierda de la pantalla aparecen dos ventanas tambin muy tiles:enlapartesuperioraparecelaventanaCurrentDirectory,quesepuede alternar con Workspace clicando en la pestaa correspondiente. Laventana CurrentDirectorymuestralos ficheros deldirectorio activooactual. AdiferenciadeversionesanterioresdeMATLABenqueeldirectorioactivose debacambiardesdelaCommandWindow,apartirdelaversin6.0sepuede cambiar desde la propia ventana (o desde la barra de herramientas, debajo de la barrademens)conlosmtodosdenavegacindedirectoriospropiosde Windows.Clicandodosvecessobrealgunodelosficheros*.mdeldirectorio activoseabreeleditordeficherosdeMATLAB,herramientafundamentalpara la programacin sobre la que se volver en las prximas pginas.ElWorkspacecontieneinformacinsobretodaslasvariablesquesehayan 3definido en esta sesin y permite ver y modificar las matrices con las que se est trabajando.EnlaparteinferiorderechaaparecelaventanaCommandHistoryquemuestra losltimoscomandosejecutadosenlaCommandWindow.Estoscomandosse pueden volver a ejecutar haciendo doble clic sobre ellos.Clicando sobre un comando con el botn derecho del ratn se muestra un men contextual con las posibilidades disponibles en ese momento. Para editar uno de estos comandos hay que copiarlo antes a la Command Window.Enlaparteinferiorizquierdadelapantallaapareceunadelasnovedadesdela versin6.5,elbotnStart,conunafuncinanlogaaladelbotnIniciode Windows.Startdaaccesoinmediatoaciertascapacidadesdelprograma.La Figura2muestralasposibilidadesdeStart/MATLAB,mientrasquelaFigura3 muestralasopcionesdeStart/DesktopTools,quepermitenelaccesoalas principalescomponentesomdulosdeMATLAB.Unadeestascomponentes, LaunchPadrealizaunpapelanlogoalbotnStart,dandoaccesoatodoslos mdulos o componentes de MATLAB que se tengan instalados. PuedehacersequealarrancarMATLABseejecute automticamenteunfichero, de modo que aparezca por ejemplo un saludo inicial personalizado. Esto se hace mediante un fichero de comandos que se ejecuta de modo automtico cada vez que se entra en el programa (el fichero startup.m, que debe estar en un directorio determinado, por ejemplo C:\Matlab6p5\Work.Para apreciar desde el principio la potencia de MATLAB, se puede comenzar por escribir en la Command Window la siguiente lnea, a continuacin del prompt. Al final hay que pulsar intro.>> A=rand(6), B=inv(A), B*A 4A =0.9501 0.4565 0.9218 0.4103 0.1389 0.01530.2311 0.0185 0.7382 0.8936 0.2028 0.74680.6068 0.8214 0.1763 0.0579 0.1987 0.44510.4860 0.4447 0.4057 0.3529 0.6038 0.93180.8913 0.6154 0.9355 0.8132 0.2722 0.46600.7621 0.7919 0.9169 0.0099 0.1988 0.4186B =5.7430 2.7510 3.6505 0.1513 -6.2170 -2.4143-4.4170 -2.5266 -1.4681 -0.5742 5.3399 1.5631-1.3917 -0.6076-2.1058 -0.0857 1.5345 1.8561-1.6896 -0.7576-0.6076 -0.3681 3.1251 -0.6001-3.6417 -4.6087 -4.7057 2.5299 6.1284 0.90442.7183 3.3088 2.9929 -0.1943 -5.1286 -0.6537ans =1.0000 0.0000 00.0000 0.0000 -0.00000.0000 1.0000 0.0000 0.0000 -0.0000 0.00000 0 1.0000 -0.0000 -0.0000 0.00000.0000 0 -0.0000 1.0000 -0.0000 0.0000-0.0000 0.0000 -0.0000 -0.0000 1.0000 0.0000-0.0000 -0.0000 -0.0000 -0.0000 -0.0000 1.0000Enrealidad,enlalneadecomandosanteriorsehanescritotresinstrucciones diferentes, separadas por comas. Como consecuencia, la respuesta del programa tienetrespartestambin,cadaunadeellascorrespondienteaunadelas instrucciones.Con la primera instruccin se define una matriz cuadrada (6x6) llamada A, cuyos elementossonnmerosaleatoriosentreceroyuno(aunqueaparezcanslo4 cifras, han sido calculados con 16 cifras de precisin). En la segunda instruccin sedefineunamatrizBqueesigualalainversadeA.Finalmenteseha multiplicado B por A, y se comprueba que el resultado es la matriz unidad1.EscongrandesmatricesograndessistemasdeecuacionescomoMATLAB obtienetodalapotenciadelordenador.Porejemplo,lassiguientesinstrucciones permiten calcular la potencia de clculo del ordenador en Megaflops (millones de operaciones aritmticas por segundo).Enlaprimeralneasecreantresmatricesdetamao10001000,lasdos primerasconvaloresaleatoriosylaterceraconvalorescero.Lasegundalnea 1 Al invertir la matriz y al hacer el producto posterior se han introducido pequeos erroresnumricosderedondeoenelresultado,locualhacequenotodoslos elementos cero del resultado aparezcan de la misma forma. 5tomatiempos,realizaelproductodematrices,vuelveatomartiemposycalcula de modo aproximado el nmero de millones de operaciones realizadas. La tercera lneacalculalosMegaflopsporsegundo,paralocualutilizalafuncinetime() que calcula el tiempo transcurrido entre dos instantes definidos por dos llamadas a la funcin clock2:>> n=1000; A=rand(n); B=rand(n); C=zeros(n); >> tini=clock; C=B*A; tend=clock; mflops=(2*n^3)/1000000; >> mflops/etime(tend,tini) OtrodelospuntosfuertesdeMATLABsonlosgrficos,quesevernconms detalle en una seccin posterior. A ttulo de ejemplo, se puede teclear la siguiente lnea y pulsar intro:>> x=-4:.01:4; y=sin(x); plot(x,y), grid, title('Funcin seno(x)') EnlaFigura4sepuedeobservarqueseabreunanuevaventanaenlaque aparecerepresentadalafuncinsin(x).Estafiguratieneunttulo"Funcin seno(x)"yunacuadrculao"grid".Enrealidadlalneaanteriorcontienetambin variasinstruccionesseparadasporcomasopuntosycomas.Enlaprimerase creaunvectorxcon801valoresrealesentre-4y4,separadosporuna centsima. A continuacin se crea un vector y, cada uno de cuyos elementos es el seno del correspondiente elemento del vector x. Despus se dibujan los valores deyenordenadasfrentealosdexenabscisas.Lasdosltimasinstrucciones establecen la cuadrcula y el ttulo. Unpequeoavisoantesdeseguiradelante.AdemsdeconlaCommand 2 En un porttil con Pentium IV Mobile a 2 Ghz el nmero de Mflops puede ser del ordende1350.Hace10aosunordenadordeestapotenciahubieracostado varios millones de Euros. 6History,esposiblerecuperarcomandosanterioresdeMATLABymoversepor dichos comandos con el ratn y con las teclas-flechas y . Al pulsar la primera de dichas flechas aparecer el comando que se haba introducido inmediatamente antes. De modo anlogo es posible moverse sobre la lnea de comandos con las teclas y , ir al principio de la lnea con la tecla Inicio, al final de la lnea con Fin, y borrar toda la lnea con Esc. Recurdese que slo hay una lnea activa (la ltima).ParaborrartodaslassalidasanterioresdeMATLABydejarlimpialaCommand Windowsepuedenutilizarlasfuncionesclcyhome.Lafuncinclc(clear console)eliminatodaslassalidasanteriores,mientrasquehomelasmantiene, pero lleva el prompt (>> ) a la primera lnea de la ventana. Si se desea salir de MATLAB basta teclear los comandos quit o exit, elegir Exit MATLABenelmenFileoutilizarcualquieradelosmediosdeterminaruna aplicacin en Windows.MATLAB6.5disponedeunexcelenteHelpconelquesepuedeencontrarla informacinquesedesee.LaFigura5muestralasdistintasopcionesque aparecen en el men Help de la ventana principal de la aplicacin:1Full Product Family Help, Se abre la ventana de la Figura 6, en la que se puedebuscarinformacingeneralsobreMATLABosobreotrosproductos de la familia a los que se tenga acceso. La forma de la ventana de ayuda es tpicaycomncon otrosnivelesdeayuda.Lamayorpartedelaspginas de ayuda estn en formato HTML.2Matlab Help. Se abre la ventana de la Figura 7, en la que se puede buscar ayudageneralsobreMATLABosobrelafuncinoelconceptoquese desee. La portada de esta ayuda tiene tres captulos principales: Learning Matlab,quecontienedistintosapartadosdeintroduccinalprograma; FindingFunctionsandProperties,quepermiteaccederainformacin concretasobrelasdistintasfuncionesopropiedadesdelosobjetos grficos;yPrintingtheDocumentation,quedaaccesoaversiones completaseimprimiblesdelosmanualesdelprogramaenformatoPDF Figura 5: Men de Help Matlab 7(PortableDocumentFormat),queprecisadelprogramaAdobeAcrobat Reader5.0osuperior.Enlaparteizquierdadelaventana,cuandoest seleccionada la pestaa Contents, aparece un ndice temtico estructurado en forma de rbol que puede ser desplegado y recorrido con gran facilidad. Lasrestantespestaasdeestaventanadanaccesoaunndicepor palabras (Index), a un formulario de bsqueda (Search) y a una seccin en laqueelusuariopuedealmacenarenlacesalaspginasquemsvayaa utilizar (Favorites).3Using the Desktop. Se abre una ventana de ayuda con un formato similar a las de las Figuras anteriores con informacin detallada sobre cmo utilizar y configurar el entorno de desarrollo. Las distintas herramientas disponibles sedescribensucesivamente.Cadapginadisponedeflechasyenlaces que permiten ir a la pgina siguiente o volver a la anterior.4Using the Command Window. Esta opcin del men Help da acceso a la informacinnecesariaparaaprovecharlascapacidadesdelaCommand Window, que es el corazn de MATLAB.5Demos.Seabreunaventanaquedaaccesoaunbuennmerode ejemplosresueltosconMATLAB,cuyosresultadossepresentan grficamentedediversasformas.Esbastanteinteresanterecorrerestos ejemplos para hacerse idea de las posibilidades del programa. Es asimismo muyinstructivoanalizarlosficheros*.mdelosejemplosquerenen caractersticas similares a las de la aplicacin de se desea desarrollar. Adems,sepuedetambinrecurriralHelpdesdelalneadecomandosdela CommandWindow.Seaconsejahacerprcticasalrespecto.Porejemplo, obsrvese la respuesta a los siguientes usos del comando help:>> help Figura 7: Ventana inicial de Help Matlab Figura 6: Ventana inicial de Help full Product Family 8>> help langEl comando helpwin seguido de un nombre de comando o de funcin muestra la informacin correspondiente a ese comando en la ventana Help (ver Figura 6). En lapartesuperiordelaventanasemuestraunenlaceViewcodefor,que permiteaccederalcdigofuentesiestdisponible;conlaopcinGotoonline doc for ... se accede a una informacin ms completa que puede incluir ejemplos y comandos similares sobre los que tambin se ofrece ayuda. Al final de la pgina aparece una lista de enlaces See Also a funciones relacionadas).El comando doc tecleado en la lnea de comandos equivale a Help/Full Product FamilyHelp;sivaseguidodeunnombredecomandoofuncinsemuestrala informacindetalladacorrespondienteaesecomandodemodosimilaraGoto online doc for ... en el prrafo anterior.Enresumen,MATLABdisponedeunaayudamuycompletayaccesible, estructuradaenvariosniveles(lneadecomandosenlaCommandWindow, ventanaHelp,manualesenformatoPDF),conlaqueesmuyimportanteestar familiarizado,porquehastalosmsexpertosprogramadorestienenqueacudira ella con una cierta frecuencia.ElentornodetrabajodeMATLABhamejoradomuchoapartirdelaversin6.0, hacindosemuchomsgrficoeintuitivo,similaraldeotrasaplicaciones profesionalesdeWindows.EnlaintroduccinaMATLABrealizadaenel apartado 2.2 y en la Figura 1 ya se han citado algunas de las componentes ms importantes de este entorno de trabajo o de desarrollo. Ahora de explicarn estos componentes con un poco ms de detalle.Los componentes ms importantes del entorno de trabajo de MATLAB 6.5 son los siguientes:1. El Escritorio de Matlab (Matlab Desktop), que es la ventana o contenedor de mximo nivel en la que se pueden situar (to dock) las dems componentes.2. Loscomponentesindividuales,orientadosatareasconcretas,entre los que se puede citar:a)La ventana de comandos (Command Window),b)La ventana histrica de comandos (Command History),c)El espacio de trabajo (Workspace),d)La plataforma de lanzamiento (Launch Pad),e)El directorio actual (Current Directory),f)La ventana de ayuda (Help)g)El editor de ficheros y depurador de errores (Editor&Debugger),h)El editor de vectores y matrices (Array Editor).9i)Laventanaquepermiteestudiarcmoseempleaeltiempodeejecucin (Profiler).A continuacin se describen brevemente estos componentes. Tngase en cuenta que utilizar MATLAB y desarrollar programas para MATLAB es mucho ms fcil si seconocebienesteentornodetrabajo.Esporellomuyimportanteleercon atencin las secciones que siguen. ElMatlabDesktopeslaventanamsgeneraldelaaplicacin.Elrestodelas ventanasocomponentescitadaspuedenalojarseenlaMatlabDesktopo Figura 8: Configuracin por defecto del Matlab Desktop Figura 9: Menu para configurar el Matlab Desktop 10ejecutarsecomoventanasindependientes.Asuvez,loscomponentesalojados enelMatlabDesktoppuedenaparecercomosub-ventanasindependienteso como pestaas dentro de una de las sub-ventanas. MATLAB 6.5 ofrece una gran flexibilidad al respecto y es cada usuario quien decide en qu forma desea utilizar la aplicacin. CuandosearrancaMATLABporprimeravezocuandoseejecutaelcomando View/DesktopLayout/Defaultapareceunaventanacomolamostradaenla Figura8.Aunquedivididaentreszonas,enrealidadaparecencuatro componentes, pues la sub-ventana superior izquierda contiene dos componentes superpuestos que se permutan por medio de la pestaa correspondiente.LaFigura9muestraundetalledelmenView,desdeelquesecontrolanlos componentesvisiblesylaformaenquesevisualizan.Porejemplo,comoenla Figura8laventanaactivaeslaCommandWindow,enelmendelaFigura9 aparecelaopcindedejardealojardichaventanaenelMatlabDesktop (Undock Command Window).DichomenpermitetambineliminardelDesktopalgunodeloscomponentes visibles o visualizar el Help (que no est visible). Con los submens de Desktop Layoutsepuedenadoptaralgunasconfiguracionespredefinidas,comola configuracinpordefecto(Default)oincluirslolaCommandWindow.La configuracin adoptada por el usuario se mantendr la siguiente vez que arranque el programa.Adems de con el men mostrado en la Figura 9, que cambia en algunos detalles segn cual sea la ventana activa, el usuario puede configurar el Matlab Desktop por medio del ratn mediante algunas operaciones como las siguientes:1Colocandoelratnsobrelosbordesintermediosdelassub-ventanasy arrastrando puede modificar su tamao en la forma que desee.2Clicandosobrelabarradettuloyarrastrandounasub-ventanaactiva (Figura10)sepuedellevaraotrapartedelDesktop,obtenindoseel resultado mostrado en la Figura 11.3Sitodaslasventanassevanseleccionandosucesivamenteyseeligela correspondiente opcin Undock... en el men View, se podra obtener una configuracincomolamostradaenlaFigura12,enlaquetodaslas ventanas son independientes y aparecen separadas en la barra de tareas.4Finalmente,sisepartedelaconfiguracinpordefectoycadaunodelos componentessearrastrasobrelaCommandWindowsepuedeobtener unaconfiguracincomolamostradaenlaFigura13,enlaquetodoslos componentesabiertosaparecencomopestaasalternativasenuna ventana nica. 11 La variedad de configuraciones mostradas en las figuras precedentes da una idea delasposibilidadesdeadaptacinalaspreferenciasdelusuarioquetienela versin6.5deMATLAB.OtroscomponentescomoelHelpBrowserpodran aadirseaestaventanadeformaanloga.Enlosapartadossiguientesse analizan algunas de las posibilidades de cada componente.staeslaventanaenlaqueseejecutaninteractivamentelasinstruccionesde MATLAB y en donde se muestran los resultados correspondientes, si es el caso. Enciertaformaeslaventanamsimportanteylanicaqueexistaenlas primerasversionesdelaaplicacin.Enestanuevaversinsehanaadido algunas mejoras significativas, como las siguientes:1Sepermitenlneasdecomandosmuylargasqueautomticamentesiguen enlalneasiguientealllegaralmargenderechodelaventana.Paraello hayqueactivarlaopcinWrapLines,enelmen File/Preferences/Command Window.2Clicandoconelbotnderechosobreelnombredeunafuncinque aparezca en esta ventana se tiene acceso a la pgina del Help sobre dicha funcin. Si el cdigo fuente (fichero *.m) est disponible, tambin se puede acceder al fichero correspondiente por medio del Editor/Debugger.3ComenzandoateclearelnombredeunafuncinypulsandolateclaTab, MATLABcompletaautomticamenteelnombredelafuncin,obien muestraenlalneasiguientetodaslasfuncionesdisponiblesque comienzan con las letras tecleadas por el usuario.4Cuandoalejecutarunfichero*.mseproduceunerroryseobtieneel correspondientemensajeenlaCommandWindow,MATLABmuestra mediante un subrayado un enlace ala lnea delfichero fuente en la que sehaproducidoelerror.Clicandoeneseenlacesevaalalnea correspondiente del fichero por medio del Editor/Debugger.12ElLaunchPadesuncomponentemuygeneralquedaaccesoaotros componentes de MATLAB, sin tener que recurrir a los mens o a otros comandos. Entre ellos se pueden citar al Help Browser, a las Demos, al Current Directory, al Workspace, al Path y a GUIDE (Graphic Interface Builder).Algunosdeestoscomponentesyahansidocitadosyotrosseexplicarnms adelante. Este componente fue una novedad de la versin 6.0, pero en la versin 6.5 las mismas funciones son realizadas de un modo ms ventajoso por el botn Start, en la parte inferior izquierda de la pantalla. ElCommandHistoryBrowserofreceaccesoalassentenciasquesehan ejecutadoanteriormenteenlaCommandWindow.Estassentenciasestn tambinaccesiblespormediodelasteclasycomoenlasversiones anteriores, pero esta ventana facilita mucho el tener una visin ms general de lo hecho anteriormente y seleccionar lo que realmente se desea repetir.Las sentencias ejecutadas anteriormente se pueden volver a ejecutar mediante un doble clic o por medio del men contextual que se abre al clicar sobre ellas con el botnderecho.Tambinsepuedencopiaryvolcarsobrelalneadecomandos, pero se ha de copiar toda la lnea, sin que se admita la copia de un fragmento de lasentencia.Existenopcionesparaborraralgunasotodaslaslneasdeesta ventana. Tambin este componente fue una novedad a partir de la versin 6.0.Elconceptodedirectorioactivoodirectorioactualesmuyimportanteen MATLAB. Los programas de MATLAB se encuentran en ficheros con la extensin *.m. Estos ficheros se ejecutan tecleando su nombre en la lnea de comandos (sin laextensin),seguidodelosargumentosentreparntesis,sisetratade funciones.Notodoslosficheros*.mqueseencuentreneneldiscodurooen otrasunidadeslgicasmontadasenunaredlocalsonaccesiblessinms.Para que un fichero *.m se pueda ejecutar es necesario que se cumpla una de las dos condiciones siguientes:1Que est en el directorio actual. MATLAB mantiene en todo momento un nicodirectorioconestacondicin.Estedirectorioeselprimersitioenel queMATLABbuscacuandodesdelalneadecomandosselepideque ejecute un fichero.2QueestenunodelosdirectoriosindicadosenelPathdeMATLAB.El Path es una lista ordenada de directorios en los que el programa busca los ficherosolasfuncionesquehadeejecutar.Muchosdelosdirectoriosdel PathsonpropiosdeMATLAB,perolosusuariostambinpuedenaadir sus propios directorios, normalmente al principio o al final de la lista. En un prximo apartado se ver cmo se controla el Path.13Elcomandopwd(deprintworkingdirectory)permitesaberculeseldirectorio actual.Paracambiardedirectorioactualsepuedeutilizarelcomandocd(de changedirectory)enlalneadecomandos,seguidodelnombredeldirectorio, paraelcualsepuedeutilizarunpathabsoluto(porejemplocd C:\Matlab\Ejemplos) o relativo (cd Ejemplos). Para subir un nivel en la jerarqua de directorios se utiliza el comando cd .., y cd ../.. para subir dos niveles.ste es el mismo sistema que se sigue para cambiar de directorio en las ventanas deMS-DOS.MATLABpermiteutilizartantolabarranormal(/)comolabarra invertida(\),indistintamente.Elcomandocderaelnicosistemadecambiode directorio actual hasta la versin 6.0 de MATLAB.ElCurrentDirectoryBrowserpermiteexplorarlosdirectoriosdelordenadoren forma anloga a la del Explorador u otras aplicaciones de Windows. Cuando se llegaaldirectoriodeseadosemuestranlosficherosyficherosallcontenidos.El Current Directory Browser permite ordenarlos por fecha, tamao, nombre, etc.Eldirectorioactualcambiaautomticamenteenfuncindeldirectorio seleccionadoconesteexplorador,ytambinsepuedecambiardesdelapropia barradeherramientasdelMatlabDesktop.Losficheros*.mmostradosenla ventana Current Directory se pueden abrir con el Editor/Debugger mediante un doble clic.Apartirdelmencontextualqueseabreclicandoconelbotnderechoen cualquier parte de la ventana Current Directory se tiene la posibilidad de aadir ese directorio al Path de MATLAB.MATLABpuedellamaraunagranvariedaddefunciones,tantodesuspropias librerascomoprogramadasporlosusuarios.Avecespuedeinclusohaber funciones distintas que tienen el mismo nombre.Interesa saber cules son las reglas que determinan qu funcin o qu fichero *.m es el que se va a ejecutar cuando su nombre aparezca en una lnea de comandos delprograma.Estoquedadeterminadoporelcaminodebsqueda(search path) que el programa utiliza cuando encuentra el nombre de una funcin.ElsearchpathdeMATLABesunalistadedirectoriosquesepuedevery modificarapartirdelalneadecomandos,outilizandoelcuadrodedilogoSet Path,delmenFile.Elcomandopathhacequeseescribaelsearchpathde MATLAB(elresultadodependedeenqudirectorioestinstaladoMATLAB;se muestran slo unas pocas lneas de la respuesta real del programa):>> path >> pathMATLABPATHC:\MATLAB6p5\toolbox\matlab\general C:\MATLAB6p5\toolbox\matlab\ops 14C:\MATLAB6p5\toolbox\matlab\lang C:\MATLAB6p5\toolbox\matlab\elmat...C:\MATLAB6p5\toolbox\matlab\winfun C:\MATLAB6p5\toolbox\matlab\winfun\comcli C:\MATLAB6p5\toolbox\matlab\demos C:\MATLAB6p5\toolbox\local C:\MATLAB6p5\workParavercmoseutilizaelsearchpathsupngasequeseutilizalapalabra nombre1enuncomando.Elprocesoquesigueelprogramaparatratarde conocer qu es nombre1 es el siguiente:1Compruebasinombre1esunavariablepreviamentedefinidaporel usuario.2Comprueba si nombre1 es una funcin interna o intrnseca de MATLAB.3Compruebasinombre1esunasub-funcinounafuncinprivadadel usuario (ver apartado 6.3).4Compruebasihayunficherollamadonombre1.mex,nombre1.dllo nombre1.meneldirectorioactual,cuyocontenidoseobtieneconel comando dir. Ya se ha visto cmo se cambiaba el directorio actual.5Compruebasihayficherosllamadosnombre1.mex,nombre1.dllo nombre1.m en los directorios incluidos en el search path de MATLAB.Estos pasos se realizan por el orden indicado. En cuanto se encuentra lo que se estbuscandosedetienelabsquedayseutilizaelficheroqueseha encontrado. Conviene saber que, a igualdad de nombre, los ficheros *.mex tienen precedencia sobre los ficheros *.m que estn en el mismo directorio. El cuadro de dilogo que se abre con el comando File/Set Path ayuda a definir la listadedirectoriosdondeMATLABdebebuscarlosficherosdecomandosylas funciones, tanto del sistema como de usuario. Al ejecutar dicho comando aparece el cuadro de dilogo de la Figura 14, en el cual se muestra la lista de directorios 15en la que MATLAB buscar.Paraaadir(oquitar)undirectorioaestalistasedebeclicarsobrelosbotones AddFolderoAddwithSubfolders,conlocualapareceunnuevocuadrode dilogo, mostrado en la Figura 15, que ayuda a elegir el directorio deseado.Elnuevodirectorioseaadealcomienzodelalista,perodesdeesaposicin puededesplazarsehaciaabajoohastaelfinalconlosbotonesMoveDowno MovetoBotton,respectivamente.Comoyasehadichoelordendelalistaes muyimportante,porquereflejaelordendelabsqueda:sidosfuncionesconel mismonombreestnendosdirectoriosdiferentes,seutilizarlaqueprimerose encuentre.ElcuadrodedilogoSetPathcontienelosbotonesnecesariospara realizar todas las operaciones que el usuario desee.ParaincluirdesdelalneadecomandosdeMATLABundirectorionuevoal comienzodelPathsinutilizarelcuadrodedilogoSetPath,sepuedeutilizar tambin el comando path, que concatena dos listas de directorios (slo se deben utilizar directorios que realmente existan en el PC), como por ejemplo:>> path('c:\mat\matlab', path)3 mientrasqueparaaadirelnuevodirectorioalfinaldelalista,seutilizarael comando:>> path(path, 'c:\mat\practicas')ElcomandoaddpathpermiteaadirunoomsdirectoriosalPath.Suforma general puede verse en los siguientes ejemplos: >> addpath 'c:\Matlab''c:\Temp' -end >> addpath 'c:\Matlab\Pruebas''c:\Temp\Pruebas' -begindondelaopcinpordefecto(cuandonoseponeni-beginni-end)esaadiral comienzodelalista.Despusdeejecutarestoscomandosconvienecomprobar cmohaquedadomodificadoelsearchpath(recurdesequelosdirectorios deben existir en realidad). No es difcil borrar las lneas que se han introducido en el Path: por una parte, los cambiosnosonpermanentesydejarndesurtirefectoalsalirdeMATLABy volver a entrar (salvo que se guarden como opciones estables). Adems se puede utilizarelcomandormpath(deremovepath),alqueselepasanlalistade directorios a eliminar del Path. Por ejemplo, el comando:>> rmpath 'c:\Matlab' 'c:\Temp'borra del Path los dos directorios indicados. El espacio detrabajo deMATLAB(Workspace) es el conjunto devariablesy de 3 El comando path dentro del parntesis de la funcin devuelve la lista del directorio anterior. 16funcionesdeusuarioqueenundeterminadomomentoestndefinidasenla memoriadelprograma.ParaobtenerinformacinsobreelWorkspacedesdela lneadecomandossepuedenutilizarloscomandoswhoywhos.Elsegundo proporcionaunainformacinmsdetalladaqueelprimero.Porejemplo,una salida tpica del comando whos es la siguiente:>>whos Name SizeBytes Class A3x372double array B3x372double array C3x372double array D3x372double array Grand total is 36 elements using 288 bytesstas son las variables del espacio de trabajo base (el de la lnea de comandos de MATLAB). Ms adelante se ver que cada funcin tiene su propio espacio de trabajo, con variables cuyos nombres no interfieren con las variables de los otros espacios de trabajo.LaventanaWorkspaceBrowserconstituyeunentornogrficoparaverlas variablesdefinidasenelespaciodetrabajo.Seactivaconelcomando View/Workspace.LaFigura16muestraelaspectoinicialdelWorkspace Browser cuando se abre desde un determinado programa.HaciendodobleclicporejemplosobrelamatrizBARSapareceunanueva ventana(opestaa,silaventanayaexista)delArrayEditor,enlaquese muestran y pueden ser modificados los elementos de dicha matriz (ver Figura 17). EsimportanteinsistirenquecadaunadelasfuncionesdeMATLABtienesu propioespaciodetrabajo,alqueenprincipioslopertenecenlasvariables recibidas como argumentos o definidas dentro de la propia funcin.EnlabarradeherramientasdelWorkspaceBrowserapareceunalista desplegable(Stack)conlosespaciosdetrabajodelprogramaactual.Hayque 17tener en cuenta que cuando se termina de ejecutar una funcin y se devuelve el controlalprogramaquelahaballamado,lasvariablesdefinidasenlafuncin dejandeexistir(salvoquesehayandeclaradocomopersistent)ytambindeja de existir su espacio de trabajo.Si se desean examinar otras matrices y/o vectores, al hacer doble clic sobre ellas elArrayEditorlasmuestraenlamismaventanacomosubventanaconuna pestaa diferente. ClicandoconelbotnderechosobrealgunadelasvariablesdelWorkspace Browserseabreunmencontextualqueofrecealgunasposibilidades interesantes, como por ejemplo la de representar grficamente dicha variable.ElArrayEditornoslopermiteverlosvaloresdeloselementosdecualquier matrizovectordefinidoenelprograma:estambinposiblemodificarestos valoresclicandosobrelaceldacorrespondiente.LaventanadelArrayEditor incluyeunalistadesplegableenlaquesepuedeelegirelformatoenelquese desea ver los datos.ElArrayEditoresmuytiltambinparaentenderbienciertosalgoritmos, ejecutandopasoapasounprogramayviendocmocambianlosvaloresdelas distintas variables. Es posible aparcar o situar las ventanas o pestaas del Array Editor en la misma ventana del Editor/Debugger, que se va a ver a continuacin.EnMATLABtienenparticularimportancialosyacitadosficheros-M(oM-files). SonficherosdetextoASCII,conlaextensin*.m,quecontienenconjuntosde comandosodefinicindefunciones(estosltimossonunpocoms complicadosysevernmsadelante).Laimportanciadeestosficheros-Mesquealteclear su nombre en la lnea de comandos y pulsar Intro, se ejecutan uno tras otro todos loscomandoscontenidosendichofichero.Elpoderguardarinstruccionesy grandes matrices en un fichero permite ahorrar mucho trabajo de tecleado. Aunque los ficheros *.m se pueden crear con cualquier editor de ficheros ASCII tal comoNotepad,MATLABdisponedeuneditorquepermitetantocreary 18modificarestosficheros,comoejecutarlospasoapasoparaversicontienen errores (proceso de Debug o depuracin).LaFigura 18 muestra laventanaprincipaldelEditor/Debugger,en la que seha tecleadounfichero-MllamadoPrueba1.m,quecontieneuncomentarioyseis sentencias4.ElEditormuestracondiferentescoloreslosdiferentestiposo elementosconstitutivosdeloscomandos(enverdeloscomentarios,enrojolas cadenas de caracteres, etc.).El Editor se preocupa tambin de que las comillas o parntesis que se abren, no se queden sin el correspondiente elemento de cierre. Colocando el cursor antes o despusdeunaapertura o cierredecorchete o parntesisypulsandolasteclas () o (), el Editor muestra con qu cierre o apertura de corchete o parntesis seemparejaelelementoconsiderado;sinoseemparejaconninguno,aparece con una rayita de tachado.Seleccionandovariaslneasyclicandoconelbotnderechoapareceunmen contextual cuya sentencia Comment permite entre otras cosas comentar con el carcter % todas las lneas seleccionadas. . Estoscomentariospuedenvolverasucondicindecdigoejecutable seleccionndolosyejecutandoUncommentenelmencontextual.Otraopcin muytildelmismomencontextualesSmartIndent,queorganizaelsangrado de los bucles y bifurcaciones de las sentencias seleccionadas.LaFigura19correspondeaunaejecucindeesteficherodecomandos controlada con el Debugger.Dicha ejecucinse comienza eligiendo el comando Runen el menDebug,pulsando latecla F5,clicando enel botnContinue() delabarradeherramientasdelEditorotecleandoelnombredelficheroenla lnea de comandos de la Command Window. Los puntos rojos que aparecen en el margen izquierdo son breakpoints (puntos enlosquesedetienelaejecucindeprograma);laflechaverdeenelborde izquierdo indica la sentencia en que est detenida la ejecucin (antes de ejecutar dichasentencia);cuandoelcursorsecolocasobreunavariable(enestecaso sobre la matriz A) aparece una pequea ventana con los valores numricos de esa variable, tal como se ve en la Figura 19.EnlaFigura19puedeapreciarsetambinqueestnactivadoslosbotonesque correspondenalDebugger.Elsignificadodeestosbotones,queapareceal colocar el cursor sobre cada uno de ellos, es el siguiente: Set/ClearBreakpoint.Colocaoborraunbreakpointenlalneaenque est el cursor.ClearAllBreakpoints.Eliminatodoslosbreakpointsquehayaenel fichero.Step.Avanzarunpasosinentrarenlasfuncionesdeusuarioquese 4 Las seis sentencias de prueba1.m son las siguientes (reagrupadas en dos lneas). Clear all; A = rand (3,3); B=A; C=inv(A); D=C*A; disp (Ya he terminado); 19llamen en esa lnea.Step In. Avanzar un paso, y si en ese paso hay una llamada a una funcin cuyo fichero *.m est accesible, entra en dicha funcin.Step Out. Salir de la funcin que se est ejecutando en ese momento.Continue. Continuar la ejecucin hasta el siguiente breakpoint.Quit Debugging. Terminar la ejecucin del Debugger.Stack.Enlapartederechadelabarradeherramientasapareceestalista desplegable(novisibleenlaFigura19)mediantelacualsepuedeelegirel contexto,esdecirelespaciodetrabajooelmbitodelasvariablesquese quieren examinar.Ya se ha comentado que el espacio de trabajo base (el de las variables creadas desde la lnea de comandos) y el espacio de trabajo de cada una de las funciones son diferentes.ElDebuggeresunprogramaquehayqueconocermuybien,puesesmuytil paradetectarycorregirerrores.Estambinenormementetilparaaprender mtodosnumricosytcnicasdeprogramacin.Paraaprenderamanejarel Debugger lo mejor es practicar.Cuando se est ejecutando un programa con el Debugger, en cualquier momento se puede ir a la lnea de comandos de MATLAB y teclear una expresin para ver su resultado.Tambin se puede seleccionar con el ratn una sub-expresin en cualquier lnea vista en el Editor/Debugger, clicar con el botn derecho y en el men contextual que se abre elegir Evaluate Selection. El resultado de evaluar esa sub-expresin aparece en la lnea de comandos de MATLAB.Ya en las versiones anteriores MATLAB dispona de un Debugger alfanumrico queseutilizabadesdelalneadecomandosyenelqueestbasadoelnuevo Debugger grfico del que se ha hablado anteriormente.Dehecho,alrealizaroperacionesconelDebuggergrficovanapareciendolas correspondientesinstruccionesenlalneadecomandosdeMATLAB.Params informacinsobreloscomandosdelDebuggeralfanumrico,buscarenla seccinEditingandDebuggingM-FilesenHelp/Matlab/Using Matlab/Development Environment.Seleccionando elnombredeunafuncino de un ficherodecomandos en el cdigomostradoenlaventanadelEditor/Debuggeryabriendoconelbotn derechoelmencontextualcorrespondiente,seofrecenlastresposibilidades EvaluateSelection,OpenSelectionyHelponSelection,quesonmuytiles para comprobar, ver o recibir ayuda sobre la funcin seleccionada.El profiler es una utilidad que permite saber cmo se ha empleado el tiempo de la CPUenlaejecucuindeundeterminadoprograma.Elprofileresuna herramientamuytilparadeterminarloscuellosdebotelladeunprograma,es 20decirlasfuncionesylaslneasdecdigoquemsvecessellamanyquese llevan la mayor parte del tiepo de ejecucin.Esobvioque,cuandosetratademejorarlaeficienciadeunprograma,esms importante tratar de mejorar una funcin que se lleva el 60% del tiempo total que otraqueslosellevael2%.Dentrodelafuncinmsllamada,elprofiler proporcina informacin sobre el tiempo que se lleva cada sentencia, y da tambin algunas orientaciones sobre las posibilidades de mejorarla.Paraexplicarelprofileresmejorhaberavanzadomsenelconocimientode MATLAB. Por eso, su presentacin se demorar hasta la seccin 6.11, a partir de la pgina 90.MATLAB6.5disponedeuncuadrodedilogodesdeelqueseestablecencasi todas las opciones que el usuario puede determinar por su cuenta. Este cuadro de dilogoseabreconelcomandoPreferencesdelmenFile.EnlaFigura20se aparece el cuadro de dilogo Preferences mostrando todas las posibilidades que ofrece en el men de la izquierda: en total son 18 cuadros de dilogo diferentes. LaFigura21muestraelquepermiteelegirlostiposdeletrayloscolores generales. El cuadro de dilogo Command Window/Font&Colors(similaralmostradoenlaFigura21)ofrecelaposibilidadde elegir el tipo de letra as como el tamao y el color, tanto de las letras como del fondo con la que se escribe en la ventana de comandos de MATLAB.Esmuyimportanteutilizartiposdeletradetamaoconstante(Fixedsyso Courier New), para que las filas de las matrices se alineen bien en la pantalla.RespectoalosformatosnumricosconqueMATLABmuestralosresultados (recurdese que siempre calcula con doble precisin, es decir con unas 16 cifras decimalesequivalentes),lasposibilidadesexistentessemuestranenlalista desplegable de la Figura 22 y son las siguientes:21short coma fija con 4 decimales (defecto) long coma fija con 15 decimaleshex cifras hexadecimalesbank nmeros con dos cifras decimalesshort e notacin cientfica con 4 decimalesshort g notacin cientfica o decimal, dependiendo del valorlong e notacin cientfica con 15 decimaleslong g notacin cientfica o decimal, dependiendo del valorrat expresa los nmeros racionales como cocientes de enterosEstosformatossepuedencambiartambindesdelalneadecomandos anteponiendolapalabraformat.Porejemplo,paraverlasmatricesenformato long habr que ejecutar el comando:>> format longPorotraparte,elformatolooseintroducealgunaslneasenblancoenlasalida (opcinpordefecto),mientrasqueelformatocompacteliminalaslneasen blancocitadas(eslaopcinrecomendadaporlosautoresdeestecurso).Estas opciones estndisponiblesenelcuadrodedilogodelaFigura22ysepueden tambin establecer desde la lnea de comandos en la forma:>> format compactEl cuadro de dilogo de la Figura 23 permite elegir un editor de programas distinto del que trae MATLAB (built-in editor), as como obligar a que los ficheros se abran de modo automtico al ejecutarlos con el Debugger. MATLAB aplica un factor de escala general a las matrices cuando los elementos noenterosmsgrandesomspequeossonsuperioresoinferioresauna determinada cantidad (103 y 10-3, respectivamente).HayqueaadirqueMATLABtratademantenerelformatodelosnmerosque han sido definidos como enteros (sin punto decimal). Si se elige la opcin format 22ratelprogramatratadeexpresarlosnmerosracionalescomococientesde enteros.Ficheros matlabrc.m, startup.m y finish.mElsearchpathinicialopordefectodeMATLABestdefinidoenunfichero llamadomatlabrc.m,enelsub-directoriotoolbox\local.Esteficherocontiene tambin otros parmetros de inicializacin y es, por ejemplo, el responsable de los mensajesqueaparecenalarrancarelprograma.Esteficheroseejecuta automticamente al arrancar MATLAB.En las instalaciones de MATLAB en red, matlabrc.m es un fichero controlado por el administrador del sistema. Una de las cosas que hace este fichero es ver si en algn directorio del search path existe otro fichero llamado startup.m, y en caso de que exista lo ejecuta.EstoabrelaposibilidaddequecadausuarioarranqueMATLABdeunaforma personalizada. Si en el search path de MATLAB se coloca un fichero creado por elusuariollamadostartup.mlasinstruccionescontenidasendichoficherose ejecutarn automticamente cada vez que arranque MATLAB.Unposiblecontenidodeesteficheropuedeserelsiguiente(sesugierecrearlo con Notepad):>> format compact >> addpath 'c:\Matlab\Practicas' - end >> disp('Hola!')Se puede crear fichero en el directorio indicado y probar a arrancar MATLAB. Si el saludo Hola! se sustituye por un saludo ms personal (por ejemplo, incluyendo el propionombre),secomprobarloexplicadopreviamente.Esmuyaconsejable crear este fichero si MATLAB se utiliza en un ordenador de uso personal.De forma anloga, al abandonar la ejecucin de MATLAB con el comando quit se ejecuta automticamente el fichero finish.m, siempre que se encuentre en alguno de los directorios del search path.Esteficherosepuedeutilizarporejemploparaguardarelespaciodetrabajode MATLAB (ver apartado 2.7) y poder continuar en otro momento a partir del punto en el que se abandon el trabajo, por ejemplo al cerrar el programa.Enmuchasocasionespuederesultarinteresanteinterrumpireltrabajocon MATLAB y poderlo recuperar ms tarde en el mismo punto en el que se dej (con las mismas variables definidas, con los mismos resultados intermedios, etc.). Hay que tener en cuenta que al salir del programa todo el contenido de la memoria se borra automticamente.Paraguardarelestadodeunasesindetrabajoexisteelcomandosave.Sise 23teclea:>> saveantesdeabandonarelprograma,secreaeneldirectorioactualunfichero binariollamadomatlab.mat(omatlab)conelestadodelasesin(exceptolos grficos,queporocuparmuchamemoriahayque guardaraparte).Dichoestado puede recuperarse la siguiente vez que se arranque el programa con el comando:>> loadEstaeslaformamsbsicadeloscomandossaveyload.Sepuedenguardar tambinmatricesyvectoresdeformaselectivayenficherosconnombre especificadoporelusuario.Porejemplo,elcomando(sincomasentrelos nombres de variables):>> save filename A x yguardalasvariablesA,xeyenunficherobinariollamadofilename.mat(o filename). Para recuperarlas en otra sesin basta teclear:>> load filenameSi no se indica ningn nombre de variable, se guardan todas las variables creadas en esa sesin.ElcomandosavepermiteguardarelestadodelasesinenformatoASCII utilizndolodelasiguienteforma(loquevadetrsdelcarcter(%)esun comentario que es ignorado por MATLAB):>> save -ascii % almacena 8 cifras decimales>> save -ascii -double % almacena 16 cifras decimales>> save -ascii -double -tab % almacena 16 cifras separadas por tabsaunqueenformatoASCIIsloseguardanlosvaloresynootrainformacintal comolosnombresdelasmatricesy/ovectores.Cuandoserecuperanestos ficheros con load -ascii toda la informacin se guarda en una nica matriz con el nombredelfichero.Estoproduceunerrorcuandonotodaslasfilastienenel mismo nmero de elementos.Conlaopcin-appendenelcomandosavelainformacinseguardaa continuacin de lo que hubiera en el fichero.Elcomandoloadadmitelasopciones-asciiy-mat,paraobligarlealeeren formato ASCII o binario, respectivamente.LoscomandossaveyloadcreanficherosbinariosoASCIIconelestadodela sesin.Existeotraformamssencilladealmacenarenunficherountextoque describaloqueelprogramavahaciendo(laentradaysalidadeloscomandos utilizados). Esto se hace con el comando diary en la forma siguiente:24>> diary filename.txt>> diary off>> diary onElcomandodiaryoffsuspendelaejecucindediaryydiaryonlareanuda.El simplecomandodiarypasadeonaoffyviceversa.Parapoderaccederal fichero filename.txt con Notepad o Word es necesario que diary est en off. Si en el comando diary no se incluye el nombre del fichero se utiliza por defecto un fichero llamado diary (sin extensin).YasehaindicadoqueparaMATLABelcarctertantoporciento(%)indica comienzodecomentario.Cuandoapareceenunalneadecomandos,el programa supone que todo lo que va desde ese carcter hasta el fin de la lnea es un comentario.Msadelanteseverqueloscomentariosdelosficheros*.mtienenalgunas peculiaridades importantes, pues pueden servir para definir help's personalizados de las funciones que el usuario vaya creando.MATLABdisponedefuncionesquepermitencalculareltiempoempleadoenlas operacionesmatemticasrealizadas.Algunasdeestasfuncionessonlas siguientes:cputime:devuelveeltiempodeCPU(conprecisindecentsimasdesegundo) desdequeelprogramaarranc.Llamandoantesydespusderealizar una operacin y restando los valores devueltos, se puede saber el tiempo de CPU empleado en esa operacin. Este tiempo sigue corriendo aunque MATLAB est inactivo.etime(t2,t1):tiempotranscurridoentre losvectorest1yt2(atencinalorden!), obtenidoscomorespuestaalcomandoclock.ticopstocimprimeel tiempo en segundos requerido por ops. El comando tic pone el reloj a cero y toc obtiene el tiempo transcurrido.EnlasversionesanterioresaMATLAB6.0sedisponadefuncionespara determinar el nmero de operaciones aritmticas realizadas:flops(0)inicializabaaceroelcontadordenmerodeoperacionesaritmticasde puntoflotante(flops)flopsdevolvaelnmerodeflopsrealizadosdesdela inicializacin hasta ese momentoApartirdelaversin6.0lafuncinflopsyanoestdisponible.Larazn aducidaenladocumentacindeMATLABesdoble:Porunaparte,enmuchos casos es muy difcil estimar el nmero de operaciones aritmticas realizadas (por ejemplo,enclculoconmatricessparse),yporotra,enloscomputadores 25modernoselnmerodeoperacionesaritmticasnoesmsimportantequela gestindelamemoria,uotrosfactoresdistintosqueafectanengranmaneraal tiempo de CPU.Por otraparte, convienerecordar que lafuncinflops"estimaba"yno "contaba" elnmerodeoperacionesaritmticas,puestoquecontarlasdemodoexacto hubiera tenido un coste prohibitivo.A modo de ejemplo, el siguiente cdigo mide de varias formas el tiempo necesario pararesolverunsistemade1000ecuacionescon1000incgnitas.Tngaseen cuentaquelostiempospequeos(delordendelasdcimasocentsimasde segundo), no se pueden medir con gran precisin.>> n=1000; A=rand(n); b=rand(n,1); x=zeros(n,1); >> tiempo=clock; x=A\b; tiempo=etime(clock, tiempo) >> time=cputime; x=A\b; time=cputime-time >> tic; x=A\b; tocdondesehanpuestovariassentenciasenlamismalneaparaqueseejecuten todas sin tiempos muertos al pulsar intro. Esto es especialmente importante en la lneadecomandosenlaquesequieremedirlostiempos.Todaslassentencias declculosmatricialesvanseguidasdepuntoycoma(;)conobjetodeevitarla impresin de resultados. Conviene ejecutar dos o tres veces cada sentencia para obtenertiemposptimos,yaquelaprimeravezqueseejecutanseempleaun cierto tiempo en cargar las funciones a memoria. Alresolverproblemasdeingeniera,esimportantepodervisualizarlosdatos relacionadosconelproblema.Aveceslosdatosconsistenenunsolonmero, como el radio de un crculo.Enotrasocasiones,losdatospodranserunacoordenadaenunplano,que puederepresentarsecomounpardenmeros,unodeloscualesrepresentala coordenada x, y el otro, la coordenada y.Enotroproblema,podramostenerunconjuntodecuatrocoordenadasxyz, representandoloscuatroverticesdeunapirmideconbasetriangularenun espacio tridimensional.Podemos representar todos estos ejemplos usando un tipo especial de estructura dedatosIlamadomatriz,unconjuntodenmerosdispuestosenunaretcula rectangular de filas y columnas.As,unsolopuntopuedeconsiderarsecomounamatrizconunafilayuna columna,unacoordenadaxypuedeconsiderarseunamatrizconunafilaydos columnas,yunconjuntodecuatrocoordenadasxyzpuedeconsiderarsecomo una matriz con cuatro filas y tres columnas. He aqu ejemplos de esto: matriz 26 Observe que los datos contenidos en una matriz se escriben dentro de corchetes. Si una matriz tiene una fila y una columna, podemos llamar escalar al nmero. De forma similar, si una matriz tiene una fila o una columna, la llamamos vector; para ser ms especficos, usamos el trmino vector fila o vector columna. Alusarunamatriz,necesitamosunaformadereferirnosaloselementoso nmerosindividualesquecontiene.Unmtodosencilloparaespecificarun elemento de una matriz usa el nmero de fila y el de columna. Por ejemplo, si nos referimos al valor de la fila 4 y la columna 3 de Ia matriz C del ejemplo anterior, no habr ambigedad: nos estamos refiriendo al valor 2.Usamos los nmeros de fila y de columna como subndices; As, C43 representa el valor2.Parareferirnosatodalamatrizusamoselnombresinsubndices,como enC.Aquusaremosuntipodeletraespecialparalasmatricesycomandosde MATLAB.Los subndices se indican en MATLAB con parntesis, como en c(4, 3). El tamao de una matriz se especifica con el nmero de filas y de columnas. En nuestro ejemplo anterior, C es una matriz con cuatro filas y tres columnas, o sea, una matriz 4 x 3. Si una matriz contiene m filas y n columnas, entonces contiene un total de m por n valores;As, C contiene 12 valores. Si una matriz tiene el mismo nmero de cuadrada filas y de columnas, decimos que es una matriz cuadrada. TALLER N Conteste las siguientes preguntas acerca de esta matriz: 1.Qu tamao tiene C? 2.D las referencias de subndices de todas las posiciones que contengan el valor 0.5. EnlosprogramasMATLAB,asignamosnombresalosescalares,vecesque usamos. Las siguientes reglas aplican a estos nombres de variables,. Los nombres de variables deben comenzar con una letra. Losnombresdevariablespuedencontenerletras,dgitosyel | | | | A 3.5 B 1.5 3.11 0 01 1 0C1 1 00 0 2= =( ( (= ( ( 0.6 1.5 2.3 0.58.2 0.5 0.1 2.0G 5.7 8.2 9.0 1.50.5 0.5 2.4 0.51.2 2.3 4.5 0.5( ( ( ( = ( ( ( Escalar Vector Subindices Matriz Cuadrada 27carcter de subrayado (_). Losnombresdevariablespuedentenercualquierlongitud,pero deben ser nicos dentro de los primeros 19 caracteres.5 MATLAB es sensible a Ia diferencia entre maysculas y minsculas, As que los nombres Tiempo, TIEMPO y tiempo representan tres variables distintas. .Presentamoscuatromtodosparaasignarvaloresinicialesamatricesen MATLAB.Elprimermtodolistaexplcitamentelosvalores,elsegundousael operador dedospuntos,eltercerousafuncionesMATLAByelcuartoleedatos del teclado. Listas explcitas. La forma ms sencilla de definir una matriz es usar una lista de nmeros, como se muestra en el siguiente ejemplo, que define las matrices A, B y C que usamos en nuestro ejemplo anterior: Estas instrucciones son ejemplos de la instruccin de asignacin, que consiste deasignacinenunnombredevariableseguidodeunsignoigualydelos valores de datos que se asignarn a la variable.Dichosvaloresseencierranencorchetesenordenporfila;lasfilasseseparan consignosdepuntoycoma,ylosvaloresdecadafilaseseparanmediante comasoespacios.Unvalorpuedecontenerunsignomsomenosyunpunto decimal, pero no puede contener una coma. Cuandodefinimosunamatriz,MATLABimprimeelvalordelamatrizenla pantallaamenosquesuprimamoslaimpresinconunsignodepuntoycoma despusdeladefinicin.Ennuestrosejemplos,generalmenteincluiremosel signo de punto y coma para suprimir la impresin.Sin embargo, mientras est aprendiendo a definir matrices, le resultar til ver los valores de esas matrices. Por tanto, tal vez desee omitir el signo de punto y coma despusdeunadefinicindematrizhastaestarsegurodequesabedefinir 5Estosignificaque,paraMATLAB,dosvariablessonidnticassitienenlos primeros 19 caracteres iguales aunque los restantes Sean distintos. | || || |A 3.5 ;B 1.5, 3.1 ;C 1, 0, 0; 1, 1, 0; 1, 1, 0; 0, 0, 2 ;=== Instruccin de Asignacin 28correctamente las matrices.LoscomandoswhoywhosTambinsonmuytilesalusarMATLAB.El comandowholistalasmatricesquesehandefinido,ywhoslistalasmatricesy sus tamaos. Tambinpuededefinirseunamatrizlistandocadafila enunalneaaparte,como en la siguiente serie de comandos MATLAB: Sihaydemasiadosnmerosenunafiladeunamatrizparaquequepanenuna lnea, podemos continuar la instruccin en la siguiente lnea, pero se requiere una coma y tres puntos (puntos suspensivos) al final de la lnea para indicar que Ia fila debe Suspensivos continuar.Por ejemplo, si queremos definir un vector de fila F con 10 valores, podemos usar cualquiera de las siguientes instrucciones: MATLABtambinnospermitedefinirunamatrizusandootramatrizqueyase defini. Por ejemplo, considere las siguientes instrucciones: Estos comandos equivalen a lo siguiente: Tambinpodemosmodificarlosvaloresdeunamatrizoagregarvalores adicionalesusandounareferenciaaunlugarespecfico.As,elsiguiente comando, S(2) = -1.0; cambia el segundo valor de la matriz s de 1.5 a -1.0. Tambinpodemosextenderunamatrizdefiniendonuevoselementos.Si ejecutamos el siguiente comando, S(4) = 5.5; [ 1, 0, 01, 1, 0C1, 1, 00, 0, 2];=| | F 1, 52, 64, 197, 42, 42, 55, 82, 22, 109 ;F [1, 52, 64, 197, 42, 42, ...55, 82, 22, 109];= = | || |B 1.5, 3.1 ;S 3.0, B==| | B 3.0, 1.5, 3.1 ; =29lamatrizstendrcuatrovaloresenlugardetres.Siejecutamoselsiguiente comando, S(8) = 9.5; la matriz s tendr ocho valores, y los valores de S (5), S (6) y S (7) se pondrn en cero automticamente porque no se dieron valores para ellos. TALLER N Dlostamaosdelassiguientesmatrices.Compruebesusrespuestas introduciendoloscomandosenMATLAByusandoluegoelcomandowhos.En estosproblemas,unadefinicindematrizpuedereferirse.aunamatrizdefinida en un problema anterior. Operadordedospuntos.Eloperadordedospuntosesunoperadormuy potente de para crear matrices nuevas. Por ejemplo, puede usarse dicho operador para crear vectores a partir de una matriz.Siseusaunsignodedospuntosenunareferenciadematrizenlugardeun subndice especfico, el signo de dos puntos representa a toda la fila o columna.Porejemplo,despusdedefinirunamatrizC,lossiguientescomandos almacenanlaprimeracolumnadecenelvectordecolumnax,lasegunda columnadecenelvectorcolumnay,ylaterceracolumnadeCenelvector columna z: El operador de dos puntos tambin puede servir para generar matrices nuevas. Si seusaunsignodedospuntosparaseparardosenteros,eloperadordedos puntosgenerartodoslosenterosentrelosdosenterosespecificados.Por | || || || || |1. B 2; 4; 6; 102. C 5 3 5; 6 2 33. E [3 5 10 0; 0 0 ...0 3; 3 9 9 8]4. T 4 24 9Q T 0 T5. v C(2,1); B6. A(2,1) 3 = = = == = = | |( )( )( )C 1, 0, 0; 1, 1, 0;1, 1, 0; 0, 0, 0, 2x C :,1 ;y C :,2 ;z C :,3 ;= ===Operador de dos puntos30ejemplo,IasiguientenotacingeneraunvectorllamadoHquecontienelos nmeros del 1 al 8. Siseusansignosdedospuntosparaseparartresnmeros,eloperadordedos puntosgenerarvaloresentreelprimernmeroyeltercero,usandoelsegundo nmero como incremento. Por ejemplo, Ia siguiente notacin genera un vector de fila llamado tiempo que contiene los nmeros de 0.0 a 5.0 en incrementos de 0.5: Elincrementotambinpuedesernegativo,comosemuestraenelsiguiente ejemplo,quegeneralosntimeros10,9,8,...0enelvectordefilallamado valores: Eloperadordedospuntostambinpuedeservirparaseleccionarunasubmatriz deotramatriz.Porejemplo,supongaquesedefiniCenMATLABcomola siguiente matriz: Si ejecutamos los siguientes comandos, habremos definido las siguientes matrices: Si la notacin de signo de dos puntos define una matriz con subndices no vlidos, como C (5:6,:), se exhibir un mensaje de error. EnMATLABsevaletenerunamatrizvaca.Porejemplo,cadaunadelas siguientes instrucciones genera una matriz vaca: H 1: 8; =tiempo 0.0 : 0.5 : 5.0; =valores 10 : 1: 0; = Submatriz 1 0 01 1 01 1 00 0 2( ( ( ( ( ( ) c _partitial _1 C :,2 : 3 ; =( ) c _partitial _2 C 3 : 4,1: 2 ; =0 01 0 1 1c _partitial _1 c _partitial _21 0 0 00 2 ( (( (= =( ( ( a [1;b 4 : 1: 5;== 31Cabesealarqueunamatrizvacaesdistintadeunamatrizquesolocontiene ceros. El empleo de la expresin c (:) equivale a una matriz de columna larga que contienelaprimeracolumnadec,seguidadeIasegundacolumnadec,yAs sucesivamente. Un operador muy til para manipular matrices es el operador de transponer. La transpuesta de una matriz A se denota con A y representa una nueva matriz en la que las filas de A se han convertido en las columnas de A.Enelcursoestudiaremosesteoperadorconmayordetalle,peroporahoralo usaremos solo para convertir un vector fila en un vector columna y viceversa.Esta capacidad puede ser muy til al imprimir vectores. Por ejemplo, suponga que generamosdosvectores,xyy.Ahoraqueremosimprimirlosvaloresdemodo quex(1)yy(1) estnenlamismalnea,x(2)yy(2) estnenlamismalnea, etc. Una forma sencilla de hacer esto es: La salida generada por estas instrucciones es: Este operador tambin ser til para generar algunas de las tablas especificadas en los problemas del final del curso. iPractique Indiqueelcontenidodelassiguientesmatrices.Luegoverifiquesusrespuestas introduciendo los comandos MATLAB . Use la siguiente matriz G: Operador de Transponer | |x 0 : 4;y 5 : 5 : 25;x' y'==0 51 102 153 204 250.6 1.5 2.3 0.58.2 0.5 0.1 2.05.7 8.2 9.0 1.50.5 0.5 2.4 0.51.2 2.3 4.5 0.5( ( ( ( ( ( ( ( )| |( )( )12A G :,2C 10 : 15D 4 : 9 ; 1: 6F 0.0 : 0.1: 1.0T G 4 : 5 , 1: 3T G 1: 2 : 5 , :======32MATLABincluyevariasconstantespredefinidas,valoresespecialesymatrices especialesquepodemosusarennuestrosprogramasyquesedefinenenla siguiente lista: piRepresenta pi i, jRepresenta el valor1 InfRepresentainfinito,quenormalmenteocurrealdividirentrecero.Se imprimirunmensajedeadvertenciacuandosecalculeestevalor;sise exhibe una matriz que contiene este valor, el valor aparecer como NaNRepresentaNo-es-un-nmeroysueleocurrircuandounaexpresinno est definida, como la division de cero entre cero. clockRepresentalahoraactualenunvectordefiladeseiselementosque contiene ao, mes, da, hora, minuto y segundos. date Representa la fecha actual en formato de cadena de caracteres, como 20-jun-96. epsRepresentalaprecisiondepuntoflotantedelacomputadoraqueseest usando. Esta precision epsilon es Ia cantidad ms pequea en que pueden diferir dos valores en la computadora. ansRepresentaunvalorcalculadoporunaexpresinperonoalmacenadoen un nombre de variable. Se puede usarunaseriedefuncionesespeciales para generar matrices nuevas. La funcin zeros genera una matriz que contiene solo ceros. Si el argumento de lafuncinesunescalar,comoenzeros(6),lafuncingenerarunamatriz cuadrada usando el argumento como nmero de filas y nmero de columnas.Si Ia funcin tiene dos argumentos escalares, como en zeros (m,n), generar una matrizconmfilasyncolumnas.Dadoquelafuncinsizedevuelvedos argumentosescalaresquerepresentanelnmerodefilasyelnmerode columnasdeunamatriz,podemosusarsizeparagenerarunamatrizdeceros que tenga el mismo tamao que otra matriz.Las siguientes instrucciones ilustran los diversos casos: A = zeros(3); B = zeros(3,2); C [1 2 3; 4 2 5]; D = zeros (size(C)); 0 0 0 0 0A 0 0 0 B 0 00 0 0 0 01 2 3 0 0 0C D4 2 5 0 0 0 (( ((= = (( (( ((= = (( 33Lafuncinonesgeneraunamatrizquesolocontieneunos,igualquelafuncin zeros genera una matriz que slo contiene ceros. Los argumentos para Ia funcin onestienenIamismafuncionalidadquelosdezeros.Lassiguientes instrucciones ilustran los diversos casos: A = ones(3); B = ones(3,2); C = (1 2 3; 4 2 5]; D = ones(size(C)); Las matrices generadas son las siguientes: Una matriz identidad es una matriz con unos en la diagonal principal y cerosen lasdemsposiciones.Porejemplo,lasiguienteesunamatrizidentidadcon cuatro filas y cuatro columnas: Cabe sealar que Ia diagonal principal es la diagonal que contiene elementos en losqueelnmerodefilaeselmismoqueelnmerodecolumna.Portanto,los subndicesparaloselementosdeladiagonalprincipalson(1,1),(2,2),(3,3), etcetera. En MATLAB, las matrices identidad pueden generarse usando la funcin eye. Los argumentos de eye son similares a los de las funciones zeros y ones. Aunque en lamayorpartedelasaplicacionesseusanmatricesidentidadcuadradas,la definicinpuedeextenderseamatricesnocuadradas.Lassiguientes instrucciones ilustran los diversos casos: A = eye(3); B = eye(3,2); C = [1 2 3; 4 2 5]; D = eye(eize(C)); Las matrices generadas son las siguientes: 0 0 0 0 0A 0 0 0 B 0 00 0 0 0 01 2 3 0 0 0C D4 2 5 0 0 0 (( ((= = (( (( ((= = (( 1 0 0 00 1 0 00 0 1 00 0 0 1 ( ( ( ( ( Matriz Identidad 34 Noesaconsejablenombraraunamatrizdeidentidadi.porqueentoncesi.no representara1 enlasinstruccionesquesigan.(Veremoslosnmeros complejos con detalle mas adelante.) Losvaloresparaunamatriztambinpuedenintroducirseatravsdelteclado usandoelcomandoinput,queexhibeunacadenadetextoyluegoespera entradas del usuario.Despus,elvalorintroducidosealmacenaenlavariableespecificada.Siel usuariovaaintroducirmsdeunvalor,debeencerrarlosencorchetes.Siel usuario pulsa latecla Enter(Intro) sinintroducirvalores,sedevolvera una matriz vaca. Si el comando no termina con un signo de punto y coma, se imprimen los valores introducidos para la matriz. Considere el siguiente comando: z = input(Introduzca valores para z en corchetes:); Cuandoseejecutaestecomando,seexhibeenlapantalladelaterminalla cadenadetextoIntroduzcavaloresparazencorchetes:.Elusuariopuede introducirentoncesunaexpresincomo[5.16.3-18.0],queespecficavalores para z. Como este comando input termina con un signo de punto y coma, no se exhiben los valores cuando termina de ejecutarse el comando. Hayvariasformasdepresentarelcontenidodeunamatriz.Lamssencillaes introducir el nombre de la matriz. Se repetir el nombre de la matriz y a partir de la siguiente lnea se exhibirn los valores de la matriz.Tambinhayvarioscomandosquepuedenservirparaexhibirmatricesconun mayor control sobre el formato de la salida.Tambinpodemosgraficarlosvaloresdeunamatrizparateneruna representacin visual. A continuacin presentamos algunos de los detalles del uso de estas diferentes formas de exhibir informacin. Formatodeexhibicin.Cuandoseexhibenloselementosdeunamatriz,los enterossiempreseexhibencomoenteros.Losvaloresnoenterossiemprese 1 0 0 1 0A 0 1 0 B 0 10 0 1 0 01 2 3 1 0 0C D4 2 5 0 1 0 (( ((= = (( (( ((= = (( 35exhibenusandounformatoporomisin(llamadoformatocorto)quemuestra cuatro dgitos decimales.MATLAB permite especificar otros formatos (vase tabla 2.1) que muestran ms dgitos significativos. Por ejemplo, para especificar que queremos que los valores seexhibanenunformatodigitalcon14dgitosdecimales,usamoselcomando format long.Podemos regresar al formato decimal con cuatro dgitos decimales empleando el comando format short. Se exhiben dos dgitos decimales cuando se especifica el formato con format bank. Si un valor es muy grande o muy pequeno, la notacin decimal no es satisfactoria.Porejemplo,unvalorqueseusaconfrecuenciaenqumicaeslaconstantede Avogadro cuyovalorconcuatroposicionessignificativases 602,300,000,000,000,000,000,000.Es obvio que necesitamos una notacin ms manejable para valores muy grandes como la constante de Avogadro o muy pequeos como 0.0000000031.La notacin cientfica expresa un valor como un nmero entre 1 y 10 multiplicado porunapotenciade10.Ennotacincientfica,IaconstantedeAvogadrse convierteen6.023x1023.Estaformatambinrecibeelnombredemantisa (6.023) y exponente (23).EnMATLAB,seexhibenvaloresennotacincientficausandolaletraepara separar Ia mantisa y el exponente como en 6. 023e+23. Si queremos que MATLAB exhiba valores en notacin cientfica con cinco dgitos significativosusamoselcomandoformatshorte.Paraespecificarnotacin cientfica con 16 dgitos significativos, usamos el comando format long e.Tambinpodemosintroducirvaloresenunamatrizusandonotacincientfica, peroesimportantenoescribirespaciosentreIamantisayelexponenteporque MATLAB interpreta 6 .023e+ 23 como dos valores (6.023 y e+23), mientras que 6. 023e+23 se interpreta com un solo valor. Tabla 2.1: Formatos de exibicin de numeros Comando MatlabExhibeEjemplo Format shortPor omisin15.2345 Format long14 decimales15.23453333333333 Format bank2 decimales15.23 Format short e4 decimales1.5235e+01 Format long e15 decimales1.523453333333333+01Format ++,-, espacio+ Notacin cientifica 36Otro comando de formato es format +. Si se exhibe una matriz con este formato, los nicos caracteres que se imprimen son signos de ms y menos. Si un valor es positivo,seexhibeunsignoms;siunvalores0,sedejarunespacio;siun valor es negativo se exhibir un Signo menos.Esteformatopermitevisualizarunamatrizgrandeentrminosdesussignos, cosa que de otro modo tal vez no podramos ver fcilmente porque podra haber demasiados valores en una fila para tener cabida en una sola lnea. En el caso de los formatos largos y cortos, se aplica un factor de escala comn a todalamatrizsiloselementoslleganaserdemasiadograndes.Estefactorde escala se exhibe junto con los valores escalados. Porltimo,elcomandoformatcompactsuprimemuchosdelossaltosdelnea que aparecen entre las representaciones de matrices y permite ver ms lneas de informacin juntas en la pantalla.Enlassalidasdenuestrosejemplossupondremosquesehaejecutadoeste comando.Elcomandoformatlooseregresaalmododeexhibicinmenos compacto. Exhibicin de texto y valores.Podemos usar lafuncin disp para exhibirtexto encerradoenapOstrofos;tambinpodemosusarlaparaexhibirelcontenidode una matriz sin exhibir el nombre de la matriz.Porejemplosiunescalartempcontieneunvalordetemperaturaengrados Fahrenheit, podramos exhibir el valor en una lnea y las unidades en Ia siguiente lnea con estos comandos: disp(temp); disp(grados F) Si el valor de temp es 78, la salida ser la siguiente: 78 grados F Observequelosdoscomandosdispseintrodujeronenlamismalneaparaque se ejecutaran juntos. Salidas conformato.Elcomandofprintfnospermitetenertodavamscontrol sobrelassalidasqueelquetenemosconelcomandodisp.Ademsdeexhibir tantotextocomovaloresdematrices,podemosespecificarelformatoquese usaralexhibirlosvalores,ytambinsaltosdelnea.Laformageneraldeeste comando es la siguiente: fprintf (formato,matrices) Elformatocontieneeltextoylasespecificacionesdeformatoparalassalidas,y va seguido de los nombres de las matrices por exhibir. Dentro del formato se usan los especificadores %e, %f y %g para indicar donde se exhibirn los valores de la matriz.Si se usa %e, los valores se exhiben en una notacin exponencial; si se usa %f, los valores se exhiben en una notacin de punto fijo o decimal; si se usa %g, los Especificadores 37valores usarn %e o bien %f, el que sea ms corto. Si aparece la cadena \n en el formato, se exhibir la lnea especificada hasta ese punto,yelrestodelainformacinseexhibirenlasiguientelnea.Lousuales que el formato termine con \n. Un ejemplo sencillo del comando fprintf es: fprintf(La temperatura es %f grados F \n,temp) La salida correspondiente es: La temperatura es 78.000000 grados F Si modificamos el comando As: fprintf(La temperatura es \n %f grados F \n,temp) la salida ser: La temperatura es 78.000000 grados F Losespecificadoresdeformato%f,%ey%gtambinpuedencontener informacin para especificar el nmero de posiciones decimales que se exhibirn y el nmero de posiciones que se destinarn al valor correspondiente. Considere este comando: fprintf(La temperatura es %4.1f grados F \n,temp) Elvalordetempseexhibeusandocuatroposiciones,unadelascualeses decimal: La temperatura es 78.0 grados F La instruccin fprintf nos permite tener gran control sobre la forma de las salidas; lausaremosconfrecuenciaennuestrosejemplosparaqueustedsefamiliarice con ella. Grficasxysencillas.Enestaseccinexplicaremoscmogenerarunagrfica xysencillaapartirdedatosalmacenadosendosvectores.Supongaque queremosgraficarlossiguientesdatosrecabadosdeunexperimentoconun modelo de coche de control remoto.Elexperimentserepite10veces,midiendoladistanciaqueelcocheviajaen cada ensayo. EnsayoDistancia, ft 158.5 263.8 364.2 467.3 571.5 688.3 Grfica xy 38790.1 890.6 989.5 1090.4 Suponga que los nmeros de ensayo se almacenan en un vector llamado x, y que los valores de distancia se almacenan en un vector Llamado y. Para graficar estos puntos, Usamos el comando plot, con x y y como argumentos. plot(x,y) SegeneraautomticamenteIagrficadelafigura2.1.(Puedehaberpequeas variaciones en las escalas de la grfica debido al tipo de computadora y al tamao delaventanadegrficos.).labuenapracticadeingenieriaexigelaincusinde unidades y un titulo.Por tanto, incluimos los siguientes comandos que agregan un tItulo, leyendas x y y, y una retcula de fondo: plot (x,y),title(Experimento de laboratorio 1), ... xlabel(Ensayo ),ylabel( Distancia, ft ),grid Estos comandos generan la grfica de Ia figura 2.2. GRAFICA Siexhibimosunagrficayluegocontinuamosconmsclculos,MATLAB generaryexhibirlagrficaenIaventanadegrficosyluegoregresarde inmediato para ejecutar el resto de los comandos del programa.Dadoquelaventanadegrficosesremplazadaporlaventanadecomandos cuando MATLAB regresa para terminar los clculos, puede ser aconsejable usar elcomandopauseparadetenerelprogramatemporalmenteafindeque podamos examinar la grfica.Laejecucincontinuarcuandosepulsecualquiertecla.Sideseahaceruna pausadeciertonmerodesegundos,useelcomandopause(n),quehaceuna pausa de n segundos antes de continuar.El comando print imprime el contenido de la ventana de grficos en la impresora conectada a la computadora. Tambin pueden definirse matrices a partir de infomacin que se ha almacenado en un archivo de datos. MATLAB puede utilizar dos tipos distintos de archivos de datos: archivos MAT y archivos ASCII.UnarchivoMATcontienedatosalmacenadosenunformatobinarioque 39aprovechade/maneraeficientelamemoria,yunarchivoASCIIcontiene informacin almacenada en un forrnato de texto estndar para computadora.Los archivos MAT son preferib!es para datos que van a ser generados y utilizados por programas MATLAB. Los archivos ASCII son necesarios cuando los datos se vanacompartir(importndolosoexportndolos)conotrosprograrnasqueno sean MATLAB. GRAFICA Los archivos MAT se generan desde un programa MATLAB usando el comando save, que contiene un nombre de archivo y las matrices que se van a almacenar enelarchivo.Seagregaautomticamentelaextensin.matalnombredel archivo. Por ejemplo, el siguiente comando: save data_1 x y; guardalasmatricesxyyenunarchivol!amadodata_1.mat.Pararecuperar estas matrices en un programa MATLAB, usamos el comando: load data_1; UnarchivoASCIIquevayaaserutilizadoporunprogramaMATLABdeber contenersoloinformacinnumrica,ycadafiladelarchivodebercontenerel mismo nmero de valores de datos.El archivo puede generarse usando un procesador de textos 0 Un editor; tambin puedegenerarseejecutandounprogramaescritoen.unlenguajepara computadora,comoC,omedianteunprogramaMATLABusandolasiguiente forma del comando save: Experimento de Iaboratorio 1 save data_2.dat z/ascii, Este comando hace que cada fila de la matriz z se escriba en una lnea individual del archivo de datos. No se agrega la extensin .mat a los archivos ASCII. Sin embargo como se ilustra en este ejemplo, es aconsejable que los nombres de archivos ASCII tengan la extensin .dat para que sea fcil distinguirlos de los archivos .mat y de los archivos .m SupongaqueunarchivoASCIIllamadodata_3.datcontieneunconjuntode valoresquerepresentaneltiempoyladistanciacorrespondientedeuncorredor desde la lnea de salida en una carrera.Cada tiempo y su valor de distancia correspondiente estn en una lnea individual del archivo de datos. As, las primeras lneas del archivo de datos podran tener la siguiente forma: Estilo 0.0 0.00.1 3.50.2 6.840El comando load seguido por el nombre del archivo lee la informacin y la coloca enunamatrizconelmismonombrequeelarchivodedatos.Porejemplo, considere la instruccin: load data_3.dat; Losvaloresdedatossealmacenardautomticamenteenlamatrizdata_3,que tiene dos columnas. Operacines con escalares y arreglos Losclculosaritmticosseespecificanconmatricesyconstantescornbinadas con operaciones aritmticas. En esta seccin verernos primero operaciones en las queslointervienenescalares;luegoextenderemoslasoperacionesparaincluir operaciones de elemento por elemento. Las operaciones aritmticas entre dos escalares se muestran en la tabla 2.2. Las expresiones que contienen escalares y operaciones escalares se pueden evaluar yalmacenarenunavariableespecificada,comoenlasiguienteinstruccin,que especifica que los valores de a y b se sumen y Ia suma se almacene en x X = a + b; EstainstruccindeasignacindebeinterpretarseAs:elvalorqueestenase sumaalvalorqueestaenbylasumasealmacenaenx.Siinterpretamoslas instruccionesdeasignacindeestamanera,nonosextraarIasiguiente instruccin MATLAB vlida: cuenta = cuenta + 1; Esevidentequeestainstruccinnoesunaexpresionalgebraicavlida,peroen MATLABespecficaquesedebesumar1alvalorqueestencuentayel resultado se debe almacenar otra vez en cuenta.Portanto,Iainstruccinequivaleaespecificarqueelvalordecuentase incremente en 1. Operaciones aritmticas entre dos escalares OperacinForma AlgebricaMATLAB Sumaa+ba+b Restaa-ba-b Multiplicacina*ba*b Divisin aba/b Exponenciacinab a^b 41Es importante tener presente que una variable solo puede almacenar un valor a la vez.Porejemplo,supongaqueseejecutaranlassiguientesinstrucciones MATLAB una tras otra: Cuandoseejecutalaprimerainstruccinsealmacenaelvalor0.0enlavariable tiempo, y es sustituido por el valor 5.0 cuando se ejecuta la siguiente instruccin. Siseintroduceunaexpresinsinespecificarunavariableparaalmacenarel resultado,elresultadoorespuestasealmacenarautomticamenteenuna variableIlamadaans.Cadavezquesealmaceneunnuevovalorenans,se perdera el valor anterior. Lasoperacinesdearreglosseejecutanelementoporelemento.Porejemplo, suponga que A es un vector de fila con cinco elementos y B es un vector de fila concincoelementos.UnaformadegenerarunnuevovectordefilaCcuyos valoresseanlosproductosdelosvalorescorrespondientesdeAydeBesla siguiente Estos comandos son en esencia comandos escalares porque cada uno multiplica un solo valor por otro y almacena el producto en un tercer valor.Paraindicrquequeremosrealizarunamultiplicacinelementoporelemento entredosmatricesdelmismotamao,usamosunasteriscoprecedidoporun punto.As,lascincoinstrucionesanteriorespuedensersustituidasporla siguiente: No poner el punto antes del asterisco es una omisin grave porque en tal caso la instruccin especifica una operacin de matrices, no una operacion elemento por elemento. Estudiaremos las operaciones de matrices mas adelante. Enelcasodelasumaylaresta,lasoperacionesdearreglosylasdematrices soniguales,Asquenonecesitamosdistinguirentreellas.Encambio,las operacionesdearreglosparamultiplicacin,divisinyexponenciacinson diferentesdelasoperacionesdematricesparamultiplicacin,divisiny exponenciacin,As que necesitamos incluir un punto para especificar una operacin de arreglos. Estas reglas se resumen en la tabla 2.3. tiempo 0.0;tiempo 5.0;==Elemento a Elemento C(1) A(1) * B(1);C(2) A(2) * B(2);C(3) A(3) * B(3);C(4) A(4) * B(4);C(5) A(5) * B(5);=====C A. * B; =42Operaciones elemento por elemento OperacinForma algebraicaMATLAB Sumaa+ba+b Restaa-ba-b Multiplicacina*ba.*b Divisin aba./b Exponenciacinaba.^b Lasoperacioneselementoporelemento,uoperacionesdearreglos,noslose aplicanaoperacionesentredosmatricesdelmismotamao,sinotambina operaciones entre un escalar y un no escalar.As,lasdosinstruccionesdecadaunodelossiguientesjuegosdeinstrucciones son equivalentes para una matriz A: B = 3*A; B = 3.*A; C = A/5; C = A./5; Las matrices resuItntes B y C tendrn el mismo tamao que A. Afindeilustrarlasoperacionesdearreglosparavectores,considerelosdos siguientes vectores de fila: Si calculamos el producto de arreglos de A y B usando la siguiente instruccin: C contendr los siguientes valores: El comando de divisin de arreglos, genera un nuevo vector en el que cada elemento de A se divide entre el elemento correspondiente de B. As, C contendr los siguientes valores: | | | | A 2 5 6 B 2 3 5 = =C A. * B; =| | 4 15 30C A. / B; =43 La exponenciacin de arreglos tambin es una operacin elemento por elemento. Por ejemplo, considere las siguientes instrucciones: Los vectores C y D son los siguientes: Tambin podemos usar una base escalar con un exponente vector, como en: que genera un vector con los siguientes valores: Este vector tambin podrIa haberse calculado con la instruccin: Sinoestsegurodehaberescritolaexpresincorrecta,siemprepruebelacon ejemplos sencillos como los que hemos usado aqu. Losejemplosanterioresutilizaronvectores,perolasmismasreglasseaplicana matrices con filas y columnas, como se ilustra con las siguientes instrucciones: Los valores de estas matrices son: | | 1 1.6667 1.2| || |A 2, 5, 6 ;B 2, 3, 5 ;C A. 2;D A. B;..====| | | | C 4 25 36 D 4 125 7776 = =C 3.0. A;.=| | 9 243 729 ;C (3). A;.=| | d 1: 5; 1: 1: 5 ;p d. * 5;q d. 3;.= ==1 2 3 4 5d1 2 3 4 55 10 15 20 25 1 8 27 64 125p q5 10 15 20 25 1 8 27 64 125 (=( ((= = (( 44Precedencia de operaciones aritmticas PrecedenciaOperacin 1Parntesis, primero los ms internos 2Exponenciacin de izquierda a derecha 3Multiplicacin y divisin, de izquierda a derecha 4Suma, resta, de izquierda a derecha Envistadequeesposiblecombinarvariasoperacionesenunasolaexpresin aritmtica, es importante saber en qu orden se realizan las operaciones. La tabla 2.4indicalaprecedenciadelasoperacionesaritmticasenMATLAB.Observe que esta precedencia sigue la precedencia algebraica estndar. Supongaquequeremoscalcularelareadeuntrapezoide;lavariablebase contiene la longitud de la base y altura_1 y altura_2 contienen las dos alturas. El area de un trapezoide puede calcularse con La siguiente instruccin MATLAB: area = 0.5*base*(altura_1 + altura_2); Suponga que omitimos los parntesis en La expresin: area = 0.5*base*altura_1 + altura_2; Esta instruccin se ejecutara como si fuera La instruccin: area = (0.5*base*altura_1) + altura2; Observe que si bien se calcul la respuesta incorrecta, no se imprimen mensajes deerrorparaalertarnos.Portanto,esmuyimportantetenermuchocuidadoal convertir ecuaciones en instrucciones MATLAB. Agregar parntesis extra es una forma fcil de asegurarse de que los clculos se harn en el orden deseado. Si una expresin es larga, dividala en varias instrucciones: Por ejemplo, considere La siguiente ecuacin: PodracalcularseelvalordefusandolassiguientesinstruccionesMATLAB, suponiendo que x es un escalar: 3 22x 2x x 6.3fx 0.05005x 3.14 + =+ numerador x 3 2 * x 2 x 6.3;denominador x 2 0.05005 * x 3.14;f numerador / denominador;. ..= + = + =45 Esmejorusarvariasinstruccionesfcilesdeentenderqueusarunainstruccin querequieremeditarconcuidadoelordenenquedebenejecutarselas operaciones. TALLER N EscribacomandosMATLABparacalcularlossiguientesvalores.Supongaque las variables de las ecuaciones son escalares y que se les asignaron valores. 1. Factor de correccin en clculos de presin: 2. Pendiente entre dos puntos: 3. Resistencia de un circuito en paralelo 4. Prdida de presin por friccin en un tubo: TALLER N DlosvalorescontenidosenelvectorCdespusdeejecutarselassiguientes instrucciones,dondeAyBcontienenlosvaloresindicados.Verifiquesus respuestas usando MATLAB. Lasvariablesalmacenadasenunacomputadorapuedenasumirvaloresdeuna gamamuyamplia.Enlamayorpartedelascomputadoras,elintervalose extiendede10-308a10308,quedeberdesersuficienteparamanejarcas cualquier clculo.2b cfactor 1c v= + +2 12 1y ypendientex x=1 2 31resistencia1 1 1r r r=+ +21 vperdida f.p. .d 2=| | | | A 2 1 5 0 B 3 2 1 4C B* A 3;C A. / B;C 2 * A A. B;C 2. B A;C 2 * B/ 3. * A;..= = = == += +=46Noobstante,esposiblequeelresultadodeunaexpresinestfueradeeste intervalo. Por ejemplo, suponga que ejecutamos las siguientes instrucciones: Si suponemos el intervalo de valores de 10-308 a 10308, los valores de x y y estan dentrodelintervalopermitido,peroelvalordezSera2.5e400,yestevalor excede elintervalo.Este error se denomina desbordamiento de exponente porque el exponente del resultadodeunaoperacinmatemticaesdemasiadograndeparaalmacenarse enLamemoriadelacomputadora.EnMATLAB,elresultadodeun desbordamiento de exponente es Un desbordamiento negativo de exponente es un error similar que ocurre cuando elexponentedelresultadodeunaoperacinaritmticaesdemasiadopequeo paraalmacenarseenlamemoriadeIacomputadora.Siusamoselmismo intervalo permitido, obtenemos un desbordamiento negativo de exponente con los siguientes comandos: Unavezms,losvaloresdexyyestandentrodelintervalopermitido,peroel valorde+debeser2.5e-400.DadoqueelexponenteesmenorqueelmInimo, causamosLaocurrenciadeunerrordedesbordamientonegativodeexponente. En MATLAB, el resultado de un desbordamiento negativo de exponente es cero. Sabemos que Ia division entre cero es una operacin no valida. si una expresin produceunadivisinentreceroenMATLAB,elresultadoes,.MATLAB exhibira un mensaje de error y continuar con los calculos subsecuentes. La grafica ms comn que usan los ingenieros y cientficos es La grafica xy. Los datos que se grafican por lo regular se Leen de un archivo de datos o se calculan en los programas, y se almacenan en vectores que llamaremos x y y.Engeneral,supondremosquelosvaloresxrepresentanLavariable independiente, y los y, La variable dependiente. Los valores y pueden calcularse comofuncindex,olosvaloresxyypodranmedirseenunexperimento.A continuacin presentamos otras formas de exhibir esta informacin. La mayor parte de las grficas que generamos dan por hecho que los ejes x yy sedividenenintervalosequiespaciados;estasgrficassellamangraficas x 2.5e200;y 1.0e200;z x * y;===Desborda miento de exponente Deborda mientonegativo de exponente x 2.5e 200;y 1.0e200;z x / y;= ==Divisin entre cero 47Lineales.Ocasionalmente,podramosquererusarunaescalalogartmicaenun eje o en ambos. Unaescalalogartmica(debase10)estilcuandounavariableabarcavarios Ordenesdemagnitud,pueselampliointervalodevalorespuedegraficarsesin comprimir los valores ms pequeos. LoscomandosMATLABparagenerargrficaslnealesylogartmicasdelos vectores x y y son los siguientes: plot(x, y) Genera una grfica lneal con los valores de x y y.Generaunagrficadelosvaloresdexyyusandounaescala Logartmica para x y una escala lneal para y.Genera una grfica de Tos valores de x y y usando una escala lneal para x y una escala Logartmica para y.Generaunagraficadelosvaloresdexyyusandoescalas logartmicas tanto para x como para y. Enlafigura2.3semuestranejemplosdeestasgraficas.Msadelanteenesta seccin veremos com definir un grupo de grficas como las que se muestran en esta figura. Esimportantetenerpresentequeellogaritmodeunvalornegativoodecerono existe.Portanto,Si los datos quevan a graficarseen una grfica semilog olog-logcontienenvaloresnegativosoceros,MATLABexhibirunmensajede advertencia informando que esos puntos de datos se han omitido en la grfica. Todos estos comandos pueden ejecutarse tambin con un solo argumento, como enplot(y).Enestoscasos,lascurvassegeneranusandocomovaloresxlos subndices del vector y. GRAFICA PAG 56 Unaformasencilladegenerarcurvasmultiplesenlamismagraficaesusar mltiples argumentos en un comando de graficacion, como en plot (x,y,w, z) donde las variables x, y, w y z son vectores. Al ejecutarse este comando, se traza Lacurvacorrespondienteaxversusy,yluegosetrazaen LamismagraficaLa curva correspondiente a w versus z. La ventaja de esta tcnica es que el nmero depuntosdelasdoscurvasnotienequeserelmismo.MATLABselecciona automticamentediferentestiposdelneasparapoderdistinguirentrelasdos curvas. OtraformadegenerarmultiplescurvasenLamismagraficaesusarunasola matriz con multiples columnas. Cada columna se graficar contra un vector x. Por ejemplo,lassiguientesinstruccionesgeneranunagrficaquecontienedos Escala Logartmica semilogx(x, y)semilogy(x, y)loglog(x, y)48funciones como se muestra en La figura 2.4: Si la funcin plot no tiene un vector x aparte, como en plot (f), las columnas de f se graficarn usando los subndices de fila como valores x. ESTILO DE LINEAS Y MARCAS Elcomandoplot(x,y)generaunagrficadelneasqueconectalospuntos representados por los vectores x y y con segmentos de lnea. Tambin podemos seleccionar otros tipos de lneas: de guiones, de puntos y de puntos y guiones, y tambin una grafica de puntos en lugar de una de lneas. Enestecaso,lospuntosrepresentadosporlosvectoressemarcarnconun punto en vez de conectarse con segmentos de lnea. Asimismo, podemos escoger caracteresdistintosdelpuntoparaindicarlospuntos:signosms,estrellas, crculosomarcasx.Latabla2.5listaestasdiferentesopcionesdelneasy marcas. Elsiguientecomandoilustraelusodelosestilosdelneaymarca;generauna curvadelneacontinuaconlospuntosrepresentadosporlosvectoresxyyy luego marca los puntos mismos con crculos: plot(x,y,x,y, 0) Este tipo de grafica se muestra en la figura 6.3. Opciones de lineas y marcas Tipo de lneaindicadorTipo de puntoIndicador continua___punto guiones---ms+++ punteada:::crculoOoo Guiones-puntos-.-.-.marcaxxx MATLAB fija automticamente la escala de los ejes ajustndola a los valores de datos.Sinembargo,podemossupeditar esasescalas con el comandoaxis.Hay varias formas de este comando: axisMantienelaescaladelejeactualparagrficassubsecuentes.Una segundaejecucindelcomandoregresaelsistemaalescalado x 0 : 0.1: 5;f(:,1) x'. 2 3 * x' 2;plot(x, f), title(' Multiples funciones'),...xlabel(' x'),grid.== +49automtico. axis (v)Especificalaescaladelejeusandolosvaloresdeescalaqueestn en el vector v, el cual debe contener (xmin,xmax,ymin,ymax) estos comandos resultan especialmentre tiles cuando queremos comparar curvasdediferentesgraficas,puespudeserdificilcompararvisualmente curvas trazadas con diferentes ejes. El comando plot precede al comando axis(v) correspondiente. Elcomandosubplotpermitedividirlaventanadegrficosensubventanas.Las posiblesdivisionespuedenserdossubventanasocuatrosubventanas.Dos subventanas pueden quedar arriba y abajo o a la izquierda y a Ia derecha.Unadivisiondecuatroventanastienedossubventanasarribaydosabajo.Los argumentosdelcomandosubplotsontresenteros:m,n,p.Losdgitosmyn especificanquelaventanadegrficossedividaenunaretculademporn ventanas ms pequea, y el dgito p especifica Ia p-sima ventana para Ia grafica actual.Lasventanassenumerandeizquierdaaderechaydearribaaabajo.Portanto, los siguientes comandos especifican que la ventana de graficos se divida en una grfica superior y una inferior, y que la grafica actual se coloqueen Ia subventana superior: subplot(2, 1,1) ,plot(x,y) La figura 2.3 contiene cuatro grficas que ilustran el comando subplot empleando escalaslnealesylogarmtmicas.Estafigurasegenerusandolassiguientes instrucciones: % Generar curvas de un polinomio. % Generar curvas de un polinomio.%x 0 : 0.5 : 50;y 5 * x. 2;subplot(2,2,1),plot(x, y),...title('Polinomio lineal / lineal'),...ylabel(' y'),grid,...subplot(2,2,2), semilogx(x, y),...title('Polinomio log/ lineal'),...yl.==abel(' y'),grid,...subplot(2,2,3), semilogy(x, y),...title('Polinomio lineal / log'),...xlabel(' x'), ylabel(' y'),grid,...subplot(2,2, 4),loglog(x, y),...title('Polinomio log/ log'),...xlabel(' x'), ylabel(' y'),grid50Se incluirn con frecuencia ejemplos del comando subplot en este texto. Resolucin aplicada de problemas: Motor turbohlice avanzado En estaseccin realizaremos clculos en unaaplicacinrelacionada con elgran desafIo del funcionamiento de vehculos. Un motor turbohlice avanzado l!amado abanicossinductos(UDF,unductedfan)esunadelasprometedoras tecnologas que se estn desarrollando para aviones de transporte futuros. Los motores de turbohlice, que han estado en uso desde hace varias dcadas, combinan la potencia y la confiabilidad de los motores a reaccin con la eficiencia de las hlices. Estos motores representan una mejora significativa respecto a los anteriores motores de hlice impulsados por pistonesNoobstantesuaplicacinsehalimitadoaavionespequeosparacubrirrutas cortasporquenosontanrpidosnitanpotentescomolosmotoresdeaspasa reaccin que se emplean en los aviones de pasajeros de mayor tamao.El motor UDF aprovecha avances significativos en Ia tecnologIa de hlices que se probaron cuidadosamente en tneles de viento y que han angostado la brecha de rendimiento entre los motores turbohlice y los de aspas a reaccin.Nuevos materiales, formas de aspas y mayores velocidades de rotacin permiten a los aviones con motores UDF volar casi con la misma rapidez que los provistos de motores de aspas a reaccin, con mayor eficiencia de combustible. Adems, el UDF es considerablemente ms silencioso que el motor turbohlice convencional. DuranteunvuelodepruebadeunavinconmotorUDF,elpilotodeprueba ajust el nivel de potencia del motor en 40,000 newtons, lo que hace que el avin de 20,000 kg alcance una velocidad de crucero de 180 m/s (metros por segundo).Acontinuacin,lasgargantasdelmotorseajustanaunniveldepotenciade 60,000newtonsyelavincomienzaaacelerar.Alaumentarlavelocidaddel avin,elarrastreaerodinmicoaumentaenproporcinconelcuadradodela velocidad respecto al aire.Despus de cierto tiempo, el avin alcanza una nueva velocidad de crucero en la que el empuje de los motores UDF es equilibrado por el arrastre. Las ecuaciones empleadasparaestimarlavelocidadyaceleracindelavindesdeelmomento en que se reajustan las gargantas hasta que el avin alcanza su nueva velocidad de crucero (aproximadamente 120 s despus) son las siguientes: Velocidad = 0.00001tiempo3- 0.00488tiempo2 + 0.75795tiempo + 181.3566 Aceleracion= 3- 0.000062velocidad2 Escriba un programa MATLAB que pida al usuario introducir un tiempo inicial y un tiempo final (ambos en segundos) que definan un intervalo de tiempo para el cual deseamos graficar la velocidad y la aceleracin del avin. Suponga que el tiempo cero representa el punto en el que se aument el nivel de potencia. El tiempo final deber ser 120 segundos o menos. 51Calcular lanuevavelocidadyaceleracindelavindespusdeuncambioenel nivel de potencia. Elsiguientediagramamuestraquelasentradasdelprogramasonlostiempos inicialyfinalyquelassalidassongrficasdelosvaloresdevelocidady aceleracin dentro de este lapso. Dadoqueelprogramaestgenerandounagraficaparaunintervalodetiempo especfico,supondremosqueelintervaloesde0a5segundos.Luego calculamosunoscuantosvaloresconunacalculadoraparapoderloscomparar con los valores de las curvas generadas por el programa. Tiempo (s)Velocidad (m/s)Aceleracin (m/s^2) 0.0181.35660.9608 3.0183.58680.9103 5.0185.02560.8775 Lageneracindelascurvasdelvalordelavelocidadyaceleracinrequierelos siguientes pasos: 1.leer lmites del intervalo de tiempo 2.calcular los valores de velocidad y aceleracin correspondientes. 3.graficar la nueva velocidad y aceleracin Puesto queelintervalo detiempo dependede losvaloresde entrada, puede ser muy pequeo o muy grande, por tanto, en lugar de calcular valores de velocidad y aceleracinenlospuntosespecificados,calcularemos100puntosdentrodel intervalo especificado. Tiempo inicial Tiempo finall Grafica de valores de velocidad Grafica de valores de aceleracin 52Primeroprobamoselprogramausandolosdatosdelejemploamano.Esto genera la siguiente interaccin: Teclee tiempo inicial (en segundos):0 Teclee tiempo final (mx 120 segundos): 5 La grafica generada por el programa se muestra en las figuras en vista de que los valores calculados coinciden con el ejemplo a mano, podemos probar el programa conotrosvaloresdetiempo.Silosvaloresnohubieranconcordadoconel ejemplo, habriamos tenido que determinar si el error estuvo en el ejemplo o en el programa. En la figura se muestran las graficas generadas para el intervalo de tiempo de 0 a 120 segundos. Observe que la aceleracin se acerca a cero conforme la velocidad se acerca a la nueva velocidad de crucero. 53ARCHIVO M % Estos comandos generan y grafican valores de velocidad% y aceleracion en un int ervalo especificado por el usuario%tiempo_inicial input(' Teclee tiempo inicial (en segundos) : ');tiempo_ final input(Teclee tiempo final (max 120== segundos) : ');%incr _ tiempo (tiempo_ final tiempo_ final) / 99;tiempo tiempo_inicial : incr _ tiempo : tiempo_ final;velocidad 0.00001* tiempo. 3 0.00488 * tiempo. 2...0.75795 * tiempo 181.3566;aceleracion 3 0.00062 * v. .= == + += elocidad. 2;%subplot(2,1,1),plot(tiempo, velocidad), title(' Velocidad'),...ylabel(' metros/ segundos'),grid,...subplot(2,1,2),plot(tiempo,aceleracion), title(' Aceleracion'),...xlabel(' Tiempo, s'), ylabel(met.ros/ segund