apost p motta-3.0 01082006

Upload: philipe-morais

Post on 10-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 apost p motta-3.0 01082006

    1/129

    Introdu cao ao ScilabVersao 3.0

    Prof. Paulo Sergio da Motta Pires

    Departamento de Engenharia de Computa cao e Automa caoUniversidade Federal do Rio Grande do Norte

    Natal-RN, Julho de 2004

  • 7/22/2019 apost p motta-3.0 01082006

    2/129

    Resumo

    Scilab e um ambiente utilizado no desenvolvimento de programas para a resolu cao de pro-blemas numericos. Criado e mantido por pesquisadores pertencentes ao Institut de Recherche en Informatique et en Automatique , INRIA, atraves do Projeto M ETALAU ( Methods, algorithmes

    et logiciels pour lautomatique ) e a Ecole Nationale des Ponts et Chaussees , ENPC, Scilab egratuito ( free software ) e e distribudo com o c odigo fonte ( open source software ). A partir demaio de 2003, Scilab passou a ser mantido por um cons orcio de empresas e institui coes francesasdenominado de Cons orcio Scilab .

    Embora seja apresentado como um software CASCD , Computer Aided Control System Design - Projeto de Sistemas de Controle Auxiliado por Computador, Scilab pode ser usadopara desenvolvimento ou prototipa cao de software numerico de prop osito geral.

    Este e um documento sobre a utiliza cao e as principais caractersticas deste ambiente deprogramacao numerica. E importante ressaltar que as referencias denitivas sobre Scilab s aoos manuais que acompanham o software. Por exemplo, podemos citar Introduction to Scilab -Users Guide [1], documento no qual este texto se baseia.

    O objetivo principal e apresentar um texto introdut orio, em portugues, sobre Scilab. Nossointeresse e fazer deste documento um complemento aos textos utilizados em disciplinas comoMetodos Computacionais, C alculo Numerico, Computa cao Numerica, Algebra Linear Computa-cional e correlatas. Nos interessa, tambem, mostrar que o Scilab e uma excelente ferramenta desuporte para linhas de pesquisa onde o uso de computadores na resolu cao numerica de problemase intensivo.

    A versao mais recente deste trabalho est a disponvel, no formato pdf , em http://www.dca.ufrn.br/~pmotta . Coment arios ou sugestoes podem ser enviados para [email protected] .

    i

    http://www.dca.ufrn.br/~pmottahttp://www.dca.ufrn.br/~pmottahttp://localhost/var/www/apps/conversion/tmp/scratch_2/[email protected]://localhost/var/www/apps/conversion/tmp/scratch_2/[email protected]://localhost/var/www/apps/conversion/tmp/scratch_2/[email protected]://www.dca.ufrn.br/~pmottahttp://www.dca.ufrn.br/~pmotta
  • 7/22/2019 apost p motta-3.0 01082006

    3/129

    Agradecimentos

    Ao Klaus Steding-Jessen, pelo L ATEX-demo. A maioria das informa coes sobre como se fazisso em LATEX ? podem ser encontradas no documento escrito pelo Klaus 1;

    Ao Dr. Jesus Olivan Palacios, pelas conversas sobre o Scilab. O Dr. Palacios sintetiza

    com brilhantismo as vantagens de se utilizar software livre e de c odigo aberto;Aos colegas, pelas contribui coes e sugest oes que melhoraram a apresenta cao deste trabalho.

    Distribui cao

    Este trabalho pode ser copiado e distribudo livremente, mantidos os creditosao seu autor.

    1 Informacoes sobre o LATEX-demo em particular ou sobre o L ATEXem geral podem ser obtidas em http://biquinho.furg.br/tex-br/

    ii

    http://biquinho.furg.br/tex-br/http://biquinho.furg.br/tex-br/http://biquinho.furg.br/tex-br/http://biquinho.furg.br/tex-br/
  • 7/22/2019 apost p motta-3.0 01082006

    4/129

    Historico deste Documento

    Fevereiro de 1999 - Versao 0.1 - Incio. Julho de 2001 - Versao 0.2 - Corre coes e atualiza coes.

    Julho de 2001 - Versao 0.3 - Corre coes e atualiza coes. Julho/Novembro de 2001 - Vers ao 1.0 - Reorganiza cao do trabalho e correcoes. Dispo-nibiliza cao deste documento no site do Scilab - INRIA ( http://scilabsoft.inria.fr/

    books.html )

    Maio/Julho de 2004 - Vers ao 3.0 - Reorganiza cao do trabalho, corre coes e atualiza coes. OScilab passa a ser mantido pelo Cons orcio Scilab a partir de maio de 2003. O numero davers ao deste documento passa a ser igual ao n umero da versao do Scilab que ele descreve.

    Este trabalho foi totalmente desenvolvido utilizando free ou open source software. O Scilabvers ao 3.02 foi instalado, a partir do c odigo fonte, no Linux distribui cao Slackware 9.1 3, kernelvers ao 2.4.244. A digita cao LATEX foi feita usando o Xemacs 5. As guras, em jpg foramcapturadas usando o GIMP 6 vers ao 1.2.5. O texto completo foi transformado em pdf atravesdo pdatex .

    A maquina utilizada e um Pentium MMX 200, 64 MB de RAM com um disco rgido de 15GB.

    2 P agina do Scilab : http://scilabsoft.inria.fr3 P agina do Linux distribui cao Slackware : http://www.slackware.com4 P agina do kernel Linux http://www.kernel.org5 P agina do Xemacs http://www.xemacs.org6 P agina do GIMP http://www.gimp.org

    iii

    http://scilabsoft.inria.fr/books.htmlhttp://scilabsoft.inria.fr/books.htmlhttp://scilabsoft.inria.fr/http://www.slackware.com/http://www.kernel.org/http://www.xemacs.org/http://www.gimp.org/http://www.gimp.org/http://www.xemacs.org/http://www.kernel.org/http://www.slackware.com/http://scilabsoft.inria.fr/http://scilabsoft.inria.fr/books.htmlhttp://scilabsoft.inria.fr/books.html
  • 7/22/2019 apost p motta-3.0 01082006

    5/129

    Sumario

    Scilab - Vers ao 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iAgradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iiDistribuicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iiHist orico deste Documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iiiSumario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv

    Lista de Figuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viLista de Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viiLista de C odigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

    1 Introdu cao 1

    2 O Ambiente Scilab 42.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 O Ambiente Graco do Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Vari aveis Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.4 Manipula cao de Arquivos e Diretorios . . . . . . . . . . . . . . . . . . . . . . . . 112.5 O help do Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.6 Arquivos com Comandos Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3 Opera c oes B asicas com Scilab 193.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2 Utilizando as Funcoes Internas do Scilab . . . . . . . . . . . . . . . . . . . . . . . 23

    4 Polin omios, Vetores, Matrizes e Listas 254.1 Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.4 Acesso a Elementos de Vetores e de Matrizes . . . . . . . . . . . . . . . . . . . . 35

    4.5 Matrizes com Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.6 Matrizes Simbolicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.7 Matrizes Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.8 Opera coes com Vetores e Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 464.9 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5 Programa cao 565.1 Comandos para Itera coes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5.1.1 O Loop for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.1.2 O Loop while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    5.2 Comandos Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    5.2.1 Comando if-then-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.2.2 Comando select-case . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    iv

  • 7/22/2019 apost p motta-3.0 01082006

    6/129

    5.3 Denindo Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.4 Denindo Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    5.4.1 Vari aveis Globais e Variaveis Locais . . . . . . . . . . . . . . . . . . . . . 665.4.2 Arquivos com Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.4.3 Comandos Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    6 Gracos no Scilab 766.1 A Janela de Gracos do Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.2 Gracos Bi-dimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    6.2.1 Outros Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.2.2 Gr acos 2D Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    6.3 Gracos Tri-dimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866.3.1 Gr acos 3-D Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

    A Instala cao do Scilab 89A.1 Instalacao no Linux Slackware - Codigo Fonte . . . . . . . . . . . . . . . . . . . . 89

    B Liga c ao do Scilab com Programas em C 92B.1 A Ligacao Din amica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    C Instala cao de Toolboxes 96C.1 Instalacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    D Fun c oes Pre-denidas - Scilab 3.0 99D.1 Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99D.2 Graphics Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101D.3 Elementary Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104D.4 Input/Output Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

    D.5 Handling of functions and libraries . . . . . . . . . . . . . . . . . . . . . . . . . . 107D.6 Character string manipulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108D.7 GUI and Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108D.8 Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108D.9 Linear Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109D.10 Polynomial calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110D.11 General System and Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111D.12 Robust control toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112D.13 Optimization and simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112D.14 Signal Processing toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113D.15 Arma modelisation and simulation toolbox . . . . . . . . . . . . . . . . . . . . . 114

    D.16 Metanet: graph and network toolbox . . . . . . . . . . . . . . . . . . . . . . . . . 114D.17 Sound le handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115D.18 Language or data translations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115D.19 PVM parallel toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115D.20 TdCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116D.21 TCL/Tk interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116D.22 Statistic basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116D.23 Cumulative Distribution Functions; Inverses, grand . . . . . . . . . . . . . . . . . 117D.24 Identication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117D.25 Matlab to Scilab conversion tips . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

    Referencias Bibliogracas 120

    v

  • 7/22/2019 apost p motta-3.0 01082006

    7/129

    Lista de Figuras

    2.1 Tela inicial do Scilab no ambiente gr aco do Linux. . . . . . . . . . . . . . . . . . 52.2 Tela com as op coes de opera coes sobre arquivos, File Operations . . . . . . . . . 62.3 Programas de demonstra cao, opcao Demos , do Scilab 3.0. . . . . . . . . . . . . . 72.4 Tela da sub-opcao Help browser com navegador padr ao do Scilab. . . . . . . . . . 82.5 Tela de congura cao para a escolha do navegador do Help do Scilab. . . . . . . 82.6 Tela inicial do Scipad , editor incorporado ao Scilab. . . . . . . . . . . . . . . . . 10

    2.7 Tela de help para a fun cao det . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.8 Comando help para a fun cao det . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.9 Texto do help para a fun cao besselk . . . . . . . . . . . . . . . . . . . . . . . . . 162.10 Comando diary para gravacao de sessoes desenvolvidas no ambiente Scilab. . . . 17

    3.1 Rodando o exemplo de utilizacao da fun cao fft apresentado no help do Scilab. . 233.2 A funcao K de Bessel, besselk . O exemplo apresentado no help da fun cao

    e copiado para o editor SciPad, selecionado e executado atraves da sub-op caoEvaluate Selection Ctrl+y da op cao Execute . . . . . . . . . . . . . . . . . . . . 24

    5.1 Escrevendo uma funcao usando o editor do Scilab. . . . . . . . . . . . . . . . . . 69

    6.1 Janela graca do Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.2 Sadas para a fun cao plot2d([x], y) . Cada sub-graco refere-se a um dos itens

    da sess ao do Scilab mostrada anteriormente. Observar que os gr acos dos Itens4 e 5 possuem valores de abcissas diferentes dos demais. . . . . . . . . . . . . . . 80

    6.3 Sadas para a fun cao plot2d([x], y, ) . . . . . . . . . . . . . . . . . 836.4 Sadas para a fun cao subplot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856.5 Exportando gracos para o LATEX. . . . . . . . . . . . . . . . . . . . . . . . . . . 856.6 Exemplo de sada graca 3-D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.7 Exemplos de gr acos 3-D especiais. . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    C.1 Procedimentos para a utiliza cao do toolbox ANN e help com as funcoes disponveis

    no toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    vi

  • 7/22/2019 apost p motta-3.0 01082006

    8/129

  • 7/22/2019 apost p motta-3.0 01082006

    9/129

    Lista de C odigos

    1 O script que implementa o metodo de Newton-Raphson para obter 2. . . . . . 632 Programa principal, implementa cao do metodo de Runge-Kutta. . . . . . . . . . 703 A funcao f(x,y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704 A solucao exata da equacao diferencial. . . . . . . . . . . . . . . . . . . . . . . . 705 Programa para resolver um sistema triangular. . . . . . . . . . . . . . . . . . . . 746 O script utilizado para gerar o gr aco da Figura 6.2. . . . . . . . . . . . . . . . 81

    7 Fun cao Runge-Kutta escrita em C. . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    viii

  • 7/22/2019 apost p motta-3.0 01082006

    10/129

    Captulo 1

    Introdu cao

    Scilab1 e um ambiente voltado para o desenvolvimento de software para resolu cao de pro-blemas numericos. Scilab foi criado em 1990 por um grupo de pesquisadores do INRIA 2-Institut de Recherche en Informatique et en Automatique e do ENPC 3- Ecole Nationale des Ponts et Chaussees .

    Desde 1994, quando passou a ser disponvel na Internet, Scilab e gratuito, free software , edistribudo com o c odigo fonte, open source software . Alem da distribui cao com o codigo fonte,existem, tambem, distribui coes pre-compiladas do Scilab para v arios sistemas operacionais. Navers ao 3.0, na data em que este documento foi escrito, Scilab est a disponvel para as seguintesplataformas:

    Plataformas UNIX/Linux: Scilab 3.0 - arquivo binario para Linux (scilab-3.0.bin.linux-i686.tar.gz); Scilab 3.0 - arquivo com o codigo fonte do Scilab (scilab-3.0.src.tar.gz).

    Plataformas Windows 9X/NT/2000/XP: Scilab 3.0 - instalador da vers ao bin aria do Scilab (scilab3.0.exe); Scilab 3.0 - codigo fonte do Scilab (scilab-3.0.src.zip)

    A partir de maio de 2003, Scilab passou a ser mantido por um cons orcio de empresas einstituicoes francesas denominado de Cons orcio Scilab . Os principais objetivos deste cons orciosao:

    Organizar a cooperacao e o interc ambio entre os desenvolvedores do Scilab objetivandoincorporar ao software os ultimos avancos cientcos na area da computa cao numerica; Organizar a cooperacao e o interc ambio entre os usuarios do Scilab objetivando fazer comque o software possa ser utilizado de maneira mais efetiva na ind ustria, na educa cao e na

    pesquisa, e

    Angariar recursos para a manuten cao da equipe de desenvolvedores e para garantir umsuporte mais adequado ` as necessidades dos usuarios.Embora seja apresentado pelos seus mantenedores como um software CASCD - Computer

    Aided Control System Design - Projeto de Sistemas de Controle Auxiliado por Computador,1 P agina do Scilab: http://scilabsoft.inria.fr2

    P agina do INRIA : http://www.inria.fr3 P agina do ENPC : http://www.enpc.fr

    1

    http://scilabsoft.inria.fr/http://www.inria.fr/http://www.enpc.fr/http://www.enpc.fr/http://www.inria.fr/http://scilabsoft.inria.fr/
  • 7/22/2019 apost p motta-3.0 01082006

    11/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 2

    Scilab e um ambiente para desenvolvimento ou prototipa cao de software numerico de prop ositogeral.

    O objetivo principal deste trabalho e divulgar o ambiente Scilab atraves de um texto escritoem portugues. Com este objetivo em mente, a enfase maior e dada na apresenta cao das carac-tersticas do pr oprio ambiente. Assim, apesar do rigorismo, n ao ha preocupacoes excessivas em

    rela cao aos tipos de problemas tratados ou em rela cao aos exemplos apresentados. Partimosdo princpio que o leitor deste trabalho j a possua conhecimentos pr aticos, mesmo rudimentares,sobre programacao.

    O objetivo secundario, tambem relevante, e mostrar que a utiliza cao de software livre e decodigo aberto, free/open source software , do ponto de vista do usu ario, traz grandes vantagens.Algumas delas, apresentadas em [2], sao:

    A ultima versao do software esta sempre disponvel, geralmente atraves da Internet; O software pode ser legalmente utilizado, copiado, distribudo, modicado; Os resultados obtidos podem ser divulgados sem nenhuma restri cao; Os programas desenvolvidos podem ser transferidos para outras pessoas sem imposi coesou constrangimentos de quaisquer natureza; O acesso ao codigo fonte, evitando surpresas desagrad aveis; O acesso a informa cao de alta qualidade, e A certeza de estar participando de uma comunidade cujo principal valor e a irrestritadifusao do conhecimento.Existem, ainda, algumas pretens oes com a divulga cao deste trabalho. Uma delas e fa-

    zer deste documento um complemento para os textos utilizados em disciplinas como MetodosComputacionais, C alculo Numerico, Computa cao Numerica, Algebra Linear Computacional ecorrelatas. Uma outra, e mostrar que Scilab e uma excelente ferramenta de suporte para li-nhas de pesquisa onde o uso de computadores na resolu cao numerica de problemas e intensivo.A ultima versao deste trabalho encontra-se disponvel em http://www.dca.ufrn.br/~pmotta .Coment arios ou sugest oes sobre esse documento sao sempre benvindas e podem ser enviadospara [email protected] .

    E importante ressaltar que as referencias denitivas sobre Scilab permanecem sendo os ma-nuais que acompanham o software. Na data em que este trabalho foi escrito, estavam disponveisna homepage do Scilab os seguintes documentos, [ 1]:

    Introduction to Scilab - manual de introdu cao ao Scilab, documento no qual este textose baseia, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L ATEX;

    Communication Toolbox Documentation - documentacao sobre o toolbox de comunica-cao, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L ATEX; Signal Processing - documentacao sobre o toolbox de processamento de sinais, nos for-matos PDF, Postscript, com os arquivos fontes em L ATEX; Lmitool: Linear Matrix Inequalities Optimization Toolbox - documentacao so-bre o toolbox de otimiza cao, nos formatos HTML , PDF, Postscript, com os arquivos fontes

    em LATEX;

    Metanet Users Guide and Tutorial - tutorial sobre a utiliza cao do toolbox de grafosMetanet, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L ATEX;

    http://www.dca.ufrn.br/~pmottahttp://www.dca.ufrn.br/~pmottahttp://localhost/var/www/apps/conversion/tmp/scratch_2/[email protected]://localhost/var/www/apps/conversion/tmp/scratch_2/[email protected]://www.dca.ufrn.br/~pmotta
  • 7/22/2019 apost p motta-3.0 01082006

    12/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 3

    Scicos , documentacao sobre o ambiente de simula cao do Scilab nos formatos HTML,PDF, Postscript, com os arquivos fontes em L ATEX; Scilabs Internals Documentation - documentacao sobre as caractersticas internasdo Scilab, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L ATEX;

    HOWTOs Scilab - varias dicas sobre a utiliza cao do Scilab, no formato HTML; Scilabs demonstrations - programas de demonstra cao de funcionalidades do Scilab,no formato HTML; Intersci - documentacao sobre a interconexao do Scilab com programas escritos naslinguagens C ou FORTRAN, nos formatos PDF, Postscript, com os arquivos fontes em

    LATEX, e

    Inline help pages - documentacao contendo o help de funcoes do Scilab nos formatosHTML, PDF, Postscript, com os arquivos fonte em L ATEX.Este documento, desenvolvido para satisfazer os objetivos estabelecidos em par agrafos pre-

    cedentes, esta dividido em seis Captulos e quatro Apendices. Neste Captulo, mostramos ocontexto no qual o ambiente Scilab e este trabalho est ao inseridos.

    No Captulo 2, apresentamos uma vis ao geral das principais caractersticas do ambienteScilab. Descrevemos as suas diversas op coes e apresentamos os comandos b asicos utilizados naedicao de comandos no ambiente Scilab.

    No Captulo 3, apresentamos diversos exemplos de manipula coes numericas basicas quepodem ser realizadas com o software. S ao enfatizadas opera coes com numeros (reais, complexos)e dados alguns exemplos de utiliza cao de fun coes internas do Scilab.

    O Captulo 4 e dedicado aos v arios tipos de dados que podem ser manipulados pelo Scilab.Apresentamos polin omios, vetores, matrizes e listas.

    No Captulo 5, sao dados exemplos de desenvolvimento de programas no Scilab e, nalizando,no Captulo 6, utilizamos comandos do Scilab voltados para a gera cao de gracos bi-dimensionaise tri-dimensionais.

    No Apendice A, mostramos os procedimentos para a instala cao do software, a partir docodigo fonte, em m aquinas com o sistema operacional Linux (a instala cao foi realizada emuma m aquina com distribui cao Slackware 9.1, kernel versao 2.4.24). Os procedimentos para ainstalacao das distribuicoes binarias do Scilab, por serem especcos de cada plataforma, n aosao apresentados. O usu ario e aconselhado a buscar estas informa coes na p agina do Scilab.Descrevemos, ainda, os principais arquivos e diret orios que comp oem o ambiente Scilab.

    No Apendice B, apresentamos um procedimento que permite executar c odigos escritos emlinguagem C dentro do ambiente Scilab.

    No Apendice C, apresentamos os procedimentos padr oes para a instalacao de toolboxes noScilab.

    No Apendice D, apresentamos uma listagem de todas as fun coes pre-denidas disponveisno ambiente Scilab-3.0.

    Por tratar-se de um texto introdut orio, deixamos de apresentar diversas caractersticas doambiente Scilab que, entretanto, podem ser consultadas nos documentos citados anteriormente.

    Acreditamos que a maneira mais adequada de ler este documento e em frente a um compu-tador com Scilab instalado e funcionando. Os exemplos apresentados e a pr opria funcionalidadedo software poderao, desta forma, ser explorados com maior eciencia.

    Este trabalho pode ser copiado e distribudo livremente, dados os devidos creditos ao seuautor.

  • 7/22/2019 apost p motta-3.0 01082006

    13/129

    Captulo 2

    O Ambiente Scilab

    Neste Captulo, apresentamos algumas caractersticas do ambiente Scilab em plataformagraca Linux. Em seguida, mostramos exemplos de manipula cao de arquivos e de diretorios apartir desse ambiente. O objetivo e a familiariza cao com o software.

    2.1 Introdu cao

    Scilab e um ambiente de programa cao numerica bastante exvel. Suas principais caracte-rsticas sao:

    1. E um software de distribui cao gratuita, com codigo fonte disponvel. Sua linguagem esimples e de facil aprendizado;

    2. Possui um sistema de auxlio ao usu ario, help;

    3. E um ambiente poderoso para gera cao de gr acos bi-dimensionais e tri-dimensionais, in-clusive com animacao;

    4. Implementa diversas fun coes para manipulacao de matrizes. As operacoes de concatena-cao, acesso e extracao de elementos, transposi cao, adi cao e multiplicacao de matrizes saofacilmente realizadas;

    5. Permite trabalhar com polin omios, fun coes de transferencia, sistemas lineares e grafos;

    6. Apresenta facilidades para a deni cao de fun coes;

    7. Permite o acesso a rotinas escritas nas linguagens FORTRAN ou C;

    8. Pode ser acessado por programas de computa cao simb olica como o Maple1, que e umsoftware comercial, ou o MuPAD 2, que e livre para uso em institui coes de ensino/pesquisa;

    9. Suporta o desenvolvimento de conjuntos de fun coes voltadas para aplica coes especcas,os chamados toolboxes .

    Alem dos toolboxes desenvolvidos pelo Grupo Scilab, outros est ao disponveis tambem gratui-tamente. Para exemplicar, destacamos o ANN (Articial Neural Network Toolbox ), para redesneurais, o FISLAB (Fuzzy Logic Inference Toolbox ), para l ogica difusa, e o FRACLAB (Fractal,Multifractal and Wavelet Analysis Toolbox ), para analise de sinais utilizando fractais e wave-lets. No Apendice C, apresentamos os procedimentos necess arios para a instala cao do toolbox de redes neurais, ANN, no ambiente Scilab.

    1 P agina do Maple: http://www.maplesoft.com2 P agina do MuPAD: http://www.mupad.de

    4

    http://www.maplesoft.com/http://www.mupad.de/http://www.mupad.de/http://www.maplesoft.com/
  • 7/22/2019 apost p motta-3.0 01082006

    14/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 5

    Existem trabalhos desenvolvidos tendo Scilab como ferramenta principal como, por exemplo,o apresentado em [ 2] e em alguns documentos introdut orios, [3, 4, 5, 6, 7]. Tambem, Scilab,atraves de uma extens ao chamada de Scilab Paralelo [8], Scilab//, pode ser executado emmaquinas paralelas ou em redes de esta coes de trabalho, as NOWs - Network of Workstations ,usando as fun coes do toolbox PVM (Parallel Virtual Machine). Com o Scilab//, processos

    podem ser ativados, programas podem ser executados em esta coes remotas, com comunica caoentre eles, e os resultados agregados.

    Algumas das funcoes implementadas no Scilab baseiam-se em bibliotecas bem estabelecidas.Por exemplo 3,

    Fun coes de Algebra Linear - baseadas nas bibliotecas LINPACK, EISPACK, LAPACK e BLAS Fun coes para Resolu cao de Equa coes Diferenciais - baseadas nas bibliotecas ODEPACK,

    SLATEC;

    Fun coes de Otimiza cao - baseadas na biblioteca MINPACK;

    entre outras. A ado cao de bibliotecas bem estabelecidas contribui para a estabilidade e aqualidade dos resultados apresentados pelo Scilab.

    2.2 O Ambiente Graco do Scilab

    Apos a realiza cao dos procedimentos de instala cao descritos no Apendice A, podemos come-car a trabalhar com Scilab. Assumiremos que o software esteja instalado no sistema operacionalLinux. Em uma shell no ambiente graco do Linux 4, basta digitar scilab para come car autilizar o programa. A tela inicial do Scilab e apresentada na Figura 2.1.

    Figura 2.1: Tela inicial do Scilab no ambiente gr aco do Linux.

    Na Figura 2.1, observamos que o prompt do Scilab e representado por uma seta, --> e queo cursor do Scilab e representado pelo smbolo . Este prompt e chamado de prompt inicial

    3 O codigo fonte dessas bibliotecas est a disponvel em http://www.netlib.org4 Scilab pode ser executado, tambem, no ambiente texto do Linux. Basta digitar scilab -nw . No ambiente

    texto, os gracos que porventura forem gerados, ser ao apresentados no terminal gr aco, acessvel via Ctrl-Alt-F7 ,caso este esteja disponvel.

    http://www.netlib.org/http://www.netlib.org/
  • 7/22/2019 apost p motta-3.0 01082006

    15/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 6

    ou prompt de nvel zero. Ainda na Figura 2.1, podemos observar a existencia de um menuhorizontal com seis opcoes: File , Control , Demos , Graphic Window 0 , Help e Editor .Utilizando o mouse para escolher cada uma das op coes, vericamos que:

    A opcao File possui tres sub-op coes: File Operations , que permite carregar arquivos, fun coes e executar o conteudo de

    arquivos com comandos Scilab, entre outras a coes. Na Figura 2.2, apresentamos oScilab e a tela correspondente ` a essa op cao.

    Kill , que permite interromper de maneira abrupta o processamento, saindo do am-biente Scilab.

    Quit , que permite sair do ambiente Scilab de forma natural.

    Figura 2.2: Tela com as op coes de opera coes sobre arquivos, File Operations .

    A opcao Control , que tambem possui tres sub-op coes: Resume - continua a execucao ap os uma pause ter sido dada atraves de um comando

    em uma fun cao ou atraves de Stop ou Ctrl-c . Abort - aborta a execucao ap os uma ou v arias pause , retornando ao prompt inicial.

    Stop - interrompe a execucao do Scilab e entra em modo pause . No prompt , equivalea um Ctrl-c .

    Essas opera coes sao mostradas na sess ao Scilab:

    --> // Ctrl-c no prompt inicial

    -1-> // leva ao prompt de primeiro nivel

    -1-> // Ctrl-c no prompt de primeiro nivel

    -2-> // leva ao prompt de segundo nivel

    -2->resume // retorna ao prompt de primeiro nivel

  • 7/22/2019 apost p motta-3.0 01082006

    16/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 7

    -1->resume // retorna ao prompt inicial

    --> // Ctrl-c

    -1-> // Ctrl-c

    -2-> // Ctrl-c

    -3->abort // retorna ao promtp inicial

    -->

    No Scilab, os coment arios sempre come cam com os caracteres // , como foi mostrado noexemplo anterior.

    A opcao Demos - permite executar os varios programas de demonstra cao que acompa-nham a distribui cao Scilab. Na Figura 2.3, sao apresentados os programas de demonstra-cao disponveis no Scilab vers ao 3.0. E interessante, e muito importante, em um primeirocontato com o programa, executar algumas dessas rotinas de demonstra cao.

    Figura 2.3: Programas de demonstra cao, opcao Demos , do Scilab 3.0.

    A opcao Graphics Window N permite manipular janelas gr acas. Aqui, N representa a janela gr aca que est a sendo utilizada. Ao inicializar, Scilab utiliza N = 0, signicandoque Graphics Window 0 e a primeira janela gr aca ou a janela gr aca default . Estaopcao possui cinco sub-op coes:

    Set (Create) Window

    Raise (Create) Window

    Delete Graphics Window - permite apagar uma janela gr aca, + - passa para a pr oxima janela graca {N+1}. - - retorna para a janela gr aca anterior {N-1} .

    A opcao Help permite obter informa coes sobre as diversas funcoes e comandos do Scilab.Essa op cao possui tres sub-op coes: Help browser - ativa o navegador default do Scilab. Esse navegador carrega os

    textos com o help das fun coes implementadas no Scilab, seus toolboxes e eventuaistoolboxes instalados pelo usuario (ver Apendice C). O navegador de help tambem

  • 7/22/2019 apost p motta-3.0 01082006

    17/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 8

    pode ser ativada diretamente no prompt do Scilab. Usando o mouse na sub-op caoHelp browser temos a tela de help mostrada na Figura 2.4 com o navegador padraodo Scilab.

    Figura 2.4: Tela da sub-op cao Help browser com navegador padr ao do Scilab.

    Apropos - ativa uma janela onde pode ser digitada uma palavra chave do assuntosobre o qual se deseja algum tipo de auxlio. Essa op cao tambem pode ser ativadadiretamente no prompt do Scilab.

    Configure - permite que seja escolhido um outro navegador em substitui cao ao na-vegador default do help do Scilab. A Figura 2.5 mostra as opcoes de navegadorespara a versao 3.0 do Scilab.

    Figura 2.5: Tela de congura cao para a escolha do navegador do Help do Scilab.

    Para Scilab versao 3.0, o help esta disponvel para os seguintes conjuntos de fun coes:

    Programming - conjunto de comandos que podem ser utilizados na programa cao como Scilab;

    Graphic Library - conjunto de comandos gracos; Elementary Functions - conjunto de fun coes elementares; Input/Output Functions - conjunto de funcoes para entrada e sada de dados;

  • 7/22/2019 apost p motta-3.0 01082006

    18/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 9

    Handling of functions and libraries - conjunto de fun coes para manipulacaode funcoes e bibliotecas;

    Character string manipulations - conjunto de fun coes para manipulacao de strings ; GUI and Dialogs - conjunto de funcoes que permitem a criacao de dialogos (menus,

    por exemplo); Utilities - conjunto de funcoes com utilidades diversas; Linear Algebra - conjunto de fun coes usadas em algebra linear; Polynomial calculations - conjunto de fun coes usadas em c alculos com polin o-

    mios; General System and Control - conjunto de fun coes na area de controle; Robust control toolbox - conjunto de funcoes do toolbox de controle robusto; Optimization and simulation - biblioteca de fun coes nao-lineares para utiliza cao

    em otimiza cao e simula cao;

    Signal Processing toolbox - conjunto de fun coes do toolbox de processamento desinais; Arma modelization and simulation toolbox - conjunto de fun coes do toolbox para

    modelamento e simulacao ARMA- Autoregressive Moving Average ; Metanet: graph and network toolbox - conjunto de fun coes do toolbox Metanet

    para analise de grafos; Scicos: Bloc diagram editor and simulator - conjunto de fun coes para mode-

    lagem e simula cao de sistemas dinamicos; Sound file handling - conjunto de funcoes para manipula cao de arquivos de som; Language or data translations - conjunto de fun coes para conversao de dados

    entre o Scilab e alguns aplicativos; PVM parallel toolbox - conjunto de fun coes que permitem o gerenciamento da

    comunica cao com outras aplicacoes usando m aquinas paralelas virtuais; TdCs - conjunto de fun coes com utilidades diversas; TCL/Tk interface - conjunto de funcoes que permitem a interface com as linguagens

    TCL/Tk; Statistic basics - conjunto de fun coes para c alculos estatsticos; Cumulative Distribution Functions; Inverse, grand - conjunto de fun coes de

    distribuicao cumulativa, inversa e geradora de n umeros randomicos;

    Identification - conjunto de fun coes para tratamento de sistemas discretos; Matlab to Scilab conversion tips - conjunto de fun coes para a convers ao de

    arquivos de programas Matlab em Scilab.

    A opcao Editor permite utilizar o editor incorporado ao Scilab, chamado SciPad , paraescrever comandos e funcoes. Na Figura 2.6, apresentamos a tela inicial do editor SciPad.

  • 7/22/2019 apost p motta-3.0 01082006

    19/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 10

    Figura 2.6: Tela inicial do Scipad , editor incorporado ao Scilab.

    Algumas fun coes do editor do Scilab serao exploradas em Captulos subseq uentes.

    2.3 Variaveis Especiais

    Existem variaveis que assumem valores pre-denidos no Scilab. Elas podem ser vistas atravesdo comando who. Essas vari aveis sao protegidas e nao podem ser apagadas. Algumas destasvari aveis sao pre-xadas com o caracter %. A sada do comando who, logo apos o Scilab 3.0 tersido inicializado, e mostrada em seguida. E conveniente lembrar que, no prompt do Scilab, oscomandos s ao interpretados e executados ap os o usuario pressionar a tecla Enter .

    -->whoyour variables are...

    %scipad_fontsize show_startupinfo LCC %toolboxes_dir %toolboxesscicos_pal %scicos_menu %scicos_short %scicos_help%scicos_display_mode modelica_libs scicos_pal_libs with_gtk with_tk demolist%helps LANGUAGE SCI MSDOS home PWD TMPDIR xdesslib with_texmacspercentlib polylib intlib elemlib utillib statslib alglib siglib optlibautolib roblib soundlib metalib armalib tkscilib tdcslib s2flib mtlblib %F

    %T %z %s %nan %inf COMPILER %gtk %pvm %tk $%t %f %eps %io %i %eusing 15025 elements out of 1000000.

    and 60 variables out of 9231

    your global variables are...

    LANGUAGE %helps demolist %browsehelp %toolboxes %toolboxes_dir LCC%scipad_fontsizeusing 1097 elements out of 11000.

    and 8 variables out of 767

    -->

    A vari avel %i representa o resultado de ( 1), %pi e a vari avel que representa =

  • 7/22/2019 apost p motta-3.0 01082006

    20/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 11

    3, 1415926.. . , e %e e a vari avel que representa a constante de Euler e = 2 .7182818.. . . Umaoutra variavel pre-denida e %eps que representa a precis ao da m aquina na qual Scilab est ainstalado ( %eps e o maior n umero para o qual 1+ %eps = 1). S ao pre-denidas, ainda, asvari aveis %inf que signica Innito e %nan que signica N ao e um N umero, NotANumber .A vari avel %s e denida pelo comando s = poly(0, s) . No Scilab sao denidas, tambem,

    vari aveis com valores booleanos: %T signicando verdadeiro ( true ) e %F signicando falso( false ).

    Scilab tambem e carregado com algumas fun coes pre-denidas, chamadas de fun coes primi-tivas ou fun coes intrnsecas 5. No Captulo 3, apresentamos alguns exemplos de utiliza cao dessasfuncoes.

    Aten cao especial deve ser dada `as vari aveis SCI e PWD. Elas representam, respectivamente, odiret orio no qual o Scilab foi instalado 6 e o diret orio no qual o Scilab foi lan cado e est a rodando.A vari avel home possui valor identico ao da vari avel PWD.

    -->SCI // Diretorio onde Scilab foi instaladoSCI =

    /usr/local/scilab-3.0

    -->PWD // Diretorio onde Scilab foi lancadoPWD =

    /home/paulo

    -->home // Mesmo valor da variavel PWDhome =

    /home/paulo

    -->

    As vari aveis pre-denidas e protegidas est ao no arquivo de inicializacao SCI/scilab.star .Se desejar, o usu ario pode pre-denir as suas pr oprias variaveis e, depois, coloc a-las no arquivo.scilab localizado na sua area de trabalho.

    Como mostrado nos exemplos anteriores, os coment arios sempre come cam com os caracteres// . Tambem, e importante salientar que os coment arios (e os nomes das variaveis e funcoesutilizadas no Scilab) N AO devem ter qualquer tipo de acentua cao.

    2.4 Manipula cao de Arquivos e Diret oriosScilab possui fun coes que podem ser utilizadas para manipular arquivos e diret orios. A

    funcao pwd, nao confundir com a variavel PWD da secao anterior, mostra o diret orio no qualestamos trabalhando. Assim,

    -->pwd // Mostra o diretorio de trabalho

    ans =

    /home/paulo5 Ver Apendice D para a listagem dessas fun coes.6 Ver Apendice A.

  • 7/22/2019 apost p motta-3.0 01082006

    21/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 12

    -->

    Usando a fun cao chdir , mudamos para o diret orio de trabalho teste ,

    -->chdir(teste) // Mudando o diretorio de trabalhoans =

    0.

    -->

    Uma observacao importante: para Scilab, uma resposta igual a 0 (zero) para determinadostipos de comandos indica que a a cao foi realizada com sucesso. E o caso da resposta 0 obtidaquando do comando chdir(teste) .

    Por termos mudado de diret orio de trabalho, o valor de retorno da fun cao pwd foi alterado

    mas o valor da variavel PWD permanece inalterada, como podemos vericar pela seq uencia decomandos,

    -->pwd // Mostrando o novo diretorio de trabalhoans =

    /home/paulo/teste

    -->PWD // PWD permanece inalterado.PWD =

    /home/paulo

    -->

    As vari aveis criadas durante os trabalhos realizados no ambiente Scilab podem ser armaze-nadas em um arquivo. Vamos considerar as vari aveis,

    -->a = 1a =

    1.

    -->b = 2b =

    2.

    -->

    Para salvar as vari aveis a e b em um arquivo, que chamamos de dados.dat , usamos ocomando save com a sintaxe

    -->save(dados.dat,a,b)

    -->

  • 7/22/2019 apost p motta-3.0 01082006

    22/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 13

    O comando save cria o arquivo dados.dat no diret orio de trabalho. O arquivo dados.date um arquivo bin ario. Para recuperar os valores de a e b, usamos o comando load , conformemostrado no exemplo,

    -->clear // Eliminando as variaveis nao protegidas

    -->a!--error 4

    undefined variable : a

    -->b!--error 4

    undefined variable : b

    -->load(dados.dat,a,b)

    -->a, ba =

    1.b =

    2.

    -->

    Neste exemplo, o comando clear elimina todas as variaveis n ao protegidas do ambienteScilab. Por esse motivo, as vari aveis a e b, denidas anteriormente, quando chamadas ap osclear , fazem com que Scilab apresente a mensagem de error undefined variable , vari avelindenida. Em seguida, atraves do comando load , as vari aveis sao lidas do arquivo dados.date retomam seus valores originais, passando novamente a existirem no ambiente Scilab.

    A funcao unix_w permite a comunicacao do Scilab com a shell Linux (Unix). Usando estafuncao, as respostas sao apresentadss na pr opria janela do Scilab.

    -->pwdans =

    /home/paulo/teste

    -->unix_w(ls) // Mostrando o conteudo de /home/paulo/testeMakefileRelatorio.pdfappapp.capp.ochromosome.cchromosome.hchromosome.o

    -->unix_w(mkdir outro_dir) // Criando o diretorio outro_dir

  • 7/22/2019 apost p motta-3.0 01082006

    23/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 14

    -->unix_w(ls)MakefileRelatorio.pdfappapp.c

    app.ochromosome.cchromosome.hchromosome.ooutro_dir // outro_dir aparece na listagem

    -->chdir(outro_dir) // Mudando de diretorioans =

    0.

    -->pwdans =

    /home/paulo/teste/outro_dir

    -->

    Os comandos digitados a partir do prompt do Scilab podem ser editados. Na Tabela 2.1,mostramos algumas combina coes de teclas que permitem esta edi cao.

    Ctrl-p ou recupera o comando digitado anteriormenteCtrl-n ou recupera o comando seguinte (se houver)Ctrl-b ou move o cursor um caracter para tr asCtrl-f ou move o cursor um caracter para a frenteDelete ou apaga o caracter anterior (tecla backspace )Ctrl-h mesmo efeito da linha anteriorCtrl-d apaga o caracter sob o cursorCtrl-a move o cursor para o incio da linhaCtrl-e move o cursor para o nal da linhaCtrl-k apaga da posi cao do cursor ate o nal da linhaCtrl-u cancela a linha!prev recupera a linha de comando que come ca com prev

    Tabela 2.1: Teclas de edi cao linhas de comando no prompt do Scilab.

    2.5 O help do Scilab

    A qualquer momento, o usu ario pode obter informa coes sobre as fun coes internas do Scilabdigitando o comando help diretamente no prompt ou accessando a sub-opcao Help browser domenu Help , como descrito anteriormente. Por exemplo, vamos usar o comando help na linhade comando do Scilab para obter informa coes sobre a fun cao det , que calcula o determinantede uma matriz. Temos, ent ao,

    -->help

  • 7/22/2019 apost p motta-3.0 01082006

    24/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 15

    O comando help ativar a o navegador de help com um menu contendo as famlias das fun coesdisponveis, como foi visto na Figura 2.4 anterior. A funcao que calcula o determinante de umamatriz pertence ` a familia das fun coes de Algebra Linear, indicada por Linear Algebra na telada Figura 2.4. Escolhendo-se a fun cao det tem-se as informacoes desejadas. Todo esse processoest a resumido na tela apresentada na Figura 2.7.

    Figura 2.7: Tela de help para a fun cao det .

    O mesmo efeito e conseguido digitando-se o comando

    -->help det

    diretamente no prompt do Scilab, como podemos vericar na Figura 2.8

    Figura 2.8: Comando help para a fun cao det .

    Outro exemplo, agora com uma fun cao pertencente `a famlia de Funcoes Elementares, Ele-mentary Functions , serve para ilustrar a quantidade (e a qualidade) das informa coes presentes

    no help do Scilab. Escolhemos a funcao modicada de Bessel de segunda ordem, K (x), imple-mentada no Scilab atraves da fun cao besselk , cujo texto de help reproduzimos na Figura 2.9.

  • 7/22/2019 apost p motta-3.0 01082006

    25/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 16

    Scilab Function

    besselk - Modified Bessel functions of the second kind (K sub alpha).

    Calling Sequence

    y = besselk(alpha,x)y = besselk(alpha,x,ice)

    Parameters

    x : real vector with non negative entriesalpha : real vector with non negative entries regularly spaced with increment equal to one

    alpha=alpha0+(n1:n2)ice : integer flag, with default value 1

    Description

    besselk(alpha,x) computes modified Bessel functions of the second kind (K sub alpha), for real,non-negative order alpha and argument x . alpha and x may be vectors.The output is m -by- n with m = size(x,*) ,n = size(alpha,*) whose (i,j) entry is besselk(alpha(j),x(i)) .

    K_alpha and I_alpha (see besseli ) modified Bessel functions are 2independant solutions of the modified Bessel s differential equation :

    2 2 2x y" + x y - (x + alpha ) y = 0 , alpha >= 0

    If ice is equal to 2 exponentialy scaled Bessel functions is computed (K_alpha_scaled(x) = exp(x) K_alpha(x)).

    Examples

    // example : display some K bessel functionsx = linspace(0.01,10,5000);y = besselk(0:4,x);ys = besselk(0:4,x,2);xbasc()subplot(2,1,1)

    plot2d(x,y, style=2:6, leg="K0@K1@K2@K3@K4", rect=[0,0,6,10])xtitle("Some modified bessel functions of the second kind")subplot(2,1,2)

    plot2d(x,ys, style=2:6, leg="K0s@K1s@K2s@K3s@K4s", rect=[0,0,6,10])xtitle("Some modified scaled bessel functions of the second kind")

    See Also

    besselj , besseli , bessely ,

    Author

    W. J. Cody, L. Stoltz (code from Netlib (specfun))

    Figura 2.9: Texto do help para a fun cao besselk .

    Como podemos observar, no texto do help estao especicados:

    O nome da fun cao, como implementado pelo Scilab; O(s) comando(s) de chamada da fun cao, Calling Sequence ; Os par ametros da funcao, Parameters ; Uma descri cao da fun cao implementada, Description ; Exemplos de utilizacao da fun cao, Examples ;

    Fun coes relacionadas, See Also, e neste caso, Autor da funcao, Author .

  • 7/22/2019 apost p motta-3.0 01082006

    26/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 17

    2.6 Arquivos com Comandos Scilab

    Como vimos, o comando save pode ser utilizado para armazenar vari aveis em um arquivobin ario. Essas variaveis podem ser recuperadas atraves da utiliza cao do comando load .

    Alem do armazenamento de vari aveis, Scilab permite que os comandos digitados em seu

    ambiente durante uma sess ao sejam armazenados em um arquivo, construindo uma especiede mem oria de c alculos. O armazenamento dos comandos e feito atraves da utiliza cao docomando diary(nome_do_arquivo) .

    Na Figura 2.10 mostramos um exemplo da utiliza cao do comando diary para armazenaruma sess ao de utiliza cao do ambiente Scilab. Neste exemplo, atraves do comando

    -->diary(memoria-09072004)

    instrumos o Scilab para armazenar todos os comandos subseq uentes em um arquivo chamado memoria-09072004 . O armazenamento dos comandos ser a realizado ate que seja executado ocomando

    --diary(0)

    O comando diary(0) fecha o arquivo memoria-09072004 .

    Figura 2.10: Comando diary para gravacao de sessoes desenvolvidas no ambiente Scilab.

    O arquivo memoria-09072004 e um arquivo texto puro,

    paulo@none:~$ cat memoria-09072004

    -->// Todos os comandos digitados serao armazenados no arquivo

    -->// memoria-09072004

    -->a = 1; b = 2; c = 3;

    -->a + bans =

  • 7/22/2019 apost p motta-3.0 01082006

    27/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 18

    3.

    -->b * cans =

    6.

    -->diary(0)paulo@none:~$

    podendo, portanto, ser editado.No Captulo sobre programa cao, veremos novos tipos de arquivos de comandos do Scilab.Neste Captulo, apresentamos as principais caractersticas do ambiente Scilab. No pr oximo

    Captulo, exploramos um pouco mais esse ambiente atraves da realiza cao de algumas operacoesbasicas envolvendo grandezas reais e complexas e da utiliza cao de fun coes pre-denidas doScilab.

  • 7/22/2019 apost p motta-3.0 01082006

    28/129

    Captulo 3

    Opera coes Basicas com Scilab

    Scilab e um ambiente para resolu cao de problemas numericos.A intera cao do usu ario com o Scilab pode ocorrer de duas formas distintas. Na primeira, os

    comando s ao digitados diretamente no prompt do Scilab. Ao ser pressionada a tecla enter , oscomandos digitados sao interpretados e imediatamente executados. Neste modo de utiliza cao,Scilab funciona como uma sosticada e poderosa calculadora. Na segunda forma, um conjuntode comandos e digitado em um arquivo texto. Este arquivo, em seguida, e levado para o ambienteScilab e executado. Neste modo, o Scilab funciona como um ambiente de programa cao.

    Neste Captulo, apresentamos algumas caractersticas do ambiente gr aco do Scilab. Atravesde alguns exemplos de operacoes que podem ser realizadas em linha de comando, mostramos oScilab funcionando como uma sosticada calculadora.

    Scilab como ambiente de programa cao e apresentado no Captulo 5.

    3.1 Introdu cao

    No Scilab, o ponto-e-vrgula no nal de um comando inibe a apresenta cao de seu resultado.Alguns exemplos,

    -->// O ponto-e-virgula suprime a apresentacao do resultado

    -->A = 1; // a variavel A assume o valor 1

    -->b = 2; // atribuindo a variavel b o valor 2

    -->A + b // Adicao de A e bans =

    3.

    -->

    Uma observacao importante: Scilab e case sensitive . Assim, por exemplo, a variavel incr ediferente das variaveis INCR, Incr ou INcr .

    As grandezas no Scilab tambem podem ser complexas. Para atribuir ` a vari avel A o valorcomplexo 5 + 2 i e a vari avel B o valor complexo 2 + i, fazemos-->A = 5 + 2 * %i // Atribuindo a A o valor 5 + 2i

    A =

    19

  • 7/22/2019 apost p motta-3.0 01082006

    29/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 20

    5. + 2.i

    -->B = -2 + %i // Atribuindo a B o valor -2 + iB =

    - 2 . + i

    -->

    Observar que a nao utiliza cao do ponto-e-vrgula no nal dos comandos de atribui cao per-mitiu a apresenta cao do resultado de cada comando.

    As vari aveis complexas A e B podem ser multiplicadas, divididas, somadas ou subtradas,como mostramos a seguir.

    --> // Operacoes com variaveis complexas

    -->A * B // Multiplicacaoans =

    - 12 . + i

    -->A / B // Divisaoans =

    - 1.6 - 1.8i

    -->A + B // Adicao

    ans =

    3. + 3.i

    -->A - B // Subtracaoans =

    7 . + i

    -->

    E importante observar que a resposta ao uso da fun cao interna

    sqrt() com argumentonegativo inclui o n umero complexo i = sqrt(-1) . Por exemplo,

    -->sqrt(-2) // Funcao raiz quadrada com argumento negativoans =

    1.4142136i

    -->

    E possvel digitar v arios comandos em uma mesma linha,

    -->m = 1.5; b = 35; c = 24; // Varios comandos em uma unica l inha

    -->

  • 7/22/2019 apost p motta-3.0 01082006

    30/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 21

    Tambem e possvel desdobrar um unico comando em varias linhas utilizando ... ao naldo comando. Por exemplo,

    -->A = 3 * m ^ 2 + ... // Um comando em varias linhas--> 4 * 5 + ...

    --> 5 * 3A =

    41.75

    -->

    Um vetor de ndices possui a forma geral

    Variavel = valor_inicial:incremento:valor_final

    Por exemplo, atraves do comando I=1:3 atribumos os valores 1 , 2 , e 3 a vari avel I .Quando nao especicado, incremento e igual a 1. Assim,

    -->I = 1:3 // Definindo I como um vetor com 3 posicoesI =

    ! 1. 2. 3. !

    -->j = 1:2:5 // Indice j com incremento igual a 2j =

    ! 1. 3. 5. !

    -->

    O valor do incremento pode ser negativo,

    -->k = 5:-1:1 // Definindo k como um vetor com 5 posicoesk =

    ! 5. 4. 3. 2. 1. !

    -->

    No Scilab existe o conceito de ambientes denidos via uma hierarquia de prompts . Muda-se

    de ambiente atraves do comando pause ou atraves de Ctrl-c . Todas as vari aveis denidasno primeiro ambiente s ao validas no novo ambiente. Observar que a mudan ca de ambientemodica a forma de apresenta cao do prompt . Este passa a indicar o ambiente no qual est aosendo efetuados os comandos. O retorno ao ambiente anterior d a-se atraves da utiliza cao doscomandos resume ou return . Com este tipo de retorno, perde-se as vari aveis denidas noambiente anterior. A utiliza cao de ambientes e importante para a realiza cao de testes.

    No exemplo a seguir, atribumos a a o valor 1.5 e, atraves do comando pause , mudamos deambiente.

    -->// Definindo a e mudando de ambiente

    -->a = 1.5; pause

    -1-> // Mudanca no prompt

  • 7/22/2019 apost p motta-3.0 01082006

    31/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 22

    Observar que houve uma mudan ca no formato do prompt . A vari avel a , denida no ambienteanterior, ainda e v alida no novo ambiente, como podemos vericar atraves da seq uencia decomandos,

    -1->a

    a =

    1.5

    -1->

    Vamos denir, no novo ambiente, a vari avel b igual a 2.5,

    -1->// Definindo b no novo ambiente

    -1->b = 2.5;

    -1->// Mostrando a e b no novo ambiente

    -1->a, ba =

    1.5b =

    2.5

    -1->

    O retorno ao ambiente anterior usando o comando resume faz com que a vari avel b queindenida,

    // Retornando ao ambiente anterior

    -1->resume // Pode ser usado o comando return

    --> // Mostrando a e b. Observar que a variavel b foi perdida

    -->a, b

    a =

    1.5!--error 4

    undefined variable : b

    O valor da variavel b pode ser preservado no ambiente original atraves da seq uencia decomandos,

    -->a = 1.5 // Definindo a variavel a no ambiente originala =

    1.5

  • 7/22/2019 apost p motta-3.0 01082006

    32/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 23

    -->pause // Mudando de ambiente

    -1->b = 1.5 // Definindo a variavel b no novo ambienteb =

    1.5

    -1->b = resume(b) // Enviando b para o ambiente original

    -->a, ba =

    1.5b =

    1.5

    -->

    3.2 Utilizando as Fun coes Internas do Scilab

    O Scilab e carregado com algumas fun coes pre-denidas 1. Como vimos no Captulo anterior,na Figura 2.9, o help do Scilab explica cada uma delas e, tambem, apresenta exemplos de suautiliza cao.

    Uma maneira de vericar a forma de utiliza cao e o comportamento de uma determinadafuncao interna do Scilab e usando o exemplo que o pr oprio help do Scilab apresenta. Nestecaso, basta copiar o exemplo de uso da fun cao apresentado no help para o ambiente do Scilab 2.Na Figure 3.1, mostramos como esse procedimento funciona usando a fun cao fft do toolbox deProcessamento de Sinais, Signal Processing toolbox , que acompanha o Scilab.

    Figura 3.1: Rodando o exemplo de utiliza cao da fun cao fft apresentado no help do Scilab.1 Ver Apendice D para a listagem dessas fun coes.2 Especicamente, o processo consiste em copiar do ambiente help e colar no ambiente Scilab.

  • 7/22/2019 apost p motta-3.0 01082006

    33/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 24

    Os exemplos apresentados no help tambem podem ser executados atraves de uma facilidadeimplementada no editor SciPad, incorporado ao Scilab. Neste caso, o exemplo deve ser copiadodo ambiente help e colado no ambiente do Editor. Depois, no Editor, o exemplo deve serselecionado, atraves do mouse , para ser executado usando a sub-op cao Evaluate Selection Ctrl+yda op cao Execute apresentada no menu do Editor. Esses procedimentos, e seus resultados,

    com os exemplos fornecidos pelo help para a fun cao besselk , apresentados na Figura 2.9, saomostrados na Figura 3.2.

    Figura 3.2: A fun cao K de Bessel, besselk . O exemplo apresentado no help da funcao e copiadopara o editor SciPad, selecionado e executado atraves da sub-op cao Evaluate Selection Ctrl+yda op cao Execute .

    O usu ario interessado e convidado a repetir os procedimentos apresentados nessa sess aoutilizando outras fun coes do Scilab.

    Neste Captulo, apresentamos algumas opera coes basicas envolvendo grandezas reais e com-plexas e exemplos de utilizacao de fun coes pre-denidas no Scilab. No Captulo 4, mostramosos outros tipos de dados que podem ser manipulados pelo Scilab.

  • 7/22/2019 apost p motta-3.0 01082006

    34/129

    Captulo 4

    Polin omios, Vetores, Matrizes eListas

    No Scilab, podemos trabalhar com v arios tipos de dados. As constantes, reais ou complexas,as vari aveis booleanas, os polinomios, as strings e as fracoes envolvendo polin omios sao consi-derados dados escalares. Com estes objetos podemos denir vetores e matrizes. Os outros tiposde dados reconhecidos pelo Scilab sao as listas e as listas com denicao de tipo. O objetivodeste Captulo e apresentar alguns exemplos de utiliza cao de cada um desses tipos de dados.

    4.1 Polin omios

    Os polin omios sao criados no Scilab atraves da utiliza cao da fun cao poly . Salientamos quepolin omios de mesma variavel podem ser somados, subtrados, multiplicados e divididos entresi. Por exemplo, o polinomio p = s2 3s + 2, que possui razes 1 e 2, pode ser criado atravesdo comando,-->// Polinomio definido pelas suas raizes

    -->p = poly([1 2], s)p =

    22 - 3s + s

    -->

    Com a fun cao roots , comprovamos que as razes de p sao, realmente, 1 e 2,

    -->roots(p)ans =

    ! 1. !! 2. !

    -->

    Um polin omio tambem pode ser criado a partir da especica cao de seus coecientes. Porexemplo, o polin omio q = 2 s + 1 e criado atraves do comando,

    -->// Polinomio definido pelos seus coeficientes

    25

  • 7/22/2019 apost p motta-3.0 01082006

    35/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 26

    -->q = poly([1 2], s, coeff)q =

    1 + 2 s

    -->roots(q) // Obtendo as raizes do polinomio q ans =

    - 0.5

    -->

    Para complementar o exemplo, os dois polin omios podem ser multiplicados, divididos, so-mandos ou subtrados como mostra a seq uencia de comandos,

    -->p * q // Multiplicacao

    ans =

    2 32 + s - 5 s + 2 s

    -->p / q // Divisaoans =

    22 - 3s + s----------

    1 + 2 s

    -->[r, q] = pdiv(p,q) // Efetuando a divisao: q=quociente, r=restoq =

    - 1.75 + 0.5sr =

    3.75

    -->p + q // Adicao

    ans =

    23 - s + s

    -->p - q // Subtracaoans =

    21 - 5s + s

    -->

    Para obter valores de polin omios, usamos a fun cao horner ,

  • 7/22/2019 apost p motta-3.0 01082006

    36/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 27

    -->x = poly(0, x)x =

    x

    -->p = x^2 - 3*x + 5 // definindo o polinomiop =

    25 - 3x + x

    -->horner(p, 2) // avaliando o polinomio em x = 2ans =

    3.

    -->

    4.2 Vetores

    Vamos considerar o conjunto dos n umeros reais 1. Dizemos que x e um vetor de dimens aon em , indicado por x n , se, e somente se,

    x =

    x1x2...

    xn

    Nessa deni cao, cada um dos elementos do vetor x , x i , pertence a ,

    x i O elemento x i e o i-esimo elemento do vetor x .O vetor x denido anteriormente e um vetor coluna. Para explicitar esta condi cao, escreve-

    mosx n 1

    Essa notacao indica que o vetor x possui n linhas e apenas uma coluna.No Scilab, os vetores s ao criados colocando-se seus componentes entre colchetes, [ ] . Os

    elementos de um vetor coluna s ao separados por ponto-e-vrgula. Assim,

    -->x = [ 1; 2; 3] // vetor coluna. Elementos separados por ;x =

    ! 1. !! 2. !! 3. !

    -->1 Todas as considera coes sobre vetores e matrizes podem ser estendidas para o conjunto dos n umeros complexos,

    .

  • 7/22/2019 apost p motta-3.0 01082006

    37/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 28

    Um vetor linha, y , de dimens ao n em pode ser escrito na forma

    y = y1, y2, . . . , yn

    Para explicitar a condi cao de vetor linha, escrevemos

    y 1 nEssa notacao indica que o vetor y possui apenas uma linha e n colunas.

    No Scilab, os componentes de um vetor linha s ao separados por espaco ou por vrgula.

    -->y = [ 1 2 3] // vetor linha; Elementos separados por espacoy =

    ! 1. 2. 3. !

    -->z = [ 4, 5, 6] // vetor linha; Elementos separados por virgula

    z =

    ! 4. 5. 6. !

    -->

    Se x e um vetor coluna, x T (le-se x transposto) e um vetor linha. Essa opera cao e realizadano Scilab atraves da utiliza cao do smbolo (ap ostrofo).

    -->x = [1; 2; 3] // vetor colunax =

    ! 1. !! 2. !! 3. !

    -->x // x transposto = vetor linhaans =

    ! 1. 2. 3. !

    -->

    Vetores podem ser multiplicados ou divididos por quantidades escalares. Tambem, veto-res de mesma dimensao podem ser somados ou subtrados. Para exemplicar algumas dessasopera coes, vamos considerar os vetores:

    x =123

    e y =456

    Observar que os dois vetores possuem a mesma dimens ao, isto e, x , y 3 1. Temos,-->x = [ 1; 2; 3] // Definindo o vetor x

    x =

    ! 1. !

  • 7/22/2019 apost p motta-3.0 01082006

    38/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 29

    ! 2. !! 3. !

    -->y = [ 4; 5; 6] // Definindo o vetor yy =

    ! 4. !! 5. !! 6. !

    -->size(x) // Dimensao do vetor xans =

    ! 3. 1. !

    -->size(y) // Dimensao do vetor y

    ans =

    ! 3. 1. !

    -->

    -->3 * x // Multiplicando o vetor x por uma constanteans =

    ! 3. !! 6. !

    ! 9. !

    -->x / 2 // Dividindo o vetor x por uma constanteans =

    ! 0.5 !! 1. !! 1.5 !

    -->x + y // Somando os dois vetoresans =

    ! 5. !! 7. !! 9. !

    -->

    Dados dois vetores de mesma dimens ao, x , y n 1, dene-se o produto escalar ou produtointerno entre x e y atraves da express ao vetorial,z = x T y

    Assim, considerando os vetores x e y denidos anteriormente, temos:

    -->z = x * y // Atribuindo a z o produto escalar entre x e yz =

  • 7/22/2019 apost p motta-3.0 01082006

    39/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 30

    32.

    -->

    Observar que essa opera cao, em uma linguagem convencional, teria que ser realizada atravesde uma rotina que implementasse a opera cao (escalar):

    z =n

    i=1

    x i yi

    Se os vetores x e y possuem dimensoes diferentes, isto e, x m 1 e y n 1, podemosdenir o produto vetorial ou produto externo entre eles atraves da express ao,C = xy T

    Vamos considerar

    x =123

    e y = 45

    Observar que os dois vetores possuem dimens oes diferentes, isto e, x 3 1 e y 2 1.Temos,-->x = [1; 2; 3] // Definindo o vetor x

    x =

    ! 1. !! 2. !! 3. !

    -->y = [4; 5] // Definindo o vetor yy =

    ! 4. !! 5. !

    -->size(x) // Dimensao do vetor xans =

    ! 3. 1. !

    -->size(y) // Dimensao do vetor yans =

    ! 2. 1. !

    -->size(y) // Dimensao do vetor y transpostoans =

    ! 1. 2. !

  • 7/22/2019 apost p motta-3.0 01082006

    40/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 31

    -->C = x * y // Produto vetorial de x por yC =

    ! 4. 5. !! 8. 10. !

    ! 12. 15. !

    -->

    Nos exemplos a seguir, mostramos outras maneiras de construir vetores, usando ndices ealgumas fun coes internas do Scilab:

    -->v = 5: -0.5: 3 // Vetor com elementos decrementados

    v =

    ! 5. 4.5 4. 3.5 3. !

    -->m = ones(1:4) // Vetor constituido de elementos iguais a 1 m =

    ! 1. 1. 1. 1. !

    -->z = zeros(1:5) // Vetor constituido de elementos iguais a 0z =

    ! 0. 0. 0. 0. 0. !

    -->

    4.3 Matrizes

    Seja o conjunto dos n umeros reais. Dizemos que A e uma matriz de dimens ao m n em , indicado por A m n , se, e somente se,

    A =

    a1,1 a1,2 a1,na2,1 a2,2 a2,n... ... . . . ...am, 1 am, 2

    am,n

    onde cada um dos elementos a i,j . Nessa nota cao, a vari avel m indica o numero de linhas ea vari avel n indica o numero de colunas da matriz A. Se A for uma matriz quadrada, o n umerode linhas e igual ao numero de colunas e, entao, m = n.

    Vamos considerar as matrizes A, B 2 3,

    A = 1 2 35 8 9 e B = 1 2 34 5 6

    No Scilab, as matrizes sao representadas entre colchetes, [ ] . Os elementos que constituemas linhas das matrizes s ao separados por espacos ou por vrgulas. A indica cao de termino decada linha da matriz e feita com ponto-e-vrgula.

    Nos exemplos a seguir, para xar conceitos, a matriz A e digitada com os elementos de suaslinhas separados por espa cos enquanto a matriz B e digitada com os elementos de suas linhasseparados por vrgula. Assim,

  • 7/22/2019 apost p motta-3.0 01082006

    41/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 32

    -->// Matriz A - Elementos das linhas separados por espaco

    -->A = [1 2 3; 5 -8 9]A =

    ! 1. 2. 3. !! 5. - 8. 9. !

    -->// Matriz B - Elementos das linhas separados por virgulas

    -->B = [1, 2, 3; 4, 5, 6]B =

    ! 1. 2. 3. !! 4. 5. 6. !

    -->size(A) // Dimensao da matriz Aans =

    ! 2. 3. !

    -->size(B) // Dimensao da matriz Bans =

    ! 2. 3. !

    -->

    Uma outra forma de digitar matrizes no ambiente Scilab, e separando os elementos de umalinha por espaco (ou por vrgula) e as linhas separadas por enter ,

    - - > M = [ 1 2 3 4-->5 6 7 8-->9 11 13 15]

    M =

    ! 1. 2. 3. 4. !! 5. 6. 7. 8. !

    ! 9. 11. 13. 15. !

    -->

    Matrizes podem ser multiplicadas ou divididas por quantidades escalares. Tambem, matrizesde mesma dimensao podem ser somadas ou subtradas. Considerando as matrizes A e B doexemplo anterior, temos:

    -->2 * A // Multiplicacao por um escalarans =

    ! 2. 4. 6. !! 10. - 16. 18. !

  • 7/22/2019 apost p motta-3.0 01082006

    42/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 33

    -->A / 2 // Divisao da matriz A por uma constanteans =

    ! 0.5 1. 1.5 !! 2.5 - 4. 4.5 !

    -->A + B // Somando as duas matrizesans =

    ! 2. 4. 6. !! 9. - 3. 15. !

    -->

    Se A m n , a transposta da matriz A, indicada por AT , e tal que AT n m . Como nocaso dos vetores, a trasposi cao e indicada pelo smbolo (ap ostrofo).Considerando a matriz B do exemplo anterior, temos:

    -->B = [1, 2, 3; 4, 5, 6]B =

    ! 1. 2. 3. !! 4. 5. 6. !

    -->size(B) // Dimensao da matriz Bans =

    ! 2. 3. !

    -->C = B // C = transposta da matriz BC =

    ! 1. 4. !! 2. 5. !! 3. 6. !

    -->size(C) // Dimensao da matriz Cans =

    ! 3. 2. !

    -->

    Se A m p e B p n , podemos denir o produto das matrizes A e B ,C = A B m n

    Observar que, para que possa haver a multiplica cao entre duas matrizes, e necess ario que onumero de colunas da primeira matriz seja igual ao n umero de linhas da segunda matriz.

    Considerando as matrizes A e B,

    A = 1 2 34 5 67 8 9

    e B = 1 42 53 6

  • 7/22/2019 apost p motta-3.0 01082006

    43/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 34

    temos:

    - ->A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]A =

    ! 1. 2. 3. !! 4. 5. 6. !! 7. 8. 9. !

    - ->B = [ 1 4 ; 2 5 ; 3 6]B =

    ! 1. 4. !! 2. 5. !! 3. 6. !

    -->size(A)ans =

    ! 3. 3. !

    -->size(B)ans =

    ! 3. 2. !

    -->A * B

    ans =

    ! 14. 32. !! 32. 77. !! 50. 122.

    -->

    Podemos usar funcoes internas do Scilab para gerar matrizes. Por exemplo, usamos a fun caoones para criar a matriz D 2 3, com todos os elementos iguais a 1,

    -->D = ones(2,3)D =

    ! 1. 1. 1. !! 1. 1. 1. !

    -->

    ou a fun cao zeros para criar a matriz E 3 3, com todos os elementos iguais a 0,-->E = zeros(3,3)

    E =

    ! 0. 0. 0. !

  • 7/22/2019 apost p motta-3.0 01082006

    44/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 35

    ! 0. 0. 0. !! 0. 0. 0. !

    -->

    ou, ainda, a criacao de uma matriz identidade, I atraves da fun cao interna eye ,-->I = eye(4,4)

    I =

    ! 1. 0. 0. 0. !! 0. 1. 0. 0. !! 0. 0. 1. 0. !! 0. 0. 0. 1. !

    -->

    Podemos criar matrizes a partir de elementos de outras matrizes,-->// Definido as matrizes A, B e C

    -->A = [1 2; 3 4];

    -->B = [5 6; 7 8];

    -->C = [9 10; 11 12];

    -->// Definindo a matriz D

    -->D = [A B C]D =

    ! 1. 2. 5. 6. 9. 10. !! 3. 4. 7. 8. 11. 12. !

    -->// Definindo uma matriz E a partir dos elementos de D

    -->E = matrix(D,3,4)E =

    ! 1. 4. 6. 11. !! 3. 5. 8. 10. !! 2. 7. 9. 12. !

    -->

    Observar que a matriz E, com tres linhas e quatro colunas, e criada usando a fun cao matrix .Esta fun cao gera a matriz E a partir da organiza cao dos elementos da matriz D por colunas.

    4.4 Acesso a Elementos de Vetores e de Matrizes

    O acesso a elementos de um vetor ou de uma matriz pode ser realizado de diversas maneiras.Dentre elas, podemos citar:

  • 7/22/2019 apost p motta-3.0 01082006

    45/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 36

    a utiliza cao explcita dos ndices do elemento a ser acessado, a utiliza cao do smbolo : (dois pontos) a utiliza cao do smbolo $ ou

    a utiliza cao de opera coes booleanas.Vamos considerar o vetor linha v = [1 2 3 4 5 6 7] . O acesso a um elemento deste vetor

    e feito de forma convencional, o ndice do vetor indicando qual elemento que est a sendo acessado.Assim,

    -->v = [1 2 3 4 5 6 7] // definicao do vetor vv =

    ! 1. 2. 3. 4. 5. 6. 7. !

    -->v(1) // acesso ao primeiro elemento de vans =

    1.

    -->v(5) // acesso ao quinto elemento de vans =

    5.

    -->

    O smbolo : permite denir formas compactas de acesso a elementos de um vetor. Porexemplo,

    -->v(2:4) // acesso aos elementos 2, 3 e 4 de vans =

    ! 2. 3. 4. !

    -->v(:) // acesso a todos os elementos de vans =

    ! 1. !! 2. !! 3. !! 4. !! 5. !! 6. !! 7. !

    -->v(1:2:7) // acesso aos elementos inpares de vans =

    ! 1. 3. 5. 7. !

    -->

  • 7/22/2019 apost p motta-3.0 01082006

    46/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 37

    enquanto o smbolo $ permite acessar o ultimo elemento do vetor,

    -->v($) // acesso ao ultimo elemento de vans =

    7.

    -->

    Tambem, podemos utilizar opera coes booleanas para acessar elementos de um vetor. Nasessao,

    -->v([%f %t %f %t %t]) // acesso usando %t e %fans =

    ! 2. 4. 5. !

    -->

    acessamos o segundo, quarto e quinto elemento do vetor v. Lembrar que %t signica true ,verdadeiro, e que %f signica false , falso.

    Para exemplicar acessos a elementos de matrizes, vamos considerar a matriz A com duaslinhas e tres colunas, A 2x3,-->// Definindo uma matriz A

    -->A = [1 2 3; 4 5 6]A =

    ! 1. 2. 3. !! 4. 5. 6. !

    -->

    O acesso a um elemento dessa matriz e feito da maneira convencional: o elemento da linha ie coluna j , a i,j , e acessado atraves do comando A(i,j) , com i e j tendo seus valores numericosexplicitados. Por exemplo, para acessar o elemento a1,2 da matriz A, usamos o comando A(1,2) ,

    -->// Acessando o elemento da primeira linha e segunda coluna de A

    -->A(1,2)ans =

    2.

    -->

    O comando M = A([1 2], 2) , permite construir uma matriz, M, composta pelo primeiro esegundo elementos, indicados pelo vetor [1 2] , da segunda coluna da matriz A,

    -->M = A([1 2], 2)M =

  • 7/22/2019 apost p motta-3.0 01082006

    47/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 38

    ! 2. !! 5. !

    -->

    Atraves do operador : Scilab implementa formas compactas que permitem acessar elementosde uma matriz. Considerando A m n , a nota cao A(k, :) representa a k-esima linha da matrizA,A(k, :) = [ ak,1, a k,2, . . . , a k,n ]

    e a nota cao A(:, k) representa a k-esima coluna da matriz A,

    A(:, k) = [ a1,k , a 2,k , . . . , a m,k ]

    Nesse contexto, e para facilitar a compreens ao, o smbolo : (dois pontos) assume o signicadode todos os elementos. Assim, A(k, :) pode ser lido como todos os elementos da k-esima linhada matriz A e A(:, k) pode ser lido como todos os elementos da k-esima coluna da matriz A.

    Considerando a matriz A do exemplo anterior, o comando A(:,3) , permite acessar todos oselementos da terceira coluna da matriz A,

    ->// Todos os elementos da terceira coluna da matriz A

    -->A(:, 3)ans =

    ! 3. !! 6. !

    -->

    enquanto o comando A(2,:) permite acessar todos os elementos da segunda linha da matriz A,

    ->// Todos os elementos da segunda linha da matriz A

    -->A(2,:)ans =

    ! 4. 5. 6. !

    -->

    O comando A(:, 3:-1:1) permite formar uma matriz constituda por todos os elementosdas colunas tres, dois e um da matriz A. Lembrar que 3:-1:2 e identico ao vetor [3 2 1] .

    -->// Todos os elementos da terceira, segunda e primeira colunas de A

    -->A(:, 3:-1:1)ans =

    ! 3. 2. 1. !! 6. 5. 4. !

    -->A(:, [3 2 1]) // Forma equivalenteans =

  • 7/22/2019 apost p motta-3.0 01082006

    48/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 39

    ! 3. 2. 1. !! 6. 5. 4. !

    -->

    Vamos considerar a utiliza cao do smbolo $ para acessar elementos da matriz A. Neste con-texto, o smbolo $ signica numero total de. Usando o comando A(1:2, $-1) , acessamos oprimeiro e o segundo elementos, indicados por 1:2 , da segunda coluna, indicado por $-1 , damatriz A. Lembrar que a matriz A possui duas linhas e tres colunas. Com o comando, A($:-1:1, 2) , estamos acessando o segundo e o primeiro, nessa ordem, elementos da segunda colunada matriz A. Escrever $:-1:1 e equivalente, neste caso, a escrever 2:-1:1 ja que a matriz Apossui duas linhas.

    -->// Primeiro e segundo elementos da segunda coluna de A

    -->A(1:2, $-1)ans =

    ! 2. !! 5. !

    -->// Segundo e primeiro elementos da segunda coluna de A

    -->A($:-1:1, 2)ans =

    ! 5. !! 2. !

    -->// Acesso ao ultimo elemento de A

    -->A($)ans =

    6.

    -->

    Os elementos de uma matriz s ao armazenados por coluna. Da, usando o comando A($)na sess ao anterior, acessamos o ultimo elemento de A. Assim, o primeiro elemento da matriz Apode ser acessado atraves do comando A(1) e o quinto elemento da matriz A pode ser acessadoatraves do comando A(5) ,

    -->// Primeiro elemento de A

    -->A(1)ans =

    1.

    -->// Quinto elemento de A

  • 7/22/2019 apost p motta-3.0 01082006

    49/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 40

    -->A(5)ans =

    3.

    -->// Todos os elementos armazenados por coluna

    -->A(:)ans =

    ! 1. !! 4. !! 2. !! 5. !! 3. !

    ! 6. !

    --> // Mesmo efeito do comando anterior

    -->A([1 2 3 4 5 6])ans =

    ! 1. !! 4. !! 2. !! 5. !

    ! 3. !! 6. !

    -->

    Podemos usar vari aveis booleanas para acessar elementos de uma matriz. Com o comandoA([%t %f %f %t]) , acessamos o primeiro e o quarto elementos da matriz A, indicados por %t,nao querendo o segundo e terceiro elementos, indicados por %f.

    -->// Acesso ao primeiro e quarto elementos

    -->A([%t %f %f %t])ans =

    ! 1. !! 5. !

    -->

    Com o comando A(%t, [2 3]) , acessamos os primeiros elementos das segunda e terceiracolunas.

    -->// Acessando os primeiros elementos da colunas 2 e 3

    --> A(%t, [2 3])

  • 7/22/2019 apost p motta-3.0 01082006

    50/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 41

    ans =

    ! 2. 3. !

    -->

    E possvel, caso seja necessario, alterar os valores de elementos de uma matriz. Considerandoa matriz A, podemos mudar o valor do seu elemento A(2,1) atraves do comando de atribui caoA(1,2) = 10 ,

    -->// Atribuir a A(1,2) o valor 10

    -->A(1,2) = 10A =

    ! 1. 10. 3. !

    ! 4. 5. 6. !

    -->

    Depois, atribumos os valores [-1; -2] aos primeiro e segundo elementos da segunda colunada matriz A,

    -->// A(1,2) = -1 e A(2,2) = -2

    -->A([1 2], 2) = [-1; -2]A =

    ! 1. - 1. 3. !! 4. - 2. 6. !

    -->

    Finalmente, modicamos os elementos A(1,1) e A(1,2) da matriz A.

    -->// A(1,1) = 8 e A(1,2) = 5

    -->A(:,1) = [8;5]A =

    ! 8. - 1. 3. !! 5. - 2. 6. !

    -->

    4.5 Matrizes com Polin omios

    Os elementos de uma matriz podem ser polin omios,

    -->// Definindo um polinomio

    -->x = poly(0 , x) ; p = 2 + 3 * x + x ^ 2

  • 7/22/2019 apost p motta-3.0 01082006

    51/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 42

    p =

    22 + 3x + x

    -->// Definindo uma matriz polinomial, M

    -->M = [p, p-1; p+1, 2]M =

    ! 2 2 !! 2 + 3x + x 1 + 3x + x !! !! 2 !! 3 + 3x + x 2 !

    -->// Avaliando a matriz M em x = 2

    -->horner(M, 2)ans =

    ! 12. 11. !! 13. 2. !

    -->// Obtendo a inversa de M

    -->inv(M)

    ans =

    ! 2 !! 2 - 1 - 3x - x !! --------------------- -------------------- !! 2 3 4 2 3 4 !! 1 - 6x - 11x - 6x - x 1 - 6x - 11x - 6x - x !! !! 2 2 !! - 3 - 3x - x 2 + 3x + x !! -------------------- -------------------- !

    ! 2 3 4 2 3 4 !! 1 - 6x - 11x - 6x - x 1 - 6x - 11x - 6x - x !

    -->// Obtendo o determinante de M

    -->det(M)ans =

    2 3 41 - 6 x - 11 x - 6 x - x

    -->

  • 7/22/2019 apost p motta-3.0 01082006

    52/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 43

    A partir de uma matriz formada por elementos que s ao polin omios racionais,

    -->// Definindo uma matriz F de polinomios racionais

    -->s = poly(0, s);

    -->F = [ 1/s, (s +1)/(s + 2); ...--> s/(s+3), s^2 ]

    F =

    ! 1 1 + s !! - ----- !! s 2 + s !! !! 2 !! s s !

    ! ----- - !! 3 + s 1 !

    -->

    podemos criar outra matriz apenas com o numerador das fra coes,

    -->F(num) // Pegando os numeradoresans =

    ! 1 1 + s !

    ! !! 2 !! s s !

    -->

    ou com seus denominadores,

    -->F(den) // Pegando os denominadoresans =

    ! s 2 + s !! !! 3 + s 1 !

    -->

    4.6 Matrizes Simb olicas

    O Scilab permite a criacao e manipulacao de matrizes simbolicas. Vamos considerar umamatriz B 1 2, constituda por elementos simb olicos,

    -->// Matriz simbolica

    -->B = [ 1/%s, (%s + 1)/(%s - 1)]

  • 7/22/2019 apost p motta-3.0 01082006

    53/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 44

    B =

    ! 1 1 + s !! - ----- !! s - 1 + s !

    -->

    Os elementos de uma matriz simb olica sao acessados utilizando os mesmos comandos paraacessar elementos de uma matriz numerica. Nos dois comandos seguintes, apresentamos exem-plos de acesso aos elementos da matriz B,

    -->// Acessos a elementos da matriz B

    -->B(1,1)ans =

    1-s

    -->B(1, $)ans =

    1 + s-----

    - 1 + s

    -->

    Podemos, tambem, atribuir valores simb olicos a elementos de uma matriz, Considerando amatriz A = [1 -1 3 ; 5 -2 6 ] , temos,

    -->A(1,1) = %s // Atribuicao do valor simbolico s ao elemento A(1,1)A =

    ! s - 1 3 !! !! 5 - 2 6 !

    -->A($) = %s + 1 // Atribuindo s + 1 ao ultimo elemento de AA =

    ! s - 1 3 !! !! 5 - 2 1 + s !

    -->

    As matrizes simbolicas tambem podem ser constitudas por elementos compostos por strings de caracteres. Elas sao criadas da mesma maneira que as matrizes com elementos numericos.As strings sao escritas entre ap ostrofos ou entre aspas.

  • 7/22/2019 apost p motta-3.0 01082006

    54/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 45

    -->// Matriz de strings

    -->A = [x y; z w+v]A =

    !x y !! !!z w+v !

    -->// Atribuindo valores

    -->x=1;y=2;z=3;w=4;v=5;

    // Obtendo o valor numerico dos elementos de A

    -->evstr(A)

    ans =

    ! 1. 2. !! 3. 9. !

    -->

    4.7 Matrizes Booleanas

    Matrizes booleanas sao matrizes construdas com as constantes %t (t e true , verdadeiro)e %f (f e false , falso) . Alguns exemplos de constru cao matrizes booleanas,

    -->// Matriz booleana A

    -->A = [%t, %f, %t, %f, %f, %f]A =

    ! T F T F F F !

    -->// Matriz booleana B

    -->B = [%t, %f, %t, %f, %t, %t]

    B =

    ! T F T F T T !

    -->

    Podemos realizar opera coes logicas com as matrizes denidas anteriormente,

    -->// A ou B

    -->A|B

    ans =

    ! T F T F T T !

  • 7/22/2019 apost p motta-3.0 01082006

    55/129

    Introduc ao ao Scilab-Vers ao 3.0/PSMP/DCA-UFRN 46

    -->// A e B

    -->A & Bans =

    ! T F T F F F !

    -->

    4.8 Opera coes com Vetores e Matrizes

    A Tabela 4.1, apresenta a sintaxe de alguns dos operadores disponveis no ambiente Scilabque podem ser utilizados em opera coes com vetores ou com matrizes.

    SIMBOLO OPERA CAO transposta+ adicao- subtracao* multiplicacao/ divisao a direita\ divisao a esquerda^ exponencia cao

    .* multiplicacao elemento-a-elemento

    .\ divisao, a esquerda, elemento-a-elemento

    ./ divisao, a direita, elemento-a-elemento

    .^ exponencia cao elemento-a-elemento.*. produto de Konecker

    Tabela 4.1: Sintaxe de alguns operadores usados em opera coes vetoriais ou matriciais.

    As opera coes envolvendo os operadores , +, - , * e / ja foram apresentadas em par agrafosanteriores. Os outros operadores mostrados na Tabela 4.1 serao apresentados nessa Se cao.

    Vamos analisar a utiliza cao do operador \ . Para isso, denimos um sistema de equa coeslineares,

    a1,1x1 + a1,2x2 +

    + a1,n xn = b1

    a2,1x1 + a2,2x2 + + a2,n xn = b2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .an, 1x1 + an, 2x2 + + an,n xn = bn

    que pode ser es