Está en la 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.
2
1.InstalacindeScilabyMdulos
1.1Instalacin
Recomendamosfuertemente,instalarlanuevaversindelscilabqueesla5.3.3.
Estaversinsepuedebajardesdeelsitiooficialdescilabquees:
www.scilab.org
Cuandoentramosvemosunaventanacomosta,enlaquenosofrecebajarlaversinde
windowsysihacemosclickenOtherSystemsencontraremostambinlinux,macetc.Si
queremoslaversinenwindowssimplementehacemosclicksobreelrecuadroquedice
DownloadScilabydebecomenzarladescargadeunaarchivoquetendrunnombreparecidoa
ste:scilab5.3.3.exe.
3
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
imagenyguardarunamatrizpreviamentegeneradaenscilabcomounaimagen.
ParainstalarestemdulovamosalmenApplications(peseahaberloinstaladoencastellano,
losnombresdelosmensestneningls)yallseleccionamos
AdministradordeMdulosATOMS.verfigura3.
Figura1.3.Abrimoseladministradordemdulosatoms.
Parainstalarmdulosadicionales,tenemosqueteneraccesoainternetyaqueatomslosbusca
enelsitiodescilab.Unavezqueejecutamoseladministradordemdulosatoms,seabreuna
ventanacomoladelaFigura1.4dondeselistanlasdistintasclasesdeaplicaciones
disponibles.NosotrosseleccionamosImageprocessing(procesamientodeimgenes).Ver
figura1.4
6
Figura1.4.EnlaventanadelATOMSseleccionamosImageProcessing.
UnavezqueseleccionamosImageProcessinginstalamoselScilabImageandVideo
processingtoolboxSIVP.Verfigura1.5
7
Figura1.5.InstalamoseltoolboxSIVP.cuandoterminamostenemosquereiniciarelscilab.
8
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.
9
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,elnmero210
20
seescribe2e20obien2d20.Lomismo
sucedeconlosnmerosmuychicos.Elnmero210
20
seescribe2e20obien2d20.
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
3 10 ) 5 (
2
+ : 5

0.5
) (
3
27
4
5
14 )
52
2
43:2
(
5
3 4
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),e
2
,sen(0),
cos(3,14x2
2
).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. 1.
0. 4. 2.
esdecir,hacemostodosloselementosdelacolumna1igualesa0.Ysidespushacemos
a(2,:)=3
0. 2. 1.
3. 3. 3.
esdecir,hacemostodosloselementosdelafila2igualesa3.
21
Ejercicio.Supongamosquelamatrizaestdadapor
0. 2. 1.
3. 3. 3.
2. 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
bblue.punto solida
ggreenocirculo :punteada
rredxx .punteadaydiscontinua
ccyan+mas lineadiscontinua
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:
(x) in(x)./x f = s
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:
(x) /2 f = x
3
+ 1 [5.1]
queestudiaremosenelintervalo[1,1].Sabemosquelafuncintieneunarazendichointervalo
83
puesf(1)<0yf(1)>0,esdecirlafuncincambiadesignoenelintervaloporloquecomoes
continuadebeforzosamentepasarporcero.Enlafigura5.11segraficalafuncinenelintervalo
deinters.Comoprimeraaproximacindelarazdelafuncintomamoselpuntomediodel
intervalo: .Hemosdefinidoa1=1yb1=1comolosextremosdelintervaloinicialen x
1
=
2
a +b
1 1
= 0
elqueanalizamoslafuncin.x1esnuestraprimeraaproximacindelarazdelafuncin,
entoncesevaluamoslafuncinenx1paraverquetantoseaproximaacero.
.Enlafigura5.12seilustraestepaso,segraficalafuncin,losextremosdel (x ) (0) .5 f
1
= f = 0
intervaloconpuntosrojosyelpuntomediodelintervalocomoprimeraaproximacindelaraz
segraficaenazul.Comoseobservaenlafigura5.12,laraizsesitaalaizquierdadex1.Porlo
quepodemosrepetirelprocesoperoahoratrabajandoconelintervalo[10].Esdecirnos
quedamosconelvalordea1quetenamosdelaiteracinanteriorperoelvalordeb1lo
reemplazamosporelvalordex1.Dichoenotraspalabras,elcambiodesignodelafuncinse
produceenelintervalo[10].Entoncesparalasegundaiteracintenemosa2=1yb2=0y
definimosx2igualqueantescomoelpuntomediodelintervalodetrabajo:
.5 x
2
=
2
a +b
2 2
= 0
Evaluamoslafuncinenx2yobtenemosquef(x2)=0.375.Denuevovemosquelarazqueda
enelintervalodefinidopora2yx2,verfigura5.13.Definimosentonceselintervaloyelpunto
medioparalaterceriteracin:
a3=a2=1b3=x2=0.5yx3es:
.75 x
3
=
2
a +b
3 3
= 0
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
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 a b x f(x) signodef(x)*a
1 1 1 0 0.5
2 1 0 0.5 0.375
3 1 0.5 0.75 0.078125
4 1 0.75 0.875 0.1699219 +
5 0.875 0.75 0.8125 0.0363770 +
6 0.8125 0.75 0.78125 0.0231628
7 0.8125 0.78125 0.797 0.0060234 +
8 0.797 0.78125 0.789 0.0087142
9 0.797 0.789 0.793 0.0013817
10 0.797 0.793 0.795 0.0023118 +
11 0.795 0.793 0.794 0.0004628 +
Tabla5.1.Resultadodelaaproximacindelarazdelafuncin enelintervalo[1 (x) /2 f = x
3
+ 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 | 0 | b < 1
10
Figura5.13.Mtododelabiseccinusandoelcomandowhileconvariascondiciones.
Observarqueahoraelmtodosedetieneantes.
Ejercicio11:Dadalafuncinf(x)=log(x^2)+x1hacerunprogramaquecalculemedianteel
mtododelabiseccinunceroenelintervalo[0,1]usandoelcomandowhilepidindoleque
iterehastaunmximode600yqueparesi .Graficarencadapasolasucesin a | 0 | b < 1
5
obtenida.Enqunmerodeiteracinsedetiene?
91
Observacin:Unacosaquehayquetenerencuentacuandousamoselcomandowhileesque
siemprehayqueponercondicinquehagaqueelprogramapareenalgnmomento.Sila
condicinnoestbienhecha,puedenopararnunca.
Ejercicio12.Pruebelosiguienteeinterpretequeestsucediendo,
>i=0
>whilei>1
>i=i+1
>end
92

También podría gustarte