Você está na página 1de 92

Versin20deMarzode2013

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

Ejemplo5 4.2.Lainstruccinif.Condiciones 4.2.1Introduccin 5.Ejemplosyproblemas 5.1LasucesindeFibonacci 5.2Mximosymnimos 5.3Aproximacindecerosdefunciones 5.3.1MtododelaBiseccin:Usandoloscomandosfor,ifybreak. 5.3.2MtododelaBiseccin:Usandoloscomandoswhileeif.

1.InstalacindeScilabyMdulos
1.1Instalacin
Recomendamosfuertemente,instalarlanuevaversindelscilabqueesla5.3.3. Estaversinsepuedebajardesdeelsitiooficialdescilabquees: www.scilab.org Cuandoentramosvemosunaventanacomosta,enlaquenosofrecebajarlaversinde windowsysihacemosclickenOtherSystemsencontraremostambinlinux,macetc.Si queremoslaversinenwindowssimplementehacemosclicksobreelrecuadroquedice DownloadScilabydebecomenzarladescargadeunaarchivoquetendrunnombreparecidoa ste:scilab5.3.3.exe.

Figura1.1.PaginadeScilab. Cuandoterminadedescargaresearchivo,loejecutamos(haciendodobleclicksobreel nombre)yelegimoslainstalacinfull.Enlugardelainstalacinfull,sepuedeseleccionarun subconjuntodepaquetesainstalar.Duranteelprocesodeinstalacinlesvaapreguntarel idioma. 4

Unavezqueinstalaronestaversindescilabcuandoloejecutenseabrirunaventanacomola quesemuestraacontinuacin.

Figura1.2.VentanadeScilab.

1.2InstalacindeToolboxImaging
Unaherramientamuyinteresantequetieneestanuevaversindescilabeselbuscadore instaladordemdulosadicionales.Losmdulosadicionalessonpaquetesquenovienenconel programa(ancuandoseleccionemoslainstalacinfull)peroqueunopuedeagregara medidaquelosnecesita.Nosotrosvamosaagregarunpaquetequesirveparaprocesar 5

imgenes.Nosvaapermitircargarunaimagencomounamatriz,mostrarunamatrizcomouna im agenyguardarunamatrizpreviamentegeneradaenscilabcomounaimagen. ParainstalarestemdulovamosalmenApplications(peseahaberloinstaladoencastellano, losnombresdelosmensestneningls)yallseleccionamos AdministradordeMdulosATOMS.verfigura3.

Figura1.3.Abrimoseladministradordemdulosatoms. Parainstalarmdulosadicionales,tenemosqueteneraccesoainternetyaqueatomslosbusca enelsitiodescilab.Unavezqueejecutamoseladministradordemdulosatoms,seabreuna ventanacomoladelaFigura1.4dondeselistanlasdistintasclasesdeaplicaciones disponibles.NosotrosseleccionamosImageprocessing(procesamientodeimgenes).Ver figura1.4

Figura1.4.EnlaventanadelATOMSseleccionamosImageProcessing. UnavezqueseleccionamosImageProcessinginstalamoselScilabImageandVideo processingtoolboxSIVP.Verfigura1.5

Figura1.5.InstalamoseltoolboxSIVP.cuandoterminamostenemosquereiniciarelscilab.

2.IntroduccinalScilab.ComandosenlaConsola
Scilab,esunlenguajedeprogramacinquenospermiteutilizarlacomputadoraparaprocesar informacinquerequieredemuchosclculos.Enestetutorialsemuestranlasoperaciones bsicas:seefectuanoperacionesconnmeros,sedefinenvectoresymatrices,segrafican funcionesyademsseintroducenlosarchivosdecomandoylasfunciones.

Figura2.1.ConsoladeScilab. Enlafigura1semuestralaventanaqueseabrecuandoejecutamoselprogramaScilab. Llamaremosconsolaaestaventana.Ademsdeunmensajedondesemuestralaversindel programa(enestecasola5.3),aparecenotrosrelacionadosconlosmdulosdelprogramaque secarganduranteelinicio.Porelmomentonolesprestaremosatencin.Despusdelrengln quediceLoaddemosvemosunpromptosmbolodesistemaqueenestecasoes:>.Una vezqueapareceelsmbolodesistema,elprogramaestlistopararecibirinstrucciones.

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.

Figura2.3.AlgunosClculos. Elsmbolodelarazcuadradaverificaloquedijimosantesenrelacinalingls:sqrt correspondeasquareroot(razcuadrada).Lasoperacionessepuedencombinar. Ejercicio.Hacerlosclculosqueselistanacontinuacin.Practiquedespushacerotros clculosqueinvolucrenoperacionessencillosentrenmeros. 11

