Você está na página 1de 76

Introdu¸c˜ao ao Scilab Vers˜ao 1.0

Prof. Paulo S´ergio da Motta Pires

Departamento de Engenharia de Computa¸c˜ao e Automa¸c˜ao Universidade Federal do Rio Grande do Norte Natal-RN, Novembro de 2001

Resumo

O Scilab ´e um ambiente utilizado no desenvolvimento de programas para a resolu¸c˜ao de pro-

blemas num´ericos. Criado e mantido por pesquisadores pertencentes ao Institut de Recherche en

´

Informatique et en Automatique, INRIA, atrav´es do Projeto M ETALAU (M´ethods, algorithmes

´

et logiciels pour l’automatique) e `a Ecole Nationale des Ponts et Chauss´ees, ENPC, o Scilab ´e

gratuito (Free software) e ´e distribu´ıdo com o c´odigo fonte (Open Source software).

Este ´e um documento sobre a utiliza¸c˜ao e as principais caracter´ısticas deste ambiente de

programa¸c˜ao num´erica.

os manuais que acompanham o software. Por exemplo, podemos citar Introduction to Scilab [1], documento no qual este texto se baseia.

E importante ressaltar que as referˆencias definitivas permanecem sendo

´

O objetivo principal ´e apresentar um texto introdut´orio, em portuguˆes, sobre o Scilab. Nos-

so interesse ´e fazer deste documento um complemento aos textos utilizados em disciplinas como

´

M´etodos Computacionais, C´alculo Num´erico, Computa¸c˜ao Num´erica, Algebra Linear Computa-

cional e correlatas.

O objetivo secund´ario ´e demonstrar que a utiliza¸c˜ao de Free/Open Source software, do ponto

de vista do usu´ario, traz vantagens. Algumas dessas vantagens, enumeradas em [2], s˜ao :

A ultima´

vers˜ao do software est´a sempre dispon´ıvel, geralmente via Internet;

O software pode ser legalmente utilizado, copiado, distribu´ıdo, modificado;

Os resultados obtidos podem ser divulgados sem nenhuma restri¸c˜ao;

Os programas desenvolvidos podem ser transferidos para outras pessoas sem imposi¸c˜oes de quaisquer natureza;

O acesso ao c´odigo fonte, evitando surpresas desagrad´aveis;

O acesso a informa¸c˜ao de alta qualidade, e

A certeza de estar participando de uma comunidade cujo valor principal ´e a irrestrita difus˜ao do conhecimento.

Este documento pode ser copiado e distribu´ıdo livremente, mantidos os cr´editos.

A vers˜ao mais recente deste texto est´a dispon´ıvel, no formato pdf, em http://www.dca.

ufrn.br/~pmotta. Coment´arios ou sugest˜oes podem ser enviados para pmotta@dca.ufrn.br

i

Agradecimentos

Ao Klaus Steding-Jessen, pelo L A T E X demo. A maioria das informa¸c˜oes sobre “como se faz isso em L A T E X” podem ser encontradas no documento escrito pelo Klaus 1 ; Ao Dr. Jesus Olivan Palacios, pelas “conversas” sobre o Scilab;

1 Informa¸c˜oes sobre o L A T E X demo ou sobre o L A T E X em geral podem ser obtidas em http://biquinho.furg. br/tex-br/

ii

Hist´orico

Fevereiro de 1999 - Vers˜ao 0.1 - In´ıcio.

Julho de 2001 - Vers˜ao 0.2 - Corre¸c˜oes e atualiza¸c˜oes.

Julho de 2001 - Vers˜ao 0.3 - Corre¸c˜oes e atualiza¸c˜oes.

Julho/Novembro de 2001 - Vers˜ao 1.0 - Reorganiza¸c˜ao do trabalho e corre¸c˜oes. Disponibi- liza¸c˜ao deste documento no site do Scilab - INRIA (http://www-rocq.inria.fr/scilab/ books.html)

Este trabalho foi totalmente desenvolvido utilizando Free/Open Source software. O Scilab 2.6 2 foi instalado no Linux distribui¸c˜ao Slackware 7.1 3 , kernel 2.2.16 4 . A digita¸c˜ao foi feita usando o Xemacs 5 . Os textos em L A T E X e as figuras em extended postscript, eps, foram trans- formados em pdf atrav´es de pdflatex e epstopdf, respectivamente.

2 P´agina do Scilab : http://www-rocq.inria.fr/scilab/

3 P´agina do Linux distribui¸c˜ao Slackware : http://www.slackware.com 4 P´agina do kernel Linux http://www.kernel.org

5 P´agina

iii

Sum´ario

Scilab - Vers˜ao 1.0

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

Resumo

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

i

Agradecimentos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

ii

Hist´orico

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

iii

. Lista de Figuras

Sum´ario

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

iv

vi

Lista de Tabelas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

vii

Lista de C´odigos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

viii

1 Introdu¸c˜ao

 

1

2 O Ambiente Scilab

 

3

2.1 Introdu¸c˜ao

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

2.2 O Ambiente Gr´afico do Scilab .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

2.3 Algumas Fun¸c˜oes Primitivas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

6

2.4 Vari´aveis Especiais

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

7

2.5 Manipula¸c˜ao de Arquivos e Diret´orios

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

2.5.1 Comandos de Edi¸c˜ao .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

2.5.2 Exemplos de Opera¸c˜oes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

3 Polinˆomios, Vetores, Matrizes e Listas

 

17

3.1

Polinˆomios

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

3.2

Vetores

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

3.3 Matrizes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

3.4 Matrizes com Polinˆomios

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

3.5 Matrizes Simb´olicas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

3.6 Matrizes Booleanas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

3.7 Opera¸c˜oes com Matrizes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

3.8 Acesso a Elementos de Matrizes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

3.9

Listas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

4 Programa¸c˜ao

 

35

4.1 Comandos para Itera¸c˜oes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

4.1.1 O Loop for

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

4.1.2 O Loop while .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

37

4.2 Comandos Condicionais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

4.2.1

Comando if-then-else

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

 

iv

 

4.2.2

Comando select-case

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

4.3

Definindo Fun¸c˜oes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

4.3.1

Estrutura das Fun¸c˜oes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

4.3.2

Vari´aveis Globais e Vari´aveis Locais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

47

4.3.3

Comandos Especiais

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

5 Gr´aficos

 

51

5.1 Gr´aficos Bi-dimensionais

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

 

5.1.1 Outros Comandos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

5.1.2 Gr´aficos 2D Especiais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

5.2 Gr´aficos Tri-dimensionais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

58

 

5.2.1

Gr´aficos 3D Especiais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

58

A Instala¸c˜ao do Scilab

 

59

A.1

Instala¸c˜ao no Linux Slackware - C´odigo Fonte

 

59

B Liga¸c˜ao do Scilab com Programas em C

 

62

B.1

A Liga¸c˜ao Dinˆamica

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

Referˆencias Bibliogr´aficas

 

67

 

v

Lista de Figuras

2.1

Tela inicial do Scilab

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

4

2.2

Tela de help sobre a fun¸c˜ao sqrt

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

5.1

Janela gr´afica do Scilab

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

5.2

Gr´afico de sen(2πt)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

5.3

Gr´aficos com plot2di()

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

55

5.4

Curvas identificadas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

56

5.5

Gr´afico de um campo vetorial

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

 

vi

Lista de Tabelas

2.1

Teclas de edi¸c˜ao de linha de comando

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

3.1

Sintaxe de comandos usados em opera¸c˜oes matriciais

 

26

4.1

Operadores condicionais

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

5.1

Valores de i para o comando plot2di()

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

53

vii

Lista de C´odigos

1 Programa principal, Runge-Kutta

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

2 A fun¸c˜ao f(x,y)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

3 A solu¸c˜ao exata da equa¸c˜ao diferencial

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

4 Programa para resolver um sistema triangular

 

46

5 Fun¸c˜ao Runge-Kutta escrita em C

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

64

viii

Cap´ıtulo 1

Introdu¸c˜ao

O Scilab 1 ´e um ambiente voltado para o desenvolvimento de software para resolu¸c˜ao de

problemas num´ericos. Foi criado e ´e mantido por um grupo de pesquisadores do INRIA 2 e do ENPC 3 . O Scilab ´e gratuito, Free software, e distribu´ıdo com o c´odigo fonte, Open Source

software. O software ´e disponibilizado, tamb´em, em vers˜oes pr´e-compiladas para v´arias platafor- mas.

O objetivo principal ´e apresentar um texto introdut´orio, em portuguˆes, sobre o Scilab. Nos-

so interesse ´e fazer deste documento um complemento aos textos utilizados em disciplinas como

´

M´etodos Computacionais, C´alculo Num´erico, Computa¸c˜ao Num´erica, Algebra Linear Computa-

cional e correlatas.

manuais que acompanham o software. Por exemplo, podemos citar Introduction to Scilab [1], documento no qual este texto se baseia.

E importante ressaltar que as referˆencias definitivas permanecem sendo os

´

O objetivo secund´ario ´e mostrar que a utiliza¸c˜ao de Free/Open Source software, do ponto

de vista do usu´ario, sempre traz vantagens. Algumas delas [2],

A ultima´

vers˜ao do software est´a sempre dispon´ıvel, geralmente via Internet;

O software pode ser legalmente utilizado, copiado, distribu´ıdo, modificado;

Os resultados obtidos podem ser divulgados sem nenhuma restri¸c˜ao;

Os programas desenvolvidos podem ser transferidos para outras pessoas sem imposi¸c˜oes de quaisquer natureza;

O acesso ao c´odigo fonte, evitando surpresas desagrad´aveis;

O acesso a informa¸c˜ao de alta qualidade, e

A certeza de estar participando de uma comunidade cujo valor principal ´e a irrestrita difus˜ao do conhecimento.

Este documento, desenvolvido dentro das premissas dos par´agrafos precedentes, est´a dividido em cinco Cap´ıtulos e dois Apˆendices. Neste Cap´ıtulo, mostramos o contexto no qual o programa e este trabalho est˜ao inseridos.