P. 1
scilab-DCC-UFMG

scilab-DCC-UFMG

|Views: 233|Likes:
Published by diegomairon

More info:

Published by: diegomairon on Nov 07, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/31/2013

pdf

text

original

Sections

  • 2.2 Vari´aveis
  • 2.2.1 Regras para nomes de vari´aveis
  • 2.2.2 Comando de atribui¸c˜ao
  • 2.2.3 Vari´aveis especiais
  • 2.3 Vetores
  • 2.4 Matrizes
  • 2.5 Hipermatrizes
  • 2.6 Polinˆomios
  • 2.6.1 Constru¸c˜ao
  • 2.6.2 Avalia¸c˜ao
  • 2.6.3 Adi¸c˜ao e subtra¸c˜ao
  • 2.6.4 Multiplica¸c˜ao
  • 2.6.5 Divis˜ao
  • 2.6.6 Deriva¸c˜ao
  • 2.6.7 C´alculo de ra´ızes
  • 2.7 Vari´aveis l´ogicas
  • 2.8 Vari´aveis literais
  • 2.9 Listas
  • 2.10 Exerc´ıcios
  • 3.1 Express˜oes aritm´eticas
  • 3.1.1 Express˜oes vetoriais
  • 3.1.2 Express˜oes matriciais
  • 3.2 Express˜oes l´ogicas
  • 3.3 Express˜oes literais
  • 3.3.1 Convers˜ao de caracteres
  • 3.3.2 Manipula¸c˜ao de caracteres
  • 3.4 Execu¸c˜ao de express˜oes
  • 3.5 Exerc´ıcios
  • Comandos de entrada e sa´ıda
  • 4.1 Formato de exibi¸c˜ao
  • 4.2 Espa¸co de trabalho
  • 4.2.1 Gravar dados
  • 4.2.2 Recuperar dados
  • 4.2.3 Entrada de dados
  • 4.2.4 Janela de mensagem
  • 4.3 Di´ario
  • 4.4 Leitura e grava¸c˜ao de dados
  • 4.4.1 Abertura de arquivo
  • 4.4.2 Fechamento de arquivo
  • 4.4.3 Grava¸c˜ao em arquivo
  • 4.4.4 Leitura em arquivo
  • 4.5 Exerc´ıcios
  • Linguagem de programa¸c˜ao
  • 5.1 Programa¸c˜ao
  • 5.1.1 Programa
  • 5.1.2 Subprograma function
  • 5.2 Estruturas condicionais
  • 5.2.1 Estrutura if-end
  • 5.2.2 Estrutura if-else-end
  • 5.2.3 Estrutura if-elseif-end
  • 5.2.4 Estrutura select-case-end
  • 5.3 Estruturas de repeti¸c˜ao
  • 5.3.1 Estrutura for-end
  • 5.3.2 Estrutura while-end
  • 5.3.3 Estrutura com interrup¸c˜ao no interior
  • 5.4 Depura¸c˜ao de programa
  • 5.5 Exerc´ıcios
  • 6.1 Gr´aficos bidimensionais
  • 6.1.1 Fun¸c˜ao plot
  • 6.1.2 Fun¸c˜ao fplot2d
  • 6.2 Gr´aficos tridimensionais
  • 6.2.1 Fun¸c˜ao meshgrid
  • 6.2.2 Fun¸c˜ao plot3d
  • 6.2.3 Fun¸c˜ao mesh
  • 6.2.4 Fun¸c˜ao surf
  • 6.3 Janela de figura
  • 6.4 Exerc´ıcios
  • 7.1 Medidas de tempo
  • 7.2.1 Parˆametros da matriz
  • 7.2.2 Decomposi¸c˜oes
  • 7.2.3 Solu¸c˜ao de sistemas
  • 7.2.4 Inversa
  • 7.2.5 Autovalores e autovetores
  • 7.3 Interpola¸c˜ao
  • 7.3.1 C´alculo das diferen¸cas finitas ascendentes
  • 7.3.2 Interpola¸c˜ao unidimensional
  • 7.4 Integra¸c˜ao num´erica

Universidade Federal de Minas Gerais Departamento de Ciˆncia da Computa¸˜o do ICEx e ca

Fundamentos de SCILAB
vers˜o preliminar a

Frederico F. Campos, filho
setembro de 2008

Pref´cio a
O SCILAB ´ um software para computa¸˜o cient´ e ca ıfica e visualiza¸ao, gratuito, com c´digo c˜ o fonte aberto e interface para as linguagens FORTRAN e C. Ele permite a solu¸˜o de problemas ca num´ricos em uma fra¸˜o do tempo que seria necess´rio para escrever um programa em uma e ca a linguagem como FORTRAN, Pascal ou C, devido `s suas centenas de fun¸˜es matem´ticas. a co a O SCILAB ´ desenvolvido pelo INRIA (Institut National de Recherche en Informatique e ´ et en Automatique) e ENPC (Ecole Nationale des Ponts et Chauss´es) da Fran¸a. Em e c www.scilab.org est˜o dispon´ a ıveis v´rias informa¸˜es, documenta¸ao e instru¸˜es de como a co c˜ co baixar o programa. As vers˜es do SCILAB est˜o dispon´ o a ıveis na forma pr´-compilada para e diversas plataformas: Linux, Windows, HP-UX e Mac OSX . Como o c´digo fonte tamb´m o e est´ dispon´ a ıvel, ele pode ser compilado para uso em um computador espec´ ıfico. O objetivo deste texto ´ apresentar o SCILAB (vers˜o 4.1.2) como uma linguagem de proe a grama¸˜o dotada de fun¸˜es n˜o dispon´ ca co a ıveis nas linguagens convencionais. Por isto, este material pode ser utilizado em disciplinas, tais como, Programa¸˜o de Computadores, C´lculo ca a ´ Num´rico, An´lise Num´rica, Algebra Linear e quaisquer outras dos cursos de Engenharia e a e e das ´reas de Ciˆncias Exatas. Tamb´m, s˜o exploradas algumas caracter´ a e e a ısticas pr´prias o que mostram por que o SCILAB ´ uma poderosa ferramenta de apoio ao aprendizado e e utiliza¸˜o da Computa¸˜o Cient´ ca ca ıfica. No Cap´ ıtulo 1 ´ descrito o ambiente de programa¸˜o do SCILAB mostrando a janela de e ca comandos e como obter informa¸˜es de comandos durante a sess˜o. O Cap´ co a ıtulo 2 apresenta as estruturas de dados suportadas pelo SCILAB, como constantes, vetores, matrizes, hipermatrizes, polinˆmios e listas. No Cap´ o ıtulo 3 s˜o mostradas as express˜es aritm´ticas, a o e l´gicas e literais, bem como, o modo de execut´-las. O Cap´ o a ıtulo 4 apresenta os formatos de exibi¸˜o, grava¸˜o e leitura de vari´veis do espa¸o de trabalho, al´m de leitura de grava¸˜o ca ca a c e ca de dados em arquivos. No Cap´ ıtulo 5, o SCILAB ´ visto como uma linguagem de proe grama¸˜o, sendo mostrado como escrever programas e fun¸˜es, estruturas condicionais e de ca co repeti¸˜o e depura¸˜o de programas. O Cap´ ca ca ıtulo 6 ´ dedicado ` elabora¸˜o de gr´ficos bi e a ca a e tridimensionais. Finalmente, o Cap´ ıtulo 7 apresenta fun¸˜es do SCILAB para resolver co problemas de Computa¸˜o Cient´ ca ıfica. Sugest˜es para aprimorar o presente texto, bem como, para efetuar corre¸˜es ser˜o bemo co a vindas pelo e-mail: ffcampos@dcc.ufmg.br. Belo Horizonte, setembro de 2008. Frederico F. Campos, filho DCC.ICEx.UFMG

.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Exerc´ ıcios . . . . . . . . . . . . . . . . . . . . . . . . 1. . . . . .Sum´rio a 1 Ambiente de programa¸˜o ca 1. . . . . . . . . . . . . .2 1. .3 Num´ricas . . . . . . .1. . 2. . .1. . . . . . . . . . . . . . . . . Comando apropos .3 Comando help . . . . . . c o Gerenciamento de arquivos . . . . . . . . .2 Comandos de aux´ ao usu´rio . . . . . . . .2.1 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 2. . . . . . . . . . . .2 1. . . . . . . . . . . . e L´gicas . . . . ılio a 1. . . . . . . . . c Mudan¸a do diret´rio corrente . . . . . . . . . . . . . . . . . . . . . . . .1 Janela de comando . . . . . . . . . . . . . . . . iii 9 9 9 10 10 . . . .2. . . . .1 1. . . . .2. . . . . . 2 Estruturas de dados 2. . . . . . . . . . . .2 2. . . . . . .1. . . . .3 Espa¸o de trabalho . . . . . . . . . . . . . . . . . .1. . . . Menu de barras . . . . 1. . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . . . . . . . . .1 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . . . o Literais . . . . . . . . . . . . . . . 1 1 3 4 4 4 5 5 6 6 1. . . . . . . . . . .

. . . . . . . . . 2. . . . . . . . .3 2. . . ca Avalia¸˜o . . . . . . . . . . . .1 Express˜es aritm´ticas . . . . . . . . . . . . . . . . .2. . . . . . .10 Exerc´ ıcios . . . . . . . . . . . .6. . . . . . . . . . . . . . . Matrizes . . . . . . . o e 33 33 . . . . . . . . . . .6. . . . . . ca Vari´veis especiais . . . . . . . . . . . . . .1 2. . . . . . . . . . . . . . . . . . . . . . . a Comando de atribui¸˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .iv ´ SUMARIO 2. . . . . . . . . . . . . . . . . . . . . . . . . a Listas . . . . . . . o 2. . ca C´lculo de ra´ a ızes . . . . .6. . . . . . . . . . . . . . . . . . . .1 2. . . . . . . . . . . . . a 2. . . . . . . . . . .3 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . .2. . . . . . .4 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ca Adi¸˜o e subtra¸˜o . . . . . . . . . . . . . . . . ca Divis˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 2.4 2.2 2. . . . . . .6 2. . . .7 2. . . . . . . . . . ca ca Multiplica¸˜o . . . . . . . . .9 Vari´veis l´gicas . . . Polinˆmios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . a Deriva¸˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 2. . . . . . . . . .5 2. . .2 2. . . . . . . . . . . . . . . . . . . . . . . . a 10 10 10 11 12 15 24 25 25 26 26 27 27 28 28 29 30 30 31 Vetores . . . . . . . .6 Regras para nomes de vari´veis . . . . . . .6. . . . . . . . . . . . . . . . . . . 2. . . . . . . . . .7 Constru¸˜o . . .6. . . .2 Vari´veis . . .2. . . 3 Express˜es o 3. . . . . . . . . . . . . . . . . . . . .3 2. . . Hipermatrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a o Vari´veis literais . . . . . . . . . . . .

. Janela de mensagem . . Entrada de dados .2.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3. . . . . . . . . . . . . . . . . . . . . . . .2 Espa¸o de trabalho . . . . . . . . . . . . . . . . . . . . . .1 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . ca Leitura em arquivo . . . . . . . ca 4. . . . . . ca 4. . . . . . . 53 53 55 56 56 57 57 59 59 60 60 61 61 4.4. . Grava¸˜o em arquivo . . . . . . .3 4. . . . . . . . . . . .1 4. . .1 Formato de exibi¸˜o . . . . . Recuperar dados . . . . . . . . . .1 3. . o o 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 4. . . . o v 34 35 39 41 41 44 49 50 3. . . c 4. . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . .1 3. . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . . . . . .4 Leitura e grava¸˜o de dados . . .2. . . . . . . . . . . o Express˜es matriciais . . ca o 3. . . . . . . a Manipula¸˜o de caracteres . . . . . . . . . .2 4. . . . . . . . . . . . .1. . . . . .4 Abertura de arquivo . . . . . . . . . . . . . . . . . . . . .4. . . . 4 Comandos de entrada e sa´ ıda 4. . . . . . . . . . . . . . . . . . . . . .4 Execu¸˜o de express˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Express˜es literais . . . . . . . . .3. . . . . . . . . . . . . . . . . . . . . . . .3 4. Fechamento de arquivo . . . a 4. . . . . .´ SUMARIO 3. . . . . . . . . . . . . . . . . .4. . . . . . . . . . . . . . . . .2 Express˜es vetoriais . . . . . . . .5 Exerc´ ıcios . .2 Convers˜o de caracteres . . . . . . . . . . . .1. . . ca 3. . . . . . . . . . . . . . . . . .4 Gravar dados . . . . . . . . . . .2 Express˜es l´gicas . . . . . . . . .2. . . . . . . . . . . . . . . .3 Di´rio . . . . . . .

a . . . . . a 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Gr´ficos bidimensionais . 63 5 Linguagem de programa¸˜o ca 5. . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estrutura com interrup¸˜o no interior . . ca Fun¸˜o fplot2d . . . . Subprograma function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 5. . . . . . .3 5. . . . . . . . . . . . . . . ca 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 65 65 67 72 72 72 73 74 75 75 77 78 79 80 Estruturas condicionais . . . .2 6. . . . . .1. ca 83 83 83 86 88 Gr´ficos tridimensionais . . . 6 Gr´ficos a 6. . . . . . . . . . . .4 5. . . . .2. . . . . . . . . . . . . . . . . . . . . . .1. . . . . . . . . . . . . . . .1. . . Estrutura while-end . . . . . . . . . . . . . . . ca 5. . . . . . . . . . . . . . . . . . .4 Estrutura if-end . . . .5 Depura¸˜o de programa . . . . . . . . . . . . . . . . . .1 Programa¸˜o . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . .3. . . . . . . . . . . . . . .2 5. . . . . .2 5. . . . . . . . . . . . . . . . . . . .2 5. . . . . . . .1 5. . . . . .2 Fun¸˜o plot . . . . .3. . Estrutura if-else-end . . . . . . . .1 5. . . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.3 Estrutura for-end . . .3 Estruturas de repeti¸˜o . . Estrutura if-elseif-end . . . . . . . . . . . . . . . . . . . . . . .vi ´ SUMARIO 4. . . .3. 5.2 Programa . . . . . . . . . . . . . . . . . . . . . . . . .5 Exerc´ ıcios . . . . . . . . . . . . . . . . . . ca Exerc´ ıcios . . . . . . . Estrutura select-case-end . . . . . . . . . . .2. . . . . . . . . . . . . . . . ca 5. . . . . . . . . . . .1 6. . . . . . . . . .

. . . . . . . . . . . . . .3 6. . . . .1 7. . 108 ca 7. . . . . . . . ca Fun¸˜o plot3d . . . . . . . . . . . . ca vii 89 90 93 94 94 94 97 97 98 98 6. . . .4 Integra¸˜o num´rica . . ´ 7. . . . . . . . . .2 Algebra linear . . . . a Decomposi¸˜es . . . . . . . . 101 co Solu¸˜o de sistemas . . . . . .4 7. . . . . . . .2. . . . . . . 7 Computa¸˜o cient´ ca ıfica 7. ca Fun¸˜o mesh . . . . . .2. . . . . . . 110 ca e . . . . . . .2 6. . . . . . . . . . . . . . . .2 C´lculo das diferen¸as finitas ascendentes . . . . . . . . . . .3 Interpola¸˜o .2. . . .3. . . . .3. . . . . . . 106 ca Inversa . . . . . . . . . . . . . . . . . . . . . . 107 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 7. .2. . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7. . . . . . . . . . . . . . . . . . . 107 Autovalores e autovetores . . . .2. . . .3 Janela de figura . . .2. . . . . . 108 a c Interpola¸˜o unidimensional . . . . . . . . .4 Fun¸˜o meshgrid . . . . . . .2. . . .´ SUMARIO 6. . . . . . . . . 109 ca 7. . . . . . . . . . . . . ca Fun¸˜o surf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Exerc´ ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 7. . . . . . . . . . . . . . . . . . . . 6. . . . . . . . . . . . . . . . . . . . . .2 7. . . . . . .1 Medidas de tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . .5 Parˆmetros da matriz . . . . . . . . . . . . . . . . . . . .1 6. . . .