5 (32 + 10 : 5 )0.5 3 (27 5 4)


522 3 4 43:2 (14 5)

Ademsdeestasoperacionessencillas,elScilabtienedefinidasmuchasfunciones matemticasconocidas,comolastrigonomtricas,ellogaritmo(neperianoyenbase10)ola exponencial.Enelcasodelastrigonomtricas,elargumentoestsiempreenradianes.

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.4.Comosecreaunavariable. Ntesequeescribimosunalfinaldelaigualdad(osentencia).AlescribirelelScilabnonos devuelveningunarespuestainmediatamente.Siomitimoselslohace(probarintroduciendola definicindelosdosmodos).Detodasmaneras,enamboscasos,lavariableaqueda igualmentedefinida.Poresoalescribirayapretamosenternosdevuelveelvalordea.

Figura2.5.Valorguardado. Supongamosporejemploquenecesitamoselvalordelnmeroporqueefectuaremos clculostrigonomtricos.Siescribimospiyapretamosenterelprogramanosdevuelveun mensajedeerrorporquelavariablepinohasidodefinidaconanterioridad.Tenemosentonces queindicarlealacomputadoraquepiparanosotrosvale3.1415927......Existenmuchasformas dehacerlo,unadeellasesaprovecharelhechodequeelresultadodelarcotangentede1es /4yentoncespodemosescribir pi=4*atan(1) Silohacemosyluegoapretamosenter,habremoshechodoscosas,primerocreamosuna variablequesellamapiysegundolehemosasignadoaesavariableelvalordelnmero.

13

Figura2.6.Lavariablepinoexisteenelprograma,necesitamosdefinirlayasignarlesuvalor. Paraelloutilizamoslafuncinarcotangente(atan)yasignamoselvalor4*atan(1)alavariable pi.Ahoralavariablepicontieneelvalordelnmero .

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

Figura2.7.Algunosnmerosyaestndefinidos. Cuandoseasignaunvaloraunavariablealaqueyaselehabaasignadootrovalor anteriormente,elprogramaolvidaelvaloranteriorysequedaconelltimoasignado.Si queremossaberelvalorquetieneunavariableescribimossunombreyapretamosenter.

Ejercicio.EfecteclculosutilizandoelnmerodeNepery yasegresedequesonlos nmerosqueustedconoce. Unavezdefinidaslasvariables,sepuedenhaceroperacionesconellas,porejemplo,

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

yel"23".Escribamosx=[753223]yluegopresionemosenter.Hemoscreadounavariable quesellamaxqueesunarreglodecinconmeros(ounvectorconcincocomponentes).Si escribimos"x"elScilabnosdevuelve"753223".Sidespushacemosx=[0123456789] yapretamosenter,ahoraxcorrespondeaunarregloovectorde10componentes(elprograma seolvidadelvalorquelehabamosdadoantesaxalvolveraasignarleunvalor).Paraacceder aloselementosdeunarreglonecesitamoselnombredelarreglo(enestecasox)ylaposicin delelemento.Ejemploescribamosacontinuacinx(1)ypresionemosenter.Larespuestaes0 queeselprimerelementodelvectorx.x(5)enter,devuelve4porqueeselquintoelemento delvector.Lasentenciax(1)=sqrt(2)asignaelvalorderazde2alprimerelementodelvector.

Figura2.9.Operacionesbsicasconvectores. Existendiversasmanerasdegenerarunvector.Unaesintroduciendoamanosuselementos comohicimosantes.Paraelloslotenemosqueescribirnombre=[elem1elem2.....].Esdecir nombredelvector,elsigno=yentrecorchetes(yseparadosporespacios)loselementosdel vector.Cuandoelvectorquequeremosdefinirsigueciertareglahayformasmssencillasde definirloynonecesitamosescribirtodosloselementos.Sinecesitamosunvectorcuyoprimer elementoseael0,cuyoltimoelementoseael1yquetengaelementosequiespaciados separadosenporejemplo0.1,hacemos:x=0:0.1:1".Estasentenciaguardaen"x"elvector[0 0.10.20.30.40.50.60.70.80.91].Lalgicaes"inicio:paso:fin".Sinoponemoselpaso,el 17

Scilabusaunpasode1.Porejemplolasentenciax=10:10generaunvectordenombrexque contienelosnmerosentreel10yel10incrementndosedeauno.

