Escolar Documentos
Profissional Documentos
Cultura Documentos
Elobjetivodeestedocumentoesbrindarunareferenciadeloquevamosautilizardelprograma Scilabduranteelcurso.Seefectanclculosdesdelaconsolayseintroducenvariables numricas.Ademssemuestracmogenerararchivosdecomandosyfuncionesyse documentanalgunasherramientasindispensablesdeprogramacin. contacto:netbooksparahacerciencia@df.uba.ar 1.InstalacindeScilabyMdulos 1.1Instalacin 1.2InstalacindeToolboxImaging 2.IntroduccinalScilab.ComandosenlaConsola 2.1.Notacincientfica,operacionesyfunciones 2.2Variablesyasignacindevalores. 2.3Arreglosdenmeros(vectoresymatrices) 2.3.1Introduccinyutilizacin 2.3.2Elcomandolengthysize.Vectoresfilaycolumna. 2.3.3Elcomandozerosyones 2.3.4Elementosdeunvector 2.3.5Operacionesbsicasconvectores 2.3.6Operacionesconmatrices 2.4Lafuncinplot 2.4.1.Grficosdefunciones 2.4.2.Coloresyformasdelgrfico 2.4.3.Ttulo,leyendasenelgrficoynombresenlosejes 2.4.4.Comodibujarlosejes 2.4.5.ComoExportargrficos 3.Scriptsyfunciones 3.1.1Quesunscriptyquesunafuncin? 3.1.2Abriryguardareleditor 3.2Cmoejecutararchivosdecomandos(scripts) 3.3Funciones 3.4ElEntornodeTrabajooWorkspace 3.5Anotacionesyelcomandoclear 3.5.1.Comentarios 3.5.2.Comandoclear 4.Ciclosforycomandoif 4.1.Ciclosfor Ejemplo1 Ejemplo2 Ejemplo3 Ejemplo4 1
1.InstalacindeScilabyMdulos
1.1Instalacin
Recomendamosfuertemente,instalarlanuevaversindelscilabqueesla5.3.3. Estaversinsepuedebajardesdeelsitiooficialdescilabquees: www.scilab.org Cuandoentramosvemosunaventanacomosta,enlaquenosofrecebajarlaversinde windowsysihacemosclickenOtherSystemsencontraremostambinlinux,macetc.Si queremoslaversinenwindowssimplementehacemosclicksobreelrecuadroquedice DownloadScilabydebecomenzarladescargadeunaarchivoquetendrunnombreparecidoa ste:scilab5.3.3.exe.
Unavezqueinstalaronestaversindescilabcuandoloejecutenseabrirunaventanacomola quesemuestraacontinuacin.
Figura1.2.VentanadeScilab.
1.2InstalacindeToolboxImaging
Unaherramientamuyinteresantequetieneestanuevaversindescilabeselbuscadore instaladordemdulosadicionales.Losmdulosadicionalessonpaquetesquenovienenconel programa(ancuandoseleccionemoslainstalacinfull)peroqueunopuedeagregara medidaquelosnecesita.Nosotrosvamosaagregarunpaquetequesirveparaprocesar 5
Figura1.5.InstalamoseltoolboxSIVP.cuandoterminamostenemosquereiniciarelscilab.
2.IntroduccinalScilab.ComandosenlaConsola
Scilab,esunlenguajedeprogramacinquenospermiteutilizarlacomputadoraparaprocesar informacinquerequieredemuchosclculos.Enestetutorialsemuestranlasoperaciones bsicas:seefectuanoperacionesconnmeros,sedefinenvectoresymatrices,segrafican funcionesyademsseintroducenlosarchivosdecomandoylasfunciones.
2.1.Notacincientfica,operacionesyfunciones
Comencemosconunaoperacinsimple.Antesdehacerlo,debemosnotarque,comotodo lenguajedeprogramacin,elidiomabaseeselinglsporloque,tantolosnombresdelas funcionesconocidascomolanotacinqueseusaparalosnmeros,correspondenalingls. Estosignifica,porejemplo,queenlugardeescribir1,5(elnmeroqueseobtienededividir3 por2)sedebeusar1.5oquelafuncintrigonomtricasenoseescribesinenlugardesen. Conestoenmente,supongamosquequeremossumar5y2,1.Escribimosentoncesenla consola:5+2.1yluegopresionemosenter.Comosemuestraenlafigura2,elprograma respondecondoslneaslaprimeradiceans=(anscorrespondealapalabraeningls answer,esdecir,respuesta)ylasegundaelresultadodelaoperacin7.1.Msabajovuelve aaparecerelsmbolodesistemaindicandoqueelprogramaestlistoparaseguirrecibiendo instrucciones.Siqueremosescribirnmerosmuygrandesomuychicosdeberemosrecurrira lanotacincientfica.Porejemplo,elnmero21020seescribe2e20obien2d20.Lomismo sucedeconlosnmerosmuychicos.Elnmero21020seescribe2e20obien2d20.
Figura2.2.Utilizacindelaconsolaparaefectuarclculossencillos. Ademsdesumarpodemoshacerotrasoperacionesentrenmeros. 10
Operaciones: + :mas :menos * :producto : :divisin sqrt :raizcuadrada ^:potencia Lossiguientesejemplosilustranlossmbolosqueseusanenoperacionessimplesentre nmeros.
Funcionesdefinidas: sin :seno cos :coseno tan :tangente acos :arcocoseno asin :arcoseno atan :arcotangente exp:exponencial log:logaritmoenbasee. log10:logaritmoenbase10. Comoenelcasodelarazcuadrada,lanotacines:sin(3)paracalcularelsenodelngulode3 radianes. Ejercicio.Hacerlosclculosqueselistanacontinuacin:10ln(2),10log(10),e2,sen(0), cos(3,14x22).Practiquedespushacerotrosclculosqueinvolucrenelusodefuncionesya definidasenScilab.
2.2Variablesyasignacindevalores.
Enmuchasocasionesnecesitamosalmacenarelresultadodeunaoperacinparasuuso posterior.Enestoscasosestilcrearunavariableyasignarleaestavariableelnmeroen cuestin(puedetambinasignarseaunavariableotrostiposdedatosperonos concentraremosennmerosporelmomento). Empecemospordefinirunavariable,
12
Figura2.5.Valorguardado. Supongamosporejemploquenecesitamoselvalordelnmeroporqueefectuaremos clculostrigonomtricos.Siescribimospiyapretamosenterelprogramanosdevuelveun mensajedeerrorporquelavariablepinohasidodefinidaconanterioridad.Tenemosentonces queindicarlealacomputadoraquepiparanosotrosvale3.1415927......Existenmuchasformas dehacerlo,unadeellasesaprovecharelhechodequeelresultadodelarcotangentede1es /4yentoncespodemosescribir pi=4*atan(1) Silohacemosyluegoapretamosenter,habremoshechodoscosas,primerocreamosuna variablequesellamapiysegundolehemosasignadoaesavariableelvalordelnmero.
13
Porsupuestoquelaeleccindelnombrepiparaalmacenarelvalordelnmero fue absolutamentearbitraria,ylaasignacinx=4*atan(1)estanvlidacomolaanterior.Lanica diferenciaesqueahoraelvalordelnmero sealmacenenunavariablequesellamax. Detodasformasalgunosnmeroscomo yaseencuentrandefinidosenScilab.Porejemplo elnmero estguardadoenunavariablequesellama%pi,elnmerodeNeperees%e. Enlafigura4semuestraotroejemplodeasignacin.Paraevitarescribirelsmbolode porcentajecadavezquenosrefiramosalnmerodeNeper,podemosasignarsuvalorauna nuevavariable,porejemplo,e.Paraelloutilizamoslainstruccine=%e.
14
15
Figura2.8.Algunasoperacionesentrevariables.
2.3Arreglosdenmeros(vectoresymatrices)
2.3.1Introduccinyutilizacin
Hastaahorahemosutilizadounsolotipodedatos:nmeros.Losarreglosdenmeros,alos queusualmentellamamosvectores,contienenmuchosnmerosagrupadosbajounamisma variable. Porejemplo"x=[753223]"guardaenunavariable"x"cinconmerosel"7",el"5",el"3",el"2" 16
Scilabusaunpasode1.Porejemplolasentenciax=10:10generaunvectordenombrexque contienelosnmerosentreel10yel10incrementndosedeauno.
18
Figura2.11.Lamatriztraspuestadeunamatrizde3x2esunamatrizde2x3.
2.3.2Elcomandolengthysize.Vectoresfilaycolumna.
Deahoraenmsusaremoselsmboloparaindicarquedebepresionarlateclaenter. Elcomandolengthcalculaeltamaodeunvector.Porejemplo,six=[1244]entonces length(x) 4 Elcomandosizecalculaeltamaodeunamatriz.Porejemplo,siA=[124332221567] entonces, size(A) 4.3. Osea,4filasy3columnas. Sisecalculasizedeunvectordevolverporejemplo size(x) 1.4. Enestecasoporserunvectorfila(unafilaycuatrocolumnas). Silotrasponemosdevolver, size(x) 4.1. (4filasy1columna).
19
2.3.3Elcomandozerosyones
Elcomandozeroscreaunamatrizovectordeceros.Porejemplo, zeros(2,3) 0. 0. 0. 0. 0. 0. Queesunamatrizde2x3llenadeceros. Elcomandoonescreaunamatrizovectordeunos.Porejemplo, ones(5,4) 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. Queesunamatrizde5x4llenadeunos. Observarquesiqueremosunamatrizcompletadeotronmeroslotenemosquemultiplicar estamatrizporesenmero.
2.3.4Elementosdeunvector
Avecesunoquiereverslounacantidaddeelementosdeunvectorounamatriz,paraesose usaelcomando:. Porejemplo,siv=[14589]yhacemos v(2:4) 4.5.8. Nosestardevolviendodesdelacoordenadas2hastala3delvector. Avecesunoquiereverslounafilaounacolumnadeunamatrizyaexistente. Porejemplosia=[1234] 1. 2. 3. 4. ysihacemos a(1,:) 1. 2. 20
nosmuestraslolaprimerafiladea. Sihacemos, a(:,2) 2. 4. Nosmuestralasegundacolumnadea. Porltimosi a=[124245346] yhacemos a(:,2:3) 2.4. 4.5. 4.6. Nosmuestralasegundayterceracolumnadea. Siqueremosredefinirlosvaloresdealgunasfilas(nodetodas)o,equivalentemente,dealgunas columnas,usamoselsmbolo:intercaladoentreelnmerodelasfilasodelascolumnasque queremosredefinir. Porejemplo, a(:,3)=[12]' 1. 2. 1. 3. 4. 2. leagregaunacolumnadeelementos1y2alamatriz(observenqueenestecasoladimensin delvectorqueagregamostienequeserigualaladelacantidaddefilas).Porotrolado,siahora hacemos, a(:,1)=0 0. 2. 0. 4.
1. 2.
esdecir,hacemostodosloselementosdelacolumna1igualesa0.Ysidespushacemos a(2,:)=3 0. 2. 3. 3.
1. 3.
esdecir,hacemostodosloselementosdelafila2igualesa3. 21
Ejercicio.Supongamosquelamatrizaestdadapor 0. 3. 2. 2. 3. 3. 1. 3. 4.
2.3.5Operacionesbsicasconvectores
Supongamosquequeremosmultiplicarcadacomponentedelvector[13426]conla componentecorrespondientedelvector[854328].Estosehaceas: [13426].*[854328] Deestemodoseobtienecomoresultadounnuevovectordecincocomponentescadaunade lascualeseselproducto,componenteacomponente,delosdosvectoresmultiplicados.Dela mismamaneraseprocedeparacualquierotraoperacin,teniendocuidadodequelosvectores tenganlamismacantidaddecomponentes.Porejemplo,paradividircomponentea componenteseusaelsmbolo"./".Siqueremoselevaralcuadradotodaslascomponentesde unvectorusamos".^2".Poderoperardeestaformaestilcuandolosvectorestienenmuchas componentes.Consideremos,porejemplo,elvectordefinidoenelltimoejercicioy supongamosquequeremoscalcularelcuadradodetodassuscomponentes.Cmolohara? Lasentenciay=x.^2dacomoresultadounvectorcontantascomponentescomox,cadauna delascualesesigualalcuadradodelascomponentesdex. Parafijarideasdefinamoselvectorxcomox=[1234]. Escribamosenlaconsolalasiguientesecuencia: x=[1234] y=x.^2 [14916].
22
Figure2.12.Operacionesconvectores
Figura2.13.Operacionesconarreglosdenmeros.Anteponiendoun.alsmbolodela operacin,Sclilabinterpretaquelaoperacinsedebeefectuarelementoaelemento. 23
2.3.6Operacionesconmatrices
Delamismaformaquesepuedeoperarcomponenteacomponenteconvectores,con matricessepuedehacerlomismo. Porejemplo,sihacemos
>A=[1234] >B=[2218] >A./B ans= 0.51. 3.0.5 QueeselresultadodedividircadacomponentedeAporcadacomponentedeB. Observarquesihacemos, >A.*B ans= 2.4. 3.32. QueeselresultadodemultiplicarcadacomponentedeAporcadacomponentedeB. Ojo!Sihacemos, >A*B ans= 4.18. 10.38. Porqunodaigualquesiponemoselpunto?Elmotivoesquealnoponerelpuntoestamos haciendoelproductomatricial,quenocoincideconelproductopuntoapunto.
24
2.4Lafuncinplot
2.4.1.Grficosdefunciones
Losvectoresconstituyenloselementosclavesparahacergrficosdeunavariableenfuncin deotra.Porlogeneraltenemosunconjuntodedatos"x"yotroconjuntodedatos"y" relacionadosentres.Porejemplodefinamos"x=10:0.1:10"e"y=x.^3".Siqueremosgraficary comofuncindexescribimosenlaconsola:plot(x,y). Scilababreentoncesunanuevaventanadondehaceelgrficocorrespondienteyquese muestraenlaFigura.
Figura2.14.Gricodey=x^3. 25
Porejemplo.Siescribimosenlaconsola,
Figura2.15.Comandosparagraficarunafuncin. dalugaralgrficodelaFigura.
Figura2.16..Grficodelafuncinxsen(16x).
26
Figura2.17.Superposicindegrficos.
27
Figura2.18.Grficodelastresfuncionesjuntas. Sisequierehacerungrficoenunanuevaventana(esdecir,sinsuperponeralgrficoanterior) escribimos figure enlaconsolayesoabreunanuevaventana.Cadanuevaventanadegrficosqueseabreest identificadaconunnmero(verqueenelbordedelaventanadiceGraphicwindownumberyel nmeroquecorresponda).Elcomandoplothaceelgrficoenlaltimaventanaabiertaamenos queunoleindiquealgnotronmero.Porejemplo,siunoescribe: figure seabreunaventana(quesellamarGraphicwindownumber0oventanadegrficonmero0 sinohabaningunaotrapreviamenteabierta).Sidespusescribimos plot(x,y) elgrficodeycomofuncindexaparecerenlaventanaidentificadaconelnmero0.
28
Figura2.19.Numeracindelosgrficos.Ventananmero0. Siluegohacemosnuevamente figure seabreunanuevaventana(Graphicwindownumber1oventanadegrficonmero1)yal hacer plot(x,x^2) elgrficodex^2comofuncindexaparecerenlaventanaidentificadaconelnmero1.Si inmediatamentedespusescribimos plot(x,10x^2) elgrficode10x^2comofuncindexaparecersuperpuestoaldex^2comofuncindexenla ventanaidentificadaconelnmero1.
29
30
Figura2.21.Alponerfigure(0)vuelvelanumeracinacerco.
2.4.2.Coloresyformasdelgrfico
Observenqueentodosloscasosenlosgrficosaparecenlneassuaves.Estoesasporque,a menosqueunoindiquealgunaopcindistinta,elScilabinterpolaentrelospuntosdelplanocon abscisaigualalosvaloresdelascomponentesdelvectorxyordenadaigualalasdelvectory. Lainterpolacinsevuelveevidenteparaxconpocascomponentes.Porejemplo,tomen x=[1246] ygrafiquenx^2comofuncindex.
31
Figura2.22.Grficodey=x^2usandopocospuntos. Avecesunopuedequerergraficarslolospuntos,sininterpolarporningunacurva,puede querercambiardecolor,superponercurvasconcoloreselegidospreviamenteporuno.Todas esassonopcionesalcomandoplot.Novamosadetallarlastodas(puedenconsultarlos ejemplosdelaayudadeScilab). Algunosdeloscoloresbsicos,formasycomohacerlalnea.Loponemoseninglsparaque seentiendalalgicadelossmbolos. Colores Puntos Linea solida :punteada .punteadaydiscontinua lineadiscontinua
32
2.4.3.Ttulo,leyendasenelgrficoynombresenlosejes
Muchasvecesestilcuandohacemosmuchosgrficosenunafiguraponerleelttuloyhacer leyendasdentrodelgrficodemaneratalquemepermitasaberquerepresentacadagrfico. Esosehaceconloscomandostitleylegend. Acaponemosunejemplodondegraficamoslafuncin
Figura2.24..Comohacerleyendasyttulosengrficos. Lasprimerasdoscosasqueaparecenenelcomandolegendsonelnombrequequieroque aparezcasobrelaleyenda.Elnmero3indicaquelaleyendaaparecerenelextremoinferior izquierdodelgrfico(verFigura2.25).Paraponerlenombrealosejesutilizamosloscomandos xlabeleylabel.Estosseaplicanalgrficoactivo.Supongamosqueenestecasoenelejede lasabscisasrepresentamoseltiempoensegundosyqueenelejedeordenadas representamoslaamplitudentoncesparaponerlenombrealosejesescribimos: xlabel(t[s]) ylabel(Amp[V]) Enlafigura2.25semuestracomoquedaelgrfico.
34
Figura2.25.Grficodelasdosfuncionesconsusleyendas.
2.4.4.Comodibujarlosejes
Enmuchoscasosvamosaquererrepresentarlosejescartesianosoquegrafiquelafuncinen unintervalodado.Paraesodebemosusarelcomandoget("current_axes").Loquehaceeste comandoesfijarciertosparmetrosdelgrfico.Enelsiguienteejemploloquehacemoses graficarlafuncin2x^2+1peroparaxenelintervalo[22]yparayenelintervalo[18],adems graficamosunpuntoqueestsobrelacurvayagregamoslosejesenelorigen.
35
left,right,middleyorigin.
Pruebelasdistintasopcionesparaverdondequedanubicadoslosejes. Tambinenalgunoscasosinteresahacerunagrillaenelgrfico.
36
2.4.5.ComoExportargrficos
Muchasvecesvamosaquererguardarlasfigurasconunformatoquenospermitapegarlas luegoenunarchivodetexto.Paraeso,unavezquetengamoslaventanadegrficoabierta, vamosafile,dentrodefile,vamosaexportar(verfigura2.26)
Figura2.27.Comoexportarungrfico. yallelegimosconqueextensinguardamoslaimagen.
37
Figura2.28.Distintosformatosparaguardarungrfico.
38
3.Scriptsyfunciones
3.1.1Quesunscriptyquesunafuncin?
SCRIPToarchivodecomando Hastaahoraescribimosinstruccionesenloquesellamalaconsoladescilab.Sibienestoes suficienteparahacerclculossencillosyrpidosoparaprobarcosas,noesmuyprctico cuandosequierenhacerclculosqueestnrelacionadosycuandoenesosclculosaparecen parmetrosquesequierencambiar.EnSCILAByvariosprogramassimilaresesposible escribirtodaslasinstruccionesenunarchivodetextoyluegopedirleaSCILABquelasejecute desdeelarchivodetexto.Aestearchivodetextoselollamascript.
3.1.2Abriryguardareleditor
ParaescribirelarchivoconloscomandosutilizaremoseleditorquevieneconScilabparaello escribimosenlaconsola:editor().
39
Figure3.2.Otraformadeabrireleditor. Seabriradeestamaneraeleditor.
40
3.2Cmoejecutararchivosdecomandos(scripts)
Enelejemploquesemuestraenlafigura3.5,sedefinenlosvectoresxeyyluegosegrafica ycomofuncindex.Lasintaxiseslamismaqueutilizamosenlaconsola:
41
Figura3.7,ejecucinsineco(...filewithnoecho),seejecutaelscriptsinmostrarnadaenla consola. Alejecutarsineco,lonicoqueapareceenlaconsolaeselcomandoexecqueesloquese ejecutacuandoeneleditorseleccionamoslaopcinadelmenejecutar. b)filewitheco Siseleccionamoslaopcin...filewithechovemosqueenlaconsolaaparecenunaaunalas instruccionesquecomponenelscript.Estoquieredecirconeco:quemuestraenlaconsolalas instruccionesamedidaquevaejecutandoelscript.Escomosihubisemosescritolas instruccionesenelscript.Estoestilcuandoestamosprobandocosas.Enlafigura3.8se muestraelresultadodeejecutarelscriptconlaopcinfilewithecho,alaizquierdavemosla consolaconlasinstruccionesquetenemosenelscript.
43
Figura3.9,ejecutahastalaposicindelcursor,enestecasohastalasegundalnea. d)Guardaryejecutarguardaelarchivoyloejecutasineco,essimilaralaopcina. 44
TambinsepuedeapretarunbotntipoplayquesignificaExecute(sineco).Cuando hacemosesoseejecutantodaslasinstrucciones.
Figura3.10.Botndeejecutar. Elarchivodetextoquecontienelasinstrucciones,elscript,lopodemosgenerarencualquier editordetexto,nonecesariamentelotenemosquehacerconscilab.Sitrabajamosenwindows podemosutilizareleditordenotasquevieneconwindowsyenlinuxpodemosutilizarcualquier editorcomoelvi,elemacsoeltexteditetc.Paraejecutarunscriptdesdelaconsoladelscilab tenemosqueutilizarelcomandoexec.Estecomandodescilabtieneestasintaxis: (paralosqueleeninglspuedenconsultarelhelpescribiendohelpexecenlaconsolade scilab). exec(ruta[,modo]) Vemosqueexectiene2argumentos:rutaqueesobligatorioymodoqueesopcional.El argumentorutacontienelaubicacinenlacomputadoradelarchivodetexto.scequequeremos ejecutarymodoestrelacionadoconsiesconeco,sineco,lineaporlineaetc.Porejemplosi queremosejecutarelarchivomiscript.scequetenemosguardadoenlacarpetac:\conectar igualdad\scilab\miscript.scetenemosqueescribirenlaconsoladescilablosiguiente: >exec(c:\conectarigualdad\scilab\miscript.sce) Enscilabexisteloqueseconocecomodirectoriodetrabajooworkdirectory,cuando ejecutamoselcomandoexec,sinoespecificamosunarutacompletaysolodamoselnombre delarchivo,scilablobuscaeneldirectoriodetrabajo.Estoestilporquesiguardamostodos nuestrosarchivosenelmismodirectorioyleindicamosascilabqueeseeseldirectoriode trabajo,cuandoqueremosejecutarunarchivoslotenemosqueescribirelnombre: 45
46
Figura3.13Cmocambiareldirectoriodetrabajodesdelaconsolayejecutarscripts
47
3.3Funciones
Delamismaformaenqueguardamosenunarchivounconjuntodeinstruccionesparaejecutar secuencialmenteenalgnmomentoposterior,esposibletambindefinirfunciones.Laprincipal diferenciaentrelosscriptsylasfuncionesesqueestasltimaspuedenserutilizadasdentrode unscriptoenlaconsola.Elscilabtienevariasfuncionesincorporadascomolasfunciones matemticasquevenimosutilizando:sin(),cos()etc.Vemostambinquelasfuncionesadmiten argumentosypuedendevolvernosunresultado. Paragenerarunafuncintenemosqueescribiruntipoespecialdearchivo(cdigo)yguardarlo conterminacinsci.Estearchivotienequeempezarconlapalabrafunctionydebeterminarcon endfunction Porejemplo,abramosunnuevoarchivoyescribamoslosiguiente:
48
Figura3.17.Comoevaluarunafuncin. nosdevuelveunvalor,queeselresultadodehacersen(1)/1. Tambinpodemosgraficarlafuncin.Silafuncinpuedeaplicarseaunvector,hacerelgrfico esinmediato.Enelejemplonoloes,yaqueScilabnoentiendequsignificacalcularelsenode unvectorydividirloporelmismovector. Ssabehacerlosiescribimoslasinstruccionesenladefinicindelafuncinaclarandoqueen casodetratarsedeunvectorelclculodebeserhechocomponenteacomponente.Piense cmodeberamodificarladefinicindelafuncinsin(x)/xparapoderaplicarlaaunvectoryque elresultadoseaunvectordecomponentesigualesahacerestecocienteparacadaunadelas componentesporseparado. Acdamoslarespuesta:
50
3.4ElEntornodeTrabajooWorkspace
Elentornodetrabajoocomosesuelellamareninglsworkspace,eselconjuntodevariablesy 51
Figura3.21.Amedidaquedefinimosvariablesestasseagreganalentornodetrabajo. Lasfuncionesylosscriptsserelacionanconelentornodetrabajodeformadiferentes.Desde losscriptspodemosaccederymodificarvariablesdelentornodetrabajo,perodesdelas funcionesslopodemosaccederalasvariablesdelentornoynopodemosmodificarlas. Enlafigura3.22semuestraunejemplo.Primerodefinimosenlaconsolalavariablea.Adems abrimosuneditorparaescribirunscriptenelqueescribimosa=2luegodeejecutarelscript vemosenlaconsolaquedesdeelscripthemosmodificadoelvalordelavariablea.Siconel comandocleareliminamoslavariablea,vemosqueejecutandoelscriptpodemoscrearuna variablealaquepodemosdespusaccederdesdelaconsola.Simodificamoselscriptyle agregamosunalneaconelcomandocleara,luegodeejecutarelscripthabremoseliminadola variablea.
53
Figura3.22a.Desdelosscriptpodemoscrear,acceder,modificaryeliminarvariablesdel entornodetrabajo.
Figura3.23.Lasvariablesdefinidasenelentornodelasfuncionesnoseincorporanalentorno detrabajo.
3.5Anotacionesyelcomandoclear
3.5.1.Comentarios
Muchasvecescuandohacemosunprogramaescmodoyconvenientehacercomentarios. Estostextossoncomentarios,cosasqueunoescribeparaguiarelusodelprograma,yasea porunomismooporotrosusuarios,enelfuturo.Esoscomentariosnosoninstruccionesaser ejecutadas.Paraellosecolocaelsmbolo//delantedeltextoquequeramosponer. Porejemplo,
55
Figura3.14.Comohacercomentarios.
3.5.2.Comandoclear
Elcomandoclearesuncomandoquemepermiteborrarunaomsvariables.Loquehacees eliminardelespaciodetrabajo,unavariable. Enelejemplodelafiguradefinimosunavariablexquecontieneloselementosdelvector[123 4],mostramoslavariable,laeliminamosconelcomandoclearx,yluegomostramosquela variablexyanoestdefinidaenelentornodetrabajo.
Figura3.15.Comoborrarunavariable. 56
Figura3.16.Elcomandoclearborratodaslasvariablesquefuerondefinidaspreviamente.
57
4.Ciclosforycomandoif
Enestecaptulosemuestranydiscutenejemplosqueusancicloscombinndolosconuna herramientatilparalaprogramacin:lascondiciones.
4.1.Ciclosfor
Unciclopermiterealizaroperacionesenformareiteradahastaquesesaledelciclo.Daremos algunascaractersticasbsicasdelosciclosqueseinicianconelcomandofor.Los principalescomponentesdelosciclossonuncontador(esdecir,unavariablequevatomando unvalordistintoencadaiteracindelciclo)yunconjuntodeinstruccionesqueseejecutanen cadaiteracin.Estasdoscaractersticasentodosloslenguajesdeprogramacin,slodifieren enlasintaxisqueseusaencadaunodeellos.EnScilabelcicloseiniciaconlapalabrafor, seguidodelnombredelcontadorconlosvaloresqueelcontadorpuedetomar.Acontinuacin seescribentodaslasinstruccionesysefinalizaconlainstruccinend. Laestructuraesdeestaforma: forcontador=vectorconlosvaloresquepuedetomarelcontador instruccionesseparadasporoenlneasdiferentes end
Ejemplo1
Enlafigura4.1semuestraunejemplodeimplementacindelciclofor:
58
Figura4.1Ejemplousandoelcomandofor. Veamosahoraculessonlasinstrucciones. Enlaprimeralneadelarchivodefinimosunvectorfilaxde10componentes(equivalentemente, unamatrizde1filapor10columnas)contodossuselementosigualesacero. Enlasegundalnea,lepedimosalScilabquemuestrex(estosloocurrircuandoseejecute enlaconsolaelprogramaqueestamosescribiendoenelarchivo). Enlacuartafila,comienzaelciclofor(notenqueeleditordeScilabreconocelapalabraforyla poneenotrocolor).Enesalneasedefinentambinelcontadoriyelvectorconlosvaloresque puedetomarelcontador,enestecasoivaatomarcadaunodeloselementosdelvector [1234]. Enlaquintalneacomienzanlasinstruccionesqueserepetirniterativamentealolargodel ciclo.Enestecasosetratadeunasolainstruccin. Enlasextalneaterminaelcicloconlapalabraend. EleditordeScilabnosloeligecoloresespecialesparaalgunoscomandos,sinoquetambin poneautomticamentesangrasdedistintotamaoenelciclo,loqueayudavisualmentea identificarelrolquecumplenlasinstruccionescontenidasencadalnea. Veamosahoraqusucedesiejecutamoslasinstruccionescontenidasenelarchivoque acabamosdeescribir.Paraesologuardamosconunnombrecualquiera(usandolaextensin .sce)yluegoloejecutamosconfilewithechoestohacequecadalneadelscriptaparezcaen laconsola. Alhacerlovemos,enlaconsoladeScilabloquesemuestraenlaFigura4.2.
59
Ejemplo2
Paraenfatizarelhechodequelosvaloresdelcontadorsonarbitrarios,modifiquemoselcdigo comosemuestraenlaFigura4.3:
60
Ejemplo3
a)fori=1:120... b)fori=1:2:250... c)N=1352 fori=1:5:N... d)forn=1:sqrt(2):10... Enelejemplo3a,elcontadortoma120valoresentre1y120incrementndosede1en1. Enelejemplo3b,elcontadortoma125valoresentre1y250conincrementosde2en2. Enelejemplo3c,elcontadortomavaloresentre1y1352conincrementosde5. Enelejemplo3d,elcontadortomavaloresentre1y10conincrementosde 2 . Elcontadorqueusemosnodebeser,necesariamente,laletrai.Puedeser,porejemplo,lan: forn=1:10...
Ejemplo4
Escribirunscriptqueutilizandounciclofor,evalelafuncindefinidaenelejemplodelafigura 3.18sobrelosdistintoselementosdelvectorx=0.01:0.1:1 Solucin:Alfinaldelaseccin3.3discutimosqueademsdeutilizarlasoperacionesentre 61
Figura4.4.Evaluaciniterativadeunafuncinsobreunvectorde100elementos Enlalnea2siexiste,borramoslavariableydelamemoriaparaquenoentreenconflictocon laquevamosautilizarenelscript.Enlalnea3,definimoselvectorxquecontienelos elementossobrelosquevamosaevaluarlafuncin.Enlalnea4calculamoslalongituddel vectorxparasabercuntasiteracionestienequetenerelciclo.Enlalnea5comienzaelciclo conladeclaracinfori=1:n,quequieredecirquealolargodelciclo,elcontadorivaair tomandolosvalorescomprendidosentre1ynincrementndoseen1cadavez.Enlalnea6 estlainstruccin:evalelafuncinf2paraelelementoidelvectorx.Notarquelainstruccin y(i)=f2(x(i))tomapirmeroelelementoisimodexyluegoevalaf2yelresultadoloasignaal elementoidely. Lalnea7cierraelcicloforyenlalnea8graficamoslafuncinconlainstruccinplot
Ejemplo5
Escribirunscriptque,utilizandounciclofor,efectelasumadelaseriearmnica 1+1/2+1/3+1/4+......+1/100. Solucin:Enestecasotendremosqueimplementarunciclode100iteraciones,unaporcada unodelostrminosquevamosasumar.Ademstenemosqueirguardandoelresultadodelas sumasparcialesenunavariablealaqueiremosadicionandoencadaiteracineltrminodela seriecorrespondiente.Enlafigura4.5semuestraunaposibleimplementacin.
62
Figura4.7.Contandoloselementosdeunvectorconunciclofor. Enesteejemplocontamosloselementosdelvectorxqueestdefinidoentre1y2000con incrementosde 2 . Elcdigotienelavariablejinicializadaenelvalor0.Sedefineelcontadoricomoelvectorxal queselequierencontarloselementos.Comoelciclocomienzaenelprimerelementodel contadoryterminaenelltimopasandoportodos,dartantasvueltascomoelementoshayaen elvector.Encadavueltadelciclo,lavariablejseincrementaen1ycumpleconelcometidode contarcuntoselementoshayenelvectorx. Paragenerarunafuncinquehagaestacuentatenemosqueescribiruncdigocomoelquese muestraenlaFigura4.8yguardarloconterminacinsci.
64
Solucin: Enlafigurasemuestrandosmanerasdehaceresto.
65
Elscripthacelosiguiente:lalnea1esuncomentario.Enlalnea2sedeclaraelarrayovector xquecontienelosvaloresenlosquetenemosqueevaluarlafuncin:esunvectorqueempieza en2yvahasta2deapasosde0.1.Enlalnea3calculamoslacantidaddeelementosque tieneelvectorxnecesitamosesedatoporqueelciclosevaaejecutarunavezporcadaunode loselementosdelvectorx,esdecirsineslacantidaddeelementosquehayenelvectorx,el cicloseejecutarnveces.Enlalnea4iniciamoselcicloforconlainstruccin: fori=1:n Elcontadoritomarunoaunolosvaloresdelvector1:n.Enlaprimeravueltadelciclovale1,en lasegundavueltaivale2,enlatercera3yassucesivamentehastaquellegaan. Enlalnea5estlanicainstruccinquetieneestecicloquehacelosiguiente: tomaelvalorisimodelvectorx,loelevaalcuboyseloasignaalisimoelementodelvectory
4.2.Lainstruccinif.Condiciones
66
4.2.1Introduccin
Ademsdelosciclos,unaherramientamuytilquemuchasvecesesutilizadadentrodelos cicloseslainstruccinif(ifeninglssignificasi,noconelsignificadodeafirmacinsinode condicionante).Seusacuandounoquiereponerunacondicinparaqueelprogramaejecuteun subconjuntodeinstruccionesslosisecumplelacondicindeseada. Laestructurabsicaesdelaforma: sitalcosa sehaceesto sino estootro Estoquieredecirquehayunacondicinaevaluarydependiendodelvalordelacondicinse haceunauotracosa. Engenerallacondicintomaunvalorquepuedeser0o1.Elvalor0significaquelacondicin esfalsamientrasqueelvalor1significaquelacondicinesverdadera.Eltipodedatoque devuelveunacondicinsellamalgico(slotomalosvalores0o1)obooleano. Antesdeimplementarunainstruccinif,veamoscmoseincorporanlascondicioneso preguntassobreelestadodeunavariable.Lacomparacinmssencillacondatosnumricos eslaigualdad.Esdecirqueremospreguntarsiunavariabletieneonoasignadoalgnvalor.En lamayoradeloslenguajesdeprogramacinestapreguntaseimplementaas: x==1 Observenqueescribimosx==1nox=1.Estosignificaquenoleestamosasignandoelvalor1 ax,sinoqueestamospreguntandosixesiguala1.Estaesnuestracondicin.Elvalordeuna condicinesverdaderoofalso.Unacondicinesdealgunamaneraunapreguntasobreel estadodeunaovariasvariables.Enestecasolapreguntaessilavariablextieneasignadoel valor1.Parafamiliarizarnosconlascondicionesestilprobardirectamenteenlaconsolade scilabalgunosejemplos. Escribamoslassiguienteslneasenlaconsola,
Figura4.7.Ejemploderespuestafalsa.
67
Figura4.8.Ejemploderespuestaverdadera. EstaTvienedelapalabratrueeninglsquequieredecirverdadero. Ahorabien,elresultadodelacondicionesnosonletrassinoquelasletrasFyTseutilizanpara representarun0yun1quesecorrespondeconlarespuestanegativaoafirmativa respectivamente. Desdeelpuntodevistacomputacional,unacondicinesunaoperacinporloqueelresultado deevaluarunacondicinsepuedeguardarenunavariableesdecireslcitocrearunavariabley queguardeelresultadodepreguntartienelavariablexasignadoelvalor5? Estosehaceas y=(x==5) Losparntesisnosonnecesariosperoayudanalalegibilidaddelcdigo. Podemosutilizarlavariableyenotrasoperacionesporejemplo: x=5 y=(x==5) x+y elprogramadevuelve ans= 6. Esdecirquescilabconvirtilavariablebooleanayenunnmero1porqueelresultadodela condicinesverdaderoypudohacerelclculox+yesdecir5+1. Siejecutamos x=5 y=(x==4) x+y elprogramadevuelve ans= 68
5 EnestecasoyesFalsoqueesinterpretadocomoelnmero0.
Figura4.9.Ejemplosdevariablesbooleanasolgicas. Esmuytilindagarsobrecondicionesdiferentesalaigualdad,lalistasiguientemuestraotras condicionesquesepuedenprobardirectamenteenlaconsoladescilab: Operadores: < <= > >= == ~= <> & | :menor :menoroigual :mayor :mayoroigual :igual :diferente :diferente :y :o 69
:no
Ejercicio.Escribiralmenos1ejemploenlaconsoladescilabconcadaunadelosoperadores mencionados. Veamosahoracmoseincorporanlascondicionesdentrodelcdigodeunprograma.Paraello seutilizalainstruccinifquepuedeincluirseenciclos,dentrodefunciones,scriptsetc. Comencemosconalgunosejemplossencillos. Lafuncinqueescribimosenelpunto3ver(figura3.10y3.14tieneunproblemaparax=0ya quelafuncinestdefinidacomo: f (x) = sin(x)./x Efectivamenteparax=0lafuncinnoestdefinidaporquehayquedividirpor0.Sinembargola funcintomavalorescercanosa1cuandoxseacercaa0.Esdeciresunadiscontinuidad evitableypodemossalvarladiciendoquef(0)=1.Estorequierequeincluyamosunacondicinen elcdigoquedefinelafuncin.Estacondicindebecompararelvalordelavariablexconuna constanteenestecasocon0.Silavariablextieneelvalor0entonceslafuncindevuelveel valor1sinolafuncindevuelveelvalorsin(x)/x.Enlafigura4.10semuestraelcdigo:
70
Figura4.11.Cuandocomparamosunvectorcontraunescalardentrodeunifdaverdaderosi todosloselementosdelvectrosonigualesalescalar. Asignamosaxelvector[101]cuandoejecutamoslacomparacinx==0enlaconsolascilab devuelveunvectorconFTF,esdecirfalsoverdaderofalso,porquesloelsegundoelemento dexes0.Sinembargocuandohacemosesacomparacindentrodeunifelresultadoesfalso. Enlafigura4.11semuestraestoconunejemplo.Comoavale1quieredecirqueelresultado delacomparacinfuefalso. Parapoderaplicarlafuncinaunvectorvamosatenerquerevisarelvectorparaversielvalor 0seencuentraenelvector.Paraellovamosaintroducirlafuncinfind(encontrar)quevieneen lalibreradescilab.Estafuncinbuscaelprimerelementodistintode0deunvectorydevuelve suposicin.Enlafigura4.12semuestracmobuscarlaposicindelelemento0dentrodeun vector:
Figura4.13.Implementacindeunafuncinpartidaqueaceptaunvectorcomoargumento. Msejemplosencillos:Supongamosquequeremosquecadavezqueunavariable,x,seaigual a1,elprogramacambiesuvaloryleasigneelvalor2.Porotrolado,sixnoes1,queremosque lavariableconservesuvalor.LaformadeimplementarestoenScilabesmediantelas siguientesinstrucciones: ifx==1 x=2 end Encasodequexseaiguala1(esdecir,silarespuestaalapreguntaesx=1?representada porlasentenciaifx==1,esafirmativa),elprogramaejecutalasinstruccionesqueestnentrela pregunta(elcondicionante)yelend.Enesteejemplo,sixesiguala1,elprogramaleasigna axelvalor2.Encasodequelarespuestaalapreguntaesx=1?seanegativa,nose ejecutanlasinstrucciones.Enesteejemplo,xpermaneceentoncesinvariante. Ejercicio.Implementeelcdigoanteriorypruebequefuncionadndoledistintosvaloresaxy despusejecutandodichocdigo.
72
Figura4.14..Comousarelcomandoif. Ejercicio.Escribauncdigosimilaralanteriorperoutilizandootracondicinparacambiarleel valorax(porejemplo,queseamayoromenorquealgnnmero,etc). Comodijimosanteriormente,enmuchasoportunidadesesnecesariorealizarmsdeuna comparacinantesdeejecutarunainstruccin.Supongamos,porejemplo,quequeremos cambiarleelvaloraxslosiesmayorqueceroymenorque10.Enesecaso,lacondicinse escribir ifx>0&x<10 x=1 end Figura4.15..Comousarelcomandoif. Enalgunasocasionesnoslosedeseaintroducircambiossisecumpleunacondicindejando todoinvarianteencasodequenosecumpla,sinoquesequiereintroducircambiosdiferentes dependiendodequeunacondicinsecumplaono.Enesecasoseusaelcomandoif(en 73
ingls,si)encombinacinconelse(eningls,sino).Consideremoselsiguienteejemplo. Supongamosquequeremossumarle1aunavariable,m,sisuvaloresmayoroiguala1yque queremossumarle2encualquierotrocaso.Porejemplo,siinicialmentem=0,elcdigole reasignarelvalor2,mientrasquesim=4inicialmente,luegodeejecutadaslasinstrucciones serm=5.Laformadecombinarifyelseparalograrestepropsitoeslasiguiente: ifm>=1 m=m+1 else m=m+2 end
Ejercicio2.Implementarelcdigoyprobarlocondistintosvaloresdem.Implementarcdigos anlogoscombinandootrascondiciones.
cualquierotrocaso).
75
5.Ejemplosyproblemas
Daremosvariosejemplosendondesepuedeusarelcomandofor,elifcombinndoloconotros comandoscomoelfor,queyavimos,yunonuevoqueintroduciremosac,break.
5.1LasucesindeFibonacci
LasucesindeFibonacciesunasucesinquesepuededefinirporrecurrenciadelasiguiente manera: f1=1 f2=1 fn=fn1+fn2,n>2 ComotodasucesindadaporrecurrenciaesmuydirectosuimplementacinenScilabusando unfor.EnlaFigura5.1semuestraunafuncin,fibo(n),quecalculatodolostrminosdela sucesindeFibonaccihastaeltrminonsimo.Porlotanto,siejecutamosocargamosla funcinfiboenelScilab(demodoqueelprogramapaseasaberqusignificadotienefibo(algn nmero)),cuandolallamemosescribiendoenlaconsola,porejemplo,fibo(10),aparecern todoslosvaloresdelasucesinhastaeldcimo.
Figura5.1.FuncinquecalculahastaeltrminonsimodelasucesindeFibonacci.
76
Adiferenciadelasfuncionesqueutilizamosenlosejemplosanteriores,lafuncinfibodevuelve unvectorancuandosuargumentoesunnmero.Elvectorasevacargandoconlosdatosa medidaqueelciclosevaejecutando.Encadaiteracindelciclo,seincorporaunelemento nuevoquesecalculacomolasumadelos2elementosanterioresdelvector. Hagamosahoraunsegundoscriptqueejecutelafuncinfibo(verFigura5.2)ylautilicepara visualizarlosprimerostrminosdelasucesin. 1. Enlaprimeralneacargalafuncinfibousandoelcomandoexec(sieldirectoriode trabajonofueseelmismoqueeldirectoriodondeseencuentralafuncinfibohabraque especificartodalarutahastaeldirectorio). 2. Enlasegundalneaejecutalafuncinfiboconelargumento10(esdecir,calculatodos loselementosdelasucesinhastaeldcimo). 3. Enlaltimagrficaelresultado.Adiferenciadeloquevinimoshaciendoanteriormente, enestecasousamosplotdandounsolovector,y.Cuandosehaceeso,elgrficoesel delosvaloresquetomanlascomponentesdelvectorycomofuncindelnmerode componenteoelementodelquesetrate.
Figura5.2:scriptqueejecutalafuncinfiboen10ygraficaelvectorresultantequecontienelos primeros10elementosdelasucesindeFibonacci.
Existenmuchosejemplosdelanaturaleza,elarteylamatemticadondeaparecelasucesin deFibonacci,algunosdeellossepuedenencontrarenlawikipedia. 77
Esteejemplosirveademsparailustrarunaspectoquenodebedescuidarseenla programacinyquetienequeverconelusodelamemoriayrecursosdelacomputadora.Son algunospuntosaconsiderarcuandosediseaunprogramaquenotienenquevertantoconla lgicadelproblemaqueunoquiereresolversinoconelhechodequeenningunacomputadora secuentaconrecursosilimitadosparapoderguardardatosorealizarclculos. Engeneralsiemprequeunopuedasaberdeantemanoeltamaoquetendrunavariablees mejorreservarparaellaelespaciodememoriaqueocuparalprincipiodelprograma.Eneste ejemploelvectoradondeseguardanlosvaloresdelasucesintieneuntamaoconocidoa priori.Sabemosquesiejecutamosfibo(20)nosdevuelveunvectorde20elementos.Enla implementacinquesemuestraenlaFigura5.1,elprogramanosabedeantemanoeltamao delvectoraestofuerzaaquecadavezquetienequeincorporarunelementoalvector,el programaletengaquepedirmemoriaalsistemaoperativoparaincorporarestenuevoelemento. Estoespocodeseable,hayocasionesenlasquenoquedamsremedioporquenosesabede antemanolalongituddeunvector.Paraestoayudanlasfuncioneszerosyones.Podemos definirdeantemanounvectorquetenganelementostodosnulos,comohicimosenejemplos anteriores.Deestaformaelprogramahaceunusomseficientedelosrecursos.EnlaFigura 5.3semuestralaimplementacindeestaversindelafuncinfiboquellamamosfibo1.
Figura5.3.Unamejorimplementacindelafuncinfiboqueaprovechaqueeltamaodelvector aesconocidodeantemanoyreservaespacioenmemoriaparaguardarelresultado.
5.2Mximosymnimos
78
Figura5.4.Scriptparahallarmximos. Analicemosquhaceestecdigo.Enlalnea1tenemosladefinicindelvectorqueestamos estudiando,esslounejemploparamostrarcmofuncionaelalgoritmo.Enestecasoelvector tieneslo4componentes.Enlalnea2elegimoselprimerelementodelvectoryloguardamos enlavariablem.Enlalnea3,entramosenelcicloforquerecorrerelvectoreircomparando loselementosdelvectoryregistrandoelmximo.Paraelloenlalnea4,encadapasodelciclo, seselvalordelacomponentedelvectorqueestamosmirando.Paracompararloconel mximoactualincluimosunifquecomparaelelementoactualdelvectorconm,sielelemento actualdelvectoresmayorqueelmximoencontradohastaahoraentoncestenemosque actualizarelvalordem,sinonohacemosnadaycontinuamosconelsiguienteelementodel vector.Cuandohayamosrecorridotodoelvectorenlavariablemestarguardadoelvalor mximodev. Unaobservacin:Siquisiramoseldevalorabsolutomximodeberamosponers=abs(v(i)). Siademsquisiramosguardarenqucomponenteestelvalormximoentonces,antesde cerrarelif,deberamosguardarelnmerodeiteracincadavezqueelloopentraalif.Si hacemoseso,alfinaldetodotendremosguardadoelltimovalordeipordondeelifpas. Enestecasojser3(osealaterceracomponente).
79
Figura5.6.Mximodelafuncinx^2+x+4 Observarenlasiguientefiguraquedibujamoselmximodelvectoryenverdecuandoel 80
espaciadoesde0,1yenrojocuandoelespaciadoesde1.Observenqueamedidaquelagrilla esmaschicaelmximodelvectorysevaacercandoalmximodelafuncin.
81
Figura5.8Aproximacindelmximoymnimodelog(x^2+1)+sin(x)+10
Figura5.9.Grficodelafuncinlog(x^2+1)+sin(x)+10enelintervalo[1010],delosextremos. 82
5.3Aproximacindecerosdefunciones
Paraprogramasqueutilizanelcomandoforencombinacinconelifmuchasvecesvamosa necesitarotrocomandoqueeselcomandobreak(breakeninglsyenestecontextosignifica interrumpir).Estecomandoporlotantoloquehaceesinterrumpirelproceso. Porejemplo, Ejercicio8:Dadoelvectorv=[142556]escribirunprogramaqueencuentrelaprimer coordenadadondelasiguientecoordenadaseaigualaesta. Observarqueaquelelementoqueserepiteesel5enlascoordenadas4y5.Tendremosque hacerunforhasta6(lalongituddelvector),peroqueparecuandov(i+1)=v(i).
Figura5.10.Scriptqueencuentralaprimercoordenadadevquecoincideconlasiguiente.
5.3.1MtododelaBiseccin:Usandoloscomandosfor,ifybreak.
Sesabequesitenemosunafuncincontinuaenunintervalo[a,b]quecambiadesigno entonceslafuncintieneunceroendichointervalo.EsteeselllamadoTeoremadeBolzano. UsandoesteTeoremasepuedeconstruirunmtodoparaencontrarunasucesindenmeros queaproximanauncerodelafuncin.Dichomtodoseconocecomoelmtododela biseccin.Elmtodoconsisteenempezarconunintervalo[a,b]dondelafuncincambiade signo,yencadapasodividirelintervaloendosyquedarnosconunnuevointervalodelamitad delongitudqueelanteriorydondelafuncincambiadesigno.Parafijarideasvamosa considerarlafuncinfdefinidacomo: f (x) = x3 + 1/2 [5.1] queestudiaremosenelintervalo[1,1].Sabemosquelafuncintieneunarazendichointervalo 83
puesf(1)<0yf(1)>0,esdecirlafuncincambiadesignoenelintervaloporloquecomoes continuadebeforzosamentepasarporcero.Enlafigura5.11segraficalafuncinenelintervalo deinters.Comoprimeraaproximacindelarazdelafuncintomamoselpuntomediodel intervalo: x1 = 1 2 1 = 0 .Hemosdefinidoa1=1yb1=1comolosextremosdelintervaloinicialen elqueanalizamoslafuncin.x1esnuestraprimeraaproximacindelarazdelafuncin, entoncesevaluamoslafuncinenx1paraverquetantoseaproximaacero. f (x1) = f (0) = 0.5 .Enlafigura5.12seilustraestepaso,segraficalafuncin,losextremosdel intervaloconpuntosrojosyelpuntomediodelintervalocomoprimeraaproximacindelaraz segraficaenazul.Comoseobservaenlafigura5.12,laraizsesitaalaizquierdadex1.Porlo quepodemosrepetirelprocesoperoahoratrabajandoconelintervalo[10].Esdecirnos quedamosconelvalordea1quetenamosdelaiteracinanteriorperoelvalordeb1lo reemplazamosporelvalordex1.Dichoenotraspalabras,elcambiodesignodelafuncinse produceenelintervalo[10].Entoncesparalasegundaiteracintenemosa2=1yb2=0y definimosx2igualqueantescomoelpuntomediodelintervalodetrabajo: x2 = 2 2 2 = 0.5 Evaluamoslafuncinenx2yobtenemosquef(x2)=0.375.Denuevovemosquelarazqueda enelintervalodefinidopora2yx2,verfigura5.13.Definimosentonceselintervaloyelpunto medioparalaterceriteracin: a3=a2=1b3=x2=0.5yx3es: x3 = 3 2 3 = 0.75 Alevaluarlafuncinenx3=0.75obtenemosf(0.75)=0.078.Larazseencuentraentrea3yx3 porloquenuevamenteredefinimoselintervaloyelvalormedio(verfigura5.14).Paralacuarta iteracinnosqueda: a4=1b4=0.75yx4=0.875.Evaluamosahoralafuncinenx4yobtenemosf(x4)=0.17. Adiferenciadeloocurridoconx1,x2yx3vemosquef(x4)esnegativo,estoindicaqueenla prximaiteracintendremosquequedarnosconelintervalocomprendidoentrex4yb4.Estose ilustraenlafigura5.15.Paralaquintaiteracintenemos:a5=x4=0.875b5=0.75yx5=0.8125. Elprocesosepuedecontinuarindefinidamenteohastaqueencontremoslarazdelafuncin. Normalmenteestonoocurre,porloquenosotrostenemosquedefinircuntasiteracionesle vamosadejarhaceralprogramaoconcuntaprecisinqueremosencontrarlarazdela funcin.Loimportantepararemarcaraquesqueparaimplementarunarutinaquehagaesto tenemosqueirdefiniendoelintervalodeintersyelvalormedioencadaiteracin.Lacondicin inicialquesetienequecumpliresquelafuncinencuestincambiedesignoenlosextermos. Definimosentoncesa1yb1comolosextremosdelintervaloyluegox1comoelpuntomediode dichointervalo.Evaluamosentoncesf(x1)ycomparamoselsignoconf(a1)yconf(b1),sif(x1) tieneelmismosignoquef(a1)entoncesenlaprximaiteracindebemostrabajarenelintervalo [x1b1]comoenelcasodelafigura5.15.Siporelcontrarioocurrequef(x1)yf(a1)tienensigno contrarioentoncesnosquedamosconelintervalo[a1x1]paralaprximaiteracin.Paratomar estadecisinenunprogramaestilnotarquedosnmerostienendistintosignosiysolosiel productodeestosdosnmerosesnegativo.Esdecirsiaybsondosnmerosya*b<0 entoncesesseguroqueestosnmerostienensignosdistintos.Estolovamosausarenel cdigoparadiscernirconqumitaddelintervalonostenemosquequedar:sif(a)*f(x)<0 84
a +b a +b a +b
Figura5.11Lafuncintieneunarazenelintervalo[11]
Figura5.12.Enelprimerpasoelegimosx=0comocandidatopararaz 85
Figura5.13.Alevaluarlafuncinenelpuntox2observamosquelarazpertenecealintervalo [a2x2]
Figura5.14.
86
Figura5.15.Elvalordef(x4)esnegativoporloquelarazseencuentraaladerechadex4.
iteracin 1 2 3 4 5 6 7 8 9 10 11
x 0 0.5 0.75 0.875 0.8125 0.78125 0.797 0.789 0.793 0.795 0.794
f(x) 0.5 0.375 0.078125 0.1699219 0.0363770 0.0231628 0.0060234 0.0087142 0.0013817 0.0023118 0.0004628
signodef(x)*a + + + + +
valorqueaproximalarazdelafuncin.
Figura5.16.Muestracmoelvalordelpuntomediodelintervalovaconvergiendohaciala aproximacinnumricadelaraz
Ejercicio9:Dadalafuncinf(x)=2x^3+x2hacerunprogramaquecalculemedianteelmtodo delabiseccinunceroenelintervalo[0,1]pidindolequeiterehastaunmximode600yque paresif(x)=0.Graficarencadapasolasucesinobtenida. Primerorecordemoslassituacionesquesepuedendarencadaiteracin: 1)Sif(a)*f(b)<0entoncestomoelpuntomediox=(a+b)/2. 2)Sif(x)*f(a)<0mequedoconelintervalo[a,x]. 3)Sif(x)*f(a)>0mequedoconelintervalo[x,b]. 4)Enotrocaso(osea,cuandof(x)=0)terminamosporqueestonosdicequexesuncero. Parahaceresteproblematendremosquecombinarlostrescomandos,elfor,elifyelbreak.El forparaindicarlequeiterehasta600,elifparaqueverifiquesisucede2)o3)yelbreakpara quetermineelprocesosisucede4).Ademsencadapasovamosapedirlequegrafiqueel puntox.
88
Figura5.11.Scriptqueencuentracreosdeunafuncinporelmtododelabiseccin. Siejecutamoselprogramoyescribimosienlaconsolanosdevolverelltimoialquelleg. Observamosqueenestecasoi=48.Loquesignificaque,cuandollegamosaestenmerode iteraciones,xesttancercadelcerodelafuncinqueparalacomputadoraesceroall.Osea quenonecesitamosllegarhastaN=600.Elhechodequeparemuchoantestienequevercon cunrpidosevaacerolafuncin.Engeneralnosiempresevaadetenerantesdelnmerode iteracionesqueledemos. Ejercicio10:Dadalafuncinf(x)=log(x^2)+x1hacerunprogramaquecalculemedianteel mtododelabiseccinunceroenelintervalo[0,1]pidindolequeiterehastaunmximode 600yqueparesif(x)=0.Graficarencadapasolasucesinobtenida.Enqunmerode iteracinsedetiene?
5.3.2MtododelaBiseccin:Usandoloscomandoswhileeif.
89
vez,ivaldr1,assucesivamentehastaqueelprogramasedetenga. Puedenpasardoscosas: 1. Quesedetengacuandoi=600. 2. Quesedetengaantespuesallmif(x)=0. Observarqueaqusevuelveadetenerseeni=48.Locualesrazonableporqueyavimosqueall lafuncinseanulaba. Estecomando,aligualqueelifmepermiteponermsdeunacondicin. Asentonceslepodemospedirquesedetengasiaybyaestndemasiadocerca. Porejemplo,lepodemospedirqueademssedetengasi |a b| < 1010 .
91
92