viii ´ SUMARIO .

) seguidos do pressionamento da tecla Enter ou Return indica a e que o comando continuar´ na pr´xima linha. e 1. no caso de d´ vida a a u sobre a sintaxe ou mesmo a existˆncia de um comando. e Um comando ´ finalizado acionando-se a tecla Enter ou Return. os meios que o programa tem de auxiliar o usu´rio durante a sess˜o.2).1 Janela de comando Para executar o SCILAB em ambiente Windows ou Macintosh. O sinal de que o programa est´ pronto para receber um comando ´ indicado a e pelo prompt formado pelos trˆs caracteres -->. a Se for utilizada a op¸˜o -nw a janela do SCILAB aparecer´ na pr´pria janela de comando ca a o (ver Figura 1. A intera¸˜o entre o SCILAB e o o ca usu´rio ´ feita por interm´dio de uma janela.Cap´ ıtulo 1 Ambiente de programa¸˜o ca O SCILAB ´ executado por meio do script scilab no diret´rio <SCIDIR>/bin. Se um comando for muito e longo.. na qual um comando ´ fornecido e o resultado a e e e exibido. Neste cap´ ıtulo ser´ descrita a janela de comando do SCILAB e seus comandos b´sicos. entrar com o comando scilab ou scilab -nw (no window) em uma janela de comando.. as e v´ ırgulas indicam ao SCILAB para mostrar os resultados e os pontos-e-v´ ırgulas para suprimir 1 . V´rios comandos podem ser colocados em a o a uma mesma linha se eles forem separados por v´ ırgulas ou pontos-e-v´ ırgulas. sendo que e o <SCIDIR> denota o diret´rio onde o programa foi instalado. no caso de ambia a ente Linux.1). o cursor deve ser colocado sobre o seu ´ ıcone e pressionado o bot˜o da esquerda do mouse ou ent˜o. bem a a como. ent˜o trˆs pontos (. Sem a op¸˜o -nw aparecer´ uma nova janela pela qual ser´ feita a intera¸ao entre ca a a c˜ o SCILAB e o usu´rio (ver Figura 1. Al´m disto.

u u u respectivamente. sendo o segundo argumento opcional. O comando ´ e . ca O n´ mero de linhas e colunas a serem exibidas de cada vez na janela de comando pode ser u redefinida pelo comando lines.1: Janela de comando da vers˜o 4.<n´mero-de-colunas>) u u onde <n´mero-de-linhas> e <n´mero-de-colunas> definem o n´ mero de linhas e colunas. ca Um texto ap´s duas barras invertidas (//) ´ ignorado.2 Cap´ ıtulo 1.2 do SCILAB (com -nw).2 do SCILAB (sem -nw).1. Ambiente de programa¸˜o ca Figura 1. a Figura 1. a ca As teclas ↑ e ↓ podem ser usadas para listar os comandos previamente dados e as teclas → e ← movem o cursor na linha de comando facilitando a sua modifica¸˜o. a serem exibidas. Sua sintaxe ´ e lines(<n´mero-de-linhas>. ele pode ser utilizado como um o e coment´rio para a documenta¸˜o de um programa.1. a a exibi¸˜o.2: Janela de comando da vers˜o de 4.

Este comando lista as vari´veis criadas pelo a c a usu´rio e as definidas pelo pr´prio SCILAB. dependendo do sistema operacional utilizado (use help startup para mais informa¸˜es). 3 O comando clc ´ usado para limpar a janela de comando1 e tohome posiciona o cursor no e canto superior esquerdo da janela de comando. quando a o ıcio a o usu´rio criou apenas uma vari´vel. o usu´rio pode criar um arquivo contendo. e 1. os comandos contidos no arquivo scilab. por exemplo. Quando o SCILAB ´ ativado. caso ele exista. co A abrangˆncia e potencialidade do SCILAB est´ muito al´m do que ser´ mostrado neste e a e a 1 texto.1 Espa¸o de trabalho c As vari´veis criadas durante uma sess˜o ficam armazenadas em uma mem´ria denominada a a o espa¸o de trabalho. que est˜o presentes no espa¸o de trabalho. Janela de comando desativado por lines(0).ini s˜o automatie a camente executados. ou c a a seja. a Deste modo. a scicos_pal %scicos_menu %scicos_short %scicos_help %scicos_display_mode modelica_libs scicos_pal_libs %scicos_lhb_list %CmenuTypeOneVector %helps home SCIHOME CreateScilabHomeDir PWD TMPDIR MSDOS SCI guilib sparselib xdesslib percentlib polylib intlib elemlib utillib statslib alglib siglib optlib autolib roblib soundlib metalib armalib tkscilib tdcslib s2flib mtlblib %F %T %z %s %nan %inf COMPILER %gtk %gui %pvm %tk $ %t %f %eps %io %i %e using 31686 elements out of 5000000.1..1.1. defini¸˜o de constantes a ca matem´ticas e f´ a ısicas. Este arquivo deve ser criado em um diret´rio espec´ o ıfico. no in´ de uma sess˜o. formatos de exibi¸˜o ou quaisquer comandos do SCILAB para persoca nalizar a sua janela de comando. O t´rmino de execu¸˜o do SCILAB ´ feito e ca e pelos comandos quit ou exit. para que sejam atribu´ ıdos valores a alguns parˆmetros. Por exemplo. a a -->a = 1 // cria a variavel a com o valor 1 a = 1. -->who your variables are. por isso ´ aconselh´vel executar a op¸˜o Demos para visualizar uma demonstra¸˜o e e a ca ca se ter uma id´ia dessa potencialidade. O comando who lista o nome das vari´veis que est˜o sendo usadas. c˜ . and 58 variables out of 9231 1 Quando o SCILAB for executado sem a op¸ao -nw..

4

Cap´ ıtulo 1. Ambiente de programa¸˜o ca

your global variables are... LANGUAGE %helps demolist %browsehelp %toolboxes %toolboxes_dir using 1122 elements out of 11000. and 7 variables out of LCC

767

1.1.2

Mudan¸a do diret´rio corrente c o

Diret´rio corrente ´ aquele considerado em uso, sem ser necess´rio especific´-lo explicitao e a a mente durante uma a¸˜o. Para saber qual o diret´rio de trabalho corrente utiliza-se o ca o comando pwd,
-->pwd // mostra o diretorio de trabalho corrente ans = /pkg/ccc/scilab

O resultado exibido depende do diret´rio de onde o SCILAB foi executado. O diret´rio o o corrente pode ser alterado por meio do comando cd,
-->cd ferramentas // muda o diretorio de trabalho corrente para ’ferramentas’ ans = /pkg/ccc/scilab/ferramentas

1.1.3

Gerenciamento de arquivos

O SCILAB fornece diversos comandos para gerenciamento de arquivos, os quais s˜o mostraa dos na Tabela 1.1. Tabela 1.1: Comandos para gerenciamento de arquivos. Comando dir ou ls mdelete(<nome do arquivo>) cd <dir> ou chdir <dir> pwd Descri¸˜o ca lista os arquivos do diret´rio corrrente; o remove o arquivo <nome do arquivo>; muda o diret´rio para <dir>; o mostra o diret´rio corrente. o

1.2

Comandos de aux´ ao usu´rio ılio a

O SCILAB possui muito mais comandos do que aqueles apresentados neste texto, o que torna mais dif´ lembr´-los. Com o intuito de auxiliar o usu´rio na procura de comandos, o ıcil a a programa provˆ assistˆncia por interm´dio de suas extensivas capacidades de aux´ direto. e e e ılio Estas capacidades est˜o dispon´ a ıveis em trˆs formas: o comando help, o comando apropos e e, interativamente, por meio de um menu de barras.

1.2. Comandos de aux´ ao usu´rio ılio a

5

1.2.1

Comando help

O comando help ´ a maneira mais simples de obter aux´ no caso de se conhecer o t´pico e ılio o em que se quer assistˆncia. Sua sintaxe ´ e e help <t´pico> o onde <t´pico> ´ o nome da fun¸˜o ou de diret´rio. Por exemplo, quando se usa help sqrt, o e ca o abre-se uma janela como a mostrada na Figura 1.3.

Figura 1.3: Janela do comando help. Assim s˜o dadas informa¸˜es sobre a fun¸˜o sqrt para extrair raiz quadrada. O comando a co ca help funciona a contento quando se conhece exatamente o t´pico sobre o qual se quer o assistˆncia. Considerando que muitas vezes este n˜o ´ o caso, o help pode ser usado sem e a e <t´pico> para apresentar uma p´gina de hipertexto contendo a lista de ´ o a ıtens dispon´ ıveis. O comando help ´ mais conveniente se o usu´rio conhecer exatamente o t´pico em que e a o deseja aux´ ılio. No caso de n˜o saber soletrar ou mesmo desconhecer um t´pico as outras a o duas formas de assistˆncia s˜o muitas vezes mais proveitosas. e a

1.2.2

Comando apropos

O comando apropos provˆ assistˆncia pela procura em todas as primeiras linhas dos t´picos e e o de aux´ e retornando aquelas que contenham a palavra-chave especificada. O mais imporılio tante ´ que a palavra-chave n˜o precisa ser um comando do SCILAB. Sua sintaxe ´ e a e apropos <palavra-chave> onde <palavra-chave> ´ a cadeia de caracteres que ser´ procurada nos comandos do SCIe a

6

Cap´ ıtulo 1. Ambiente de programa¸˜o ca

LAB. Por exemplo, para informa¸˜es sobre fatoriza¸˜o, tecla-se apropos factorization, co ca resultando em uma p´gina listando os nomes de v´rias fun¸˜es com esta finalidade. Apesar a a co de a palavra factorization n˜o ser um comando do SCILAB, ela foi encontrada na desa cri¸˜o de v´rios comandos. Um clique sobre uma das linhas na p´gina exibida, por exemplo ca a a chfact - sparse Cholesky factorization, ´ equivalente ao comando help, como mose trado na Figura 1.4.

Figura 1.4: Janela do comando apropos.

1.2.3

Menu de barras

Quando o SCILAB ´ executado sem a op¸˜o -nw, um aux´ por interm´dio de menu-dirigido e ca ılio e ´ dispon´ e ıvel selecionando Help browser ou Apropos na op¸˜o Help do menu de barras. ca Como o uso desta forma de assistˆncia ´ bem intuitivo, o melhor a fazer ´ experimentar! e e e

1.3

Exerc´ ıcios

Se¸˜o 1.1 ca 1.1. Executar o programa SCILAB. 1.2. Verificar a diferen¸a entre , e ; nos comandos %pi+1, %pi*10 e %pi+1; %pi*10;. c 1.3. Testar o funcionamento das teclas ↑ e ↓. 1.4. Ver o funcionamento das teclas → e ←. 1.5. Verificar a diferen¸a entre lines(20), lines() e lines(0). c

3.2 ca 1. Quantos parˆmetros tem a fun¸˜o erro erf? a ca 1. Quais s˜o os comandos utilizados para interpola¸˜o (interpolation)? a ca 1. Comparar a soma dos autovalores (eigenvalues) com o tra¸o (trace) de uma matriz de c ordem qualquer.9. ca o . Qual o comando para achar ra´ (roots) de uma equa¸˜o polinomial? ızes ca 7 1.7.1. Qual o comando usado para calcular o determinante (determinant) de uma matriz? 1. Exerc´ ıcios Se¸˜o 1. Fazer a mesma compara¸˜o usando uma matriz com elementos aleat´rios.10.6.8.

8 Cap´ ıtulo 1. Ambiente de programa¸˜o ca .

o que n˜o ´ o caso do SCILAB.1.7. E. Esta seq¨ˆncia pode terminar ou n˜o por uma das letras e. 2.). polinˆmios e listas. 9 . o conhecimento sobre as estruturas de dados ´ e e fundamental para um uso eficiente do programa.1 Constantes O SCILAB suporta trˆs tipos de constantes: num´ricas. Esta a segunda seq¨ˆncia ´ a potˆncia de 10 pela qual a primeira seq¨ˆncia ´ multiplicada. vari´veis. l´gicas e literais. d ou D seguida de outra ue a seq¨ˆncia de d´ ue ıgitos precedida ou n˜o de um sinal positivo (+) ou um negativo (-).23e-1 significa 1.1 Num´ricas e Uma constante num´rica ´ formada por uma seq¨ˆncia de d´ e e ue ıgitos que pode estar ou n˜o a precedida de um sinal positivo (+) ou um negativo (-) e pode conter um ponto decimal (. Al´m disto. e e o 2.23×10 = 0.567d2 ´ 4.Cap´ ıtulo 2 Estruturas de dados Neste cap´ ıtulo ser˜o apresentados alguns ´ a ıtens b´sicos.7 Algumas linguagens de programa¸˜o requerem um tratamento especial para n´ meros comca u plexos. hipermatrizes.123 e 4. 1. Opera¸˜es matem´ticas com n´ meros complexos s˜o a e co a u a escritas do mesmo modo como para n´ meros reais.123 -->4.567×10 = 456.567d2 ans = 456. ou seja. o que tornar´ poss´ o uso imediato o a ıvel do SCILAB no modo interativo. Para indicar a parte imagin´ria basta u a √ acrescentar os trˆs caracteres (*%i). tais como.23e-1 ans = 0. matrizes. e -->1. multiplicar (*) por −1 = i representado por e (%i). Por ue e e ue e −1 2 exemplo. a a vetores. constantes.

a 2. respectivaa o mente. A express˜o fornecida ´ analisada sintaticae o a e mente e se estiver correta ent˜o ser´ avaliada.2. .1.1. A cadeia de caracteres deve estar delimitada por aspas (’) ou ap´strofos o ("). -->’abcde’ ans = abcde // um valor literal 2. O resultado ´ atribu´ ` uma vari´vel por a a e ıdo a a interm´dio do comando de atribui¸˜o e ca <vari´vel> = <express~o> a a Por exemplo.2.1. conforme mostrado na Tabela 2.2 Comando de atribui¸˜o ca O SCILAB ´ um interpretador de express˜es. Estruturas de dados -->3+2*%i ans = 3.i As vari´veis reais e complexas em SCILAB ocupam 24 e 32 bytes de mem´ria. o SCILAB tem regras a respeito do nome ca de vari´veis. ca 2. 2.2 Vari´veis a Uma vari´vel ´ uma regi˜o da mem´ria do computador utilizada para armazenar uma ina e a o forma¸˜o. -->%t // valor verdadeiro ans = T -->%f // valor falso ans = F 2.3 Literais Uma constante literal ´ composta por uma cadeia de caracteres em vez de n´ meros ou e u verdadeiro e falso. sendo representada por um identificador.1 Regras para nomes de vari´veis a Como qualquer outra linguagem de programa¸˜o.2 L´gicas o Uma constante l´gica pode assumir apenas dois valores: %t (ou %T) para verdadeiro e %f (ou o %F) para falso. + 2.10 Cap´ ıtulo 2.

! e ? tamanho da letra ´ diferenciador raiz. %eps. $. %i. e a a -->a=10. // atribuicao sem exibir o resultado -->b // conteudo da variavel b ans = 3. as quais s˜o consideradas como pr´-definidas.) ent˜o o resultado ´ atribu´ ca a e ıdo ` vari´vel. n´ meros ou dos caracteres u .3 Quando o comando de atribui¸˜o for finalizado pelo caracter (.1: Regras para nomes de vari´veis.2. %pi. faz-se a -->%e. Raiz e RAIZ s˜o vari´veis distintas. e a come¸ar com letra seguida de alguns caracteres de pontua¸˜o s˜o permitidos. Se o nome da vari´vel e o sinal de atribui¸˜o (=) forem omitidos ent˜o o resultado ser´ dado a ca a a ` vari´vel default ans.2. a a e u a e -->b=5-2.2. %s %e = 2. Vari´veis a 11 Tabela 2.1415927 %s = s . #. c ca a letras.6 2. a a e n˜o podendo ser alteradas ou removidas (com excess˜o de ans).7182818 %eps = 2. por´m o seu conte´ do n˜o ´ exibido. Elas est˜o listadas na a a a Tabela 2.2+5. a Regra sobre nome de vari´vel a Coment´rio a conter at´ 24 caracteres e caracteres al´m do 24o s˜o ignorados. %inf.220D-16 %i = i %inf = Inf %nan = Nan %pi = 3. a a -->8/5 ans = 1.3 Vari´veis especiais a O SCILAB tem diversas vari´veis especiais. Para obter os valores destas vari´veis especiais.2.1 a = 15. %nan.

14159 . 30..2: Vari´veis especiais do SCILAB. 35. . 20. e √ i = −1. Se o incremento desejado for igual a 1 ent˜o ele poder´ ser omitido.12 Cap´ ıtulo 2.3 O vetor a possui os elementos a(1)=5. a(2)=1. infinito.0. a o %i %inf %nan %pi %s 2. por exemplo. 1/0. <vetor> = [ e1 . por exemplo. elemento por elemento. 15. 9. . Estruturas de dados Tabela 2. menor n´ mero tal que quando adicionado a 1 cria um n´ mero de u u −52 ponto flutuante maior que 1. a Vari´vel a ans %e %eps Valor nome de vari´vel default usada para resultados. . n˜o ´ um n´ mero (Not-A-Number).5 e a(3)=-0. .-0. 25. 8. o segundo igual a 15. por exemplo. 6. . No SCILAB o arranjo ´ definido de v´rias formas.3] a = 5. .2204×10−16 em computadores com aritm´tica de ponto flutuante IEEE. Seu valor ´ eps = 2 e ≈ 2. . en ] sendo <vetor> o nome da vari´vel e ei o i-´simo elemento. usada como vari´vel de polinˆmio. a e u π = 3..5. e2 . a e -->a = [5 1. 0/0.3 Vetores Um vetor ou arranjo ´ um conjunto de vari´veis homogˆneas (conte´ do de mesmo tipo) e a e u identificadas por um mesmo nome e individualizadas por meio de um ´ ındice. 40. a base do logaritmo natural. Se os valores do arranjo forem igualmente espa¸ados ele pode ser definido por interm´dio da express˜o c e a <vetor> = <valor inicial>:<incremento>:<valor final> Para gerar um vetor com o primeiro elemento igual a 10. 7. a a -->u = 5:9 u = 5. e = 2. separados por e a espa¸o em branco ou v´ c ırgula e delimitado por [ e ]. o terceiro igual a 20 e assim sucessivamente at´ o ultimo igual a 40 basta o comando e ´ -->b = 10:5:40 b = 10. 1.3.5 .71828 .

e2 . 1. .75 + 3.9. 35. para criar um arranjo com o primeiro elemento igual a 10. . cuja sintaxe ´ ca e <vetor> = linspace(<valor inicial>. 30. por isto s˜o tamb´m a a e chamados vetores linha.5i 1. ue a -->c(5:-2:1) // quinto.75i 1.5) d = 1. -3. 10.3. 40. para gerar um vetor coluna com os elementos 1. permitindo referenciar os elementos em qualquer ordem -->c([4 1]) // quarto e primeiro elementos ans = 25. Vetores 13 Em vez de usar incremento. ca -->c(3:5) ans = 20. arranjos com v´rias linhas e uma unica coluna.) <vetor> = [ e1 . 10. // segundo elemento de c ou em blocos usando os comandos de defini¸˜o de arranjos. ou seja.i Os elementos podem ser acessados individualmente.5 + 2. Lembrando que 5:-2:1 gera a seq¨ˆncia 5.5.40. a -->d = linspace(1+%i. // terceiro ao quinto elementos 25. 20..<n´mero de elementos>) u Assim.2 e -8. os incrementos s˜o feitos separadamente para a parte real e para a u a parte imagin´ria. o ultimo igual a 40 e ´ possuindo 7 elementos. Nos exemplos acima os arranjos possuem uma linha e v´rias colunas. 20. Se no comando linspace o e parˆmetro <n´mero de elementos> for omitido ent˜o ser˜o gerados 100 pontos. + i 1. . 3.<valor final>. Para criar um vetor coluna elemento por elemento a ´ estes devem estar separados por (. Do mesmo modo.7) c = 10. en ] Deste modo. + 4. ent˜o. um arranjo pode tamb´m ser constru´ definindo o n´ mero e ıdo u desejado de elementos na fun¸˜o linspace. No caso a u a a de n´ meros complexos. O endere¸amento indireto ´ tamb´m poss´ c e e ıvel. terceiro e primeiro elementos ans = 30. 30.2+4*%i.2. podem existir vetores coluna.25i 2. -->c = linspace(10. -->c(2) ans = 15. Isto produz um vetor idˆntico a b=10:5:40 definido acima.25 + 1.. 15. 25.

.3)*%i z = 1.5 .3.9 Por isto.5.’). Por exemplo. deve-se notar a importˆncia da posi¸˜o do caractere branco na defini¸˜o de um a ca ca vetor . .1:0. + 0.14 Cap´ ıtulo 2. usa-se o operador de transposi¸˜o (’).’). Por outro lado. separando os elementos por ponto-e-v´ ırgula especifica-se os elementos em diferentes linhas (vetor coluna). a transposi¸˜o ´ obtida pelo operador (. ca -->x = v’ x = 1. + 0.1i + 0.3i Assim.2i + 0. separando os elementos de um arranjo por brancos ou v´ ırgulas s˜o especificados os a elementos em diferentes colunas (vetor linha).3.8. z.5 .2. pois o uso do ca e operador (’) resultar´ em um complexo conjugado transposto.3i o transposto ´ e -->t = t = 1. Estruturas de dados -->v = [1. 2.0.9] v = 1.2 -->y = (1:3)’ y = 1. .2i 3. 3. Por fim.1i 2.2i 3. a ca A fun¸˜o length ´ utilizada para saber o comprimento de um vetor ca e -->l = length(z) l = 3.-3. + 0.9 No caso do vetor ser complexo. -->z = (1:3)+(0. seja o vetor a complexo.2 . 3. Para transformar um vetor linha em vetor coluna e vice-versa. 2.-8. no caso do vetor n˜o ser complexo a transposi¸˜o pode ser feita usando (’) ou (.1i 2. .8.3i e o complexo conjugado transposto -->cc = z’ cc = 1.1:0.’ + 0.0.0.

2)=8 A = 3. 8. . 7. .. 0. 8. 0. 2.2. elas a a podem ser modificadas de v´rias formas. 2.4.. 0. Uma vez definidas. 0. 0. 0. emn ] Para criar uma matriz A com 2 linhas e 3 colunas. -->p=[1 + 2] p = 3. Para modificar um elemento basta atribuir-lhe um novo valor. 4 7 9] A = 3. -->A(1. como por inser¸˜o. para construir uma matriz os elementos de uma mesma linha devem estar separados por branco ou v´ ırgula e as linhas separadas por ponto-e-v´ ırgula ou Enter (ou Return). -->A = [3 2 -5. 9. -->A(3. Seja agora a matriz quadrada B de ordem 3. . 9. 4... 0.5. . 0. Se for atribu´ um valor a um elemento n˜o existente. 7. 0. Matrizes 15 -->p=[1+2] p = 3. -->p=[1+ 2] p = 3.. . 0.4 Matrizes As matrizes s˜o arranjos bidimensionais homogˆneos e constituem as estruturas fundamena e tais do SCILAB e por isto existem v´rias maneiras de manipul´-las. ou seja. al´m dos elementos da ıdo a e matriz ent˜o o SCILAB aumenta esta matriz automaticamente preenchendo-a com valores a nulos de forma a matriz permanecer retangular. extra¸˜o e rearranjo. a ca ca Similarmente aos vetores.. 7. e21 e22 .5. 4. -->p=[1 +2] p = 1. em1 em2 . e1n . <matriz> = [ e11 e12 . e2n . 1.5. 2. 0. 9. .6)=1 A = 3. 4...

6. tal como. <valor inicial>:<incremento>:<valor final>. 8. 2 e 1 e 1:3 e ue produz 1. 4. 9. neste caso usando a nota¸˜o de arranjo. Para construir uma matriz E a partir da matriz B seguida da coluna 2 de C seguida ainda de uma coluna com os elementos iguais a 3. os elementos de uma matriz podem ser referenciados individualmente. -->B(2. 8. 6. 6.16 Cap´ ıtulo 2. 4. 7 8 9] B = 1. -->B([1 3]. 2. a Considerando que s˜o referenciadas todas as 3 colunas de B. 4. 2 e 1 e colunas 1. 5. 3. os elementos das ca linhas 1 e 3 e coluna 2. De modo similar aos arranjos. ou em conjuntos. Por exemplo. ent˜o o comando. 2. 2 e 3. 2 e 3 de B. 2. cria uma matriz C a partir das linhas de B em ordem contr´ria. 6. Lembrando que 3:-1:1 gera a seq¨ˆncia 3. cria uma matriz C a partir das linhas 3. 9. 4 5 6. Estruturas de dados -->B = [1 2 3. 3. 8. ou seja. a nota¸˜o simplificada (:) pode a ca ser igualmente usada em vez de 1:3 -->C = B(3:-1:1.1:3) C = 7. 5. tamb´m pode ser ca e usada ou at´ mesmo linspace. 1. Para criar uma matriz D a partir das linhas 1 e 2 e colunas 1 e 3 de B. a -->C = B(3:-1:1. 4. A nota¸˜o de vetor.:) C = 7.[1 3]) D = 1. . 3. 1. faz-se -->D = B(1:2. 9.2) ans = 2. 3. 8. 5. 7.3) ans = 6.

3. 3. 3. Quando o s´ ımbolo (:) for usado sozinho para referenciar os dois ´ ındices de uma matriz ent˜o a ´ gerado um vetor constitu´ pelas colunas da matriz. -->E(:. A outra forma ´ e . 5. 2. -->vet = E(:) vet = 4. 8. contendo o n´ mero de linhas e colunas a e co u de E. 7. 3. 5. 3.4. 8. 7. 5.2. 5. 8. 5. Para remover uma linha ou coluna de uma matriz usa-se a matriz vazia []. -->E(1. 2. 8.:) = [] E = 4. = [] 2. 5. Matrizes 17 -->E = [B C(:. 8. 2. // vetor formado pelas colunas da matriz E O s´ ımbolo ($) ´ utilizado para indicar o ´ e ındice da ultima linha ou coluna da matriz. // elemento da primeira linha e penultima coluna da matriz E A fun¸˜o size ´ usada para fornecer o n´ mero de linhas e colunas de uma matriz. E posteriormente para remover a linha 1. 7. 3. 4. 6.2) [3 3 3]’] E = 1. Para remover a coluna 3 de E. 8. 3. 3. Ela pode ca e u ser usada de duas formas: -->t = size(E) t = 2. 3. 9. 3. 3. 5.$-1) ans = 5. 7. 5. respectivamente. ´ -->E(1. onde a vari´vel t ´ um vetor linha com duas posi¸˜es. 4.3) E = 1. 2. 2. Seja o vetor vet obtido das colunas e ıdo da matriz E. 4.

a Se for acrescentado o argumento ’r’ ent˜o a fun¸˜o se aplica `s linhas da matriz. Algumas destas fun¸˜es s˜o co co a mostradas na Tabela 2. 6. 24. Tabela 2. 15. Uso de sum. menor elemento. Se o a ca a argumento for ’c’ ent˜o ser˜o utilizadas as colunas da matriz.’r’) ans = 12.’c’) ans = 6. 2. ca a u -->e = length(E) e = 8. 8. 5.c] = size(E) c = 4. Estruturas de dados -->[l. 9. respectivamente. -->sum(A) ans = 45. 4. . 7. 5 6. Se n˜o for usado o argumento a a a extra ent˜o a fun¸˜o se aplica a todos elementos. a ca -->A = [1 2 3. l = 2. O SCILAB tem fun¸˜es que se aplicam a vetores e a matrizes. co Fun¸˜o ca sum prod max min sort mean stdev Descri¸˜o ca soma dos elementos. Para a matriz A.18 Cap´ ıtulo 2. onde as vari´veis simples c e l cont´m o n´ mero de colunas e linhas de E. -->sum(A. a e u Se a fun¸˜o length for usada em uma matriz ela fornecer´ o n´ mero de elementos da matriz. -->sum(A.4 A = 1. produto dos elementos.3: Exemplos de fun¸˜es do SCILAB. ordena¸˜o em ordem decrescente. 18.3. 15. e e desvio padr˜o.7 8 9] 3. maior elemento. ca m´dia aritm´tica.

’c’) ans = 3. -->min(A. -->sort(A. 9. 8. .’c’) ans = 1. 9. Uso de max.’r’) ans = 7. Matrizes 19 Uso de prod. 7. 5.’r’) ans = 7. 1. 2. -->max(A. -->sort(A.’c’) ans = 3. -->min(A.4. 1. 4. -->max(A) ans = 9.2. 2. 3. -->prod(A) ans = 362880. 8. -->max(A. 6.’r’) ans = 28. 6. -->prod(A.’c’) ans = 6.’r’) ans = 1. 504. 80. -->min(A) ans = 1. 4. 120. 9. Uso de min. Uso de sort. 3. 162. -->prod(A. 2.

20

Cap´ ıtulo 2. Estruturas de dados

6. 5. 9. 8. -->sort(A) ans = 9. 6. 8. 5. 7. 4.

4. 7.

3. 2. 1.

Uso de mean,
-->mean(A,’r’) ans = 4. 5. 6. -->mean(A,’c’) ans = 2. 5. 8. -->mean(A) ans = 5.

Uso de stdev,
-->stdev(A,’r’) ans = 3. 3. 3. -->stdev(A,’c’) ans = 1. 1. 1. -->stdev(A) ans = 2.7386128

O SCILAB possui tamb´m v´rias fun¸˜es para manipula¸ao de matrizes dentre as quais e a co c˜ destacam-se aquelas mostradas na Tabela 2.4. Tabela 2.4: Algumas fun¸˜es para opera¸˜es de matrizes. co co Fun¸˜o ca diag Descri¸˜o ca se o argumento for uma matriz ent˜o produz um vetor coluna cona tendo os elementos da diagonal; se o argumento for um vetor ent˜o a cria uma matriz diagonal com os elementos do vetor; obt´m a parte triangular inferior de uma matriz; e obt´m a parte triangular superior de uma matriz; e altera a forma de uma matriz; cria uma matriz esparsa.

tril triu matrix sparse

Para a matriz A dada acima,

2.4. Matrizes

21

-->d = d = 1. 5. 9. -->D = D = 1. 0. 0. -->L = L = 1. 4. 7. -->U = U = 1. 0. 0.

diag(A)

// diagonal de A em um vetor coluna

diag(d) 0. 5. 0. tril(A) 0. 5. 8. triu(A) 2. 5. 0.

// cria matriz diagonal a partir de um vetor 0. 0. 9. // obtem a parte triangular inferior 0. 0. 9. // obtem a parte triangular superior 3. 6. 9.

A fun¸˜o ca matrix(<matriz>,<linhas>,<coluna>) cria uma matriz com n´ mero de linhas dados por <linhas> e n´ mero de colunas igual a u u <colunas>, a partir de <matriz> com (<linhas> × <colunas>) elementos selecionados no sentido das colunas. Por exemplo, para a matriz B de dimens˜o 2 × 3, a
-->B = [1 2 3;4 5 6] B = 1. 2. 3. 4. 5. 6. -->c = matrix(B,1,6) // matriz de dimensao 1 x 6 c = 1. 4. 2. 5. 3. 6. -->D = matrix(B,3,2) // matriz de dimensao 3 x 2 D = 1. 5. 4. 3. 2. 6.

A partir de <matriz> com alguns elementos nulos, a fun¸˜o sparse(<matriz>) cria uma ca matriz esparsa armazenando somente os elementos n˜o nulos. Para a matriz E, a
-->E = [2 0 -1; 0 5 6; 7 0 9] E = 2. 0. - 1. 0. 5. 6. 7. 0. 9. -->S = sparse(E) // cria matriz esparsa S =

22

Cap´ ıtulo 2. Estruturas de dados

( ( ( ( ( ( (

3, 1, 1, 2, 2, 3, 3,

3) sparse matrix 1) 2. 3) - 1. 2) 5. 3) 6. 1) 7. 3) 9.

Os tripletos acima indicam (linha, coluna, valor), ou seja, linha = 1, coluna = 1, valor = 2; linha = 1, coluna = 3, valor = −1 e assim sucessivamente. De forma alternativa, a partir de uma matriz <linha coluna> com duas colunas contendo os ´ ındices dos elementos n˜o nulos e do vetor <valor> com os valores desses elementos, o comando a sparse(<linha coluna>,<valor>) cria uma matriz esparsa,
-->mat = [1 1; 1 3; 2 2; 2 4; 3 3; 4 1; 5 5] // matriz de dimensao 7 x 2 mat = 1. 1. 1. 3. 2. 2. 2. 4. 3. 3. 4. 1. 5. 5. -->vet = [2 -1 5 4 3 8 -9] // vetor com 7 elementos vet = 2. - 1. 5. 4. 3. 8. - 9. -->F = sparse(mat,vet) // cria matriz esparsa F = ( 5, 5) sparse matrix ( 1, 1) 2. ( 1, 3) - 1. ( 2, 2) 5. ( 2, 4) 4. ( 3, 3) 3. ( 4, 1) 8. ( 5, 5) - 9.

O comando full(<esparsa>) converte a matriz <esparsa> para a sua representa¸˜o cheia. ca Para a matriz F acima,
-->FF = full(F) FF = 2. 0. - 1. 0. 5. 0. 0. 0. 3. 8. 0. 0. 0. 0. 0.

0. 4. 0. 0. 0.

0. 0. 0. 0. - 9.

O SCILAB fornece v´rias matrizes elementares de grande utilidade, como as mostradas na a Tabela 2.5. O n´ mero de parˆmetros providos fornecem as dimens˜es da matriz. u a o Por exemplo,

6857310 x 4 aleatoria com distribuicao normal . 1. 1.7560439 0.6834217 .3) // matriz identidade de dimensao 3 x 3 I = 1. 0.4. Por exemplo.0.4. o ca -->z = zeros(1. 0.0002211 0.2546697 1.0002211 0. 0.2113249 0. 0. 1.7209534 A fun¸˜o rand produz n´ meros pseudo-aleat´rios e a seq¨ˆncia gerada ´ determinada pelo ca u o ue e estado do gerador.0) // atribui 0 ao estado -->a = rand(1. elementos aleat´rios com dada distribui¸˜o. -->I = eye(3.0.5417209 4 aleatoria com distribuicao uniforme 0. -->U = ones(2. 0.6653811 -->rand(’seed’) // verifica o valor do estado ans = 1. A fun¸˜o rand com ou sem o argumento extra ’uniform’ gera uma matriz com elementos ca aleat´rios uniformemente distribu´ o ıdos entre 0 e 1. e ıdo o qual ´ alterado a cada chamada da fun¸˜o rand.3) // matriz de 1’s de dimensao 2 x 3 U = 1.5. 0.’uniform’) matriz 2 x Ru = 0.8498895 .4.3303271 0. Matrizes 23 Tabela 2.429D+09 -->b = rand(1. Para atribuir um valor ao estado do e ca gerador quando esta fun¸˜o j´ tiver sido executada usa-se os argumentos ’seed’ e n (valor ca a do estado).’uniform’) // gera uma sequencia aleatoria uniforme a = 0. identidade ou parte dela. elementos iguais a 1.’normal’) // matriz 2 Rn = 0. -->rand(’seed’. 1. a o ca e a -->Ru = rand(2. 1.9273333 . 0.5.6653811 0. Fun¸˜o ca zeros ones eye rand Descri¸˜o da matriz ca nula.6283918 -->Rn = rand(2.7223316 0.’uniform’) // gera outra sequencia aleatoria uniforme b = .8497452 0. ´ atribu´ um valor inicial ao estado.3303271 0. 0. Se o argumento extra for ’normal’ ent˜o a a matriz conter´ elementos aleat´rios com distribui¸˜o normal com m´dia 0 e variˆncia 1.4) // matriz nula de dimensao 1 x 4 z = 0. Quando o SCILAB for ativado.2. 1.5: Algumas matrizes elementares do SCILAB.6380837 0.2113249 0.7560439 0.0. 1. 0.1.

3 H = .3 4.6 (:.4 1.6 -->mat3 = [3.4 4.2 1.5 4.3 2.2) 2. composta por 4 submatrizes de dimens˜es 2 × 3. 3.2 1.2 4.1 2.6] // define submatriz 4 mat4 = 4.2 4.2 3. Elas podem ser criadas pelo a a e a o comando hypermat(<dim>.24 Cap´ ıtulo 2.1 1. para criar a hipermatriz H com dimens˜es o 2 × 3 × 4.3.0002211 0.5 4.2 1.4 2. faz-se o -->mat1 = [1.6] // define submatriz 3 mat3 = 3.’uniform’) // gera uma sequencia igual a primeira c = 0.8782165 0.1) 1.:.6 (:. Por exemplo.3 3.4) 4.1 3.<val>).5.4 2.0) // atribui 0 ao estado -->c = rand(1. 4.1 2. onde o vetor <dim> define as dimens˜es da hipermatriz e o a matriz <val> define os elementos.3.6] // define submatriz 2 mat2 = 2.0683740 -->rand(’seed’.1 4.[mat1 mat2 mat3 mat4]) // hipermatriz H de dimensao 2 x 3 x 4 H = (:. ou seja.1 1.5 1.3.3 1.:.3 4.2 2.5 2.4 2.6] define submatriz 1 mat1 = 1.3303271 0. para alterar para 12.1 4.1 1.4 1.2 4.6 As hipermatrizes podem ser manipuladas como as matrizes bidimensionais.2 3.3 1. Assim. 2.6 -->mat2 = [2.5 4.4 4.6 -->mat4 = [4.1 2.4 4.6 (:.8497452 0.5 1.[1 4]) = 12.2 2.1.1 3.5 Hipermatrizes Hipermatrizes s˜o vari´veis homogˆneas com v´rias dimens˜es.5 3.4 3.2 3.3 3. Estruturas de dados 0.7560439 0.1) das submatrizes 1 e 4 da hipermatriz H ca acima.4 1.6283918 0.3 os elementos da posi¸˜o (2.2113249 0.5 3.5 1. 1.5 2. -->H(2.5 2.6653811 2.3.4 3.5 3.4 3.3 2.2 2.:.3) 3.1 3.1 4.:.6 -->H = hypermat([2 3 4].6857310 0.

5 6.1 Constru¸˜o ca Os polinˆmios podem ser constru´ o ıdos ou a partir de seus coeficientes ou de seus zeros.13x .’r’) // soma das linhas da submatriz 3 ans = 6.1 2.1) 1.5 2.3 3.3) 3. .:.:.9 -->min(H(:.:. Por exemplo.5 3. Constru¸˜o a partir dos coeficientes ca Um polinˆmio na forma P (x) = c1 + c2 x + c3 x2 + .:. Se <modo> = ’coeff’ ent˜o ele ser´ constru´ a partir de a a ıdo seus coeficientes. 2.3 (:.7 6.:.3 4.2 1.<modo>). -->sum(H(:.5 4.1 12.2x + x // polinomio P(x) a partir dos coeficientes .4) 4.6 4.2 2. onde <vari´vel> ´ uma cadeia de caracteres a a a e que determina a vari´vel do polinˆmio e a outra cadeia de caracteres <modo> especifica como a o o polinˆmio ser´ constru´ o a ıdo.6 3.6 Outros comandos.6 2.3).<vari´vel>. + cn−1 xn−2 + cn xn−1 pode ser conso tru´ a partir dos coeficientes ci definidos no vetor <par^metros>. para construir o polinˆmio P (x) = 24 + 14x−13x2 −2x3 + x4 o basta.2 3.3 1.2) 2. 4. Polinˆmios o 25 (:. -->P = poly([24 14 -13 -2 1].’c’) // menores elementos das colunas da submatriz 2 ans = 2.2 4. -->size(H) // dimensoes da hipermatriz ans = 2.2.6.3 1.5 1.3 2.4 (:.’x’. utilizando a fun¸˜o ıdo a ca poly(<par^metros>.1 12.6 Polinˆmios o O SCILAB fornece v´rias fun¸˜es que permitem que as opera¸˜es envolvendo polinˆmios a co co o seja feita de um modo bem simples.6.2).1 2.4 (:.:.4 2. 3.’coeff’) P = 2 3 4 24 + 14x .1 3. .

mesmo de graus diferentes. 757.9x + 3x + 8x .’coeff’) // constroi b(x) b = 2 3 .6. Para um polinˆmio com zeros ξ1 = −1. onde o e ca o <polin^mio> cont´m o polinˆmio e <abscissas> cont´m os pontos nos quais ele deve ser o e o e avaliado.4 . 1. mas com <par^metros> contendo os zeros do polinˆmio e ca a o sendo <modo> = ’roots’ ou n˜o sendo especificado ent˜o ele ser´ constru´ a partir de a a a ıdo seus zeros.2x + 3x -->y = horner(T.3 Adi¸˜o e subtra¸˜o ca ca Para somar e subtrair polinˆmios.<abscissas>). 1. 0. 2.3x + 7x + 5x .6.b d = // subtrai polinomios 2 3 4 5 + x . para avaliar T (x) = 1 − 3x + 7x2 + 5x3 − 2x4 + 3x5 nos pontos x = −1. Assim. 1.’coeff’) // constroi a(x) a = 2 3 4 1 . Estruturas de dados Constru¸˜o a partir das ra´ ca ızes Usando a mesma fun¸˜o poly.’s’. 0. ξ3 = 2 e ξ4 = 4.’x’.’x’.x + x + 7x + 8x resultando c(x) = −3 − x + x2 + 7x3 + 8x4 .2 Avalia¸˜o ca Um polinˆmio ´ avaliado por meio da fun¸˜o horner(<polin^mio>. -->a = poly([1 0 -4 5 8]. para somar os polinˆmios a(x) = 1 − 4x2 + 5x3 + 8x4 e ca ca o 2 3 b(x) = −4 − x + 5x + 2x . Por exemplo.26 Cap´ ıtulo 2. e para subtrair -->d = a . 11.13s . -->T = poly([1 -3 7 5 -2 3]. faz-se o -->R = poly([-1 -3 2 4]. 2 e 3 y = 1.’roots’) R = 2 3 4 24 + 14s . 127.4x + 5x + 8x -->b = poly([-4 -1 5 2]. ξ2 = −3. basta usar os operadores de o adi¸˜o (+) e substra¸˜o (-). 2 e 3.x + 5x + 2x -->c = a + b // soma polinomios c = 2 3 4 .’x’.’coeff’) // constroi T(x) a partir dos coeficientes T = 2 3 4 5 1 .2s + s // polinomio R(s) a partir dos zeros 2.(-1:3)) // avalia T(x) em x = -1.3 .

a multiplica¸˜o resulta em.5v + 3v -->f = poly([-1 2].<quociente>] = pdiv(<polin^mio 1>.3x + x -->[r. ´ criado um polinˆmio racional.’coeff’) // constroi i(x) i = 2 1 .’coeff’) // constroi e(v) e = 2 4 . Para os a ca e o polinˆmios h(x) e i(x) definidos acima. No caso do uso do operador de divis˜o (/) em vez da fun¸˜o pdiv.<polin^mio 2>) faz a dio o vis˜o entre o <polin^mio 1> e o <polin^mio 2>.’x’.2. Por exemplo.’coeff’) // constroi f(v) f = .3x + 2x -->i = poly([1 -3 1].4 + 13v . ou seja.’v’.6.i) // divide h(x) por i(x) q = 2 11 + 3x + 2x r = . Polinˆmios o 27 2. o 2. <polin^mio 1> = o a o <polin^mio 2> * <quociente> + <resto>.q] = pdiv(h. e -->h = poly([6 -5 4 -3 2]. o -->j = h / i // polinomio racional obtido da divisao de h(x) por i(x) .’x’.’v’.5 + 25x resultado no quociente q(x) = 11 + 3x + 2x2 com resto r(x) = −5 + 25x.13v + 6v resultando no polinˆmio g(v) = −4 + 13v − 13v 2 + 6v 3 .6. Sejam ca o e ca 2 os polinˆmios e(v) = 4 − 5v + 3v e f (v) = −1 + 2v. o ca -->e = poly([4 -5 3].6.5 Divis˜o a O comando [<resto>.5x + 4x . a divis˜o de h(x) = 6 − 5x + o a 4x2 − 3x3 + 2x4 por i(x) = 1 − 3x + x2 ´ efetuada por.1 + 2v -->g = e * f g = // multiplica e(v) por f(v) 2 3 . retornando o polinˆmio quociente em a o o o <quociente> e o polinˆmio do resto da divis˜o em <resto>.’coeff’) h = // constroi h(x) 2 3 4 6 .4 Multiplica¸˜o ca A multiplica¸˜o de dois polinˆmios ´ feita utilizando o operador de multiplica¸˜o (*).

dado por ’e’.13x + 2x + x -->raizes = roots(T) // calcula as raizes de T(x) = 0 raizes = 1.6 Deriva¸˜o ca A fun¸˜o derivat efetua a deriva¸˜o polinomial. o . Quando o polinˆmio for real e possuir grau menor ou igual a 100 a fun¸˜o roots calcula o ca os zeros por um algoritmo r´pido. Se for acrescentado o segundo argumento da fun¸˜o ca roots. . para obter a primeira e ca ca segunda derivada de P (x) = −5 + 14x − 12x2 + 2x3 + x4 . ızes -->T = poly([24 -14 -13 2 1]. Estruturas de dados j = 2 3 4 6 .3x + 2x --------------------2 1 . 2. 3.’x’.14x .24x + 6x + 4x -->p2 = derivat(p1) // derivada segunda de p(x) p2 = 2 .6.28 Cap´ ıtulo 2. -->p = poly([-5 14 -12 2 1]. Deste modo. independente a a do grau do polinˆmio.4.5 + 14x .’x’.2.24 + 12x + 12x resultando P ′ (x) = 14 − 24x + 6x2 + 4x3 e P ′′ (x) = −24 + 12x + 12x2 .12x + 2x + x -->p1 = derivat(p) // derivada primeira de p(x) p1 = 2 3 14 . .5x + 4x .6. Por exemplo. para calcular ca o o 2 3 4 as quatro ra´ de T (x) = 24 − 14x − 13x + 2x + x = 0. caso contr´rio.3x + x 2.7 C´lculo de ra´ a ızes A fun¸˜o roots(<polin^mio>) calcula os zeros de <polin^mio>. os zeros s˜o calculados por meio dos a a a autovalores da matriz companheira. ent˜o os zeros ser˜o calculados utilizando os autovalores.’coeff’) // constroi p(x) p = 2 3 4 .’coeff’) // constroi T(x) T = 2 3 4 24 .

0. 1.. 1.4. os quais podem ser atribu´ ıdos ` uma vari´vel l´gica. Por exemplo.7. . 13. .   .. 0. . . 17. -->r = spec(A) // autovalores da matriz companheira A r = . -->v = [ 11 12 13 14 15 16 17 18 ] // define o vetor v com 8 elementos v = 11. .. 0 0 . 0. 0. 0 0     0 1 .24. . 13.. 18. 16. . . 0. . 0. 0. . -->ind = [%t %t %f %t %f] // define vetor logico ind com 5 elementos . -->a = %t // variavel logica simples a = T -->b = [%f %F %t %T] // vetor logico b = F F T T -->C = [%T %f %t.7 Vari´veis l´gicas a o Conforme visto. . . Vari´veis l´gicas a o 29 Pode ser mostrado que as ra´ ızes de P (x) = c1 + c2 x + c3 x2 + . a   −cn−1 /cn −cn−2 /cn . + cn−1 xn−2 + cn xn−1 = 0 s˜o os autovalores da matriz companheira.   . 14.2. . 12. 15. 0. .2. 14. 1 0 Deste modo... 2. 0. a o Quando o valor for verdadeiro o ´ ındice ´ acessado e no caso de ser falso o ´ e ındice n˜o ser´ a a acessado. uma constante l´gica tem os valores %t (ou %T) para verdadeiro e %f (ou o %F) para falso. 0 0 C= . com estrutura de vetor a a o ou matriz.’e’) ´ equivalente ` e a -->A = companion(T) // matriz companheira do polinomio T(x) A = . Por exemplo. 1.%f %T %F] // matriz logica C = T F T F T F As vari´veis l´gicas podem ser utilizadas para acessar os elementos de uma matriz (ou vetor). . . r = roots(T. . −c2 /cn −c1 /cn   1 0 . 3. . 1. .2.

4 5 6]) Rol = Rol(1) tipo Rol(2) F Rol(3) 1.3. Estruturas de dados ind = T T F T F -->v(ind) // elementos 1. a ca 2. 3. 2 e 4 do vetor v ans = 11.9 Listas Uma lista ´ um conjunto de dados n˜o necessariamente do mesmo tipo. e ıda -->Rol = list(’tipo’. -->Rol(2) // objeto 2 de Rol ans = // gera a lista Rol com 3 objetos . o -->a = ’SCILAB’.30 Cap´ ıtulo 2.2. 12. 14.[1 2 3. ca a a ca 2. 2.%f. As listas s˜o uteis para definirem dados estruturados. 5. O uso de vari´veis l´gicas ´ fundamental nas express˜es l´gicas que a o e o o ser˜o vistas na Se¸˜o 3. ca -->d = a+’ manipula ’+b d = SCILAB manipula cadeia de caracteres -->e = [a ’utiliza’ b] e = !SCILAB utiliza cadeia de caracteres ! A utiliza¸˜o de vari´veis literais ser´ abordada com mais detalhes na Se¸˜o 3. 6. O n´ mero de elementos do vetor l´gico deve ser menor ou igual ao n´ mero de elementos do u o u vetor que ele referencia. a ´ Uma lista ´ constru´ a partir do comando list. Por exemplo. b = "cadeia de caracteres" a = SCILAB b = cadeia de caracteres Os caracteres podem ser concatenados usando o operador (+) ou a nota¸˜o vetorial.8 Vari´veis literais a Uma vari´vel literal cont´m uma constante literal formada por uma cadeia de caracteres a e delimitada por aspas (’) ou ap´strofos ("). 4. podendo conter e a matrizes ou mesmo outras listas.

3.1 e 2. // objeto 1 de Rol torna-se uma lista Para obter e atribuir valor a objeto da lista. 30. 5. a a a a 2. 2.10 Exerc´ ıcios Se¸˜es 2. Atribuir o valor −1. 2. 30. 6. Apesar de os comandos estarem separados por v´ ırgula. 55.3) do objeto 2 de Rol(1) ans = 30.3) // elemento (1. 20. 4. 20.1.1) de Rol(3) Rol = Rol(1) Rol(1)(1) tamanho Rol(1)(2) 10. a area=1. Exerc´ ıcios 31 F -->Rol(3)(2.2. limite:sup=3. -->Rol(3)(2. entrar com um de cada vez. // elemento (2.8 // atribuindo novo valor ao elemento (2. faz-se -->Rol(1)(2)(1. Conferir os nomes permitidos de vari´veis arco-seno=0.1) = 55. -->Rol(1) = list(’tamanho’.2.2 co Observar atentamente e anotar o resultado dos comandos do SCILAB.23×103 ` vari´vel a e 4. Rol(2) F Rol(3) 1. 2. . Area=3. Rol(2) F Rol(3) 1.17×10−2 ` vari´vel b. 3. 2. 6.1) ans = 4.8 5.10.1) do objeto 3 de Rol Uma lista pode ser um objeto de outra lista.[10 20 30]) Rol = Rol(1) Rol(1)(1) tamanho Rol(1)(2) 10.

e = linspace(0. 2.’ Se¸˜o 2. A(2. e(3). d = 5:10.6).20. 2. size(C). com a terceira coluna com a o elementos com o valor falso e as demais com o valor verdadeiro. 5 7 8]. C(:. ones(2. prod(A. g = linspace(2. B = A(2:3.32 Cap´ ıtulo 2.’c’). A = [6 -1 4.’c’).[2 4])=[]. sum(A.1) = 1. al = [1 3. D = rand(3.11. 2.5). min(B. tril(D).2 7. C(2. 2.’r’).’c’). prod(A. Se¸˜o 2.3 ca Construir os vetores e analisar as opera¸˜es: co 2. b = 10:5:30.8.:) 2.14.4. = [].’r’).5).5 -4. sum(A.15.3.[2 3 1]). f = linspace(10. ac = (2:3:11)’.11. 2. triu(D).4). eye(5.’r’).10. max(B.6. i = g.3). 2. 2. Atribuir a cadeia de caracteres ’abc’ ` vari´vel literal letras e ’01234’ ` vari´vel a a a a literal numeros. segundo e quarto com o o valor verdadeiro e os outros com o valor falso. zeros(3.3. e(2:4). h = g’.12.’uniform’).7.5]. Criar uma matriz de dimens˜o 2 × 3 com elementos l´gicos. 2.10. .4) + linspace(0.2. f(3:-1:1). f([6 5 1 3]). Estruturas de dados 2.1.1. Criar um vetor l´gico com cinco elementos sendo o primeiro. 0 2 -3.4)*%i . C = [A B’]. diag(diag(D)).9.13.5. c = 5:-2:-6. 2.4 ca Construir as matrizes e verificar o resultado das opera¸˜es e fun¸˜es co co 2.

b / c. e que y = c 33 . As co e a Tabela 3. l´gicas e literais. enquanto e e c a−b ´ y = (a . x = a − ´ expresso como x = a . cuja avalia¸˜o a e ca a ca resulta em um valor unico.7 * 6*9.1: Opera¸˜es aritm´ticas b´sicas do SCILAB. Os parˆnteses s˜o usados para alterar a ca ca e e a b ordem de precedˆncia.1 Express˜es aritm´ticas o e ´ E dispon´ ıvel no SCILAB as opera¸˜es aritm´ticas b´sicas mostradas na Tabela 3.Cap´ ıtulo 3 Express˜es o Uma express˜o ´ uma combina¸˜o de constantes. tendo a potencia¸˜o maior ordem de o a ca precedˆncia. Por exemplo. vari´veis e operadores.b) / c. e o 3.1-4. seguida pela multiplica¸˜o e divis˜o (ambas tendo igual precedˆncia) e seguida e ca a e pela adi¸˜o e subtra¸˜o (com igual precedˆncia).98 / ou \ 6/7 5\3 ^ 2^10 express˜es s˜o avaliadas da esquerda para a direita. co e a Opera¸˜o ca adi¸˜o ca subtra¸˜o ca multiplica¸˜o ca divis˜o a potencia¸˜o ca Express˜o a a+b a−b a×b a÷b ab Operador Exemplo + 1+2 5.1. Neste cap´ ´ ıtulo ser˜o mostrados os trˆs tipos de express˜es do a e o SCILAB: aritm´ticas.

.^c c.. ca co a a As opera¸˜es de multiplica¸˜o. c = 2 a = 1. an ∗c ] Adi¸˜o escalar. an +c ] [ a1 +b1 a2 +b2 . 44. 22.. an ∗bn ] [ a1 /b1 a2 /b2 . 7. 5. 4..1... ca -->a + b ans = 11. b = 10.... b = [ b1 b2 . c^an ] [ a1 ^b1 a2 ^b2 . Express˜es o 3. Tabela 3..an ].34 Cap´ ıtulo 3.. Estas opera¸˜es b´sicas s˜o apresentadas na Tabela 3. 55. 3. 30. 6. co a Sejam a = [ a1 a2 ... an ^c ] [ c^a1 c^a2 .2: Opera¸˜es vetoriais b´sicas. divis˜o e potencia¸ao envolvendo vetores quando antecedico ca a c˜ das pelo caracter (. an ^bn ] [ a1 ∗c a2 ∗c . an /bn ] [ b1 /a1 b2 /a2 . Multiplica¸˜o escalar.. a -->a = 1:5.. c = 2.1 Express˜es vetoriais o As opera¸˜es b´sicas entre vetores s´ s˜o definidas quando estes tiverem o mesmo tamanho co a o a e orienta¸˜o (linha ou coluna). ca ./b a. Adi¸˜o vetorial. 20. ca -->a + c ans = 3. 33.^a a.\b a.) significa que estas opera¸˜es s˜o efetuadas entre os correspondentes co a elementos dos vetores.. 4..*b a.2. 5.. b = 10:10:50.. 2..^b Considere as vari´veis. Resultado [ a1 +c a2 +c ...bn ] e c um escalar Opera¸˜o ca adi¸˜o escalar ca adi¸˜o vetorial ca multiplica¸˜o escalar ca multiplica¸˜o vetorial ca divis˜o ` direita a a divis˜o ` esquerda a a potencia¸˜o ca Express˜o a a+c a+b a*c a. an +bn ] [ a1 ∗b1 a2 ∗b2 . bn /an ] [ a1 ^c a2 ^c . 50. 40.

4 5 6. ca -->a . -->a . 90. ca -->a .1 0.\ b ans = 10. B = [10 20 30.2 Express˜es matriciais o De modo similar `s opera¸˜es vetorias. -->A = [1 A = 1. 4. 32. 10.1 0.2. 8. 90.882D+34 3. Express˜es aritm´ticas o e 35 -->a * c ans = 2. 3. 50.^ a ans = 2.1. 70 80 90].1. ca a ca Sejam as matrizes A e B de ordem 3 e o escalar c. 16.1 0. O operador (\) envolvendo matrizes e vetores est´ relacionado a com solu¸˜o de sistemas lineares. Divis˜o vetorial ` direita entre elementos correspondentes.* b ans = 10. 20. c = 3 2. a a -->a . 40. 16.3. 30. conforme ser´ visto na Se¸˜o 7.059D+14 1.3.^ b ans = 1. 2 3. 10. 5. 25. 4. Potencia¸˜o. -->c . 60. 2. as quais est˜o a co co a a compiladas na Tabela 3. existem as opera¸˜es matriciais b´sicas. 6. 7. B = 10. 160. 9. 6./ b ans = 0.3. 250. 4. a a -->a . 10.1 0. 1048576. 8. 80. 8. 40 50 60. 70. 40. 7 8 9]. Multiplica¸˜o vetorial entre elementos correspondentes.1 Divis˜o vetorial ` esquerda entre elementos correspondentes. . 9.209D+24 8. c = 3. 4. 10. 10.^ c ans = 1.

Multiplica¸˜o escalar. 55.. Adi¸˜o matricial. 10.. ca ./B A.*B A. Na multiplica¸˜o matricial. 66. 18.. . a1p . a21 a22 ... 33. ca -->A + c ans = 4.. .36 Cap´ ıtulo 3. 99.. 44.. 9. 88. . 24.^B Resultado aij + c aij + bij aij ∗ c AB aij ∗ bij aij /bij Ac ac ij caij ij aij bij /aij b Adi¸˜o escalar. 6. am1 am2 . 21.3: Opera¸˜es matriciais b´sicas. 8. bp1 bp2 .^A A. b2n . 6. 12.. b21 b22 .. 7.. a2p . 15. 22. co a Sejam c um escalar e A = [ a11 a12 . A diferen¸a no resultado das express˜es quando os operadores cont´m o caracter (.) deve c o e ser observada.. ca -->A + B ans = 11. 11. amp ] B = [ b11 b12 . 12. Express˜es o Tabela 3. 9.. b1n .\B A^c A..^c c. bpn ] Opera¸˜o ca adi¸˜o escalar ca adi¸˜o matricial ca multiplica¸˜o escalar ca multiplica¸˜o matricial ca multiplica¸˜o entre elementos correspondentes ca divis˜o ` direita entre elementos correspondentes a a divis˜o ` esquerda entre elementos correspondentes a a potencia¸˜o ca Express˜o a A+c A+B A*c A*B A.. ca -->A * c ans = 3. .. 5. 27. 77.

618D+85 . 243. 1656. 10. 10. 40. 250.1 0. ca -->A .1 0.1. 960. 1020.209D+24 8. 729. a a -->A . 2034. 125. 10. 1062. 9.1 0. 1260. 81. 10. 360. 1305. 729. 490. 27. Express˜es aritm´ticas o e 37 -->A * B ans = 300. 640. 10.1 0. 1548. 660. Multiplica¸˜o entre elementos correspondentes. Divis˜o ` direita entre elementos correspondentes.1 0. 512. 810. 6561.1 Divis˜o ` esquerda entre elementos correspondentes.767D+72 7.3. E nos diferentes tipos de potencia¸˜o. 576. a a -->A . 2412. 10.887D+46 1.1 0. 2187. 420. -->c .1 0. 343. 810.\ B ans = 10. 1048576. 10. 27.^ c // elemento da matriz elevado a uma constante ans = 1.* B ans = 10.435D+59 1.^ B // elemento de matriz elevado a elemento de matriz ans = 1.059D+14 1.1 0. 19683. 8. 1500.^ A // constante elevada a elemento da matriz ans = 3. ca -->A . 64. 684. -->A . 10./ B ans = 0. 2. -->A ^ c // matriz elevada a uma constante ans = 468. 90. 360. 216.882D+34 4. 160.

^A e c^A s˜o equivalentes. 1.38 Cap´ ıtulo 3. 2. 5.4142136 1. 1. co a Fun¸˜o ca acos asin atan cos acosh asinh atanh cosh coth exp abs conj ceil fix floor gcd Descri¸˜o ca arco co-seno arco seno arco tangente co-seno Fun¸˜o ca trigonom´tricas e cotg sin tan Descri¸˜o ca co-tangente seno tangente logaritmo natural logaritmo decimal seno hiperb´lico o raiz quadrada tangente hiperb´lica o parte imagin´ria do complexo a parte real do complexo m´ ınimo m´ ltiplo comum u resto de divis˜o a arredonda em dire¸˜o ao inca teiro mais pr´ximo o sinal exponenciais arco co-seno hiperb´lico o log arco seno hiperb´lico o log10 arco tangente hiperb´lica o sinh co-seno hiperb´lico o sqrt co-tangente hiperb´lica o tanh exponencial complexas valor absoluto imag complexo conjugado real num´ricas e arredonda em dire¸˜o a +∞ ca lcm arredonda em dire¸˜o a 0 ca modulo arredonda em dire¸˜o a −∞ ca round m´ximo divisor comum a sign . Tabela 3. A Tabela 3.b]’ ans = 1. 4. 3.4: Fun¸˜es matem´ticas elementares do SCILAB. Se a vari´vel for um vetor ou uma matriz a avalia¸˜o de uma fun¸˜o se d´ para cada elemento a ca ca a da vari´vel.7320508 2. -->b = sqrt(a) // raiz quadrada b = 1. o SCILAB oferece v´rias fun¸˜es importantes.236068 Os resultados acima podem ser apresentados na forma de uma tabela por interm´dio do e comando -->[a. 2. Express˜es o ´ E importante observar que no SCILAB as opera¸˜es c. Como pode co a ser esperado de uma linguagem para aplica¸˜es nas ´reas t´cnicas e cient´ co a e ıficas.4 apresenta algumas fun¸˜es matem´ticas a co co a elementares do SCILAB. a -->a = 1:5 a = 1.

236068 3.3.2. -->a = 1:10. 3. Sejam os vetores a e b e o escalar c. No SCILAB ca a o e o resultado ´ literal. 2. 0. 2. 6. Note que o caracter e (=) ´ usado para atribui¸˜o de um valor ` uma vari´vel enquanto que os caracteres (==) s˜o e ca a a a usados para compara¸˜o de igualdade. 1. sendo que T significa verdadeiro e F significa falso.5. Express˜es l´gicas o o 39 2. 8. A natureza da compara¸˜o ´ indicada por um operador relacional conforme a ca e Tabela 3. 4. Apesar de o resultado a e da rela¸˜o l´gica ser um valor literal. 4. b = 9:-1:0. 2. c = 5 a = 1. 6. 3.5: Operadores relacionais do SCILAB. 5. 7. Os operadores relacionais s˜o usados para comparar ca a vetores ou matrizes do mesmo tamanho ou comparar um escalar com os elementos de um vetor ou de matriz. 8. 9. Uma rela¸˜o ´ uma compara¸˜o realizada entre valores do a o ca e ca mesmo tipo.2 Express˜es l´gicas o o Uma express˜o se diz l´gica quando os operadores forem l´gicos e os operandos forem rela¸˜es a o o co e/ou vari´veis do tipo l´gico. 1. 7. . caso contr´rio cont´m o valor F (falso). -->d = a >= c d = F F F F T T T T T T produz um vetor que cont´m o valor T (verdadeiro) quando o elemento correspondente do e vetor a for maior ou igual a 5. Assim. 4. 10. 3. ca o a e sendo que F vale 0 e T tem o valor 1. 5.7320508 2. ele pode fazer parte de uma express˜o aritm´tica. c = 5. Tabela 3. 5. Operador relacional == > >= < <= ~= ou <> Descri¸˜o ca igual a maior que maior ou igual a menor que menor ou igual a diferente de O resultado de uma rela¸˜o ou de uma express˜o l´gica ´ verdadeiro ou falso. b = 9.4142136 1.

caso contr´rio s˜o iguais a F. a -->g = ~f g = T T T F F F F F T T A Tabela 3. o Tabela 3. Os operadores l´gicos do SCILAB s˜o listados na Tabela 3.7 apresenta a tabela verdade para os operadores l´gicos do SCILAB. ou a a ca seja. o Operador l´gico Descri¸˜o o ca & e | ou ~ n˜o a Para os vetores a e b definidos anteriormente.^2 > -9 & 3*b <= 15 h = F F F F T T T F F F . 3. 11.6: Operadores l´gicos do SCILAB.7: Tabela verdade. o a Os parˆnteses podem ser usados para alterar a ordem de precedˆncia. 10.8. 6. Express˜es o -->e = a + (b <= 3) e = 1. Quando um elemento de b for menor ou igual a 3. ca a -->h = -(a-5). 8. ca co o o a Tabela 3. Para fazer a nega¸˜o. 5. onde for T ser´ F e vice-versa basta. 2. 9. Para os vetores a e b e e definidos acima. 4. a avalia¸˜o da express˜o. Os operadores l´gicos permitem a combina¸˜o ou o ca nega¸˜o das rela¸˜es l´gicas.6.40 Cap´ ıtulo 3. a T T F F b T F T F a & b T F F F a | b ~a T F T F T T F T A ordem de precedˆncia no SCILAB para express˜es envolvendo operadores aritm´ticos e e o e l´gicos s˜o indicados na Tabela 3. -->f = (a>3) & (a<=8) f = F F F T T T T T F F Uso conjun¸˜o ca disjun¸˜o ca nega¸˜o ca Os elementos de f s˜o iguais a T quando os correspondentes elementos de a forem maiores a do que 3 e menores ou iguais a 8. o valor 1 (resultado da rela¸˜o l´gica) ´ ca o e adicionado ao correspondente valor de a.

2. 15. 6.3 Express˜es literais o O SCILAB disp˜e de v´rias fun¸˜es para manipula¸˜o de cadeia de caracteres. 21.1. -->h3 = 3*b h3 = 27. . . .25.* . 0. 3. 16. .3.^2 h2 = 16. 4. -->h2 = h1.4.4. 1.3. e co e o Ordem de precedˆncia e 1a 2a 3a 4a 5a ^ * + > | Operadores . 4. e a a -->h1 = a-5 h1 = . 0.16. 25. -->h4 = -h2 h4 = . 0.9. .’ / \ . 9. . 18.3.9.4. . . 1. 3. 4. 3.1. Express˜es literais o 41 Tabela 3. u ./ . .8: Ordem de precedˆncia das opera¸˜es aritm´ticas e l´gicas. 5. Se ele for ’u’ ent˜o converte para caixa alta (mai´ sculo) e se for ’l’ ou a u omitido converte para caixa baixa (min´ sculo). u Caixas altas e baixas A fun¸˜o convstr(<texto>.3. 9.1 Convers˜o de caracteres a Ser˜o apresentadas fun¸˜es para alterar o tamanho da caixa das letras e fazer a convers˜o a co a de caracteres para n´ mero e vice-versa. -->h5 = h4 > -9 h5 = F F T T T T T F F F -->h6 = h3 <= 15 h6 = F F F F T T T T T T -->h = h5 & h6 h = F F F F T T T F F F 2.~ +(un´rio) -(un´rio) a a >= < <= == ~= & ´ equivalente `s v´rias etapas. sendo algumas o a co ca delas mostradas a seguir.16. .1. 24. 12.<tipo>) converte a cadeia de caracteres <texto> de acordo ca com o <tipo>. 1.^ ’ . 0. 3.\ . 9. .

105.9: Caracteres em c´digo ASCII. 42. // converte numeros para caracteres . 45 46 .’u’) // converte para caixa alta ans = CAIXAS ALTAS E BAIXAS -->convstr(texto) // converte para caixa baixa ans = caixas altas e baixas C´digo ASCII o Os comandos <n´mero> = ascii(<texto>) e <texto> = ascii(<n´mero>) fazem a conu u vers˜o dos caracteres ASCII (American Standard Code for Information Interchange) contia dos no vetor de caracteres <texto> para valores num´ricos e atribuem ao vetor <n´mero> e e u vice-versa. -->t = ascii(n) t = 5+3*i // converte caracteres para numeros 51. 43. o Representa¸˜o decimal dos caracteres ca 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ’ 40 ( 41 ) 42 * 43 + 44 . 60 < 61 = 62 > 63 ? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 94 95 96 97 98 99 ] ^ _ ‘ a b c 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 100 d 101 e 102 f 103 g 104 h Por exemplo. -->s = ’5+3*i’ s = 5+3*i -->n = ascii(s) n = 53. 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 . Express˜es o -->texto = ’Caixas Altas e Baixas’ // define o texto texto = Caixas Altas e Baixas -->convstr(texto. Tabela 3.9. para o vetor s de tamanho 5. de acordo com a Tabela 3.42 Cap´ ıtulo 3.

28.3. 231. 27. ou de um modo mais simples. 10. 12. 29.10). e ´ e -->m = [ 70 117 110 231 227 111 ] m = 70. 27. o -->texto = ’Caracteres’ // define o texto texto = Caracteres -->numero = str2code(texto)’ // converte texto para numero (vetor transposto) numero = . 117. 14. a e u segundo o c´digo do SCILAB.12.10: Caracteres em c´digo ASCII estendido do SCILAB. 111. -->palavra = code2str(numero) // converte numero para texto palavra = Caracteres ´ E importante observar que os c´digos de convers˜o produzidos pelas fun¸˜es code2str e o a co str2code s˜o diferentes daqueles produzidos pela fun¸˜o ascii. o Representa¸˜o decimal dos caracteres ca 192 ` A 193 ´ A A 194 ^ 195 ~ A 196 ¨ A A 197 ˚ 198 Æ 199 C ¸ 200 ` E 201 ´ E E 202 ^ 203 ¨ E 204 ` I I 205 ´ 206 ^ I 207 ¨ I 208 209 210 211 212 213 214 D ~ N ` O ´ O ^ O ~ O ¨ O 216 Ø 217 ` U U 218 ´ 219 ^ U 220 ¨ U Y 221 ´ 222 223 ß 224 ` a 225 ´ a 226 ^ a 227 ~ a 228 ¨ a 229 ˚ a 230 æ 231 ¸ c 232 ` e 233 ´ e 234 ^ e 235 ¨ e 236 ` ı 237 ´ ı 238 ^ ı 239 ¨ ı 240 241 242 243 244 245 246 ∂ ′ 248 ø 249 ` u 250 ´ u 251 ^ u 252 ¨ u 253 ´ y 254 255 ¨ y ~ n ` o ´ o ^ o ~ o ¨ o 215 × 247 ÷ Este comando ´ particularmente util para escrever textos em portuguˆs (ver Tabela 3. 14. 110. Express˜es literais o 43 Tabela 3. a ca . -->c = ascii(m) c = Fun¸~o ca 227. 10. -->d = ’N’+ascii(250)+’mero’ d = N´mero u C´digo do SCILAB o Os comandos <texto> = code2str(<n´mero>) e <n´mero> = str2code(<texto>) fazem a u u convers˜o de um vetor num´rico <n´mero> para a cadeia de caracteres <texto> e vice-versa.3.

-->length(’abcde’) // numero de caracteres ans = 5. 97. -->asc = ascii(car) // converte para codigo ASCII asc = 48. a seguir. -->length([’ab’ ’123’.35.25 -->titulo = ’velocidade = ’ + string(v) + ’ m/s’ titulo = velocidade = 4.10. N´meros u O comando <texto> = string(<n´mero>) converte a constante num´rica <n´mero> para u e u a sua representa¸˜o em caracteres e atribui o resultado a <texto>.25 v = 4. 65. 49. 1. Express˜es o -->car = ’01AZaz’ // define caracteres car = 01AZaz -->cod = str2code(car)’ // converte para codigo do SCILAB (vetor transposto) cod = 0. . a co Tamanho A fun¸˜o length(<vari´vel>) fornece o n´ mero de caracteres presentes na cadeia de caca a u racteres <vari´vel>. . se ela for uma matriz ent˜o ´ informado o n´ mero de caracteres de a a e u cada elemento.25 m/s 3. 35. Por sua vez. 90. fun¸˜es para obter o tamanho. 10. Cria¸˜o ca O comando <vari´vel> = emptystr(<linhas>.2 Manipula¸˜o de caracteres ca Ser˜o descritas.3. -->v = 4. criar. o . conforme ser´ visto no a a Cap´ ıtulo 6. 3. Este comando ´ de ca e grande utilidade quando da escrita de r´tulos e t´ o ıtulos em gr´ficos. 1. 122. 4.44 Cap´ ıtulo 3. operar e procurar caracteres. <vari´vel> = a a a emptystr(<matriz>) cria a matriz de caracteres <vari´vel> vazia com as mesmas dia mens˜es de <matriz>. ’*’ ’abcd’]) // numero de caracteres de matriz ans = 2.<colunas>) gera uma matriz de caractea res <vari´vel> vazia de dimens˜o <linhas> × <colunas>.

3) // matriz vazia de dimensao 2 x 3 mat = ! ! ! ! ! ! -->length(mat) // numero de caracteres de mat ans = 0. ’1’ ’1234567’ ’7890’. -->S = emptystr(matnum) // matriz vazia com mesma dimensao de matnum S = ! ! ! ! ! ! -->length(S) // numero de caracteres de S ans = 0. a ca a -->M = [’abcdefg’ ’h’ ’ijklmnopq’. se for ca a ’c’ elas ser˜o centradas e se <posi¸~o> = ’r’ as colunas ser˜o movidas para a direita. 0.’ entre cada elemento vv = a. 0.’) // insere ’. -->matnum = [ 1 2. ’abc’ ’01’ ’def’] // matriz M = !abcdefg h ijklmnopq ! ! ! !1 1234567 7890 ! ! ! !abc 01 def ! -->C = justify(M.’.c. 0. Se for igual a ’l’ as colunas ser˜o movidas para a esquerda. 0.’c’) // cria matriz C a partir de M com colunas centradas .3. 4. 0.<posi¸~o>) cria <matriz pos>.d.<caracteres>) insere a cadeia <caracteres> entre cada eleca mento da cadeia de caracteres <vetor>. 3 4] // define matriz numerica matnum = 1. 0. alterando a posi¸˜o das colunas da matriz de caracteres <matriz> de ca acordo com <posi¸~o>.3. 0. uma maca triz de caracteres.b. 2. -->vet = [’a’ ’b’ ’c’ ’d’ ’e’] // define vetor de caracteres vet = !a b c d e ! -->vv = strcat(vet. Express˜es literais o 45 -->mat = emptystr(2. A fun¸˜o strcat(<vetor>.’ >= ’) // insere ’ >= ’ entre cada elemento ve = a >= b >= c >= d >= e Opera¸˜o ca O comando <matriz pos> = justify(<matriz>. 3.e -->ve = strcat(vet. 0.

<texto 1>.’’) // remove todos os caracteres brancos ans = determinante=produtodosautovalores .46 Cap´ ıtulo 3. Express˜es o C = !abcdefg ! ! 1 ! ! abc h 1234567 01 ijklmnopq 7890 def ! ! ! ! ! A fun¸˜o stripblanks(<texto>) elimina os caracteres brancos do in´ e do final da cadeia ca ıcio de caracteres <texto>.<texto 2>) substitui todas as ocorrˆncias da caca e deia de caracteres <texto 1> na matriz de caracteres <matriz> pelos caracteres contidos em <texto 2>. -->frase = ’determinante = produto dos autovalores’ // define o texto frase = determinante = produto dos autovalores -->strsubst(frase.’ ’. -->s = stripblanks(v) // remove caracteres brancos do inicio e do final de v s = a b c -->length(s) // numero de caracteres de s ans = 5. 8 e 12 A fun¸˜o strsubst(<matriz>.’ e’’ igual ao ’) // substitui simbolo por texto ans = determinante e’ igual ao produto dos autovalores -->strsubst(frase. e ı -->s = ’1234567890abcdefgh’ s = 1234567890abcdefgh -->v = strsplit(s.[3 8 12]) v = !123 ! ! ! !45678 ! ! ! !90ab ! ! ! !cdefgh ! // define vetor de caracteres // quebra o vetor s nas posicoes 3.’ = ’.’E’) // substitui as letras ’e’ por ’E’ ans = dEtErminantE = produto dos autovalorEs -->strsubst(frase. A fun¸˜o strsplit(<texto>.<´ndice>) quebra a cadeia de caracteres <texto> nas posi¸˜es ca ı co dadas no vetor num´rico <´ndice> gerando um vetor de caracteres.’e’. -->v = ’ a b c ’ // vetor v com 3 caracteres brancos no inicio e no final v = a b c -->length(v) // numero de caracteres de v ans = 11.

ind = 2.scilab. O argumento opcional <qual> fornece ´ ı ındices informando qual das cadeias de caracteres de <vetor i> foram encontradas.scilab. Para cada entrada do <vetor> de caracteres. Considere o comando [<´ndices>.[’aa’ ’da’]) qual = 1.<delimitador>) cria um vetor coluna de caracteres <elementos> particionando a cadeia de caracteres <texto> onde ocorrer a presen¸a c . 2. respectivamente.’a’) // procura os indices de ocorrencia de ’a’ ind = 1.<qual>] = grep(<vetor>. A fun¸˜o ı ca strindex procura os ´ ındices de onde o i-´simo elemento do vetor de caracteres <vetor i> foi e encontrado na cadeia de caracteres <texto>. 2 (da).3.qual] = grep(vetor. -->vetor = [’o scilab e’’ um software livre’. O argumento opcional <qual> fornece ´ ındices informando qual das cadeias de caracteres de <texto> foi a primeira a ser encontrada. Por exemplo. pelo menos. Por exemplo. 1. Os caracteres aa e da foram encontrados nas posi¸˜es 2. linha = 1. 12.3. Estes ´ ındices s˜o retornados no vetor num´rico a e <´ndices>.<vetor i>). 7. 1 (aa) e 2 (da). sendo que na linha 1 o primeiro a ser encontrado tem o ´ ındice 2 (scilab) e na linha 3 foi o de ´ ındice 1 (ver). 7.[’ver’. Os caracteres ver e scilab foram encontrados nas linhas 1 e 3.org ! -->[linha. 1. 8.org’] // define o vetor de caracteres vetor = !o scilab e’ um software livre ! ! ! !para aplicacoes cientificas ! ! ! !ver www. 8. 6. e 12 e os elementos que co apareceram foram. -->ind = strindex(’abcd dabc’. -->ind = strindex(’baad daaa’. 3. --> ’ver www. uma igualdade foi encontrada.’aa’) // indices de ocorrencia de ’aa’ ind = 2. 7.’scilab’]) // procura por ’ver’ e ’scilab’ qual = 2. 1 (aa).<qual>] = strindex(<texto>. 6. 1 (aa). 7. O comando <elementos> = tokens(<texto>.<texto>). 8. a fun¸˜o grep pesquisa se pelo menos uma cadeia de caracteres no ca vetor <texto> ´ igual a uma subcadeia de <vetor>. O vetor num´rico <linhas> informa e e os ´ ındices das entradas de <vetor> onde. Express˜es literais o 47 Procura Seja o comando [<linhas>. --> ’para aplicacoes cientificas’.qual] = strindex(’baad daaa bdac’. 2. 1. -->[ind.

<delimitador>).48 Cap´ ıtulo 3.[’d’ ’t’]) ans = !Exemplo ! ! ! !e ca ! ! ! !eia ! ! ! !e carac ! ! ! !eres ! // delimitadores ’d’ e ’t’ Seja o comando <matriz> = tokenpos(<texto>. // particiona com delimitador ’ ’ . Cada componente do segundo argumento ´ formado por um unico caracter. Por exemplo. -->tokens(’Exemplo de cadeia de caracteres’) // particiona com delimitador ’ ’ ans = !Exemplo ! ! ! !de ! ! ! !cadeia ! ! ! !de ! ! ! !caracteres ! -->tokens(’Exemplo de cadeia de caracteres’. Por exemplo. 20. 7. Express˜es o de um dos componentes do vetor <delimitador>. 19. 12. 9.<Tab>] (caracteres branco e ascii(9)). 17. Se este argumento for omitido ent˜o ´ assumido e ´ a e o vetor [’ ’. 10. -->tokenpos(’Exemplo de cadeia de caracteres’) ans = 1.’c’) // delimitador ’c’ ans = !Exemplo de ! ! ! !adeia de ! ! ! !ara ! ! ! !teres ! -->tokens(’Exemplo de cadeia de caracteres’. Cada componente do segundo a e argumento ´ formado por um unico caracter. A fun¸˜o tokenpos ca particiona a cadeia de caracteres <texto> onde ocorrer a presen¸a de um dos componentes c do vetor <delimitador>. Os ´ ındices inicial e final de cada elemento resultante da parti¸˜o ca s˜o atribu´ a ıdos ` matriz num´rica de duas colunas <matriz>.<Tab>] (caracteres branco e ascii(9)). Se este argumento for omitido ent˜o ´ assumido o vetor e ´ a e [’ ’.

-->c = part([’123’. 31. 31. ıda a a -->r = eval(’sin(%pi/2)’) r = 1. y = 2. 28.4. 2.1]) vet = !a a bc b efhe ! // obtencao usando indices 1.4. O segundo componente co ’bcd’ tem comprimento 3 que ´ menor que 4 por isso recebe um branco na posi¸˜o 3. portanto. -->tokenpos(’Exemplo de cadeia de caracteres’. onde <elementos> e <texto> ı s˜o matrizes de caracteres e <´ndices> ´ um vetor num´rico de ´ a ı e e ındices. 10.3. -->x = 1.2. A fun¸˜o eval ´ tamb´m capaz de executar tarefas mais complexas.4 Execu¸˜o de express˜es ca o O SCILAB possui comandos com o prop´sito de executar express˜es. eval(’2*x+exp(y-2)’) ans = 3. 4 e 1 O comprimento do primeiro componente ’a’ ´ 1 que ´ menor que 2 e 4. 8.[’d’ ’t’]) ans = 1. o o e cuja sintaxe ´ e <resultado> = eval(<express~o>) a A cadeia de caracteres <express~o> cont´m a express˜o matem´tica que deve ser interprea e a a tada e atribu´ ` vari´vel <resultado>.<´ndices>). A fun¸˜o part obt´m ca e <elementos> a partir dos elementos de <texto> nas posi¸˜es especificadas em <´ndice>. 20. e ca 3. 26.’4567’.’890’]. estas tˆm que ser previa a e amente definidas.[1. co ı Por exemplo. um dos quais ´ o eval.3]) c = !13 46 80 ! // obtencao usando indices 1 e 3 Se um elemento de <´ndice> for maior que o comprimento de um componente de <texto> ı ent˜o <elementos> receber´ um caractere branco. 13. ca e e . Execu¸˜o de express˜es ca o 49 22.’efghi’]. // delimitadores ’d’ e ’t’ Seja o comando <elementos> = part(<texto>. o primeiro e e componente de vet recebe dois caracteres brancos nas posi¸˜es 2 e 3. Por exemplo. 15. 18.’bcd’. Note que para avaliar uma express˜o que possui as vari´veis x e y.[1. a a -->vet = part([’a’.

:)) // avalia a expressao da linha 3 com x = 2 ans = 20. calcular a raiz quadrada. e ca -->x = evstr(’1. Sejam a = 1. Avaliar x= 3 e(e − a)(e − b) + cd .1. c2 √ b+a 1 + b2 . 2\ 5. e = 5. 6*3. por exemplo.2.1. c = 3. 1+2*3-4/5. Se¸˜o 3.’1/x+5*x^2’] // define uma matriz com 3 expressoes Tabela = !sqrt(x) ! ! ! !exp(x) ! ! ! !1/x+5*x^2 ! -->x = 16. d = 4.5 Exerc´ ıcios Observar atentamente e anotar o resultado dos comandos do SCILAB.5678i com este valor num´rico ´ poss´ e e ıvel. + b − a 1 + b3 . 4-1. eval(Tabela(3. Apesar de os comandos estarem separados por v´ ırgula. Express˜es o -->Tabela = [’sqrt(x)’.090566 + 0. 10/2. eval(Tabela(1.5 A fun¸˜o evstr(<express~o>) converte a representa¸˜o do valor num´rico da cadeia de ca a ca e caracteres <express~o> escrita em c´digo ASCII para a representa¸˜o num´rica. 6*2^3. 3^2.23d2+5. 3. O argua o ca e mento <express~o> deve estar escrito de acordo com as regras de defini¸˜o de constantes a ca num´ricas vistas na Se¸˜o 2.1 ca 3. -->x = 2. ’exp(x)’.:)) // avalia a expressao da linha 1 com x = 16 ans = 4. Avaliar as express˜es escalares o 5+3. entrar com um de cada vez.50 Cap´ ıtulo 3.678e-1*%i’) x = 123. cos(a) d + sen(b + c) + exp 3 b2 − c + y =a− d+e z = log10 b d + e2 . b = 2.0255983i 3. -->y = sqrt(x) y = 11. + 0.

^M. M*x. k. M^z. N = [1 1 2. z. observar os resultados das fun¸˜es complexas.7.8.^z. 3.14. 3 2 1]. o o 3.4. 3 1 -1.15. Para c = 3 + 4i e c = 5 − 3i. completar a tabela a b c d a&b a&c b&d a|b a|c b|d ~a ~b Avaliar as express˜es l´gicas para x = -2:2 e v = 1:5. u. c = sqrt(2) > 1. z = 2. u. conj(c).9. co abs(c). 3. Avaliar as express˜es matriciais para o M = [2 -3 1. M+N. 3. 3. c co ceil(a). real(c).11.10. d = ca a a o exp(0) == 0. sign(a). M*N. M*z. .5. x > 1 | abs(v-3) < 1. M. 3.14. 3. u+v. Verificar a diferen¸a entre as fun¸˜es usando a = π e a = −5. fix(a). Com rela¸˜o `s vari´veis l´gicas. Exerc´ ıcios 51 Avaliar as express˜es vetoriais para u = 2:6.5). M. k = 5.13. u-k.\N. x = (1:3)’. x > -1. 3.\v. M-z. z^M.12. u.*v.6. w = sqrt(u+v) . Se¸˜o 3. v./N. M. floor(a). o 3.cos(u-k*v).^k. dados a = %t.3. 3. u.3.^N. 3.2 ca 3.*N.^u. 3.5. v = linspace(10. 4 6 -1. M. u*k./v.6. imag(c).^u. -5 2 1]. b = %f. M. x <= -1 & v > 1. abs(x) == 1. round(a).

25.19. avaliar as express˜es abaixo.4 ca 3. 3. u 3.0456789e2’. co 3. 3. vari´vel e equa¸~es. ı a co 3. 3.y) . substituir toda ocorrˆncia do caracter ’d’ pelo caracter e ’X’.3 ca 3.18.* sinh(x*y/10)’. a Para x = 1:5 e y = 3.52 Cap´ ıtulo 3. ’exp(x-y)’.20. Dada a cadeia de caracteres [’1’ ’2’ ’3’ ’4’]. Se¸˜o 3. Qual a diferen¸a entre as fun¸˜es evstr e string? c co . inserir ’ menor que ’ entre eles.24.16.22. ’modulo(x. o 3. Dada a seq¨ˆncia de caracteres ’abcdeedabceacdbdbcae’ determinar os ´ ue ındices de onde ocorre ’bc’. Dado ’abcde edabc eacdb’.21.23. 3. Converter para n´ mero as cadeias de caracteres ’12. Avaliar o resultado da express˜o dada pela cadeia de caracteres ’sqrt(4)+cos(%pi)’.17.3d-1’ e ’0. Quebrar a cadeia de caracteres ’123456789012345’ nas posi¸˜es 5 e 10. Express˜es o Se¸˜o 3. Definir os comandos para gerar as cadeias de caracteres T´tulo.

ca a a 4.5608486 0.1415927 O comando disp(<vari´vel>) ´ usado para exibir o conte´ do de <vari´vel> sem mostrar a e u a o seu nome ou para exibir uma cadeia de caracteres contida na <vari´vel>.3303271 0.<d´gitos>) ´ usada para alterar o formato num´rico de exibi¸˜o. O resultado ´ exibido a e usando um formato pr´-definido.6283918 0.0000272 271828.2113249 0.7560439 0.1 Formato de exibi¸˜o ca Para saber o valor de uma vari´vel basta entrar com o seu nome. ıda grava¸˜o e leitura das vari´veis de uma sess˜o de trabalho e de arquivos.718D+10 A fun¸˜o format(<tipo>. ele ´ mostrado com dez caracteres. incluindo o ponto decimal u e e o sinal.0683740 0. disp(rand(2.6. a -->disp(’numeros aleatorios entre 0 e 1’). Quando o sinal for positivo ´ exibido um caracter branco em seu lugar. Se o resultado for um e n´ mero real (ponto flutuante). Se os e d´ ıgitos significativos do resultado estiverem fora desta faixa ent˜o o resultado ser´ exibido a a em nota¸˜o cient´ ca ıfica.Cap´ ıtulo 4 Comandos de entrada e sa´ ıda O SCILAB fornece algumas facilidades para especificar o formato de sa´ dos resultados.6623569 Ao exibir um resultado num´rico o SCILAB segue diversas regras.6653811 0.18 2. e -->%pi %pi = 3.0002211 0. -->disp([%e*1e-5 %e*1e5 %e*1e-10 %e*1e10]) 0.718D-10 2.8782165 0.6857310 0.8497452 0.’uniform’)) numeros aleatorios entre 0 e 1 0. ca ı e e ca onde <tipo> ´ um dos caracteres ’v’ ou ’e’ para indicar formato vari´vel ou em nota¸˜o e a ca 53 .

49012D-08 A fun¸˜o mprintf exibe dados formatados pertencentes ao espa¸o de trabalho na tela princa c cipal do SCILAB. Comandos de entrada e sa´ ıda cient´ ıfica. e. a e a a e Uma vez definido o formato de exibi¸˜o ele ´ mantido at´ que seja modificado por um outro ca e e comando format.8). sendo n o tamanho do campo (n´ mero ca u total de caracteres exibidos) e d o n´ mero de d´ u ıgitos decimais.22045D-16 -->sqrt(%eps) // verificar que o ultimo formato e’ mantido ans = 1. dependendo de qual formato for mais curto. sendo n o tamanho do campo (n´ mero ca u total de caracteres exibidos) e d o n´ mero de d´ u ıgitos decimais. %pi // pi com formato variavel com 8 caracteres ans = 3. g ou s.5e\n’.%eps/2) a precisao deste computador = 1. O parˆmetro <d´gitos> indica o n´ mero m´ximo de caracteres a a ı u a serem exibidos. %n. ca %n. %eps // eps em notacao cientifica com 12 caracteres ans = 2.12).14159 -->format(’v’. %n.df nota¸˜o na forma [−]888.de ou %n. respectivamente.888 ± 88. e a a %ns exibe caracteres em um campo de tamanho n. -->mprintf(’a precisao deste computador =%12. %eps // eps em notacao cientifica com 8 caracteres ans = 2. %pi // pi com formato variavel com 12 caracteres ans = 3.1. incluindo sinal.11022e-16 . Estas especifica¸˜es de convers˜o s˜o a a co a a delimitadas pelo caracter % e uma das letras i. ca Formato Especifica¸˜o ca %ni usado para valores inteiros. f.dg equivalente a %n. ponto decimal e no caso de formato ’e’ os quatro caracteres referentes ` potˆncia de 10.54 Cap´ ıtulo 4. Deste modo. Tabela 4.df. Caso esse parˆmetro n˜o seja fornecido ´ assumido o valor 10.de nota¸˜o na forma [−]8.2D-16 -->format(’e’. -->format(’v’.8).12).1: Formatos de exibi¸˜o. de acordo com a Tabela 4. al´m disso os zeros insignificantes n˜o s˜o exibidos.141592654 -->format(’e’. Sua sintaxe ´ e mprintf(<formato>. sendo n o tamanho do campo de exibi¸˜o.<vari´veis>) a onde a cadeia de caracteres <formato> cont´m caracteres alfanum´ricos e/ou especifica¸˜es e e co de convers˜o para exibir na tela a lista <vari´veis>.888.

Conforme visto. b. a exibi¸˜o pode ser feita pelos comandos disp e mprintf.1 -9. a -->a = 2.4 6.4. 1.7320508 -->mprintf(’%5.2 Espa¸o de trabalho c Durante uma sess˜o as vari´veis utilizadas residem no espa¸o de trabalho do SCILAB e a a c podem ser armazenadas em um arquivo quando desejado. -->disp(M) 1.500 1. o comando who lista o nome das vari´veis que est˜o sendo usadas. 1. 1.5 b = 1.73205 4. Por sua vez. b = [1.22474 2.sqrt(x)]’.5 1.2 .2 a = 2.41421 2.1415926536 Assim.2 3.%pi) o valor de pi e’ aproximadamente 3.000 1. Por exemplo.58114 3.4.000 1.3f%10.3].M) 1. 6. no in´ de uma sess˜o.000 1.00000 1.5f\n’. o comando whos fornece informa¸˜es mais detalhadas sobre essas co vari´veis. ou seja.9. 1.5.5 1.4142136 2. -->M = [x. quando o usu´rio criou apenas as o ıcio a a vari´veis a. Espa¸o de trabalho c 55 onde \n ´ usado para come¸ar uma nova linha.5:3.1 3.10f\n’. a -->mprintf(’o valor de pi e’’ aproximadamente%13.2. d = ’caracteres’ Type function string constant constant Size 1 by 1 2 by 2 1 by 3 Bytes 8512 64 48 40 .2 3.3 d = caracteres -->whos Name whos d C b -5. C = [2.4]. tem-se.1 .1 3. Estes dois comandos listam as vari´veis criadas pelo usu´rio e as definidas pelo a a a pr´prio SCILAB.4 C = 2.5811388 3. ca -->x = 1:0.5. que est˜o presentes no espa¸o a a a c de trabalho.2247449 2. Quando for necess´rio ter o caracter (’) e c a exibido basta us´-lo duas vezes.500 1. C e d.

%t boolean 1 by 1 %f boolean 1 by 1 %eps constant 1 by 1 %io constant 1 by 2 %i constant 1 by 1 %e constant 1 by 1 %pi constant 1 by 1 24 2352 24 24 24 32 32 24 24 As vari´veis no espa¸o de trabalho criadas pelo usu´rio podem ser removidas. Se o arquivo contiver uma vari´vel com o mesmo nome de uma j´ existente no espa¸o de a a c trabalho ent˜o o comando load faz com que a vari´vel do espa¸o de trabalho seja substitu´ a a c ıda pela vari´vel existente no arquivo. As vari´veis devem estar separadas por v´ a ırgula. b. removidas. a c Aten¸˜o: n˜o ser´ solicitada a confirma¸˜o. algumas variaveis foram removidas da lista . . ent˜o todas as vari´veis do espa¸co de a a a a c trabalho criadas pelo usu´rio ser˜o salvas. a remove todas as vari´veis do espa¸o de trabalho. Todas ca a a ca as vari´veis estar˜o. -->save(’quatro.<vari´veis>) a e onde <nome do arquivo> ´ uma cadeia de caracteres que especifica o nome do arquivo bin´rio onde vari´veis do espa¸o de trabalho ser˜o gravadas e <vari´veis> ´ uma lista a a c a a e de nomes que define quais as vari´veis do espa¸o de trabalho criadas pelo usu´rio ser˜o a c a a gravadas no arquivo <nome do arquivo>.dat’) // salva as quatro variaveis no arquivo ’quatro. a a 4. Sua sintaxe ´ a c e load(<nome do arquivo>.dat’.b.2 Recuperar dados O comando load ´ usado para recuperar os dados gravados em um arquivo pelo comando e save e coloc´-los de volta no espa¸o de trabalho. C e a a a d criadas acima. e a c Sua sintaxe ´ e save(<nome do arquivo>.2.d) // salva as variaveis b e d no arquivo ’duas. Por exemplo.dat’ 4. irremediavelmente. incondicioa c a nalmente. Comandos de entrada e sa´ ıda a constant 1 by 1 scicos_pal string 14 by 2 .1 Gravar dados O comando save ´ usado para gravar as vari´veis do espa¸o de trabalho em um arquivo.<vari´veis>) a a a onde <nome do arquivo> e <vari´veis> s˜o os mesmos definidos para o comando save. considerando as vari´veis a. usando o comando clear --> clear tempo raiz --> clear remove as vari´veis tempo e raiz.2. a .dat’ -->save(’duas.56 Cap´ ıtulo 4. Se os nomes <vari´veis> n˜o forem especificados.

x mdialog e x message. Espa¸o de trabalho c 57 -->clear // remove todas as variaveis do espaco de trabalho -->d = ’novos’ // atribui novo valor a variavel d d = novos -->load(’duas.’s’) // cadeia de caracteres com parametro ’s’ fornecer o texto: -->programa SCILAB texto = programa SCILAB -->texto = input(’fornecer o texto: ’) // caracteres sem o parametro ’s’.’string’) a A leitura de dados pelo teclado ´ feita pelo comando input. tais como. O segundo argumento ’string’ ou simplesmente ’s’ a ´ opcional e informa que <vari´vel> ´ uma cadeia de caracteres. caso seja acionado o bot˜o Cancel ent˜o <resultado> = [].4 Janela de mensagem A intera¸˜o SCILAB / usu´rio pode tamb´m ser feita por meio de janelas de mensagens ca a e utilizando comandos. O comando ı o <resultado> = x mdialog(<t´tulo>. mas com ’ ’ fornecer o texto: -->’programa SCILAB’ texto = programa SCILAB 4.<valores i>) exibe uma janela contendo a cadeia de caracteres <t´tulo> com uma mensagem.2.3 Entrada de dados <vari´vel> = input(<mensagem>.2.dat’.4. a a -->nomes = [’Comprimento:’.’Altura:’] nomes = !Comprimento: ! ! ! !Largura: ! ! ! // define os nomes das variaveis . e a e -->Indice = input(’entre com o indice: ’) entre com o indice: -->13 Indice = 13.2.<r´tulos i>. cuja sintaxe ´ e e O comando acima exibe a cadeia de caracteres <mensagem> e espera at´ que o usu´rio forne¸a e a c o valor de <vari´vel> pelo teclado. o Se for acionado o bot˜o Ok ent˜o <resultado> receber´ os valores sugeridos ou os outros a a a valores digitados.’b’.’Largura:’. correspondentes a <r´tulos i>.’d’) // recupera as variaveis b e d do arquivo ’duas. -->texto = input(’fornecer o texto: ’.dat’ -->d // verifica o valor de d ans = caracteres 4. v´rios ı a vetores de caracteres <r´tulos i> com o nome do i-´simo valor requerido e os vetores de o e caracteres <valores i> com os valores iniciais sugeridos. Por exemplo.

Por exemplo. o a o comando . utilizando a fun¸˜o eval (ver Se¸˜o 3. Comandos de entrada e sa´ ıda !Altura: ! -->valor_ini = [’’.1. <resultado> = x message(<t´tulo>. Digita-se os valores desejados e pressiona-se Ok.58 Cap´ ıtulo 4.’’] // define os valores iniciais (nenhum no caso) valor_ini = ! ! ! ! ! ! ! ! ! ! -->dimensao = x_mdialog(’Entre com as dimensoes’.56 ! ! ! !7.4).<bot~es i>) ı o exibe uma janela contendo a cadeia de caracteres <t´tulo> com uma mensagem e v´rios ı a co e a a vetores de caracteres <bot~es i> com as op¸˜es. u ca ca dimensao = !1.23 -->lar = eval(dimensao(2)) lar = 4.89 // valor numerico do comprimento // valor numerico da largura // valor numerico da altura Figura 4. Em seguida converte os caracteres para e n´ meros. Se <bot~es i> n˜o for especificado assume-se o valor Ok. O vetor de caracteres dimensao ´ apresentado. Por sua vez.23 ! ! ! !4.56 -->alt = eval(dimensao(3)) alt = 7.89 ! -->com = eval(dimensao(1)) com = 1. Se for acionado o i-´simo bot˜o ent˜o o <resultado> = i.1: Janela do comando x mdialog.’’. nomes. valor_ini) // abre a janela apresenta a janela mostrada na Figura 4.

490D-08 -->diary(0) // fecha o arquivo diario 4.490D-08 -->diary(0) // fecha o arquivo diario O conte´ do do arquivo diario ´. at´ a troca de informa¸˜es com um outro programa.4 Leitura e grava¸˜o de dados ca A transferˆncia de dados entre o espa¸o de trabalho e algum dispositivo de entrada e sa´ e c ıda (arquivo em disco. b = 1. Figura 4. 4. // executa o comando ’more’ do Linux -->a = 1. impressora etc) aumenta a utiliza¸˜o do SCILAB visto tornar poss´ ca ıvel.2: Janela do comando x message.3. por exemplo. ca e -->diary(’diario’) // cria o arquivo diario -->a = 1. e co . Por exemplo.4. cujo nome ´ dado pela cadeia de ca a a e caracteres <nome do arquivo>. b = sqrt(%eps) a = 1.[’Sim’ ’Nao’]) apresenta a janela mostrada na Figura 4. Se for escolhida a op¸˜o Sim ent˜o a vari´vel ca a a resp receber´ o valor 1. como foi feito neste texto! o Para esta grava¸˜o basta usar o comando diary(<nome do arquivo>).’. a resp = 1. ’Usar Cholesky?’].2. b = 1. Di´rio a 59 -->resp = x_message([’A matriz e’’ simetrica.3 Di´rio a Todos os comandos solicitados pelo usu´rio e as respostas fornecidas pelo SCILAB (com exa cess˜o de gr´ficos) podem ser gravados em um arquivo ASCII para que possam ser impressos a a ou mesmo inclu´ ıdos em algum relat´rio. u e -->unix(’more diario’). a partir do qual a ca intera¸˜o SCILAB / usu´rio ser´ registrada no arquivo. b = sqrt(%eps) a = 1. A finaliza¸˜o do registro ´ feita por diary(0).

dat . // abre o arquivo dados. Por exemplo. co a -->[fid. Quando um arquivo ´ fechado. u Abre o arquivo para atualiza¸˜o (leitura e escrita) e se necess´rio ca a cria o arquivo.2.erro] = mopen(’dados.dat para escrita 4. remove o conte´ do do arquivo existente. anexando ao final do arquivo. Em caso de algum erro o valor de <erro> u a ser´ negativo. O escalar <erro> indica a ocorrˆncia de ıda a e algum erro.dat’. ele retornar´ o identificador de arquivo <idenarq> contendo um a n´ mero inteiro positivo e o valor de <erro> ser´ 0. Abre o arquivo para atualiza¸˜o (leitura e escrita). Cria e abre um arquivo novo ou abre um arquivo j´ existente para a atualiza¸˜o (leitura e escrita). cujo ca ca identificador associado a este arquivo seja <idenarq>.60 Cap´ ıtulo 4.<permiss~o>) A fun¸˜o mopen abre um arquivo. e -->mclose(1) ans = 0.4. O a a caractere b indica que o arquivo ´ bin´rio.2 Fechamento de arquivo A fun¸˜o mclose(<idenarq>) fecha o arquivo previamente aberto pela fun¸˜o mopen. ca Se <permiss~o> for omitida ent˜o ser´ assumido o valor ’r’.2: Atributos de arquivo.<erro>] = mopen(<nome do arquivo>.4. sendo sua sintaxe ca Deste modo. mas n˜o cria o ca a arquivo. O <idenarq> ´ usado com outras rotinas de entrada e sa´ para identificar a e ıda o arquivo no qual as opera¸˜es ser˜o realizadas. fid = 1. Por´m. Todavia. Os caracteres permitidos para <permiss~o> est˜o listados na Tabela 4. Abre o arquivo para escrita e caso necess´rio cria o arquivo. e a Tabela 4. Caso o comando mopen tenha a a a sucesso ao abrir o arquivo. a e associa¸˜o entre o identificador <idenarq> e o arquivo f´ ca ısico <nome do arquivo> ´ desfeita.’w’) erro = 0.1 Abertura de arquivo a [<idenarq>. // fecha o arquivo dados. Comandos de entrada e sa´ ıda 4. <permiss~o> a ’r’ ou ’rb’ ’r+’ ou ’r+b’ ’w’ ou ’wb’ ’w+’ ou ’w+b’ ’a’ ou ’ab’ ’a+’ ou ’a+b’ Especifica¸˜o ca Abre o arquivo para leitura. u Cria e abre um arquivo novo ou abre um arquivo j´ existente para a escrita. a e remove o conte´ do do arquivo existente. a fun¸˜o mopen associa o nome externo do arquivo dado pela cadeia de caracca teres <nome do arquivo> ` unidade <idenarq> que ser´ utilizada nos comandos de entrada a a e sa´ no modo especificado pela <permiss~o>. anexando ao final do arquivo.

e.10f%15. f.dat’.2018965180 1.2f%15.0954451150 0.3416407865 0.4.4 1.2 1.3416408 0.2465970 1.1.4 Leitura em arquivo [<tamanho>. 1. exp(-x)]’ // gera a tabela tab tab = 1. Leitura e grava¸˜o de dados ca 61 4.erro] = mopen(’sqrtexp.4. // executa o comando ’more’ do Linux 1. sendo sua sintaxe ca onde <idenarq> ´ o identificador associado ao arquivo no qual est´ sendo feita a leitura e a dos dados escritos no formato especificado na cadeia de caracteres <formato> e o parˆmetro a .4. 0.3678794 1. No exemplo abaixo.183216 0.3 Grava¸˜o em arquivo ca mfprintf(<idenarq>.8 1.6 1. Estas especifica¸˜es de convers˜o s˜o delimitadas pelo caracter % e uma das a co a a letras i.3011942119 1.2:2. g ou s.0954451 0.dat para escrita erro = 0.2018965 1. sqrt(x). √ x e e−x para 1 ≤ x ≤ 2 ´ gerada e gravada e -->x = 1:0.40 1.<vari´veis>) a A fun¸˜o mfprintf grava dados formatados em um arquivo e sua sintaxe ´ ca e onde a cadeia de caracteres <formato> cont´m caracteres alfanum´ricos e/ou especifica¸˜es e e co de convers˜o para gravar no arquivo com identificador associado <idenarq> a lista contendo a <vari´veis>.2649110641 0. fid = 1.1832159566 0.1652989 2.1353353 -->[fid.’w’) // abre o arquivo sqrtexp.2465969639 1. // define o vetor x -->tab = [x.dat’).60 1.<idenarq>.<vari´veis>] = mfscanf(<num>.<formato>) a A fun¸˜o mfscanf efetua a leitura de dados formatados em um arquivo.10f\n’.00 1.00 1.0000000000 0.4.dat ´.1353352832 4.’%5.2649111 0. -->mfprintf(fid.20 1.4142135624 0. uma tabela contendo x.3011942 1.<formato>. de acordo com a Tabela 4.3678794412 1.80 1. 1. O conte´ do do arquivo sqrtexp.1652988882 2. u e -->unix(’more sqrtexp.4142136 0. no arquivo sqrtexp.tab) // escreve tabela no arquivo -->mclose(fid) // fecha o arquivo ans = 0.dat.

dat’. Os dados s˜o conu e a vertidos segundo a cadeia de caracteres <formato> e atribu´ ıdos ` lista <vari´veis>.’%5f%15f%15f’) // leitura de 2 linhas em 1 matriz matriz = 1.2465970 1.fid.6 1.0954452 0.fid. Comandos de entrada e sa´ ıda opcional <num> especifica o n´ mero de vezes que o formato ´ usado. -->[n.1.<idenarq>.fid.’%5f%15f%15f’) // leitura de 1 linha em 3 variaveis c = 0. A fun¸˜o meof(<idenarq>) faz esta verifica¸˜o no arquivo de identificador <idenarq>. a ca a e o acesso a um especificada a ’set’). ou da = ’end’).’r’) // abre arquivo para leitura fid = 1. A nova posi¸˜o ´ ca e partir da distˆncia dada pelo <n´mero> de bytes do in´ (se <posi¸~o> = a u ıcio ca posi¸˜o atual (se <posi¸~o> = ’cur’) ou do fim de arquivo (se <posi¸~o> ca ca ca o parˆmetro <posi¸~o> n˜o for especificado ´ assumido o valor ’set’. -->[n.c] = mfscanf(1. 1. cujo identificador seja <idenarq>. n = 3.a. a = 1.4 1. A vari´vel <tamanho> retorna o co a a a n´ mero de elementos que foram lidos do arquivo com sucesso. -->vetor = mfscanf(1.4 1.2018965 1. -->meof(fid) // verifica se fim de arquivo ans = 0.3416408 0.2649111 0.2 1.183216 0.2649111 0.3011942 -->matriz = mfscanf(2. caso contr´rio 0 ser´ retornado.3678795 b = 1.2018965 A fun¸˜o mseek(<n´mero>. ca ca Se o ultimo registro j´ foi lido ent˜o ser´ retornado o valor 1.’%5f%15f%15f’) // leitura das 6 linhas em 1 matriz matriz = 1.4142135 0.8 1. ´ a a a a a Continuando o exemplo acima. As a a especifica¸˜es de convers˜o s˜o mostradas na Tabela 4. u -->fid = mopen(’sqrtexp.m] = mfscanf(1.3011942 1.6 1.<posi¸~o>) ´ usada para posicionar ca u ca e registro do arquivo.’%5f%15f%15f’) // leitura de 1 linha em 1 vetor vetor = 1.1353353 Durante o processo de leitura ´ importante verificar se o ultimo registro do arquivo j´ foi e ´ a lido.1652989 2.b.183216 0. 1.fid) // posiciona leitura para o inicio do arquivo -->matriz = mfscanf(6. Se -->mseek(0.2465970 1.3678795 1.’%5f%15f%15f’) // leitura de 1 linha em 1 variavel .2 1.fid. 0.62 Cap´ ıtulo 4.0954452 0.fid.

5.5. who.y). Explicar a diferen¸a de d´ c ıgitos entre a vari´vel tab e o conte´ do do arquivo sqrtexp. a. 4.4. who.a. 4. e = c ca a exp(10). x.1 ca Verificar as diferen¸as entre os formatos de exibi¸˜o para as vari´veis a = sqrt(2).x. 4. format(15.y). who. Exerc´ ıcios 63 m n = [] = . -->mclose(fid) // fecha o arquivo ans = 0.3. 4. . y. load (’esptrab’). e. 4. clear. 4. who. 4. 4.2. load (’dados’).e). clear. -->meof(fid) // verifica se fim de arquivo ans = 1. 4. mprintf(’%5. who. ca Se¸˜o 4.9.1f\n’. disp(M). whos.x) e mprintf(’%5. y = x’ e M = rand(3. a.3). 4. 4.1f\n’.2 ca Observar os resultados dos comandos para controle do espa¸o de trabalho utilizando as c vari´veis dos Exerc´ a ıcios 4. x = 1:10.5f %12.1. mprintf(’%10.5.10.7.4. save (’dados’).’e’). M. x.1.1–4. disp(a). save (’esptrab’.3e\n’.8.5 Exerc´ ıcios Se¸˜o 4.3.4.dat a u na mostrado Se¸˜o 4.6.

b = log10(a).64 Cap´ ıtulo 4.14.dat e observar o resultado. diary(0). 4. a = 4.15. u Se¸˜o 4.3 ca Entre com os comandos abaixo.20. Comandos de entrada e sa´ ıda Se¸˜o 4. ´ . 4.dat e verificar ´ o seu conte´ do. Fechar o arquivo seno.17. sen(x). 4. Abrir o arquivo seno.16 e verificar o seu conte´ do.dat para leitura e ler a primeira linha. ıcio u 4.dat. 4. sen(π + 1) na ultima linha do arquivo seno. Verificar o conte´ do do arquivo meudiario.12.dat gravado no Exerc´ 4. 4. diary(’meudiario’).19.4 ca 4. Gravar os valores -1 e -2 na ultima linha de seno.18.16. 4. u 4. 4. Acrescentar o valor π + 1. Gerar uma tabela com 10 linhas de x.11. 0 ≤ x ≤ π/2 e grav´-la no arquivo a seno.13.

<modo>) onde a cadeia de caracteres <arquivo> determina o nome do arquivo (incluido o caminho) com o programa a ser executado e o escalar opcional <modo> especifica como ser´ a execu¸˜o. o o e uma diagonal e outra triangular superior. o SCILAB permite. a ca de acordo com a Tabela 5. que seja executada uma seq¨ˆncia de comandos escrita ca ue em um arquivo.sci para gerar uma matriz com elementos aleat´rios entre −100 e 100 e decompˆ-la na soma de trˆs matrizes: uma triangular inferior. Seja o programa escrito no arquivo decsomat.Cap´ ıtulo 5 Linguagem de programa¸˜o ca Nos cap´ ıtulos anteriores foram descritos os elementos fundamentais do SCILAB. Por esta raz˜o este tipo de arquivo ´ chamado de roteiro (script). estruturas condicionais e estruturas de repeti¸˜o. 65 . tais como.1. Neste cap´ ca ıtulo ser˜o abordadas algumas a estruturas de programa¸˜o que tornar˜o poss´ desenvolver programas e fun¸˜es escritos ca a ıvel co em SCILAB.1 Programa¸˜o ca Al´m de poder entrar com cada comando de uma vez. como qualquer e outra linguagem de programa¸˜o. Ser˜o a e a apresentados dois tipos de roteiros: programa e fun¸˜o. ca 5. cuja sintaxe ´ e exec(<arquivo>.1. ca 5. os quais possibilitam sua utiliza¸˜o em um modo interativo.1 Programa Um arquivo contendo um programa ´ criado usando um editor de texto qualquer e para e executar esse programa utiliza-se o comando exec.

57. Ordem da matriz: -->3 -->A = fix(200*(rand(n. Linguagem de programa¸˜o ca Tabela 5. // matriz triangular superior com diagonal nula A. o prompt --> ´ exibido.1) -->// editado no arquivo decsomat.sci // programa decomposicao_matriz // Objetivo: decompor uma matriz aleatoria na soma de tres matrizes: // uma triangular inferior. . D. // gera matriz com elementos aleatorios D = diag(diag(A)). . . 25. ca <modo> 0 -1 1 2 3 4 7 Descri¸˜o ca exibe resultados.66 Cap´ ıtulo 5.n)-0.sci’. // matriz triangular inferior com diagonal nula -->U = triu(A) . 0.D. 33. // matriz triangular superior com diagonal nula -->A.1: Modos de execu¸˜o do comando exec. 0. // gera matriz com elementos aleatorios -->D = diag(diag(A)).D. p´ra antes de cada prompt e continua ap´s um Enter. D. uma diagonal e outra triangular superior n = input(’Ordem da matriz: ’). U Executando com <modo> = 1 para ecoar cada linha de comando. -->exec(’decsomat.33. nada ´ exibido. 25. L. // obtem matriz diagonal L = tril(A) . 51.D. e ecoa cada linha de comando e exibe o prompt -->. 37.99.n))). . 0. a o modos 3 e 4 juntos.99. 0. // matriz triangular inferior com diagonal nula U = triu(A) . A = fix(200*(rand(n.5*ones(n. uma diagonal e outra triangular superior -->n = input(’Ordem da matriz: ’).5*ones(n.n)-0. e ecoa cada linha de comando.57. 0. 69. U A = .D.n))).sci -->// programa decomposicao_matriz -->// Objetivo: decompor uma matriz aleatoria na soma de tres matrizes: -->// uma triangular inferior. L. 0. n˜o ecoa linha de comando e n˜o exibe a a o prompt --> (valor default). 75. L = 0. // editado no arquivo decsomat. 0. 51. // obtem matriz diagonal -->L = tril(A) . D = .

C) calcula as duas raizes da parabola // P(X) = A*X^2 + B*X + C = 0 // retornando-as no vetor RAIZES.1. 0. No exemplo acima. Os <comandos> a e especificam o conte´ do da fun¸˜o e a palavra-chave endfunction o seu final. Qualquer ca e comando digitado entre o prompt e o Enter ser´ ignorado. 0. Sua sintaxe ´ e function [<par^metros sa´da>] = <nome fun¸~o> (<par^metros entrada>) a ı ca a <comandos> endfunction sendo function uma palavra-chave que determina o in´ da fun¸˜o. 0.sci contendo uma fun¸˜o para calcular as duas ra´ ca ızes de uma par´bola. 69. <nome fun¸~o> ´ uma cadeia de caracteres que especifica o nome da fun¸˜o e <par^metros entrada> ´ um conjunto de vari´veis com os argumentos fornecidos ca a e a ` fun¸˜o (separados por v´ a ca ırgula e delimitados por ( e )). . . Programa¸˜o ca 67 U 0.33.c) // Objetivo: calcular as duas raizes de uma parabola // PARABOLA(A. Um programa tem acesso `s vari´veis no espa¸o de trabalho e as vari´veis criadas por ele a a c a far˜o parte do espa¸o de trabalho. seja o arquivo parabola. 37.2 Subprograma function Um outro tipo de arquivo de roteiro ´ usado para o pr´prio usu´rio criar novas fun¸˜es para e o a co o SCILAB. a -->a = 1 // comando qualquer a = 1. = 0. 0. <par^metros sa´da> ´ ıcio ca a ı e um conjunto de vari´veis contendo os argumentos gerados pela fun¸˜o (separados por v´ a ca ırgula ca e e delimitados por [ e ]). 0. c O comando halt interrompe a execu¸˜o do SCILAB at´ que se tecle Enter. 0. as matrizes A. 0. -->halt // causa a interrupcao do SCILAB halt-->b = 2 // atribui o valor 2 a variavel b -->b // a atribuicao acima nao foi efetuada !--error 4 undefined variable : b 5. delta = sqrt(b^2-4*a*c).B. Os <par^metros entrada> s˜o a a opcionais e mesmo no caso de sua omiss˜o os parˆnteses devem ser mantidos. u ca Por exemplo.b.5.1. a function raizes = parabola(a. 0. L e U foram criadas a c no espa¸o de trabalho. 33. D. 75.

Toler.1.EXIBE) calcula a raiz de uma // equacao F(X)=0 contida no intervalo [A B] com tolerancia TOLER // e com no maximo ITERMAX iteracoes.ITERMAX. Para calcular as ra´ de p(x) = 3x2 − 2x + 1 faz-se. Por sua vez.-2. ca function [Raiz.3333333 . utilizando o robusto e eficiente m´todo ca e p´gaso. elas n˜o tem acesso `s a a a a a vari´veis do espa¸o de trabalho.4714045i 0.b. o qual ´ e e ca a e descrito na Se¸˜o 3. ou seja.sci’. // // PEGASO(FUNCAO.Iter] = pegaso(funcao.1.<n´mero par^metros entrada>] = argn() u a ı u a a ı Ao evocar argn dentro da function s˜o fornecidos o <n´mero par^metros sa´da> e o a u a e <n´mero par^metros entrada>. raizes(2) = (-b . ızes -->r = parabola(3.-1) // function carregada do arquivo para o espaco de trabalho -->exists(’parabola’) // verifica que parabola agora existe ans = 1. os <par^metros sa´da> s˜o criados no espa¸o a c a ı a c de trabalho.3333333 + 0. em uma function a lista dos a a a <par^metros entrada> e as vari´veis internas s˜o locais.sci calcula o zero pertence ao intervalo [a b] da fun¸˜o definida na cadeia de caracteres funcao. -->exec(’parabola. a vari´vel raizes ´ criada no espa¸o a e c de trabalho do SCILAB. endfunction O comando exec.TOLER.B. O segundo argumento ´ opcional. Por exemplo. ´ E possivel chamar uma function com n´ meros diferentes de parˆmetros de entrada ou de u a sa´ do que aqueles definidos no arquivo que a cont´m.Exibe) // Objetivo: Calcular raiz de equacao pelo metodo pegaso.A. cuja ıda e e ca sintaxe ´ e [<n´mero par^metros sa´da>. Isto ´ feito pela fun¸˜o argn.a.68 Cap´ ıtulo 5. No caso da function parabola acima. ´ utilizado para que as function’s editadas ca e em um dado arquivo passem a fazer parte da biblioteca do SCILAB para uso posterior.Erro. Nesta function ´ utilizado o comando eval para avalia¸˜o de express˜o.1) r = 0. Linguagem de programa¸˜o ca raizes(1) = (-b + delta ) / (2*a). usando o metodo pegaso.4714045i Ao contr´rio do programa no qual as vari´veis s˜o globais.0.IterMax. -->exists(’parabola’) // verifica que parabola nao existe ans = 0. apresentado na Se¸˜o 5. u A function pegaso escrita no arquivo pegaso.4. .delta ) / (2*a).

end if nargent < 5. while 1 k = k + 1. Fa = Fb.DeltaX).5. // EXIBE especifica se os resultados intermediarios serao // mostrados. else Fa = Fa * Fb / (Fb + Fx).5e%14. end if nargent < 4. if nargsai > 1. error(’Numero de argumentos insuficientes’). Iter = k. end b = x.1.a. x = b. ca a ca . Mais de trˆs argumentos de sa´ causam a u co e ıda exibi¸˜o de uma mensagem de erro e a n˜o execu¸˜o da function pegaso. Fx = Fb. Exibe = 0. // FUNCAO.a). x = x + DeltaX. end if ((abs(DeltaX) < Toler & abs(Fx) < Toler) | k >= IterMax). Toler = 1e-10.5f%11. end Raiz = x.5f%11. ca ca Os argumentos funcao.nargent] = argn() // numero de argumentos de saida e de entrada if nargent < 3.x. A e B sao necessarios enquanto que TOLER. IterMax (n´ mero m´ximo de itera¸˜es) e Exibe (exibe resultados intermedi´rios) u a co a s˜o opcionais. if Exibe ~= 0 disp(’ Calculo de raiz de equacao pelo metodo pegaso’) disp(’iter a b x Fx delta_x’) end k = 0. Fb = eval(funcao).5e\n’. Se forem especificados mais de seis argumentos de sa´ haver´ a e ıda a exibi¸˜o de uma mensagem de erro e a interrup¸˜o da function.Fx. Programa¸˜o ca 69 // sendo a funcao F(X) dada na cadeia de caracteres FUNCAO. if Exibe ~= 0 mprintf(’%3i%11. Se forem trˆs argumentos de sa´ ent˜o ser˜o retornados ca a e ıda a a Raiz. end if nargsai > 2. a e b devem ser fornecidos sen˜o uma mensagem de erro ser´ exibida a a e a execu¸˜o da function interrompida. end endfunction O comando erro(<mensagem>) exibe a cadeia de caracteres <mensagem> e interrompe a execu¸˜o de um programa ou fun¸˜o. caso n˜o sejam inclu´ a a ıdos na lista de argumentos de entrada ser˜o atribu´ a ıdos valores pr´-definidos. os argumentos Toler (tolerˆncia da ca a raiz). DeltaX = -Fx / (Fb .5f%14.k. end if nargent < 6. Fx = eval(funcao). end x = a. Se forem dois argumentos ent˜o al´m da Raiz ser´ retornado a ca a a e a condi¸˜o de erro na vari´vel Erro. IterMax = 100. x = b.b. // [nargsai. Erro = abs(DeltaX) >= Toler | abs(Fx) >= Toler. ca ca Se nenhum ou apenas um argumento de sa´ for especificado ent˜o ser´ retornado a raiz da ıda a a equa¸˜o na vari´vel Raiz. break. Erro e o n´ mero de itera¸˜es Iter. ITERMAX e // EXIBE terao valores pre-definidos caso nao sejam fornecidos. Fa = eval(funcao). Fb = Fx. O: nao exibe e 1: exibe. end if Fx*Fb < 0 a = b. No entanto.Fa) * (b .

60038 1. A declara¸˜o e a ca global <lista de vari´veis> a faz com que as vari´veis especificadas na <lista de vari´veis>.10.0. a condi¸˜o de erro e o n´ mero de itera¸oes. com no m´ximo 10 itera¸˜es.52552 1.2.68045 1.6003769 Por sua vez.68045 -4.83307e-01 -1. a c No entanto. faz-se a e ca -->[r. s´ podem ser refea a a o renciadas internamente. n˜o listando os resultados a a co a intermedi´rios e al´m disto retornado somente a raiz e a condi¸˜o de erro. n˜o sendo reconhecidas pelo espa¸o de trabalho e outras function’s.2) e = F r = 1. ou seja. Por exemplo.e. com tolerˆncia ǫ = 10−1 .00000 0.12995e-01 3 2.54647e-02 7.99219 1. ca .1e-1.6033703 Conforme j´ mencionado.00000 0. um outro modo de trocar informa¸˜es entre o espa¸o e co c de trabalho e as functions’s ´ pelo uso de vari´veis globais. al´m do uso de argumentos.52080e+00 2 2. e = F r = 1.47920 8.88254e-01 4 0.0.52552 3. tolerˆncia ǫ = 10−10 . listando os resultados intermedi´rios e a a co a retornado a raiz.00000 2.54933e-01 5 1.00000 0.99219 1. endfunction A sua execu¸˜o fornece.0) -->[r.68045 1.70 Cap´ ıtulo 5.41128e+00 5. seja a fun¸˜o no arquivo soma diagonal. function somadiag = soma_diagonal // Objetivo: // calcular a soma da diagonal do produto das matrizes A*B do espaco de trabalho global A B somadiag = sum(diag(A*B)). as vari´veis de uma function s˜o locais. a a tornem-se globais e portanto esta declara¸˜o deve aparecer no programa e nas function’s ca de interesse.72828e-01 -1.1) Calculo de raiz de equacao pelo metodo pegaso iter a b x Fx delta_x 1 0.09987e-01 6. m´ximo de 100 itera¸˜es.99219 1. ca u c˜ -->exec(’pegaso.47920 0. calculando a mesma raiz com os argumentos de entrada opcionais previamente atribu´ ıdos.48614e-02 i = 5.sci para calcular a ca soma da diagonal da matriz resultante do produto das matrizes A e B definidas no espa¸o de c trabalho. ou seja.i] = pegaso(’cos(x^2-1)*sqrt(x+1)’.e] = pegaso(’cos(x^2-1)*sqrt(x+1)’. separadas por branco. Linguagem de programa¸˜o ca √ Para calcular a raiz de f (x) = cos(x2 − 1) x + 1 = 0 pertencente ao intervalo [0 2].sci’.

a utiliza¸˜o de o o ca vari´veis globais deve ser evitada. [<comandos>]) ı ca ı e ca onde <param sa´da> ´ uma lista contendo os argumentos gerados pela fun¸˜o (separados por v´ ırgula e delimitados por [ e ]).f] = return(a.sci’.1. -->exec(’consistencia..0) -->A = [1 2. 3 4].. J´ o comando a a [<varesp 1>. seja a fun¸˜o para multiplicar e dividir dois n´ meros. endfunction O seu uso resulta em. Por exemplo. 7 8].3) // uso com argumentos invalidos x = i -->e..<varloc n>) faz com que as vari´veis locais <varloc i> sejam copiadas no espa¸o de trabalho com os a c ca correspondentes nomes <varesp i>..5.b) end y = log10(a) + sqrt(1-b). Por estas raz˜es. a O comando return colocado dentro de uma function causa um retorno normal para o comando seguinte `quele que chamou a function..0) // carrega a function do arquivo -->x = consiste(100.. A matriz de caracteres <comandos> especifica o corpo da fun¸˜o. -->somdg = soma_diagonal() somdg = 69. Programa¸˜o ca 71 -->exec(’soma_diagonal. <nome fun¸~o> ´ uma cadeia de caracteres que especifica ca e e a ca o nome da fun¸˜o e <param entrada> ´ uma lista com os argumentos fornecidos ` fun¸˜o ca (separados por v´ ırgula e delimitados por ( e )). al´m a ca e de tornar os m´dulos do programa menos independentes.sci.<varesp n>] = return (<varloc 1>.. B = [5 6. -->x = consiste(100. ca ca u ..f // verifica que as variaveis estao no espaco de trabalho e = 100.sci’. ca e ca deff(’[<param sa´da>] = <nome fun¸~o> (<param entrada>)’. f = 3.b) // Objetivo: // exemplo de consistencia de dados if a <= 0 | b > 1 y = %i [e. function y = consiste(a. Seja a fun¸˜o descrita no arquivo consistencia.-3) // uso da function com argumentos validos x = 4. O uso de vari´veis globais dificulta o entedimento e a modifica¸˜o das function’s. Uma fun¸˜o pode tamb´m ser definida na janela de comando pela fun¸˜o deff.

001 0.72 Cap´ ıtulo 5. o valor a ıdo de x for maior que 0. o logaritmo decimal de x ser´ atribu´ a LogDec se. // programa logaritmo_decimal // Objetivo: calcular logaritmo decimal x = input(’Entre com x: ’). Linguagem de programa¸˜o ca -->deff(’[mul.3.5 multiplica = 6. ca e a o 5.2 Estruturas condicionais Uma estrutura condicional permite a escolha do grupo de comandos a serem executados quando uma dada condi¸˜o for satisfeita ou n˜o. Esta condi¸˜o ´ representada por uma express˜o l´gica. 5.[’mul = a * b’. ca -->exec(’logaritmo_decimal.-1) Entre com x: -->0. if x > 0 LogDec = log10(x).sci.2) // uso da funcao operacao divide = 1. Neste exemplo.’div = a / b’]) -->[multiplica.1 Estrutura if-end if <condi¸~o> ca <comandos> end A estrutura condicional mais simples do SCILAB ´ e Se o resultado da express˜o l´gica <condi¸~o> for T (verdadeiro) ent˜o a lista <comandos> a o ca a ser´ executada.2. disp([x LogDec]). Se o resultado for F (falso) ent˜o <comandos> n˜o ser˜o executados. possibilitando desta forma alterar o fluxo ca a natural de comandos.2. Cona a a a sidere o programa logaritmo decimal.b)’. end e a execu¸˜o para x = 0. e somente se. uma outra estrutura condicional deve ser usada . // define funcao 5.001.div] = operacao(a.001 .sci’. divide] = operacao(3.2 Estrutura if-else-end if <condi¸~o> ca <comandos 1> else No caso de haver duas alternativas.

5. a ou seja. else fx = -2 * x. . if x >= 0 fx = 2 * x. . j´ a lista a ca a a ca co <comandos 2> ser´ executada se <condi¸~o 2> for T e assim para as outras condi¸˜es. end disp([x fx]). Seja o programa modulo.2.-1) Entre com x: -->-3 . a estrutura if-elseif-end ser´ abandonada. se x for negativo ent˜o fx ser´ igual a -2*x.sci utiliza a fun¸˜o modular f (x) = |2x|. else <comandos n> end Quando houver mais de duas alternativas. o controle do processamento ser´ transferido para o comando imediatamente ap´s a o o end. 6.5.sci para calcular o valor absoluto de um n´ mero real ou complexo. Estruturas condicionais <comandos 2> end 73 Se o resultado da express˜o l´gica <condi¸~o> for T (verdadeiro) ent˜o somente a lista a o ca a contendo <comandos 1> ser´ executada.3 Estrutura if-elseif-end if <condi¸~o 1> ca <comandos 1> elseif <condi¸~o 2> ca <comandos 2> elseif <condi¸~o 3> ca <comandos 3> . -->exec(’funcao_modular.sci’. a estrutura if-else-end do SCILAB torna-se A lista <comandos 1> ser´ executada se <condi¸~o 1> for igual a T (verdadeiro). Quando a <condi¸~o i> co a a ca for satisfeita e os <comandos i> executados.3. Executando com x = -3 produz. Se x for positivo ou nulo ent˜o ser´ atribu´ ` vari´vel fx o resultado a a ıdo a a de 2*x. u . O programa funcao modular. a a // programa funcao_modular // Objetivo: avaliar uma funcao modular x = input(’Entre com x: ’).2. todavia. Se nenhuma das condi¸˜es for T ent˜o <comandos n> ser´ executada. Se <condi¸~o> for F (falso) ent˜o ser´ a lista a ca a a ´ ca <comando 2> a unica a ser executada.

else b = a.74 Cap´ ıtulo 5. Considere o programa posicao poltrona.4) case 0 then .4 Estrutura select-case-end select <express~o> a case <express~o 1> a case <express~o 2> a case <express~o 3> a . . Deste modo foi executado o primeiro comando para o qual a condi¸˜o imag(a) ~= 0 foi ca satisfeita. Para a = 3 . Cabe ressaltar que somente uma lista de comandos ser´ executada. case <express~o n> a else <comandos e> end Esta estrutura ´ similar a if-elseif-end e sua sixtaxe ´ e e then <comandos 1> then <comandos 2> then <comandos 3> then <comandos n> A lista <comandos 1> ser´ executada se <express~o> for igual a <express~o 1>.sci para determinar a posi¸˜o de uma poltrona ca para quem entra em um ˆnibus.4*%i.^2+imag(a). A lista a a a <comandos 2> ser´ executada se <express~o> for igual a <express~o 2> e assim para as a a a outras express˜es. Linguagem de programa¸˜o ca // programa modulo // Objetivo: calcular o valor absoluto de um numero real ou complexo a = input(’Entre com a: ’). ´ e 5. select modulo(poltrona. na estrutura if-elseif-end uma unica lista de comandos ´ executada. end disp([a b]).-1) Entre com a: -->3-4*%i 3. elseif a < 0 b = -a. .sci’. . Se <express~o> n˜o for igual a nenhuma das express˜es anteriores ent˜o o a a o a a a <comandos e> ser´ executada. -->exec(’modulo. o // programa posicao_poltrona // Objetivo: determinar a posicao de uma poltrona em onibus poltrona = input(’Entre com o numero da poltrona: ’). Assim. fila = fix(poltrona/4) + 1.i 5. if imag(a) ~= 0 b = sqrt(real(a).^2).4.2.

posicao) else posicao = ’nao existe’ mprintf(’poltrona%3i %s\n’.3.posicao) else posicao = ’nao existe’ mprintf(’poltrona%3i %s\n’.poltrona.sci’.posicao) case 3 then posicao = ’esquerda / janela’ mprintf(’poltrona%3i na fila%3i ’’a %s\n’. 42 e −5 s˜o co u a -->exec(’posicao_poltrona.poltrona.posicao) case 2 then posicao = ’direita / corredor’ mprintf(’poltrona%3i na fila%3i ’’a %s\n’. posicao = ’esquerda / corredor’ mprintf(’poltrona%3i na fila%3i ’’a %s\n’.poltrona.fila. Sua sintaxe ´ e for <vari´vel>=<arranjo> a <comandos> .fila. Estruturas de repeti¸˜o ca 75 if poltrona > 0 fila = fila .sci’.1. com as quais ´ poss´ ca e ıvel construir uma terceira estrutura com interrup¸˜o no interior.3 Estruturas de repeti¸˜o ca As estruturas de repeti¸˜o fazem com que uma seq¨ˆncia de comandos seja executada reca ue petidamente at´ que uma dada condi¸˜o de interrup¸˜o seja satisfeita.fila.sci’.5.poltrona.-1) Entre com o numero da poltrona: -->42 poltrona 42 na fila 11 ’a direita / corredor -->exec(’posicao_poltrona. ca 5.fila. as estruturas for-end e a while-end. as posi¸˜es das poltronas de n´ meros 15.poltrona.3.1 Estrutura for-end A estrutura for-end permite que um grupo de comandos seja repetido um n´ mero deteru minado de vezes.poltrona.-1) Entre com o numero da poltrona: -->-5 poltrona -5 nao existe 5.posicao) end case 1 then posicao = ’direita / janela’ mprintf(’poltrona%3i na fila%3i ’’a %s\n’. O SCILAB possui e ca ca duas estruturas de repeti¸˜o.posicao) end Por exemplo.-1) Entre com o numero da poltrona: -->15 poltrona 15 na fila 4 ’a esquerda / janela -->exec(’posicao_poltrona.

colunas e diagonal de uma matriz.1). Soma_Colunas = zeros(1.ncol). Assim. for i = 1:nlin Soma_Diagonal = Soma_Diagonal + A(i.sci mostra que a soma dos n primeiros n´ meros ´ u ımpares ´ igual ao quadrado de n. [nlin. // programa soma_matriz // Objetivo: calcular a soma dos elmentos das linhas. Soma_Colunas(j) = Soma_Colunas(j) + A(i.sci para calcular a soma dos elementos das linhas. Soma_Colunas. cuja soma ´ igual a 25.sci’. Soma_Linhas = zeros(nlin. Para n = 5 a vari´vel-de-controle i assume os valores 1 3 5 7 9. Soma = 0. a . O programa primeiros impares. end end A. tal que a soma dos elementos das linhas.j). colunas e diagonal de matriz A = input(’Entre com a matriz: ’). end disp([Soma n^2]) Quando executado para n = 5. Linguagem de programa¸˜o ca end onde <vari´vel> ´ a vari´vel-de-controle que assume todos os valores contidos no vetor a e a linha <arranjo>. considere o programa soma matriz. e // programa primeiros_impares // Objetivo: verificar propriedade dos numeros impares n = input(’Entre com n: ’). A vari´vel-de-controle n˜o pode ser redefinida dentro da a a estrutura for-end. -->exec(’primeiros_impares.ncol] = size(A). Para o quadrado m´gico de ordem 4.-1) Entre com n: -->5 25. for i = 1:2:2*n-1 Soma = Soma + i. 25. Soma_Linhas. a e Para mostrar que as estruturas for-end podem estar encadeadas. for j = 1:ncol Soma_Linhas(i) = Soma_Linhas(i) + A(i.i). das colunas e da diagonal sejam iguais.j). o n´ mero de repeti¸˜es da lista <comandos> ´ igual ao n´ mero u co e u de elementos no vetor <arranjo>. Soma_Diagonal = 0.76 Cap´ ıtulo 5. Soma_Diagonal Um quadrado m´gico de ordem n ´ uma matriz com elementos n˜o repetidos e com valores a e a 2 entre 1 e n .

9 7 6 12. 3. 11. 5. Epsilon = 1. O comando else a a ´ opcional. 8. 2. Soma_Diagonal = 34. 4.sci para determinar a precis˜o de um computador. Sua sintaxe ´ e while <condi¸~o> ca <comandos 1> [else <comandos 2>] end Enquanto a express˜o l´gica <condi¸~o> for T (verdadeira) a lista <comandos 1> ser´ repea o ca a tida. 1. 5 11 10 8. while 1 + Epsilon > 1 n = n + 1. Cumpre observar que o SCILAB possui comandos para determinar estes somat´rios de um o modo bem simples. Soma_Colunas = 34. 13. Epsilon = Epsilon / 2. 34. Soma_Linhas = 34. seja o programa precisao. repete um grupo de comandos um n´ mero a u indeterminado de vezes. 34. 14. 34. 6. end n. 15. 4 14 15 1] A = 16.5. ca 5.sci’.2 Estrutura while-end A estrutura while-end. 34. %eps Quando executado fornece -->exec(’precisao. Estruturas de repeti¸˜o ca 77 -->exec(’soma_matriz. 7. 34. Epsilon.0) Entre com a matriz: -->[16 2 3 13.3. 10. a // programa precisao // Objetivo: determinar a precisao de um computador n = 0. Quando ela for F (falsa) ent˜o a lista <comandos 2> ser´ executada. 12.3. pelo uso da fun¸˜o sum que fornece a soma dos elementos de uma matriz. 34. e Por exemplo. 9.0) n = .sci’. ao contr´rio da for-end.

ca c˜ e ıcio Em v´rias situa¸˜es em programa¸˜o se faz necess´rio interromper a execu¸˜o da repeti¸˜o a co ca a ca ca verificando a condi¸˜o no interior ou final da estrutura e n˜o somente no seu in´ ca a ıcio.110D-16 %eps = 2. Note que quando %eps for somado a 1 resulta em um n´ mero maior do que 1. o maior n´ mero que somado a 1 ´ e a a u e −53 igual a 1. Em repeti¸˜es aninhadas. a condi¸˜o de interrup¸ao ´ testada no in´ da estrutura. Epsilon = 1. O mesmo u n˜o ocorre com Epsilon. Contudo.sci para fornecer a aproxima¸˜o racional de um n´ mero positivo ca u com uma dada tolerˆncia. a a 5. o computador j´ n˜o consegue mais representar 1 + ǫ.78 Cap´ ıtulo 5. ou seja. Para computadores com aritm´tica IEEE ǫ = 2 .1 ans = 0.220D-16 Epsilon ´ a chamada precis˜o da m´quina ǫ.3 Estrutura com interrup¸˜o no interior ca A estrutura while-end permite que um grupo de comandos seja repetido um n´ mero indeu terminado de vezes. a . -->1 + %eps . ou seja. o ca co break interrompe a execu¸˜o apenas da estrutura mais interna. a ca ca Seja o programa racional.220D-16 -->1 + Epsilon . porque qualquer valor igual ou menor do que ele somado a 1 ser´ a a simplesmente 1. no entanto. Comparada com a vari´vel e a −52 especial %eps = 2 do SCILAB. Linguagem de programa¸˜o ca 53. O comando break interrompe a execu¸˜o de uma estrutura while-end ou for-end e transca fere a execu¸˜o para o comando imediatamente seguinte ao end. quando a <condi¸~o> do if for satisfeita o comando e ca break ser´ executado causando a interrup¸˜o da repeti¸˜o while-end. pois a condi¸˜o do while ca ´ sempre T (verdadeira). uma repeti¸˜o com ca ca condi¸˜o de interrup¸˜o no interior pode ter a forma ca ca while %T <comandos 1> if <condi¸~o> ca break end <comandos 2> end A estrutura while-end ´ executada indefinidamente a princ´ e ıpio.3.1 ans = 2. Assim.

mesmo as vari´veis de uma fun¸˜o.2 o comando ca [<varesp 1>.<varloc n>) faz com que as vari´veis locais <varloc i> sejam copiadas no espa¸o de trabalho que evocou a c a a a pausa com os correspondentes nomes <varesp i>. function expressao = avalia(a) divide = a/10.4.1.5.. Depura¸˜o de programa ca 79 // programa racional // Objetivo: fornecer a aproximacao racional de um numero positivo com dada precisao while %T numero = input(’Entre com um numero > 0: ’).. Conforme c mencionado na Se¸˜o 5. 0.. E disponibilizado. ent˜o.tol). a ca Para voltar ao espa¸o de trabalho que evocou a pausa usa-se o comando return. 169. -1->. por exemplo..den] = rat(numero. No modo de pausa aparece ca ca ´ o s´ ımbolo do prompt indicando o n´ ıvel da pausa. [num.... Se o comando n˜o for usado ent˜o as vari´veis de n´ mais baixo est˜o protegidas e n˜o podem ser modificadas. 1.4142136 239. raiz = sqrt(a). disp([numero num den numero-num/den]) end Por exemplo.224D-10 Entre com um numero > 0: -->0 Ele lista continuamente a representa¸˜o racional de um n´mero fornecido enquanto este for ca u positivo. 66317. um novo espa¸o de trabalho no qual todas as vari´veis de n´ a c a ıvel mais baixo est˜o a acess´ ıveis..<varesp n>] = return (<varloc 1>.0000124 Entre com um numero > 0: -->%pi Entre com tolerancia: -->1e-10 3.4 Depura¸˜o de programa ca O comando pause interrompe a execu¸˜o de um programa e transfere o controle para o ca teclado.sci. logdec = log10(a) expressao = divide + raiz + logdec. endfunction . -->exec(’racional. if numero <= 0 break end tol = input(’Entre com tolerancia: ’).sci’.1415927 208341. Seja a fun¸˜o a ıvel a a ca no arquivo avalia. para √ 2 e π. quando em uma fun¸˜o ele interrompe a sua execu¸˜o.0) Entre com um numero > 0: -->sqrt(2) Entre com tolerancia: -->1e-5 1. 5.

-1->exists(’logdec’) // inexistencia da variavel logdec ans = 0. Escrever uma function para calcular a norma-∞ de um vetor. Se for a a c a colocado o comando pause. Neste caso a vari´vel local raiz est´ dispon´ no espa¸o de trabalho e logdec n˜o est´ a a ıvel c a a porque ela foi definida depois do pause. -->exists(’raiz’) // verifica a inexistencia da variavel local raiz ans = 0.sci’. maior = max(A) menor = min(A) Executar o programa acima para n = 5.3. todas as vari´veis definidas antes dele estar˜o dispon´ a a ıveis.-1) // carrega a funcao para o espaco de trabalho -->valor = avalia(100) // avalia a funcao valor = 22.80 Cap´ ıtulo 5. 5. Por exemplo.sci’. -->exec(’avalia.1. ca -->exec(’avalia.sci n = input(’Ordem da matriz: ’).5 Exerc´ ıcios Se¸˜o 5. Escrever uma function para calcular a norma-2 de um vetor. . 5.2.n). -1->return valor = 22. 5. se for colocado depois de raiz = sqrt(a). A vari´vel raiz n˜o existe no espa¸o de trabalho por se tratar de uma vari´vel local. Criar o arquivo almaxmin.-1) // carrega a funcao modificada Warning :redefining function: avalia -->valor = avalia(100) // avalia a funcao entrando no modo de pausa -1->raiz // existencia da variavel local raiz no novo espaco de trabalho ans = 10.1 ca 5. Linguagem de programa¸˜o ca e sua execu¸˜o. A = rand(n. 10 e 30.

.4.1 para n = 7. escrever uma function para calcular x tal que Ux = d:  u11 u12 u13 · · · u1n  u22 u23 · · · u2n   u33 · · · u3n   .   .2 para x = 10.2. 25 e 40 usando o exemplo da estrutura co select-case-end da Se¸˜o 5. dn xn x1 x2 x3 . . . .2 ca 5.3 ca 5.5.   5. Encontrar as posi¸˜es das poltronas 4. . Dada a matriz triangular inferior L = {lij } e o vetor c. . Achar o valor de b no exemplo de if-elseif-end da Se¸˜o 5.6.8.2.3.1 ca para x = 2? 5.11. ca 5.2.3 para a = -3.5.9.  l33 . Dada a matriz triangular superior U = {uij } e o vetor d. escrever uma function para calcular y tal que Ly = c:        l11 l21 l31 . . y1   y2   y  3  . cn  l22 l32 .       .  . .3 para a ca = -3+4*%i? 5. yn   c1 c2 c3 . ln1 ln2 ln3 · · · lnn       =        .12.2. Calcular a soma das linhas. Qual o valor de b no exemplo sobre a estrutura if-elseif-end da Se¸˜o 5. Encontrar o valor de fx no exemplo sobre if-else-end da Se¸˜o 5.10.7. Determinar o valor de Soma no exemplo sobre a estrutura for-end mostrada na Se¸˜o 5. ca Se¸˜o 5. unn Se¸˜o 5. ca 5. Qual o valor de LogDec no exemplo sobre a estrutura if-end mostrada na Se¸˜o 5. Exerc´ ıcios 81 5. .        d1   d2    d = 3   .2.   .5. . .  . ca 5. . .4. das colunas e da diagonal de uma matriz de Toeplitz de ordem 5.

2.82 Cap´ ıtulo 5. ca . Linguagem de programa¸˜o ca 5. Calcular a raiz de f (x) = sen(x)x + 4 = 0 que est´ no intervalo [1 5].13. Calcular a norma-2 do vetor x = [1e200 2e200 3e200] usando a function escrita no Exerc´ 5.15.2. utilizando a a function pegaso mostrada na Se¸˜o 5.14.1. Explicar como ´ feita a determina¸˜o da precis˜o de um computador. Qual a altera¸˜o a ser feita para que a fun¸˜o calcule corretamente? ıcio ca ca 5. e ca a 5.

<tipo de linha n>) A sintaxe da fun¸˜o plot ´ ca e a onde <x i> e <y i> s˜o vetores contendo as abscissas e ordenadas dos pontos a serem exibie dos. // funcao co-seno Para gerar um gr´fico de sen(x) em fun¸˜o de x basta.1.<y 1>. // funcao seno -->z = cos(x).1 Gr´ficos bidimensionais a Para gerar gr´ficos bidimensionais s˜o usadas as vers´teis fun¸˜es plot e fplot2d.Cap´ ıtulo 6 Gr´ficos a Uma das grandes virtudes do SCILAB ´ a facilidade que ele oferece para produzir gr´ficos e a de boa qualidade. a a a co 6.<x n>. respectivamente e <tipo de linha i> ´ uma cadeia de 1 a 4 caracteres que especifica a cor.<y n>. o estilo da linha e o marcador dos pontos dados... Neste cap´ ıtulo ser˜o vistos como gerar gr´ficos bi e tridimensionais e os a a modos de imprimi-los ou grav´-los em arquivos para que possam ser inclu´ a ıdos em textos.y) 83 .1. a ca -->plot(x. Os tipos de linha s˜o mostrados na a Tabela 6.1 Fun¸˜o plot ca plot(<x 1>.8.. // define as abscissas -->y = sin(x). 6. Considere os vetores -->x = linspace(-8.50).<tipo de linha 1>..

2 0.x.0 −8 −6 −4 −2 0 2 4 6 8 (a) f (x) = sen(x). (b) f (x) = sen(x) e g(x) = cos(x). Para produzir o grafico da Figura 6. ca S´ ımbolo r g b c m y k w Cor vermelho verde azul turquesa lil´s a amarelo preto branco S´ ımbolo -: -. x ’s’ ’d’ ^ v > < ’pentagram’ ’none’ Marcador mais c´ ırculo asterisco ponto cruz quadrado diamante triang.z.0 −8 −6 −4 −2 0 2 4 6 8 1.4 0. Estilo de linha linha s´lida o linha tracejada linha pontilhada linha de tra¸o e ponto c S´ ımbolo + o * .6 0.1(b) basta o comando -->plot(x.2 −0. co ca a .8 −1. esquerda pentagrama sem marca O gr´fico produzido ´ mostrado na Figura 6.1(a).8 −1.8 0.6 0. a ca O SCILAB oferece algumas fun¸˜es para identifica¸˜o dos gr´ficos. cima triang. Gr´ficos a Tabela 6.1: Gr´ficos produzidos pela fun¸˜o plot. baixo triang.y.4 −0.2 0.0 0.4 0. Tamb´m pode ser gerado um gr´fico um a e e a pouco mais complexo.’-*’. sen(x) e cos(x) em fun¸˜o de x com os valores de sen(x) em linha ca s´lida e os pontos dados sendo destacados com (*) e os de cos(x) em linha tracejada e com o (o). Figura 6. direita triang.1: Tipos de linha da fun¸˜o plot.6 −0.6 −0.84 Cap´ ıtulo 6.0 −0.0 −0.’--o’) 1.0 0.2 −0.8 0.4 −0.

y. a a a -->xtitle(’fun’+ascii(231)+ascii(245)+’es seno e co-seno’. O escalar inteiro <caixa> informa se ser´ dea a a senhada uma caixa em torno do <texto>.0 −0.2(a).8 −1.’eixo x’.10 da p´gina 43.<r´tulo z>) ı o 85 escreve a cadeia de caracteres <t´tulo> no cabe¸alho e a cadeia de caracteres <r´tulo i> ı c o a no i-´simo eixo do gr´fico. ca a .’eixo y’) -->xstring(4. como mostrado na Figura 6.6. Se ele for igual a 1 e <^ngulo> = 0 ent˜o a caixa a a ser´ desenhada.2 0. no sentido hor´rio.0 −0. Os trˆs argumentos <r´tulo i> s˜o opcionais. Figura 6. Os argumentos <^ngulo> e <caixa> s˜o opcionais.0 0.8 cos(x) funções seno e co−seno (a) T´ ıtulos e r´tulos.1.1.7.0.’cos(x)’) produzir˜o os t´ a ıtulos e r´tulos no gr´fico da Figura 6.<r´tulo x>.<caixa>) a escreve a cadeia de caracteres <texto> na posi¸˜o de coordenadas x.2 eixo y 0.<^ngulo>. o a Note que a fun¸˜o ascii foi usada para gerar os caracteres da l´ ca ıngua portuguesa mostrados na Tabela 3.2 −0.6 −0.2: Documenta¸˜o de gr´ficos.y com inclina¸˜o ca ca <^ngulo>.8 cos(x) 0.4 0. o Legendas e grade. em graus. e a e o Texto A fun¸˜o ca xstring(x.1(b).0 −8 −6 −4 −2 0 eixo x 2 4 6 8 eixo y 0.<r´tulo y>.8 −1. a funções seno e co−seno 1.4 −0.0 −8 −6 −4 −2 0 eixo x 2 4 6 8 cos(x) 1.6 0.2 −0. Assim os comandos.4 −0. Gr´ficos bidimensionais a T´ ıtulos e r´tulos o A fun¸˜o ca o o xtitle(<t´tulo>.6 sen(x) −0.4 0.6 0.<texto>.0 0.

ca a Grade A fun¸˜o xgrid(<estilo>) faz com que apare¸a uma grade no gr´fico produzido de acordo ca c a com a constante inteira <estilo>. nax e leg. A vari´vel l´gica ca a a o <caixa> indica se uma caixa ser´ ou n˜o desenhada em torno das legendas. com seus valores sendo ca e a dados por um vetor com elementos inteiros de tamanho igual ao n´ mero de curvas. A Figura 6. rect Define os limites das abscissas e ordenadas com os valores definidos por um vetor de quatro elementos (rect = [Xmin... Se style(i) for negativo ou nulo ent˜o a curva ´ esbo¸ada usando a a e c marcadores e abs(style(i)) define o tipo de marcador. <op¸~o n> = <valor n>.<caixa>) ca adiciona legendas ao esbo¸o da figura.<fun¸~o>. Os argumentos <posi¸~o> e <caixa> s˜o opcionais. Gr´ficos a Legenda A fun¸˜o ca legend([<texto 1>. style Esta op¸˜o ´ utilizada para definir como as curvas ser˜o desenhadas.2 Fun¸˜o fplot2d ca fplot2d(<abscissas>.. <fun¸~o> ´ o nome de uma e e ca e function externa e <argumentos> ´ um conjunto opcional que define o estilo do gr´fico na e a forma <op¸~o 1> = <valor 1>.<argumentos>) ca A fun¸˜o fplot2d ´ utilizada para esbo¸ar gr´fico de fun¸˜o no R2 .. 4: canto inferior direito e 5: a legenda ´ colocada usando o mouse..2(b) mostra o efeito dos comandos.. O argumento <posi¸~o> especifica onde as legendas ser˜o colocadas. Xmax. . -->legend([’sen(x)’. A caixa de legendas move-se com e o mouse e assim que estiver na posi¸˜o desejada pressiona-se um bot˜o.<posi¸~o>.86 Cap´ ıtulo 6.. 3: canto inferior esquerdo.’cos(x)’]. Ymin. 1: canto o ca a superior direito (default). usando as cadeias de caracteres <texto i> como c r´tulos. axesflag. O argumento <op¸~o i> ca ca ca pode ser style. que define a forma e a cor da grade. Ymax]). rect..5) -->xgrid(1) 6.1. 2: canto superior esquerdo. logflag.<texto n>]. frameflag. sendo o valor a a default igual a %T. As abscissas estar˜o entre os limites Xmin a e Xmax e as ordenadas entre Ymin e Ymax. Se u style(i) for positivo a linha ent˜o ´ desenhada como uma linha plana e o ´ a e ındice define qual cor ser´ usada. sendo sua sintaxe ca e c a ca onde <abscissas> ´ um vetor num´rico contendo as abscissas.

5: dados pela op¸˜o rect. 0: escala default (sem c´lculos). a <Ny>]). mas aumentados para obter uma escala isom´trica. por´m aumentados para obter ca e uma escala isom´trica. 2: gr´fico contornado por uma caixa sem marcadores. 3: eixos desenhados com o a eixo de ordenadas mostrado ` direita. 1: limites dados pela op¸˜o rect. e ca por´m aumentados para produzir melhores r´tulos dos eixos. ’nl’.. tal que. axesflag Especifica como os eixos ser˜o desenhados podendo ter um valor inteiro. <Ny> e <ny>: u fornecem informa¸˜es similares. a a a a nax Atribui os r´tulos e define as marcas nos eixos quando a op¸ao axesflag = 1 for usada. <nx>: u n´ mero de submarcas a serem desenhadas entre marcas no eixo das abscissas. tal que. contudo os gr´ficos anteriores s˜o a a redesenhados para usar a nova escala. ’ln’. sendo <legenda i> correspondente ` i-´sima curva. 2: calculados pelos m´ximos e m´ a ca a ınimos dos vetores de abscissas e ordenadas. todavia os gr´ficos anteriores s˜o redesenhados o a a para usar a nova escala e 8: igual a frameflag = 2. ’ll’. sendo que cada letra representa um eixo com n significando escala normal ou linear e l para escala logar´ ıtmica. Se a op¸˜o axesflag n˜o co ca a for usada ent˜o a op¸˜o nax sup˜e que axesflag = 1. <ny>.0) e caso este ponto n˜o esteja a dentro da ´rea exibida ent˜o os eixos n˜o aparecer˜o. 4: eixos desenhados centrados no meio do contorno a da caixa e 5: eixos desenhados de modo a cruzar o ponto (0. Este argumento pode assumir um valor inteiro. 1: eixos desenhados com o eixo de ordenadas mostrado ` e a a esquerda. a ca o leg Esta op¸˜o define as legendas referentes ` cada curva devendo ser uma cadeia de caracteres ca a na forma <legenda 1>@<legenda 2>@. mas aumentados para produzir melhores r´tulos dos eixos. <Nx>: n´ mero de marcas principais a ser usado no eixo das abscissas..1. Gr´ficos bidimensionais a logflag 87 Especifica a escala (linear ou logar´ ıtmica) ao longo dos dois eixos de coordenadas com valores associados podendo ser ’nn’. frameflag Esta op¸˜o controla o c´lculo dos limites das coordenadas atuais a partir dos valores m´ ca a ınimos requeridos.6. 3: dados pela op¸˜o rect. 7: igual a frameflag = 1. a e ca a e .@<legenda n>. 0: nada a ´ desenhado em torno do gr´fico. mas para o eixo das ordenadas. 4: calculados pelos m´ximos e m´ e a ınimos dos vetores de abscissas e ordenadas. o c˜ Os valores s˜o definidos por um vetor de quatro elementos inteiros ([<nx>. <Nx>. Se essa op¸˜o n˜o for definida ´ assumido o valor ’ ’. 6: calculados pelos m´ximos e o a e m´ ınimos dos vetores de abscissas e ordenadas. tal que.

3: Esbo¸os de f (x) = sen(x)x pela fun¸˜o fplot2d.nax=[5 10 4 8]. produzindo o gr´fico da co a Figura 6.3(b).2 Gr´ficos tridimensionais a De uma maneira similar aos gr´ficos bidimensionais.rect=[-15 -10 15 10]) // grafico com style e rect -->xtitle(’f(x) = sen(x) * x’. co Figura 6.f.axesflag=5) // grafico com frameflag e axesflag As op¸˜es nax e leg podem ser vistas no comando abaixo.frameflag=4. 6.’y=sin(x)*x’) // define funcao -->fplot2d(x.’x’.’f(x)’) // titulos e rotulos produzem o gr´fico apresentado na Figura 6.leg=’sen(x)*x’) // grafico com nax e leg Para mais informa¸˜es sobre os comandos para manipula¸ao de gr´ficos bidimensionais use co c˜ a help fplot2d.4(b).style=-10.4(a).3(a) apenas com o t´ a ıtulo e os r´tulos dos eixos. Para mais informa¸˜es sobre essas co co fun¸˜es deve ser utilizado o comando help graphics. co . Gr´ficos a Exemplos A seguir ser˜o mostrados alguns gr´ficos gerados pela fun¸˜o fplot2d.’f(x)’) // titulos e rotulos f(x) = sen(x) * x 20 10 8 6 10 4 5 f(x) f(x) 2 0 −2 −4 −10 −6 −15 −8 −10 −15 f(x) = sen(x) * x 15 0 −5 −20 −20 −15 −10 −5 0 x 5 10 15 20 −10 −5 0 x 5 10 15 (a) T´ ıtulo e r´tulos. a co -->fplot2d(x. a e c a de modo sucinto. com o uso das op¸˜es style e rect. co a -->fplot2d(x. c ca O comando abaixo apresenta as op¸˜es frameflag e axesflag. o Os comandos abaixo geram o gr´fico da Figura 6.f.f. Ser˜o descritas a seguir.f) // esboca grafico -->xtitle(’f(x) = sen(x) * x’.1:20.88 Cap´ ıtulo 6. // define valores de x -->deff(’[y]=f(x)’. -->fplot2d(x.’x’. algumas fun¸˜es com esta finalidade. o (b) Op¸˜es style e rect. o SCILAB possui v´rios comandos para a a que gr´ficos tridimensionais sejam tamb´m facilmente esbo¸ados. que gera o gr´fico da Figura 6. A lista de comandos a a ca -->x = -20:0.

0.<matriz Y>] = meshgrid(<vetor x>. 0.5 0.0.1.5 1.5 2. .5 .2 6.1 sen(x)*x −6. . X = . 1.0.2 −15 −17.6 20.5 0. .1.2. . . .0. co Figura 6. .5 e Y 1.5 2.5 0. 1. 0.5 1. .1. 1.3 15 13.1. Gr´ficos tridimensionais a 89 20 18.2 10 8. 1.<vetor y>) transforma o doca m´ ınio especificado por <vetor x> e <vetor y> em matrizes <matriz X> e <matriz Y> que possam ser usadas para avaliar fun¸˜es de duas vari´veis e fazer esbo¸os tridimensionais co a c a o de malhas e superf´ ıcies.7 −2. .0.5 1. 1.0.1.2. 0.5 .5 2.1. -->y = -1:0.5 2. -->[X.0. 0.0 0 −20 −10 −5 −7. .5 0. a o -->x = -1:0.5 0.y) // cria matrizes X Y = .5 0.5 1.4: Esbo¸os de f (x) = sen(x)x pela fun¸˜o fplot2d com op¸˜es. . 0.5 0.5 2. 1.5 0.5 0.0 0 10 20 −2.Y] = meshgrid(x.0. 1. 0.5 0.6.5 1. 0. c ca co 6. 0.0.1 5 3. .1.1 Fun¸˜o meshgrid ca A fun¸˜o [<matriz X>.1. .0.1.1 (a) Op¸˜es frameflag e axesflag.1.5 0.5 1. 1.0.5 1.5:2 // define vetor x x = . .5 0. 0. .3 −20 −20. 1. 1. 0.1 15.2 2.5 . 0. 1.5 1.0 −15.1. 0.5 .1.0.5 2. . co (b) Op¸˜es nax e leg.5 . . 0. 0.5 0.5 0. 1.7 11.0.6 −11. -->Z = X + Y // operacao com X e Y Z = .5 1.1 −10 −12.2.1. As linhas de <matriz X> s˜o c´pias de <vetor x> e as colunas de <matriz Y> s˜o c´pias de <vetor y>.5 .5:1 // define vetor y y = .5 0.0.1.1. . 0. . 0. .

1.5 2.<matriz Y>.. 0. <op¸~o n> a ca ca ca = <valor n>.5 1..5 1.5 1. Sua sintaxe ´ e plot3d(<matriz X>. 2.5 2.<matriz Z>.5 3. 1.90 Cap´ ıtulo 6.. O a a e argumento theta descreve o ˆngulo no plano xy e alpha em torno do eixo z. 6.5 0.5 0.5 2. .<caixa>]. 0: o gr´fico ´ feito usando a a e escala 3D atual. 0. a e leg Define os r´tulos referentes ` cada um dos trˆs eixos devendo ser uma cadeia de caracteres o a e na forma <legenda x>@<legenda y>@<legenda z>. Se positivo ent˜o a superf´ ´ desenhada a ıcie e com a cor <modo> e o contorno de cada faceta ´ desenhado com estilo de linha e cor definidos. . . 2: reescala automaticamente a a caixa 3D com raz˜o de aspecto extremo e os contornos s˜o computados usando os dados a a fornecidos. theta. 1.5 1.<argumentos>) onde <matriz X>. 1. ıcie e a e O segundo elemento inteiro <tipo> define a escala.5 0.0.<tipo>.2. Gr´ficos a . 0.5 . flag e ebox. 1: reescala automaticamente a caixa 3D com raz˜o de aspecto extremo e os a contornos s˜o definidos pelo valor do argumento opcional ebox. Se n˜o forem a a especificados s˜o assumidos os valores pr´-definidos alpha = 35 e theta = 45. tal que.1. que definem as coordenadas esf´ricas do ponto do observador. e Se ele for nulo ent˜o somente a malha da superf´ ´ desenhada e se ele for negativo ent˜o a ıcie e a a superf´ ´ desenhada com a cor -<modo> e o contorno da faceta n˜o ´ desenhado.0. leg. em graus.. e ca a a e flag Essa op¸˜o ´ um vetor num´rico com trˆs elementos flag = [<modo>. 2. . <matriz Y> e <matriz Z> s˜o matrizes de mesmas dimens˜es contendo a o as coordenadas tridimensionais dos pontos a serem exibidos e <argumentos> ´ um conjunto e opcional que define o estilo do gr´fico na forma <op¸~o 1> = <valor 1>.1 para esbo¸os tridimenca e ca ca ca c sionais. sendo <legenda i> correpondente ao i-´simo eixo. O argumento <op¸~o i> pode ser alpha.5 0. O ca e e e elemento inteiro <modo> define a cor da superf´ ıcie. Se essa op¸˜o n˜o for fornecida ent˜o ´ assumido o valor ’ ’. 4: 3D isom´trico com e e limites derivados dos dados fornecidos.2 Fun¸˜o plot3d ca Esta fun¸˜o ´ uma generaliza¸˜o da fun¸˜o plot vista na Se¸˜o 6. alpha e theta S˜o ˆngulos. 1.0.5 . 5: limites isom´tricos expandidos 3D com os limites e da caixa fornecidos por ebox e 6: limites isom´tricos expandidos 3D com limites derivados e dos dados fornecidos. 0.1. 3: 3D isom´trico com limites da caixa fornecido por ebox.

// calcula pontos da funcao -->plot3d(X. a usando o comando -->plot3d(X. 1: o mesmo que o anterior porque ainda n˜o est´ implee a a a mentado (!).Y] = meshgrid(-3:0. 3: uma caixa em torno a ıcie a da superf´ ´ desenhada e os t´ ıcie e ıtulos s˜o adicionados e 4: uma caixa em torno da superf´ a ıcie ´ desenhada e t´ e ıtulos e eixos s˜o adicionados.Y.5 1.Z.5(a). co Figura 6. Gr´ficos tridimensionais a 91 O terceiro elemento inteiro <caixa> define a moldura em torno do gr´fico. // cria matrizes X e Y a partir de dois vetores -->Z = sin(X). a a a e Exemplos Para produzir o esbo¸o da fun¸˜o z = sen(x) cos(y)2 no intervalo −3 ≤ x ≤ 3 e −2 ≤ y ≤ 2. A e Figura 6.Y.6(a). pelo coe mando abaixo.alpha=30.0 −0. 3 ou 5.5(b) apresenta o gr´fico com os valores alterados para alpha = 30 e theta = 60.6. c ca mostrado na Figura 6.0 3 2 1 0 X −1 −2 −3 Z −1 (a) Op¸˜es alpha = 35 e theta = 45. co (b) Op¸˜es alpha = 30 e theta = 60.-2:0. tal que.5 2. Zmax]).2:2).0 −1. Ymin. a e . Zmin. Se a op¸˜o ca ca flag n˜o for fornecida ent˜o ebox n˜o ´ considerado.2. Este argumento ´ e usado junto com <tipo> da op¸˜o flag.5: Esbo¸os de z = sen(x) cos(y)2 usando a fun¸˜o plot3d.5 0.theta=60) 1 0 1 Z 0 −1 −2 −1 0 Y 1 2 3 2 1 X Y 0 −1 −2 −3 −2. Ymax. o gr´fico ´ rotacionado do modo mostrado na Figura 6.^2. c ca Quando os argumentos tˆm os valores alterados para alpha = 60 e theta = 30. caso <tipo> tenha o valor 1. a ebox Esta op¸˜o define os limites das trˆs coordenadas do gr´fico com os valores dados em um vetor ca e a de seis elementos (ebox = [Xmin. 2: somente os eixos atr´s da superf´ s˜o desenhados. utiliza-se os comandos -->[X.5 −1.Z) // desenha grafico 3D Nesta figura foram utilizados os valores pr´-definidos alpha = 35 e theta = 45 graus. 0: nada a ´ desenhado em torno do gr´fico.0 0. Xmax.0 1.2:3.*cos(Y).

leg=legenda) Acrescentando a op¸˜o flag com os argumentos <modo> = 0. sendo a ca e obtido pelo comando com alpha = 80 e theta = 230.theta=30) Um gr´fico com a orienta¸˜o dos eixos mais natural ´ apresentado na Figura 6.Z.theta=230.4 −0.0 −0.0 −1.0 0.alpha=80.6: Esbo¸os de z = sen(x) cos(y)2 usando plot3d com varia¸˜o de alpha e theta.Y.theta=230) Um exemplo de uso da op¸˜o leg pode ser visto na Figura 6.5 1.2 1.flag=[0 2 3]) .alpha=80.6 −1. co (b) Op¸˜es alpha = 80 e theta = 230.5 1 −1.Y. tem-se a Figura 6.0 Y 2 0.8 0. -->plot3d(X.6 −0.5 0.7(a).Z.0 1.2 Z −0. -->plot3d(X.0 0.0 3 X 2 1 0 Y −1 −2 −3 −2 −1 0 X 2 1 0 −1.8 (a) Op¸˜es alpha = 60 e theta = 30.2 −1 −0.92 Cap´ ıtulo 6.6 0. co Figura 6.leg=legenda.5 2. c ca -->plot3d(X.0 −0.6 0.Y.Y.7(b).alpha=80.Z.theta=230. <tipo> = 2 e <caixa> = 3 ca pelo comando abaixo.alpha=60. Gr´ficos a 1.6(b).Z.4 0.0 3 −2 −3 Z 0.0 −2.2 −0. obtida pelos comandos ca -->legenda = ’eixo x@eixo y@eixo z’ // define legenda legenda = eixo x@eixo y@eixo z -->plot3d(X.

ca Figura 6.6 0.8 −1.0 −0.0 0. <matriz Y> e <matriz Z>.^2.8 0.8(a).0 3 2 1 0 eixo y −1 −2 −3 −2 −1 0 eixo x eixo y eixo x 2 1 eixo z (a) Op¸˜o leg.Y. ca (b) Op¸˜es leg e flag.2 eixo z 0. Gr´ficos tridimensionais a 93 1.’eixo z’) // titulos e rotulos mesh surf 1.2 −0.2.8 0.0 0. c co .6 0.2:3.4 0.’eixo x’.*cos(Y). c -->[X.0 −0.8 0. c co 6.8: Esbo¸os de z = sen(x) cos(y)2 com diferentes fun¸˜es.0 0.6 −0.4 0.7: Esbo¸os de z = sen(x) cos(y)2 usando plot3d com as op¸˜es leg e flag.Z).Y] = meshgrid(-3:0.2 0.<matriz Z>) produz o esbo¸o de uma malha na ca c superf´ especificada pelas matrizes <matriz X>.8 −1.2 −0.2 −0.6 −0.3 Fun¸˜o mesh ca A fun¸˜o mesh(<matriz X>. // desenha a malha -->xgrid(1) // coloca a grade -->xtitle(’mesh’. ca eixo z (b) Fun¸˜o surf. // define as matrizes X e Y -->Z = sin(X).4 −0.0 2 1 0 −1 eixo y −2 −3 −2 0 −1 eixo x 2 1 3 1.6 −0.-2:0. co Figura 6. // define a matriz Z com a funcao -->mesh(X.2.6.0 2 1 0 −1 eixo y −2 −3 −2 0 −1 eixo x 2 1 3 eixo z (a) Fun¸˜o mesh.4 −0. Os comandos ıcie abaixo geram o esbo¸o mostrado na Figura 6.4 0.<matriz Y>.8 −1.6 0.0 −0.4 −0.2:2).2 0.’eixo y’.

com a qual surge a janela a co Xscilab.*cos(Y).^2. // define as matrizes X e Y -->Z = sin(X). os comandos abaixo produzem a Figura 6. Seja a fun¸˜o ca y = e1+x/10 + cos(x)x.4 Fun¸˜o surf ca A fun¸˜o surf(<matriz X>.94 Cap´ ıtulo 6. // desenha a superficie -->xtitle(’surf’. 6. e o UnZoom.’eixo z’) // titulos e rotulos -->xgrid(1) // coloca a grade 6. a a Uma figura ´ gerada na janela Scilab Graphic(0) que apresenta cinco bot˜es: File. Zoom. .1.8(b). // define a matriz Z com a funcao -->surf(X.3 Janela de figura As figuras geradas pelo SCILAB podem ser facilmente modificadas. a co a Figura 6. mostrada na Figura 6. <matriz Y> e <matriz Z>. Gr´ficos a 6.’eixo y’. impressas ou gravadas em um arquivo para posterior impress˜o ou inclus˜o em um texto. com v´rias op¸˜es para produzir um arquivo com o gr´fico.<matriz Y>.Y] = meshgrid(-3:0. -->[X. e Edit. 3D Rot.Z).2:2).’eixo x’. Deste modo.-2:0. Escolhendo File aparecem v´rias op¸˜es entre as quais Export.2.9: Janela para gerar arquivo com figura.4 Exerc´ ıcios Se¸˜o 6.9.<matriz Z>) produz uma superf´ ca ıcie sombreada tridimensional especificada pelas matrizes <matriz X>.Y.2:3.1 ca 6.

7. ca ıcio 6.8. ıcio . Exerc´ ıcios 95 Gerar uma tabela com 20 pontos para −5 ≤ x ≤ 5 e exibir o gr´fico da fun¸˜o usando o a ca comando plot colocando r´tulos e grade.6.4. Gravar a figura do Exerc´ 6. o 6. Seja a fun¸˜o ca z = sen(x)y 2 . ca ıcio Se¸˜es 6.3.2 e 6. −10 ≤ x ≤ 10 e exibir o seu gr´fico usando o comando fplot2d com r´tulos e grade. Usando o comando surf exibir a superf´ de ıcie z = x cos(x) sen(y) com −π ≤ x ≤ π e −π ≤ y ≤ π. Repetir a opera¸˜o acima usando 50 pontos e sem usar grade. utilizando a janela Xscilab.2. Usar a fun¸˜o plot no Exerc´ 6.10.4. Gerar uma tabela de 40 pontos para y = sen(x)x. Gerar uma malha com −5 ≤ x ≤ 5 e −3 ≤ y ≤ 3 usando a fun¸˜o meshgrid. ca 6. ca 6. Gerar um gr´fico usando a fun¸˜o plot3d.1 variando os argumentos opcionais.9. Utilizar a fun¸˜o fplot2d no Exerc´ 6. ıcio 6.7 variando os argumentos opcionais.9 no arquivo figura. 6.eps. Repetir o Exerc´ 6.3 co 6.4. a ca 6. a o 6.6.5.

96 Cap´ ıtulo 6. Gr´ficos a .

ca A = rand(3000. em segundos. // define duas matrizes aleatorias tic() // inicia contagem do tempo de execucao t0 = timer(). // inicia contagem do tempo de CPU C = A * B .0.350). A atribui¸˜o do tempo gasto a <vari´vel> ´ opcional.600).<vari´vel 1> a a Por exemplo.Cap´ ıtulo 7 Computa¸˜o cient´ ca ıfica 7. considere a execu¸˜o do programa no arquivo medidas. ca Usando o tic-toc ´ poss´ saber o tempo gasto para a execu¸˜o de um grupo de comandos. e ıvel ca A sua sintaxe ´ e tic() <comandos> <vari´vel> = toc() a O tic inicia a contagem do tempo e o toc fornece para <vari´vel> o tempo. a passado desde o ultimo tic. maximo = max(abs(diag(C))).5. Uma outra medida ´ obtida por timer que fornece o tempo de a e CPU (unidade central de processamento) que ´ o tempo gasto para execu¸˜o de opera¸˜es e ca co aritm´ticas e l´gicas.1 Medidas de tempo O SCILAB provˆ duas maneiras de medir o tempo gasto para executar um conjunto de e comandos: o tempo de execu¸˜o e o tempo de CPU.t0 // tempo de CPU 97 . B = rand(350.sci. tic-toc pode n˜o ser uma a a medida muito confi´vel. Pode ser usado na forma e o <vari´vel 1> = timer() a <comandos> <vari´vel 2> = timer() . tempo_cpu = timer() . Se o ´ ca a e computador estiver executando v´rias tarefas simultaneamente.

7. determinante. tais co co como. u ca c Normas A fun¸˜o norm(<vari´vel>. norm(x. u Exemplos de normas vetoriais.<tipo>) fornece a norma <tipo> de um vetor ou matriz contido ca a em <vari´vel>.2. No caso de um vetor. posto e tra¸o. <tipo> pode ser qualquer a n´ mero (inteiro ou real.2 ´ Algebra linear Nesta se¸˜o ser˜o mostrados alguns comandos do SCILAB relativos aos t´picos usualmente ca a o abordados em textos de C´lculo Num´rico.1. n´ mero de condi¸˜o. de acordo com a Tabela 7. -->norm(x). -->exec(’medidas. -->x = [1 2 3 4 5].98 Cap´ ıtulo 7.sci’. Para um conhecimento mais amplo dos comandos a e do SCILAB com respeito a vetores e matrizes usar os comandos apropos vector e apropos matrix.-%pi) // norma -pi ans = 0.71 tempo_exec = 2.2) // norma Euclidiana ans = 7.4161985 ans = 7. normas.0) tempo_cpu = 2. positivo ou negativo).1) // norma de soma de magnitudes ans = 15. a 7.739 A diferen¸a de tempo produzida por tic-toc e timer pode ser bem significativa se o comc putador estiver executando outros programas ao mesmo tempo. -->norm(x. Al´m disso.9527515 .4161985 -->norm(x.1 Parˆmetros da matriz a O SCILAB disponibiliza diversas fun¸˜es para se obter informa¸˜es sobre matrizes. esses tempos e medidos depender˜o do computador utilizado. // define vetor x -->norm(x.’inf’) // norma de maxima magnitude ans = 5. Computa¸˜o cient´ ca ıfica tempo_exec = toc() // tempo de execucao Os resultados produzidos foram.

.’fro’) // norma de Frobenius ans = 16. // define matriz A -->norm(A. .1) // norma de soma maxima de coluna ans = 18. . Sejam v = [ v1 v2 .848103 ans = 16. . .’inf’) norm(M.881943 -->norm(A. -->norm(A. .’inf’) // norma de soma maxima de linha ans = 24.1) norm(M. . . -->norm(A.848103 . 4 5 6. .´ 7. . 7 8 9]. vm ] e M = [ m11 m12 . mnp ] <tipo> norm(v.2. Algebra linear 99 Tabela 7. -->A = [1 2 3. m1p .2) ou norm(v) norm(v.2) ou norm(M) M F = i=1 j=1 norma de Frobenius norma espectral max σi (valores singulares) e normas matriciais.2).’inf’) M M v v 1 2 = i=1 norma Euclidiana norma de m´xima magnitude a norma de soma m´xima de coluna a norma de soma m´xima de linha a ∞ = max |vi | 1≤i≤m n 1≤j≤p i=1 p = max |mij | |mij | |mij |2 ∞ = max n 1≤i≤n j=1 p norm(M.p) v Descri¸˜o ca m p Nome |vi |p |vi |2 norma-p = p i=1 m norm(v. . m2p . m21 m22 . mn1 mn2 .1: Normas vetoriais e matriciais.’fro’) norm(M. norm(A) // norma espectral ans = 16. .

σmin Para a matrix. -->det(A) ans = 6. sendo posto(A) ≤ min(m.7744361 Determinante A fun¸˜o det(<matriz>) calcula o determinante de <matriz>. e a σmax cond(M) = κ2 (M) = M 2 M −1 2 = . Na ca forma [<mantissa>.2094488 -->1/r ans = 4. -->B = [5 3 0. sendo igual ao n´ mero e a u de valores singulares de <matriz> maiores que <toler^ncia>. Para A e B definidas previamente. -->[man. Computa¸˜o cient´ ca ıfica N´mero de condi¸˜o u ca A fun¸˜o cond(<matriz>) calcula o n´ mero de condi¸˜o de <matriz> quadrada definido ca u ca em termos da norma-2.6613381 man = . -->r = rcond(B) r = 0. Se <toler^ncia> n˜o for a a a dada ent˜o ´ assumido o valor <toler^ncia> = max(m. sendo ela quadrada. -->cond(B) ans = 2. n). ou seja.exp] = det(A) // determinante de A em notacao cientifica exp = 6.<toler^ncia>). No SCILAB a o posto de <matriz> ´ obtido por rank(<matriz>.<expoente>] = det(<matriz>) o valor do determinante ´ apresentado e <expoente> .100 Cap´ ıtulo 7. . n) * norm(<matriz>) * %eps. Para a matriz B e o a o acima.6641005 A fun¸˜o rcond(<matriz>) fornece uma estimativa do rec´ ca ıproco do n´ mero de condi¸ao de u c˜ <matriz> definido em termos da norma-1. em nota¸˜o cient´ ca ıfica: <mantissa>×10 -->det(B) // determinante de B ans = 399. Se <matriz> for bem condicionada ent˜o rcond a ´ pr´ximo de 1 e se ela for mal-condicionada rcond ser´ pr´ximo de 0. a e a Para as matrizes A e B. ´ a raz˜o entre o maior e o menor valor singular.16.661D-16 Posto O posto de uma matriz A (m × n) ´ o n´ mero m´ximo de vetores linhas ou de vetores e u a colunas de A que s˜o linearmente independentes. -1 8 6. 4 2 9].

a -->M = [2 -3 5. -->rank(A. -->[L. 1. e ca ca O uso do comando [<fatorL>. 7. 0. 1. 0. a soma dos elementos ca c e da sua diagonal principal. -->rank(B) // posto de B ans = 3.25 0. 4 1 -1. tal que <matrizP> * <matriz> = <fatorL> * <fatorU>. de dimens˜o m × n.<fatorU>. 1. . LU. QR e SVD. 0. 5. 8.1. isto ´. Algebra linear 101 -->rank(A) // posto de A ans = 2. U = 4. Por exemplo. 0. 0. .P] = lu(M) // decomposicao LU de M P = 0. 6. // traco de A 7.´ 7. 0.3225806 L = 1. . n) × n) e uma matriz de permuta¸˜es <matrizP> a co (dimens˜o n × n). 8. n)). 0.2.2. 4.75 6. 1.2 Decomposi¸˜es co O SCILAB disponibiliza v´rios tipos de decomposi¸˜es de matrizes entre as quais. 1. 1.1.1e-20) // posto de A com tolerancia 1e-20 ans = 3. usando ca ca a o m´todo de elimina¸˜o de Gauss com pivota¸˜o parcial. 0. a co Cholesky.3. 1 8 6] // definicao da matriz M M = 2. Para a matriz A definida anteriormente. Tra¸o c A fun¸˜o trace(<matriz>) determina o tra¸o de <matriz>.<matrizP>] = lu(<matriz>) gera uma matriz triangular inferior unit´ria <fatorL> (dimens˜o m × min(m.U. uma matriz triangular a a superior <fatorU> (dimens˜o min(m. -->trace(A) ans = 15. . Decomposi¸˜o LU ca A fun¸˜o lu(<matriz>) faz a decomposi¸˜o LU de <matriz>. 0.

4516129 -->R = P * M . -->Tsup .5 . 0. . 1. 0. .U // verificando que Tsup = U ans = 0.2. -->U = chol(A) // calcula o fator U . 0. 1. 0.2. 0. // verificando que P * M = L * U Contudo.3225806 Tinf = 0.25 1. . Para as matrizes acima.4516129 1.7. 0.L * U R = 0. 0. 0. 2 -7 30] // define a matriz A A = 4. 0. 2. 1. 10.102 Cap´ ıtulo 7. Computa¸˜o cient´ ca ıfica 0.0. 0. 0.25 0. 0. -->M . 0.1. 0. 0. 0. 30.7.25 1. 8. 0. 0. 0. 0. 0. -2 10 -7.Tinf * Tsup // verificando que M = Tinf * Tsup ans = 0. 0. 2. 0. . -->P * Tinf . o uso de dois parˆmetros de sa´ [<matrizInf>.5 . 0. -->[Tinf. 0.Tsup] = lu(M) // decomposicao LU de M com dois parametros Tsup = 4. 0. 0. 0.L // verificando que P * Tinf = L ans = 0. 0. Decomposi¸˜o de Cholesky ca A fun¸˜o <fator> = chol(<matriz>) fatora <matriz> sim´trica definida positiva pelo ca e m´todo de Cholesky produzindo uma matriz <fator> triangular superior tal que <fator>’ e * <fator> = <matriz>. 0. 0. -->A = [4 -2 2. 0. 0. 0. 0.<matrizSup>] = lu(<matriz>) a ıda gera uma matriz triangular superior <matrizSup> = <fatorU> e uma matriz triangular inferior <matrizInf> tal que <matrizP> * <matrizInf> = <fatorL> de modo que <matriz> = <matrizInf> * <matrizSup>. 0. 0. 7. 0. 0. . 0.0. Por exemplo.75 6.

0. 0.1534623 0. 0. .0.2264554 0. 5. 0.4349298 0. O uso na forma ca ca a [<matrizQ>. 8.6711366 . 0.5. 8. 0.0. 0. 4 3 8] // define a matriz B B = 1. 3.´ 7. 0. 0.0. 5. 4.0. 3 5.0. 0.0. 4.2.3211171 0. 0. . 8 6] // define a matriz A A = 2. 0. a Sejam. 1.1132277 0. 0.U’ * U // verificando que A = U’*U ans = 0. . Q = .5445505 . . 0.9058216 .8.5325844 .1096497 . 6.R] = qr(A) // calcula fatores Q e R R = .4.0.<matrizR>]=qr(<matriz>) produz uma matriz ortonormal <matrizQ> de ordem m (<matrizQ>’*<matrizQ>=eye(m.0.6070721 . a e Decomposi¸˜o QR ca A fun¸˜o qr faz a decomposi¸˜o QR de uma matriz de dimens˜o m × n. 1. 1 -7.2.2. -2 5 3. . . 0. 0. -->B = [1 -2 4. 1.m)) e uma matriz triangular superior <matrizR> com a mesma dimens˜o m×n de <matriz>. 3.1926801 . 3.9. 0. . 0.3396831 .5906262 0.2.3793593 -->round(Q’*Q) // verificando que Q e’ ortonormal ans = 1. 1. 0. -->F = chol(B) // calcula o fator F !--error 29 matrix is not positive definite U Houve um erro porque a matriz B n˜o ´ definida positiva. 0. Algebra linear 103 = 2.5753910 . de modo que <matriz>=<matrizQ>*<matrizR>. 3.7753803 0. 0. 0.7.1.0. -->A = [2 -4. -->[Q.8214835 0.0. 0. .8317609 . -->A . 5.

9.8214835 Qe = . O comando [<matrizU>.0.Re] = qr(A. Quando os quatro caracteres (.S. -->A = [2 -4.V] = svd(A) // calcula os fatores U. 0. 8 6] // define a matriz A A = 2. 0. a a a -->[Qe. 3 5.0.’e’) forem colocados ap´s o nome de uma matriz de dimens˜o o a (m × n.1132277 0. . m > n) o SCILAB produz uma decomposi¸˜o econˆmica. 3.8317609 .0. 0. 1.0. 0. 0. uma matriz diagonal <matrizS> de dimens˜o m × n a contendo os valores singulares de <matriz> em ordem decrescente e uma matriz ortonormal <matrizV> de ordem n. A fun¸˜o qr possui diversas formas de ser utilizada.Q * R ) // verificando que A = Q*R 0.0. 0.<matrizV>] = svd(<matriz>) produz uma matriz ortonormal <matrizU> de ordem m.5257311 S = .0.0.7.7753803 .0. para maiores informa¸˜es use help qr.’e’) // calcula fatores Q e R na forma economica Re = . . Para a matriz A acima.104 Cap´ ıtulo 7. 0.3396831 .9058216 .4349298 0.2264554 0. 0.0.1096497 -->round(A . A . 0. -->round( ans = 0.<matrizS>. -->[U. 5.8506508 . 0. Por exemplo. S e V de A V = . Computa¸˜o cient´ ca ıfica 0. 8.5257311 0.8506508 .4. de modo que <matriz> = <matrizU> * <matrizS> * <matrizV>’. 0.5. 0. 0.5325844 .3211171 .8. de modo que <matrizQ> ca o ter´ dimens˜o (m × n) e <matrizR> ser´ (n × n). 1 -7.Qe * Re) // verificando que A = Qe * Re ans = 0. 6. . 1. 0. 0. ca co Decomposi¸˜o em valores singulares ca A fun¸˜o svd faz a decomposi¸˜o em valores singulares de uma matriz de dimens˜o m × ca ca a n.

´ 7.2. Algebra linear

105

12.476603 0. 0. 6.9522923 0. 0. 0. 0. U = 0.188444 0.5471902 - 0.5445505 - 0.4673105 - 0.0110328 0.5753910 0.4351204 0.6516942 0.5906262 - 0.7461769 0.5251246 - 0.1534623 -->round( U’*U ) // verificando que U e’ ans = 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. -->round( V’*V ) // verificando que V e’ ans = 1. 0. 0. 1. -->round( A - U * S * V’) // verificando ans = 0. 0. 0. 0. 0. 0. 0. 0.

0.6070721 0.6711366 0.1926801 0.3793593 ortonormal

ortonormal

que A = U*S*V’

Se os quatro caracteres (,’e’) forem colocados ap´s o nome de uma matriz de dimens˜o o a (m × n, m > n) ser´ computada uma decomposi¸˜o econˆmica, de modo que <matrizU> a ca o ter´ dimens˜o (m × n), <matrizS> e <matrizR> ser˜o (n × n). Utilizando a mesma matriz a a a A,
-->[Ue,Se,Ve] Ve = - 0.5257311 - 0.8506508 Se = 12.476603 0. Ue = 0.188444 - 0.4673105 0.4351204 - 0.7461769 -->round( A ans = 0. 0. 0. 0. 0. 0. 0. 0. = svd(A,’e’) 0.8506508 - 0.5257311 0. 6.9522923 0.5471902 - 0.0110328 0.6516942 0.5251246 Ue * Se * Ve’) // calcula os fatores U, S e V na forma economica

// verificando que A = Ue*Se*Ve’

Para se obter apenas os valores singulares de <matriz> em <vetor> basta <vetor> = svd(<matriz>),

106

Cap´ ıtulo 7. Computa¸˜o cient´ ca ıfica

-->s = svd(A) s = 12.476603 6.9522923

// calcula apenas os valores singulares de A

A fun¸˜o svd possui outras formas de ser utilizada; para maiores informa¸˜es use help svd. ca co

7.2.3

Solu¸˜o de sistemas ca

Dado um sistema Ax = b, a solu¸˜o x pode ser facilmente calculada pelo SCILAB pelo ca operador (\), por exemplo, para um sistema com matriz sim´trica, e
-->A = [4 -2 2; -2 10 -7; 2 -7 30] // matriz dos coeficientes A = 4. - 2. 2. - 2. 10. - 7. 2. - 7. 30. -->b = [8 11 -31]’ // vetor dos termos independentes b = 8. 11. - 31. -->x = A \ b // solucao de Ax = b x = 3. 1. - 1. -->r = ( b - A * x )’ // verificando a exatidao da solucao r = 0. 0. 0.

No caso de uma matriz n˜o sim´trica, a e
-->B = [1 -3 2; -2 8 -1; 4 -6 5] // matriz dos coeficientes B = 1. - 3. 2. - 2. 8. - 1. 4. - 6. 5. -->c = [11 -15 29]’ // vetor dos termos independentes c = 11. - 15. 29. -->y = B \ c // solucao de By = c y = 2. - 1. 3. -->r = ( c - B * y )’ // verificando a exatidao da solucao r = 0. 0. 0.

´ 7.2. Algebra linear

107

7.2.4

Inversa

A fun¸˜o inv(<matriz>) calcula a inversa de <matriz> de ordem n, tal que <matriz> * ca inv(<matriz>) = eye(n,n). Para a matriz M acima,
-->E = inv(B) // inversa de B E = - 0.2403101 - 0.2170543 0.2015504 - 0.2170543 0.0620155 0.0852713 0.2015504 0.0852713 - 0.0077519 -->round( B * E - eye(3,3) ) // verificando que B * E = I ans = 0. 0. 0. 0. 0. 0. 0. 0. 0.

7.2.5

Autovalores e autovetores

Os autovalores s˜o os zeros do polinˆmio caracter´ a o ıstico da matriz. A fun¸˜o poly constr´i ca o o polinˆmio caracter´ o ıstico de uma matriz. Por exemplo,
-->A = [4 -1 3; -1 5 2; 3 2 8] // define a matriz A A = 4. - 1. 3. - 1. 5. 2. 3. 2. 8. -->p = poly(A,’x’) // constroi o polinomio caracteristico de A p = 2 3 - 79 + 78x - 17x + x -->raizes = roots(p) // zeros do polinomio caracteristico raizes = 1.410402 5.6161546 9.9734434

A fun¸˜o spec permite o c´lculo do autosistema (autovalores e autovetores) de uma maca a triz de ordem n por um m´todo mais eficiente do que construindo o polinˆmio carace o ter´ ıstico. O uso de [<AutoVetor>,<AutoValor>]=spec(<matriz>) produz uma matriz diagonal <AutoValor> contendo os autovalores e uma matriz <AutoVetor> com os correspondentes autovetores. Se a matriz for sim´trica ent˜o os autovetores s˜o mutuamente e a a ortogonais (<AutoVetor>’ * <AutoVetor> = eye(n,n)). Para a matriz A acima,
-->[Vetor,Valor] = spec(A) Valor = 1.410402 0. 0. 5.6161546 0. 0. Vetor = 0.7387367 0.5462817 0.4732062 - 0.8374647 // calcula os autovalores e autovetores 0. 0. 9.9734434 0.3947713 0.2733656

0.108 Cap´ ıtulo 7. 0. . ’c’ para coluna ou ’*’ para as colunas da matriz <vari´vel> colocadas em um vetor.6161546 9. e -->lambda = spec(A) lambda = 1.2. Para a matriz sim´trica A definida acima.0. 2.3.8771698 -->round( Vetor’ * Vetor . Para um vetor.1 C´lculo das diferen¸as finitas ascendentes a c A fun¸˜o diff(<vari´vel>. No caso de matriz.3) ) // autovetores ortogonais de uma matriz simetrica ans = 0. 3.<dimens~o>) calcula a diferen¸a finita ascendente de ca a a c ordem dada por <ordem> entre dois elementos de <vari´vel> ao longo de <dimens~o>. 0. .<ordem>. 4. 2. 0.4799416 0. 3.(1:5)^3] A = // define a matriz A .9734434 // calcula apenas os autovalores de A A fun¸˜o spec possui diversas formas de ser utilizada. 0. para maiores informa¸˜es use help ca co spec. 7.(1:5)^2. que a a pode assumir os valores ’r’ para linha. 3. respectivamente. 0. 0. -->xd2 = diff(x. 0. e a -->x = [1 2 4 4 7] // define o vetor x x = 1.3 Interpola¸˜o ca O SCILAB possui fun¸˜es para c´lculo das diferen¸as finitas ascendentes e interpola¸˜o co a c ca unidimensional. 0.2. -->d2 = diff(d1) // diferenca de ordem 1 de d1 d2 = 1. 7.410402 5. -->A = [1:5. -->d1 = diff(x) // diferenca de ordem 1 de x d1 = 1. 4. 7. Para obter apenas os autovalores em <vetor> basta <vetor> = spec(<matriz>).0151370 0. Os argumentos <ordem> e <dimens~o> s˜o opcionais e a a a seus valores pr´-definidos s˜o 1 e ’*’.2) // diferenca de ordem 2 de x xd2 = 1. Computa¸˜o cient´ ca ıfica .eye(3.

1. e e ca sendo parˆmetro a ’linear’ ’spline’ ’nearest’ m´todo e interpola¸˜o linear. Interpola¸˜o ca 109 1. 2.1. 16.<ordenadas>. ca interpola¸˜o por splines c´ bicos.’c’) // diferenca de ordem 1 ao longo das colunas C1 = 1. 27. 6. yi) especificados nos vetores <abscissas> e <ordenadas>.1. 12.3. 25. 4.<interpolar>. 1. column 12 to 15 64. 9. 3. -->C1 = diff(A. 4. 8. 4. 1. 25. 6. 48. 5. 125.3. 2.^4. 5. ca o Quando o m´todo n˜o for especificado ser´ assumida uma interpola¸˜o linear. 2. e e . Por exemplo. 4. ca u interpola¸˜o usando o vizinho mais pr´ximo. ca -->x = linspace(-1. 9. -->A(:)’ // colunas da matriz A em um vetor (transposto) ans = column 1 to 11 1.2 Interpola¸˜o unidimensional ca Dada uma tabela com pares (xi . 64. 18. 48. 20.1. 20. 1. . e a a ca 4 sejam cinco pontos da fun¸˜o y = x . 3. respectivamente. para −1 ≤ x ≤ 1 definidos por. -->L1 = diff(A. 1. 9. 1.59. 0. cuja sintaxe ´ ca e <resultado> = interp1(<abscissas>.’r’) // diferenca de ordem 1 ao longo das linhas L1 = 0.6 e z = 0.<m´todo>) e onde a cadeia de caracteres <m´todo> especifica o m´todo a ser utilizado na interpola¸˜o. 3.23. 4. 100.7. // abscissas dos pontos -->y = x. 27. 37. 12. 100.5.1. 7. 18. // ordenadas Interpolando os valores z = −0. 7. usando os trˆs m´todos. .5). 2. 19. 16. 5. 61. 7.’*’)’ // diferenca de ordem 1 assumindo A em um vetor (transposto) V1 = column 1 to 11 0. 125.7. 8. 4. -->V1 = diff(A. 1. column 12 to 14 . ent˜o os valores de z contidos no vetor <interpolar> podem ser interpoa lados usando a fun¸˜o interp1. 1. 0.

’y’).’y=x^4’.spl.2.6 0. ca c e . a aproxima¸˜o por polinˆmios com ’nearest’ por uma linha tracejada o ca o e os splines por uma linha pontilhada.’linear’.x1.3) // coloca legenda A partir dos 50 pontos em x1 foram criados os vetores nea e spl que contˆm as ordenadas e obtidas por interpola¸˜o usando os argumentos ’nearest’ e ’splines’.y.’nearest’) // interpolacao com vizinho mais proximo ans = 0.110 Cap´ ıtulo 7. xgrid(1) -->xtitle(’M’+ascii(233)+’todos de interp1’. respectivamente.5 .’o’.<erro rel>) ca a onde <fun¸~o> ´ uma cadeia de caracteres que define a fun¸˜o a ser integrada.7]. ca u As aproxima¸˜es da fun¸˜o y = x4 por trˆs fun¸˜es interpoladoras de interp1 podem ser co ca e co visualizadas pelos comandos.25 0. seja a fun¸˜o f (x) = cos(3x+1)x2 +x1. ca A Figura 7.0625 0. Uma interpola¸˜o linear ´ feita implicitamente desde que o a ca e comando plot interliga os pontos por retas.0625 Considerando que os valores exatos s˜o (−0.7].x1.4375 -->interp1(x. -->x1 = linspace(-1.y.x1. ca 7.7].’splines’].[-0.<lim inf>.6 0. o m´todo de a e interpola¸˜o com splines c´ bicos produziu os melhores resultados para este caso.2695 -->interp1(x.6)4 ≈ 0.50).’.’-’. Os cinco pontos iniciais ca est˜o representados por o. // gera graficos e grade -->legend([’pontos’. respectivamente.<vari´vel>.[-0. // interpolacao vizinho mais proximo -->spl = interp1(x.’nearest’). No caso de n˜o serem fornecidos. // interpolacao por splines -->plot(x.1 mostra graficamente os resultados da fun¸˜o interp1.y.y.6 0.1296 e 0.4 Integra¸˜o num´rica ca e A fun¸˜o integrate calcula numericamente uma integral e sua sintaxe ´ ca e integrate(<fun¸~o>.’spline’).y1. Computa¸˜o cient´ ca ıfica -->interp1(x.^4. cujo esbo¸o ´ mostrado na Figura 7.’x’.x1.144 0.y.’-.<lim sup>.y.’nearest’. Os argumentos <erro abs> e <erro rel> s˜o a ca a os erros absoluto e relativo e s˜o opcionais.’spline’) // interpolacao com splines cubicos ans = 0.nea.[-0.’:’).’--’.<erro abs>. O gr´fico da fun¸˜o y = x4 est´ representado a ca a por uma linha s´lida.y.’linear’) // interpolacao linear ans = 0. // abscissas para a interpolacao -->y1 = x1. <vari´vel> ca e ca a ´ uma cadeia de caracteres que especifica a vari´vel de integra¸˜o.2401. <lim inf> e <lim sup> e a ca s˜o os limites inferior e superior de integra¸˜o. Usualmente os splines produzem uma aproxima¸˜o ca mais suave da fun¸˜o como pode ser observado neste caso.x. s˜o assumidos a a a −8 os valores 0 e 10 . // ordenadas da curva real -->nea = interp1(x.x1.74 ≈ 0. Por exemplo.1.

5’.4 0.’x’.1.8 0.8 −0.51064 // calcula a integral f(x) = cos(3x+1)x^2+x^1.2 0.6 −0.0 0.5 .5 dx 1 faz-se -->Integral = integrate(’cos(3*x+1)*x^2+x^1.6 y 0.1: Aproxima¸˜o de y = x4 pela fun¸˜o interp1. ca .2 pontos linear y=x^4 nearest splines −0.0 x 0.4 −0.4 0.9) Integral = 102.8 1. ca ca Para calcular 9 cos(3x + 1)x2 + x1.0 −0.6 0.4.0 0.2 −1.2 0.5 100 80 60 40 y 20 0 −20 −40 −60 1 2 3 4 5 x 6 7 8 9 Figura 7. Integra¸˜o num´rica ca e 111 Métodos de interp1 1.7.0 Figura 7.2: Integra¸˜o de f (x) = cos(3x + 1)x2 + x1.

Computa¸˜o cient´ ca ıfica A fun¸˜o a ser integrada pode tamb´m estar definida em uma function.5.sci com o conte´ do. u function y = g(x) y = cos(3*x+1).sci -->Integral = integrate(’g’.-1) // carrega a function g do arquivo func. Seja o arquivo ca e func.’x’.51064 . -->exec(’func.*x.1. endfunction Assim.^1. para calcular a integral acima usando a function g definida no arquivo func.sci.9) // calcula a integral Integral = 102.sci’.^2+x.112 Cap´ ıtulo 7.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->