Figura2.10.Definicionesdearreglosdenmeros. Ejercicio.Definaunvectorquecomienceen3yvayahastael2003conunpasode5. Cuntoselementostieneelvector?

Ascomosedefinenvectores,tambinpuedendefinirsematrices.Porejemplo,lasentencia a=[123456]defineunamatrizcuyaprimerafilaes123ylasegundaes456. Podemoscalcularlatraspuestadeunamatrizodeunvectorconelcomando. Porejemplodefinamosaycalculemoslatraspuesta.

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.

Piensecmopodraobtenerlaapartirdealgunadelasmatricesdefinidasanteriormente: yluegohagamosa(1:2,:)=6.Antesdemirarelresultado,piensequesperaobtener.Loque seobtieneesunamatrizdondetodosloselementosdelasfilas1y2sonigualesa6. Ejercicio.Definaunmatrizde3x4completadeunos.Agregueunacolumnadecerosydespus unafilacompletade2.Calculeladimensindelanuevamatriz.

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

Lomismopodemoshacerconotrasoperaciones. Ejercicio.DefinirdosmatricesAyBdede2x3.CalcularA.^2+sin(B).HacerA^2yA.^2,Qu sucede?

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

Sepuedesuperponerunnuevogrficosobreestaltimafigura,porejemplo,siescribimos plot(x,x)sedibujalarectadependiente1quepasaporelorigendecoordenadasysi escribimosplot(x,x)ladependiente1.Loscomandosyelgrficoseobservanenlas figurasquesiguen.

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

Figura2.20.Numeracindelosgrficos.Ventananmero1. Ysiescribimos figure(0) plot(x,10x^2) ahoraelgrficode10x^2comofuncindexaparecersuperpuestoaldeycomofuncindex enlaventanaidentificadaconelnmero0.

30

Figura2.21.Alponerfigure(0)vuelvelanumeracinacerco.

Lasventanasdefigurassepuedencerrarcomocualquierventanadewindows.Loscontenidos deunaventanasepuedenborrar(limpiar)sinborrarlaventanaconelcomandoclf.En particular,clf()(clearfigure)limpialoscontenidosdelaltimaventanaabiertayclf(1)losdela nmero1.

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

bblue.punto ggreenocirculo rredxx ccyan+mas mmagenta*star yyellowssquare kblackddiamond wwhite

32

Pongamosunejemplosiqueremosgrficarlafuncinsen(x). Primerodefinimoselvectorcuyospuntoscorrespondenalejedeabscisas: t=0:%pi/20:2*%pi Estaltimasentenciageneraelvectortquetomavaloresentre0y2incrementndosecada /20.Despusgraficamoscondistintasopciones(usandoelcolorcyan). Ejemplo1: clf() plot(t,sin(t),'c+')

Figura2.23..Acaestamosponiendoelsmbolo+encadapunto. Pruebenconlossiguientesejemplos, Ejemplo2: clf() plot(t,sin(t),'co') 33

Ejemplo3: clf() plot(t,sin(t),'co.')

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

Figura2.26.Comodibujarlosejesenungrfico. Loscomandosqueusamosson: a.data_bounds=[2,12,8] Sonloslmitesdondevaaestardibujadalafuncin.Acaelxminimoes2,elymnimoes1,el xmximoes2yelymximoes8. a.x_location="origin" a.y_location="origin" Deestamaneraestamosubicandolosejesenelorigen.Hayotrasopcionesparaponerlosejes enotroslugares.Paraelejexlasopcionesson:bottom,top,middleyorigin.Paraelejey:

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().

Figure3.1.Cargamoseleditordetextoparaescribirlasinstruccionesycrearloqueseconoce comoscript. TambinsepuedeabriresteeditorabriendoeldesplegableApplicationsyeligiendolaopcin Scinotes.

39

Figure3.2.Otraformadeabrireleditor. Seabriradeestamaneraeleditor.

Figura3.3.VentanadeleditorSciNotesqueusamosparagenerararchivosdetexto,en particular,losdecomandos. Loprimeroquehacemosesguardarelarchivo,paraloquevamosalmenArchivoyall seleccionamoslaopcinguardar

40

Figura3.4.Cmoguardamoselarchivo. Leponemosunnombrealarchivo(porejemplo,miscript.sce).Elnombretienequeterminaren .sceparaqueScilablopuedaidentificarautomticamentecomounarchivodecomandos. Enelarchivopodemosintroducircomandoseinstruccionescomolohicimosenlaconsola.La diferenciaesquelasinstruccionesnoseejecutancuandoapretamosenter.Porlotanto podemosescribirvariaslneasdeinstruccioneseneleditorquesernluegoejecutadasen formasecuencialcuandoseloindiquemosaScilab.

3.2Cmoejecutararchivosdecomandos(scripts)
Enelejemploquesemuestraenlafigura3.5,sedefinenlosvectoresxeyyluegosegrafica ycomofuncindex.Lasintaxiseslamismaqueutilizamosenlaconsola:

41

Figura3.5.Ejemplodeunscript. Estescriptsencilloconstade3instruccionesquehemosescritoen3lneasdiferentes. Enlaprimeralneadefinimoselvectorxconvalorescomprendidosentre0.001y10conun pasode0.1enlasegundainstruccindefinimoselvectoryyenlatercerlneagraficamos.

Figura3.6.EnelmenEjecutardeleditortenemoslasopcionesparaejecutarelscript. ParaqueScilabejecutelasinstruccionescontenidasenelarchivohayvariasformas: DesdeeleditorvamosalmenEjecutar,comosemuestraenlafigura3.6,sedespliegaun mencon4opciones: a)filewithnoecho b)filewithecho c)untilthecaret,withecho 42

d)Guardaryejecutar a)filewithnoecho Comosemuestraenlafigura3.7,siseleccionamoslaopcin...filewithnoechovemosque sielarchivonoestguardadoscilabnosreclamaqueantesdeejecutarguardemoslos cambios,unavezguardadosseejecutaelscriptsinmostrarnadaenlaconsola.Enestecaso comoresultadodelaejecucindelscriptseabreunaventanaconeldibujodelafuncin.En estesentidowithnoecho(sineco)quieredecirquenomuestranadaenlaconsola.Estaesen generallaformaenlaquevamosaejecutarunscriptcuandoestamossegurosdequefunciona bien.

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.8....filewithecho.Cuandoejecutamosconeco,cadalneadelscriptapareceenla consola.Estoestilparadetectarerroresocomosediceenlajergaparahacerdebuggingque castellanizadoseraalgoascomodebaguear c)untilthecaret,withecho Estaopcinejecutatodaslaslneasdelarchivohastalaposicindelcursor.Enelejemplodela figura3.9,seejecutanlaprimeraysegundalneasysemuestraenlaconsolaelresultado(es coneco)

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

>exec(miscript.sce) Paraverculeseldirectoriodetrabajoejecutamoselcomandopwd(desussiglaseningls printworkingdirectory)enlafigura3.13semuestralasalidadelcomando:

Figura3.11.Lainstruccinpwdimprimeeldirectoriodetrabajoactual. ParacambiareldirectoriodetrabajovamosalmenFileyseleccionamoslaopcinCambiar directorioactual(verfigura3.12)

Figura3.12.Podemosseleccionarcualquierdirectoriocomodirectoriodetrabajo Podemostambinalternativamente,utilizarelcomandocd(changedirectory)parairnavegando porlosdirectorioshastaeldirectoriodeseado.Estolohacemosdirectamentedesdelaconsola, tambinpodemosutilizarelcomandodirparaverelcontenidodeundirectorio.Enlafigura3.13 semuestraunejemplodondedesdelaconsola,preguntamosculeseldirectorioactualy vamosnavegandohastallegaraldirectoriodetrabajoc:\conectarigualdad\scilab\scriptsquees dondetenemosguardadoelscriptmiscript.sce.Unavezestablecidocomodirectoriodetrabajo, ejecutamoselscriptconelcomandoexec:

46

Figura3.13Cmocambiareldirectoriodetrabajodesdelaconsolayejecutarscripts

47

Finalmentesiqueremoseditarunnuevoarchivo,utilizamoslaopcindenuevoarchivoenel bordedelaventanadeleditor.Seabreentoncesunanuevapestaaquecorresponderal nuevoarchivoquequeramoseditar.Verfigura3.14.

Figura3.14.Aperturadeunnuevoarchivo. Ejercicio.Repitaalgunosdelosclculosyfigurasquehizoenlosejerciciosanteriorespero ahoraescribiendolasinstruccionesenunarchivoyejecutandoloparcialototalmente.

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.15.Comogenerarunafuncin. Guardamosdespuselarchivoconalgnnombre,porejemplomifuncion.sci(laextensinsci tambinespropiadelosarchivosqueelScilabreconoce). Unavezescritoelarchivo,loejecutamosporejemplodesdeelmenejecutarcomosemuestra enlafigura3.11.

Figura3.16.Desdeeleditorvamosaejecutaryelegimosunaopcinparacargarlafuncin. Tambinpodemoshacerlodesdelaconsola. Alejecutarlafuncin,loquehacemosesqueelScilabreconozca,deahoraenms(hastaque 49

senosocurraredefinirelsignificadodef)af(x)comolafuncindefinidaenelarchivoque guardamos. Porlotanto,sienlaconsolahacemos:

Figura3.17.Comoevaluarunafuncin. nosdevuelveunvalor,queeselresultadodehacersen(1)/1. Tambinpodemosgraficarlafuncin.Silafuncinpuedeaplicarseaunvector,hacerelgrfico esinmediato.Enelejemplonoloes,yaqueScilabnoentiendequsignificacalcularelsenode unvectorydividirloporelmismovector. Ssabehacerlosiescribimoslasinstruccionesenladefinicindelafuncinaclarandoqueen casodetratarsedeunvectorelclculodebeserhechocomponenteacomponente.Piense cmodeberamodificarladefinicindelafuncinsin(x)/xparapoderaplicarlaaunvectoryque elresultadoseaunvectordecomponentesigualesahacerestecocienteparacadaunadelas componentesporseparado. Acdamoslarespuesta:

50

Figura3.18.Comogenerarunafuncinquepermiteevaluarenvectores. Ahoraesposibledefinirunvectorycalcularelvalordef2sobreelvectoryfinalmentegraficarla funcin. Ejercicio.Sobreelvectorv=[0.1:0.1:1],evaluef2(v).Grafiquef2(v)enfuncindev.

Usarlafuncinf2enlugardelafuncinfnoeslanicaopcinquetenemosparagraficar lafuncinsen(x)/xcomofuncindexparavaloresdexdentrodeunciertorango.Tambin podemosdefinirunvectorx,aplicarleamanolafuncinfacadaunadesuscomponentesy guardarcadaresultadoenlacomponentedeunvectory. Enlafigura3.19semuestraunejemplo,

Figura3.19.Evaluacincoordenadaacoordenada. Unavezdefinidoelvectorx,leasignamosmanualmentealvectorylosvalores correspondientesdelafuncin.Dealgunaformaestoesequivalenteahacerunatablaconlpiz ypapel.Sixtienepocascomponentesstapuedaserunaopcin,perositienemuchsimasno. Loquespodemosnotaresquesiempreescribimoscasilamismaexpresin,slocambiamos elnmerodelacomponente.Esdecir,estamoshaciendoalgorecurrente.Esposiblepedirlea Scilabquehagaunclculorecurrentesinescribirtanto.Estosehaceusandoloops(o bucles).Enelcaptuloquesigueexplicaremoscmoconstruirunloop.

3.4ElEntornodeTrabajooWorkspace
Elentornodetrabajoocomosesuelellamareninglsworkspace,eselconjuntodevariablesy 51

mdulosqueestncargadoenunasesin.Cuandoiniciamosscilab,secarganlaspartesdel programayhayunaseriedevariablesquecarganautomticamente.Comosemuestraenla figura3.20,elcomandowhoimprimeenpantallatodaslavariablesqueestndefinidasenel entornodetrabajo:

Figura3.20.Elcomandowhoimprimeenpantallatodaslasvariablesqueseencuentran definidaenelentornodetrabajo. Vemosquevariasvariablesquesecarganautomticamentecuandoiniciamosscilab. Podemosindagarelvalordecadavariablesimplementeescribiendosunombreenlaconsolay presionandoenter.Elcomandowhoestilcuandoqueremossabersiunavariableestdefinida ono.Amedidaquevamosdefiniendovariablesestasseincorporanenelentornodetrabajoy podemosaccederaellasdesdelaconsolaolosscript.Enlafigura3.21,semuestracomo luegodedefinirlasvariablesaylav,estasaparecenlistadasenelworkspacecuando ejecutamoselcomandowho. 52

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.22b.Agregandolalneaclearaalscript,eliminamosdelentornodetrabajolavariablea Conlasfuncioneselcomportamientoesdiferente,sicreamosunavariabledentrodeuna funcinestanoestaraccesibledesdelaconsola.Porotroladodesdelafuncionespodemos accederavariablesdefinidasenelentornodetrabajosiemprequenohagamosunaredefinicin 54

delavariableenelcontextodelafuncin.Enelejemplodelafigura3.23dentrodelentornodela funcindefinimoslavariablea,cargamoslafuncinylaejecutamosenlaconsolavemosquela variablea,nosehaincorporadoalentornodetrabajo.Lavariableaesprivadadelentornodela funcina,secreadurantelaejecucindelafuncinysedestruyecuandolaejecucintermina.

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

Otracosaqueesbastantetilesescribirdirectamenteclear.Esonospermiteborrartodas lasvariablesquefuerondefinidaspreviamente.Estaspuedensernmeros,vectores,matrices, etc.

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

Figura4.2.Resultadosenlaconsoladespusdeejecutarusandofilewithecho. Alejecutarelprograma,loprimeroqueapareceenlaconsola,eslaprimerainstruccindel cdigo.Luego,elvectorxdefinidoinicialmente.Vemosentoncesqueestcompuestopor ceros.Acontinuacinvemoslaslneasdelcdigoqueconstituyenelciclo. Acontinuacin,comonoescribimosalfinalizarlainstruccincontenidaenelciclo,el programanosmuestraelresultadodecadaiteracin.Enlaiteracin1elprimerelementodel vectorxesiguala1,enlasegundaiteracin,elsegundoelementodelvectorpasaavaler2y assucesivamente.

Ejemplo2
Paraenfatizarelhechodequelosvaloresdelcontadorsonarbitrarios,modifiquemoselcdigo comosemuestraenlaFigura4.3:

60

Figura4.3.Elcontadortomalosvaloresquedefinimosenelvectorcorrespondiente Ejercicio.Ejecuteelejemplo2ydiscutalasalidadelprograma. Usualmenteelcontadortomavaloresconsecutivosoconalgunareglaporloqueescomnver declaracionescomolasiguientes:

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

vectorescomoel./o.*,esposibleevaluarunafuncinparatodoslosvaloresdeunvector medianteuncicloquevayarecorriendocadaunodeloselementosdeunvectoryevaluandola funcinparacadaelemento.Enprincipiosisloqueremosevaluarunafuncinmatemtica, estaopcinesunpocoartificialyaqueconlasoperacionescomo./o.*esposiblehacerloen formadirecta,noobstanteesinstructivoimplementarloconunciclofor Enlafigura4.4semuestraelcdigo

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.5.Implementacindeuncicloforparasumar100trminosdeunaserie. Losciclosfortambinpuedenutilizarsedentrodefunciones.Paraejemplificarlovamosa implementarunafuncinquesumeloselementosdeunvector.Estafuncinquellamaremos suma,tienecomoargumentounvectorydevuelveunnmero(unescalar)queeselresultado desumartodosloselementosdelvector.Enlafigura4.6semuestraelcdigo:

Figura4.6.Lafuncinsumautilizauncicloforparasumarloselementosdeunvector Pregunta:Enelpaneldeladerechadelafigura4.6cuandosedefineelvectrox1comola divisinentre1ycadaunodeloselementosdelvectorx,seutilizanunosparntesis,porqu? Ejercicio.Utilizandouncicloforescribirunafuncinquedeterminelacantidaddeelementosde unvector. Solucin. Enelcaptuloanteriormostramoslasfuncioneslengthysizequevienenenlalibreradel programascilab.Veamosahoraunamanerasencilladeimplementaruncicloforenscilab,para contarcuntoselementoshayenunvector.Paraelloutilizaremoselcontadoryunasegunda 63

variablequellamaremosj.Lavariablejserutilizadaparacontarloselementosdelvector,el valoriniciales0.Asignamoselvectoralqueledeterminaremoslacantidaddeelementosal contadordelciclofor.Elcicloserepetirparacadaelementodelvectorporloquelainstruccin slotienequeincrementaren1lavariablejencadaiteracindelciclo.Dichoenotraspalabras lalongituddelvectoresigualalacantidaddeiteracionesqueefectuarelciclo. Primeroanalizaremoselcdigoconunarchivodecomandososcriptyluegoescribiremosla funcin. EnlaFigura4.7semuestraelscript.

Figura4.7.Contandoloselementosdeunvectorconunciclofor. Enesteejemplocontamosloselementosdelvectorxqueestdefinidoentre1y2000con incrementosde 2 . Elcdigotienelavariablejinicializadaenelvalor0.Sedefineelcontadoricomoelvectorxal queselequierencontarloselementos.Comoelciclocomienzaenelprimerelementodel contadoryterminaenelltimopasandoportodos,dartantasvueltascomoelementoshayaen elvector.Encadavueltadelciclo,lavariablejseincrementaen1ycumpleconelcometidode contarcuntoselementoshayenelvectorx. Paragenerarunafuncinquehagaestacuentatenemosqueescribiruncdigocomoelquese muestraenlaFigura4.8yguardarloconterminacinsci.

64

Figura4.8.Definicindelafuncinlongitud. Lafuncinlongitud,tienecomoentradaunvector(alquelevamosacalcularlalongitud)y devuelveunnmero(lalongituddelvectordelaentrada).

Figura4.6.Resultadoenlaconsola. Enresumenuncicloforseejecutatantasvecescomoelementoshayaenelvectorquele asignamosalcontador.Elcontadorvatomandoencadavuelta(iteracin)lossucesivosvalores deloselementosdedichovector.Encadavueltaseejecutanunaseriedecomandoshastaque seterminaloselementosdelvectorcontador. Ejercicio:Utilizandounciclofor,evaluarelvalordelafunciny=x^3paralosvaloresdex comprendidosentre2y2conunincrementode0.1.Guardarelresultadoenunvectorllamado y.

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

Lalneaans=Fquieredecirquelarespuestaesfalsayaquexnotieneasignadoelvalor1,x tieneelvalor5. Siahoraejecutamos:

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:

Figura4.10.Incluyendolaverificacinx==0paraevitarelerroraldividirpor0. Notarqueenestaimplementacindelafuncinperdimoslaposibilidaddeaplicrselaaun vector.Elproblemaesquecuandoaplicamoslacondicinx==0paraunvector,exceptoquese tratedeunvectorde0lacondicinvaaserfalsa.Paraverloconsiderarlasinstruccionesque semuestranenlafigura4.11

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.12Utilizamoslafuncinfindparaubicarlaposicindelelemento0enunvector Parapoderaplicarunafuncinpartidaaunvectoresnecesarioevaluarporseparadoquepasa enlospuntossingularesenestecasoenel0.Paraelloverificamossienelargumentodela 71

funcinseencuentraelelemento0,sinoseencuentraseevalalafuncinnormalmente,sise encuentra,separteelargumentoen2desdeelelemento1hastalaposicinanteriorala posicindel0,ydesdelaposicinsiguientealaposicindel0alfinal.Estosemuestraenla figura4.13.

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.

Figura4.15.Comousarelcomandoifcondoscondiciones. Enalgunoscasossedeseasepararalassituacionesposiblesenmsdedoscasospara realizaroperacionesdistintasdependiendodelasituacindequesetrate.Enesoscasoses posibleutilizarelcomandoelseif.Sepuedenutilizartantoselseifcomohaganfalta,dependiendo delnmerodesituacionesdistintas.Porejemplo,sitenemoscuatrotiposdesituaciones, usaremos:ifparaidentificarlaprimera,elseparaidentificarlaltimaydoselseif,paraidentificar lasotrasdos.EnlaFiguraquesiguesemuestraunejemplocon3situaciones(s>1,s<=1, 74

cualquierotrocaso).

Figura4.16.Comousarelcomandoifconmsdedoscondiciones. Obviamenteenestosejemplostienequeestardefinidalavariableanteriormenteparapoder testearculdetodaslascondicionessecumple.

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

Ejercicio3:Usandoelcomandoifhacerunprogramaqueencuentreelvalormximodelvector v=[1243].Modificarelprogramaparaqueademsdigaenqucoordenadaestelmximo. Laideaespensarcomounoloharaamano.Empezaramoscomparandolaprimeraysegunda componenteynosquedaramosconlamayordelasdos.Despuscompararamosstaconla terceraynuevamentenosquedaramosconlamayor.Repeteramosestosucesivamentehasta habercomparadotodaslascomponentes.Escribamosunprogramaqueactedeestemodo. Paraellousamosunfor,yparahacerlascomparacionesyquedarnosconlamayorentredos componentes,usamosunif.Semuestracmohacerloenlafiguraquesigue.

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.5.Scriptparahallarmximosguardandolacomponente. Ejercicio4:Repetirelejercicioanteriorperopermitindoleavquetengacualquierlongitud. Aclonicoquetendremosquehacereshacervariarelfordesde2hastalength(v). Ejercicio5:Repetirelejercicioanteriorperoparabuscarelmnimodeunvector. Ejercicio6:Repetirelejercicioanteriorperoparabuscarelmnimoyelmximodeunvector. Ejercicio7:Dadalafuncinf(x)=x^2+x+4sedeseaaproximarelmximodelafuncinenel intervalo[1010].Aproximarloprimeroevaluandolafuncinconunespaciadode1yluegocon unespaciadode0,1.Enqupuntosealcanzaelmximo?Graficarlafuncinylospuntos hallados.

Figura5.6.Mximodelafuncinx^2+x+4 Observarenlasiguientefiguraquedibujamoselmximodelvectoryenverdecuandoel 80

espaciadoesde0,1yenrojocuandoelespaciadoesde1.Observenqueamedidaquelagrilla esmaschicaelmximodelvectorysevaacercandoalmximodelafuncin.

Figura5.7.Grficodex^2+x+4ylaaproximacindelmximo. Estafuncinesunafuncincuadrticaalaquesabemoscalcularlesusmximosperoen muchoscasosesonoestanfcil.Porejemplo, Ejercicio8:Dadalafuncinf(x)=log(x^2+1)+sin(x)+10aproximarelmximoyelmnimodefen elintervalo[1010].Enqupuntossealcanzanelmximoyelmnimo?Graficarlafunciny lospuntoshallados.

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

entoncesnostenemosquequedarconelintervalo[ax]ysif(a)*f(x)>0nostenemosquequedar conelintervalo[x,b].Enlatabla5.1semuestraelresultadoparalasprimerasiteracionesdel algoritmodelabiseccinaplicadoalafuncinfdefinidaenlaec5.1:

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

a 1 1 1 1 0.875 0.8125 0.8125 0.797 0.797 0.797 0.795

b 1 0 0.5 0.75 0.75 0.75 0.78125 0.78125 0.789 0.793 0.793

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 + + + + +

Tabla5.1.Resultadodelaaproximacindelarazdelafuncin f (x) = x3 + 1/2 enelintervalo[1 1]paralaprimeras11iteracionesdelmtododelabiseccin. Enlafigura5.16semuestracmoelvalordexsevaaproximandoaunaconstantequeesel 87

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

Observarquemiramoscuandof(a)*f(b)<0puesesonosdicequetienensignocontrario. Iteramosesteprocedimientohastaquelleguemosaunacantidadfijadeiteraciones. Observarqueladiferenciadelosextremossehacecadavezmschica(lalongitudeslamitad delpasoanterior).Ademselcerodelafuncinquedasiempreencerradaentrelosdos extremosdelintervalo.

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

Unaformaalternativadeprogramarelmtododelabiseccinesusandoelcomandollamado while.Lapalabrawhileeninglssignificamientras.Estecomandoseusaparaqueun programacontinehaciendoalgomientrassucedaunacondicindada.Enestecasonohabr queusarelcomandobreak.Laestructuraconlaqueseescribees, whilesucedaesto hagaesto end Haremosahoraunprogramaqueapliqueelmtododelabiseccin,perousandoahorael comandowhile.

I Figura5.12.Mtododelabiseccinusandoelcomandowhile. Observarquedeestamaneranosahorramostambindehacerunfor. Enlalnea10definimosi=0. Cuandopaseporlalinea11:primerosefijarasiiesmenora600,yademssefijarsi lafuncinseanulaenx.Silasdoscondicionessecumplene,entonceselprograma continua.Sialgunadelasdosdejadevaler,entonceselprogramasedetiene. Enlalnea12:lesuma1ai.Luego,cuandopaselaprimeravezivaldr0,lasegunda 90

vez,ivaldr1,assucesivamentehastaqueelprogramasedetenga. Puedenpasardoscosas: 1. Quesedetengacuandoi=600. 2. Quesedetengaantespuesallmif(x)=0. Observarqueaqusevuelveadetenerseeni=48.Locualesrazonableporqueyavimosqueall lafuncinseanulaba. Estecomando,aligualqueelifmepermiteponermsdeunacondicin. Asentonceslepodemospedirquesedetengasiaybyaestndemasiadocerca. Porejemplo,lepodemospedirqueademssedetengasi |a b| < 1010 .

Figura5.13.Mtododelabiseccinusandoelcomandowhileconvariascondiciones. Observarqueahoraelmtodosedetieneantes. Ejercicio11:Dadalafuncinf(x)=log(x^2)+x1hacerunprogramaquecalculemedianteel mtododelabiseccinunceroenelintervalo[0,1]usandoelcomandowhilepidindoleque iterehastaunmximode600yqueparesi |a b| < 105 .Graficarencadapasolasucesin obtenida.Enqunmerodeiteracinsedetiene?

91

Observacin:Unacosaquehayquetenerencuentacuandousamoselcomandowhileesque siemprehayqueponercondicinquehagaqueelprogramapareenalgnmomento.Sila condicinnoestbienhecha,puedenopararnunca. Ejercicio12.Pruebelosiguienteeinterpretequeestsucediendo, >i=0 >whilei>1 >i=i+1 >end

92

Você também pode gostar